GeraldCarter
October 2002
Samba WINS Internals
WINS Failover
The current Samba codebase possesses the capability to use groups of WINS
servers that share a common namespace for NetBIOS name registration and
resolution. The formal parameter syntax is
WINS_SERVER_PARAM = SERVER [ SEPARATOR SERVER_LIST ]
WINS_SERVER_PARAM = "wins server"
SERVER = ADDR[:TAG]
ADDR = ip_addr | fqdn
TAG = string
SEPARATOR = comma | \s+
SERVER_LIST = SERVER [ SEPARATOR SERVER_LIST ]
A simple example of a valid wins server setting is
[global]
wins server = 192.168.1.2 192.168.1.3
In the event that no TAG is defined in for a SERVER in the list, smbd assigns a default
TAG of "*". A TAG is used to group servers of a shared NetBIOS namespace together. Upon
startup, nmbd will attempt to register the netbios name value with one server in each
tagged group.
An example using tags to group WINS servers together is show here. Note that the use of
interface names in the tags is only by convention and is not a technical requirement.
[global]
wins server = 192.168.1.2:eth0 192.168.1.3:eth0 192.168.2.2:eth1
Using this configuration, nmbd would attempt to register the server's NetBIOS name
with one WINS server in each group. Because the "eth0" group has two servers, the
second server would only be used when a registration (or resolution) request to
the first server in that group timed out.
NetBIOS name resolution follows a similar pattern as name registration. When resolving
a NetBIOS name via WINS, smbd and other Samba programs will attempt to query a single WINS
server in a tagged group until either a positive response is obtained at least once or
until a server from every tagged group has responded negatively to the name query request.
If a timeout occurs when querying a specific WINS server, that server is marked as down to
prevent further timeouts and the next server in the WINS group is contacted. Once marked as
dead, Samba will not attempt to contact that server for name registration/resolution queries
for a period of 10 minutes.