Permanent Bad/Good Name Cache

  • 7015227
  • 18-Jun-2014
  • 30-Jun-2015

Environment

Novell Client 2 SP4 for Windows

Situation

Poor performance when attempting to contact network resources.

How to specify resources that the Novell Client should never attempt to resolve as NCP servers so that Windows will more quickly attempt to resolve them through other network clients (e.g. the Microsoft Client).

How to specify resources that the Novell Client should always attempt to resolve as NCP servers so that Windows will always attempt to resolve them through the Novell Client.

Resolution

WARNING: Using Registry Editor incorrectly can cause serious, system-wide problems that may require you to reinstall Windows to correct.

Dynamic Bad Address Cache

The Novell Client includes a "Bad Address Cache." If the Client is unable to establish a TCP-level connection to a particular IP address, it stores that address in the Bad Address Cache.  During any future connection attempts, if the Novell Client finds that the IP address is already listed in the Bad Address Cache, the Novell Client will assume the address is still unreachable without making a new TCP-level connection attempt, and without waiting through any associated delay for a new connection attempt.

Previously, the Bad Address Cache was always enabled, such that every bad server address was cached for 5 minutes, with no way to disable this feature. Beginning with Novell Client 2 SP4 for Windows, it is possible to disable the Bad Address Cache.

The following settings, which control this behavior, are located on the "Advanced Settings" tab of the Novell Client Properties page.

BadAddressCacheEnabled
Enables or disables use of the Bad Address Cache.  This setting is Enabled by default.

Bad Address Cache Timeout
This parameter determines the number of seconds a Bad Address will remain in the Bad Address Cache. If the Client is unable to establish a TCP-level connection to a particular IP address, it stores that address in the Bad Address Cache for the number of seconds specified in this parameter.


Dynamic Bad Name Cache

The Novell Client also includes a dynamic "Bad Name Cache."  If the Client is unable to successfully resolve a particular server name through the configured name resolution methods (DNS and/or SLP), it stores that name in the Bad Name Cache.  During any future name resolution attempts, if the Novell Client finds that the server name is already listed in the Bad Name Cache, the Novell Client will assume the name still cannot be resolved, without re-performing the DNS and/or SLP resolve attempt or any associated delay.

Previously, the dynamic Bad Name Cache was always enabled, such that every bad server name was cached for 5 minutes, with no way to disable this feature. Beginning with Novell Client 2 SP4 for Windows, it is possible to disable the dynamic Bad Name Cache by creating an optional registry setting (no user interface is currently available).

To enable/disable the dynamic Bad Name Cache:

1. Run Registry Editor (REGEDT32.EXE).
2. Navigate to HKEY_LOCAL_MACHINE\Software\Novell\Client\Parameters
3. Disable the dynamic Bad Name Cache
a. From the Edit menu, select "New" and choose the "DWORD (32-bit) Value" option.
b. Enter BadNameCacheEnabled to name the new DWORD value
c. Right-click the new BadNameCacheEnabled value and choose the "Modify" option. Assign the value data of "1" to enable, or set to "0" to disable this feature. Default is "1" (on).

Permanent Bad Name Cache

Because the Client must first determine that a given resource is not reachable, there is a delay the first time the Client tries to locate a resource, but subsequent attempts will be fast, due to the entry existing in the dynamic bad name cache. Elimination of the initial delay is made possible by pre-populating a bad server name cache.

Beginning with Novell Client 2 SP3 for Windows (IR8), a permanent bad server name cache is available. Establishing a permanent bad server name cache can correct performance problems caused by delays in attempting to locate resources which are not findable by the Novell Client. Currently, this functionality is controlled via registry entries (no user interface is currently available).

The Novell Client reads the permanent bad name cache from the registry during the system initialization and blocks any connection attempts by the Novell Client to any server name listed.

The registry values, located under the subkey [HKEY_LOCAL_MACHINE\Software\Novell\Client\Parameters] are:

