Hi, this is Sanjoy Chatterjee again. In this post I will cover how referral timeout works in DFS Namespaces.

When clients receive referrals from the DFS server, they cache these referrals in what was called the PKT Cache. The current terminology for that cache is Referral Cache and that is what we will use in this article. On subsequent operations to the same target, the clients used the referral from the Referral Cache to access the target.

The entries in the Referral Cache have a Time-To-Live or TTL value in seconds which determines the longevity of the referral. The clients do not request new root and link referrals until the referrals expire or are cleared from the cache. The default TTL value for root referrals is 5 minutes and for link referrals is 30 minutes. The TTL value is entry specific and is associated with the target. Users can change the TTL value.

Referral expiration prior to Windows XP SP2 and Windows Server 2003  SP1

In these environments, the TTL value reflects the earlier time a client will request a new referral, but only if the existing referral expires before it is accessed again. Thus clients using a cached referral could renew the TTL and keep using it indefinitely until the client’s referral cache is cleared or the client is restarted. So, even if the target is removed from the namespace, for example, the client would continue to use it.

Referral expiration in Windows XP SP2 and Windows Server 2003 SP1

A client does not reset the TTL value every time it accesses a cached referral. Instead, the referral expires at the end of the TTL. As such:

  • Clients will request referrals more frequently than before which can cause some increased load on the DFS root server (and Domain controllers in case of Domain based DFS).
  • Clients will also discover namespace changes more quickly than before.
  • At the end of the TTL period, clients can fail over to a new target if the previously used target is not in the new referral.

When the TTL value is changed on the server side in a link or a Stand Alone root, the new value is reflected in the Client Referral Cache within a short order (seconds). When a TTL value is changed on the server side in a Domain based Root, it takes a while for this change to propagate to the Client Referral Cache.

Note: The TTL value is reduced on a 2 minute cycle, i.e. every two minutes, the TTL of each referral is lowered by two minutes. This means that if you set the TTL to 60 seconds, it will still take at least two minutes for the TTL to expire.

--Sanjoy