Registry Settings to Improve High Availability Failover Times for Provisioning Services

Registry Settings to Improve High Availability Failover Times for Provisioning Services

book

Article ID: CTX119223

calendar_today

Updated On:

Description

Configuring High Availability (HA) failover in Provisioning Services Server can take one minute or more to actually complete the failover cycle.

Environment

Caution! Using Registry Editor incorrectly can cause serious problems that might require you to reinstall your operating system. Citrix cannot guarantee that problems resulting from the incorrect use of Registry Editor can be solved. Use Registry Editor at your own risk. Be sure to back up the registry before you edit it.

Resolution

Caution! Refer to the Disclaimer at the end of this article before using Registry Editor.

On the Provisioning Server target machine:

There are two registry keys that can force the client to have fewer retries and/or shorter timeouts to achieve quicker failover.
  •  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BNIStack\Parameters\IosPacketTimeoutms <DWORD>.
This is the Wait-for-reply timeout. Range is 500 milliseconds and 10000 milliseconds (0.5 to 10 seconds); the shorter the timeout, the faster the failover.  Default is 5000 milliseconds (5 seconds).
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BNIStack > Parameters > IosRetryLimit <DWORD>.
This is the number of retries. Range is from 2 to 1000 (Default is 10); the smaller the number the faster the failover.

More specific details:

#define     IOS_RETRY_LIMIT_DEFAULT     10
#define     IOS_RETRY_LIMIT_MIN         2
#define     IOS_RETRY_LIMIT_MAX         1000

The IosRetryLimit default is 10, with minimum 2 and maximum is 1000. This number is fixed and does not change dynamically. 

#define     IOS_PACKET_TIMEOUT_DEFAULT     5000
#define     IOS_PACKET_TIMEOUT_MIN         500
#define     IOS_PACKET_TIMEOUT_MAX         10000

The IosPacketTimeoutms default is 5 seconds. This number changes dynamically. It increases (by doubling) if there is packet loss.

It decreases (defined in RFC2988) if there is no packet loss.
So technically, the default HA failover timeout is:
5 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 = 95 seconds.

Problem Cause

Two parameters that control the failover time of the provisioning target are Packet Timeout and Retry Limit.  The default values of these parameters would give a failover time of about 50 seconds.  Provisioning Services Server starts with default values and has the logic to throttle the values lower if the network is found to support faster traffic; thus to support a faster HA failover.  However in some cases, the throttling might not occur because of unfavorable network condition or other unknown conditions.  In this case, you might want to change the default values to a lower value to reduce the failover time.

Issue/Introduction

This article provides resolution to improve High Availability Failover Times for Provisioning Services.