"BadNameCacheList" is a REG_MULTI_SZ registry value containing the list of server names. This is a multi string value, so multiple server names can be included. Server names added to this value will never timeout. For example, if you have a Microsoft server that you connect to, you can put its name in the "BadNameCacheList" value and the Novell Client will never try to resolve that name. An asterisk wildcard at the beginning or end of the names is supported.  For example for the server named "SLES10SP4", the whole string can be provided in the registry or a wildcard can be used, such that an entry of "SLES10*" will block all the servers followed by SLES10, such as "SLES10SP4", "SLES10SP5", etc. And, "NWFS01*" could be used to block "NWFS01", "NWFS01.mydomain.com", "NWFS01.container.eDir", etc.

"PermanentBadNameCacheEnabled" is an optional DWORD registry value which can be used to temporarily disable use of the "BadNameCacheList" without actually deleting the "BadNameCacheList" REG_MULTI_SZ value itself.  If "PermanentBadNameCache" is created with a DWORD value of 0, the "BadNameCacheList" will not be used even if it exists.  To re-enable the use of the "BadNameCacheList", you can simply delete the "PermanentBadNameCache" DWORD value entirely, or if necessary set the DWORD value to 1 instead.  By default the "PermanentBadNameCache" DWORD value does not exist in the registry, and the only configuration necessary to enable or disable the Permanent Bad Name Cache functionality is to create or delete the "BadNameCacheList" REG_MULTI_SZ value itself.

To enable the Permanent Bad Name Cache functionality:

1. Run Registry Editor (REGEDT32.EXE).
2. Navigate to HKEY_LOCAL_MACHINE\Software\Novell\Client\Parameters
3. Add server(s) to the Permanent Bad Name Cache List
a. From the Edit menu, select "New" and choose the "Multi-String Value" option.
b. Enter BadNameCacheList to name the new Multi-String value
c. Right-click the new BadNameCacheList value and choose the "Modify" option. Add the name of the server(s) as the value data. Place multiple entries on separate lines.
4. Choose OK and quit Registry Editor.
5. Shut down and restart Windows.


Permanent Good Name Cache

In some cases, it is desirable to "whitelist" servers, rather than having to define all the names Novell Client should not connect to.

Beginning with Novell Client 2 SP4 for Windows, a permanent "good server" name cache is available. This "good server" name cache is created by means of an optional registry value, "GoodNameCacheList".

If "GoodNameCacheList" is defined, the Novell Client will consider any name that does not match the entries in "GoodNameCacheList" to be "a bad name" and no Novell Client connection attempt will be made. , The "GoodNameCacheList" will contain one or more server names or wildcard patterns. Currently, this functionality is controlled via registry entries (no user interface is available).

When both the "BadNameCacheList" and "GoodNameCacheList" are enabled at the same time, the Permanent Bad Name Cache functionality takes precedence.  Meaning if the current Novell Client connection attempt is using a server name that matches a name or wildcard pattern in the "BadNameCacheList", the Novell Client connection attempt will be blocked, even if that same server name is defined as being allowed by a name or wildcard pattern in the "GoodNameCacheList".

The Novell Client reads the permanent good name cache from the registry during the system initialization and ensures that the Novell Client will be used to attach to any server name listed if needed.

The registry values, located under the subkey [HKEY_LOCAL_MACHINE\Software\Novell\Client\Parameters] are:

"GoodNameCacheList" is a REG_MULTI_SZ registry value containing the list of server names. This is a multi string value, so multiple server names can be included. Server names added to this value will never timeout. For example, if you have a Novell server that you connect to, you can put its name in the "GoodNameCacheList" value and the Novell Client will always try to resolve that name. An asterisk wildcard at the beginning or end of the names is supported. For example for the server named "BLR-FS-01", the whole string can be provided in the registry or a wildcard can be used, such that an entry of "BLR-FS*" will allow all the servers followed by BLR-FS, such as "BLR-FS-01", "BLR-FS-04", etc. And, "SALES01*" could be used to allow "SALES01", "SALES01.mydomain.com", "SALES01.container.eDir", etc.

