“Configure slow-link mode” policy on Vista for Offline Files

Hi, Gary from DS here and I am going to discuss the “Configure slow-link mode” policy on Vista with Offline Files.

How is slow link determined by Windows Vista?

Offline Files measures the speed of a link based on the packet latency between the client and the target server. This is reported by the network driver and TCP stack and is then used to compute the throughput to the server for comparison with the configured throughput and/or latency policy configuration. You might think that the NLA service (Network Location Awareness) service would be used in this, but that is not the case.

The original released version of Windows Vista only took into account outbound traffic, which means that share might remain online longer than expected. Windows Vista SP1 further improves this feature by taking into account both the inbound and outbound traffic. Out of those two, values it takes the smaller of them when determining if a transition to slow link is needed.

The “Configure slow-link mode” policy MUST be configured in order for anything to be considered slow. By default, nothing is considered slow automatically.

Configuring the policy

The policy itself is pretty easy to configure, but the example text can be a bit confusing. I have seen a few cases where these have been defined incorrectly. The policy is located in the following path of the Group Policy Editor as shown below:

image

image

Computer Configuration\Administrative Templates\Network\Offline Files

Say you are configuring the slow link policy and you want \\server\share to be offline with an acceptable latency of 50 milliseconds, you would fill in the boxes as shown below:

image

Support for wildcards (*)

As the screen shot sample of the policy above suggests, there is some limited support for wildcards within the policy for determining what to consider for slow link detection. The matching algorithm is pretty simple and separates the path into 5 different parts (Server, Share, Directories, Filename, and Extension):

\\servername\share\dir1\dir2\file.ext
| SRV | SH | DIR | F | E |

SRV = Server Name
SH = Share name
DIR = Directory name
F = File name
E = File Extension

The wildcard character ‘*’ can be specified for one or more of the parts in which the wildcard means “anything is matched”. The following rules apply to the matching:

  • If a path contains a trailing *, then the remaining parts are matched automatically.
  • When the directories part contains a *, all remaining directory parts are automatically matched.
  • The * does not support partial matching. Example: \\server\share\mydir* would not match \\server\share\mydirectories as it would be explicitly looking for “mydir*” in the path.

With these rules there is some flexibility with regards to setting up matching patterns. In my experience so far and because Offline Files doesn’t take individual files offline it is best to match the share or DFS link that will be considered for slow link transition. In testing the following patterns had these results:

Pattern

Result

*

Matches everything that would be made available offline

\\server\*

Matches any share on the server that is made available offline

\\server\share\\server\share\*

Matches any files/folders under the share. Would be equivalent to \\server\share\*\*.*

For a DFS Namespace that has the following structure and you want to have:

\\contoso.com\dfsroot

\Site1\Users – Link to a target that contains user’s data
\Site2\Users – Link to a target that contains user’s data

Pattern

Result

\\contoso.com\dfsroot\\contoso.com\dfsroot\*

Matches anything in the namespace

\\contoso.com\dfsroot\site1\users

No matching and anything below that would be taken offline

\\contoso.com\dfsroot\*\users

Matches both of the following links:

\\contoso.com\dfsroot\site1\users\\contoso.com\dfsroot\site2\users

\\contoso.com\dfsroot\site1\users\*.*

Is supposed to be similar to the one just above, but didn’t take the link offline as expected

\\contoso.com\dfsroot\site*\*

Does not work because the * is not used with partial matching

\\contoso.com\dfsroot\*\users\*

The first * is used so users matches a directories entry in the evaluation and would be ignored. This didn’t work in my testing, but is supposed to match \\contoso.com\dfsroot\* or \\contoso.com\dfsroot\*\*.* pattern.

To quickly summarize, the slow link is determined by network packet latency and is compared with the configured policies. This policy must be configured for anything to automatically transition to offline. Also, there is basic support for wildcard matching that could help in fine tuning slow link settings for specific paths, instead of having to have multiple entries or multiple policies. A better understanding of how that works will help make that easier.

- Gary ‘Always Online’ Mudgett