Gerald Carter
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.