"PermanentGoodNameCacheEnabled" is an optional DWORD registry value which can be used to temporarily disable use of the "GoodNameCacheList" without actually deleting the "GoodNameCacheList" REG_MULTI_SZ value itself. If "PermanentGoodNameCache" is created with a DWORD value of 0, the "GoodNameCacheList" will not be used even if it exists. To re-enable the use of the "GoodNameCacheList", you can simply delete the "PermanentGoodNameCache" DWORD value entirely, or if necessary set the DWORD value to 1 instead. By default the "PermanentGoodNameCache" DWORD value does not exist in the registry, and the only configuration necessary to enable or disable the Permanent Good Name Cache functionality is to create or delete the "GoodNameCacheList" REG_MULTI_SZ value itself.

To enable the Good Name Cache and add a server Good Name Cache List:

1. Run Registry Editor (REGEDT32.EXE).
2. Navigate to HKEY_LOCAL_MACHINE\Software\Novell\Client\Parameters
3. Add server(s) to the Good Name Cache List
a. From the Edit menu, select "New" and choose the "Multi-String Value" option.
b. Enter GoodNameCacheList to name the new Multi-String value
c. Right-click the new GoodNameCacheList value and choose the "Modify" option. Add the name of the server(s) as the value data. Place multiple entries on separate lines.
4. Choose OK and quit Registry Editor.
5. Shut down and restart Windows.


For example, when you have provided the Novell Client login dialog an eDirectory tree name of "MYTREE", a context of "MYDEPARTMENT.MYLOCATION.MYCOMPANY" and a server of "MYSERVER", as described in KB 3873561 the Novell Client login will potentially try to resolve up to the following number of different variations of those names:

MYSERVER
MYDEPARTMENT.MYLOCATION.MYCOMPANY.MYTREE
MYLOCATION.MYCOMPANY.MYTREE
MYCOMPANY.MYTREE
MYTREE

When making GoodNameCacheList entries to permit login, you likely want to take these variations into account so that the Novell Client login can still make an optimal connection to eDirectory even when the GoodNameCacheList is in effect.  The GoodNameCacheList entries that are ideal for allowing login in the above scenario would be:

MYSERVER
MYSERVER.*
MYTREE
*.MYTREE
MYTREE.*

The "MYSERVER" entry allows exact matches for "MYSERVER", and the "MYSERVER.*" entry allows for DNS- and eDirectory-format versions of that name too.  Note the period character is included before the wildcard so that the period must be present, since omitting the period and using just "MYSERVER*" can potentially match "MYSERVERISHOULDNOTUSE" in addition to "MYSERVER".

Similarly, the "MYTREE" entry allows exact matches for "MYTREE", and the "*.MYTREE" entry allows for the eDirectory partition search of "MYDEPARTMENT.MYLOCATION.MYCOMPANY.MYTREE", "MYLOCATION.MYCOMPANY.MYTREE", etc.  Note the period character is included after the wildcard so that the period must be present, since omitting the period and using just "*MYTREE" can potentially match "NOTMYTREE" in addition to "MYTREE".  Finally, the "MYTREE.*" entry allows for DNS-format versions of the tree name too.

Additional Information

Note that that "BadNameCacheList" will continue to be honored, even when "GoodNameCacheList" is defined. For example, if "GoodNameCacheList" contains an entry like "BLR-FS-*" to declare that only servers matching this pattern are NCP servers worthy of a Novell Client connection attempt, the administrator could still declare a "BadNameCacheList" entry of "BLR-FS-0012" in addition, preventing any attempt to connect to that specific server, even though it matches the "GoodNameCacheList" entry.