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.