Configuring SLP with a SCOPED directory agent (DA)

  • 7002121
  • 08-Dec-2008
  • 27-Apr-2012

Environment

NetWare 5.1
NetWare 6.0
Service Location Protocol (SLP)
Service Location Protocol Directory Agent (SLPDA)

Situation

SLP is not working
IP communication is not working
Workstations cannot browse the network
Servers and workstations can ping each other
Servers cannot communicate with each other
Configuring SLP with a SCOPED directory agent (DA)

Resolution

To configure SLP with a UNSCOPED DA (directory agent), please see Configuring SLP with an UNSCOPED DA - TID 10060296   

This document is intended for older implementations of SLP. For NetWare 6.5 SLP configuration information or additional SLP Design Guidelines please see SLP Design and Implementation Guidelines - TID 7002121.

To configure SLP with a SCOPED directory agent (DA) do the following:


1) Select a server to act as a DA.  This server needs to have NetWare version 5.0 or higher.  All of the other servers and all of the workstations will need to contact it, so choose one in a central location if possible.  The server must have a master or read/write replica the containers that will hold the Directory Agent Object AND the SCOPE object.  This will allow faster access to these objects. More than one DA per scope can be configured for fault tolerance.  See note below.

2) Decide on a scope name to use.  The scope name can be anything, but remember that it may have to be typed on a lot of workstations, so keep it simple.  Many people name it after their organization.  Use a different scope name for each tree.  (It is acceptable to have multiple scopes in a single tree, but that is usually not recommended.  That type of configuration is beyond the scope of this document.  (Pun intended.:-))

3) Choose or make a container in NDS that will hold the DA's database.  This is usually the container that the server resides in.  In any case, make sure that the DA has a master or read/write replica of the container.  It is best if this container is not replicated across WAN links because it will be updated often.  This container may be a separate partition.

4) If SLPDA.NLM is loaded on any server where it shouldn't be loaded (ie any NON-DA servers, or servers that shouldn't be DAs), unload it.  Make sure that no server has a line in the AUTOEXEC.NCF file that loads SLPDA.NLM unless it is supposed to be a DA

5) Search the directory tree for objects of type "SLP Directory Agent" and "SLP Scope Unit."  Delete any that should not exist.  This will clear out any previous attempts at setting up directory agents.  Delete the contents of the scope units before deleting the units themselves.  If these objects can't be deleted, verify that SLPDA.NLM is not running on any server servicing that scope unit and try again.  If they still cannot be deleted, use ConsoleOne instead of NWAdmin for this step.

6) Create an "SLP Scope Unit" in the container designated in step 3.  This object can be named anything, but it is recommended that it is the same name that as the scope.  
    -a- Go to the details of the new object and enter the scope name in the "Scope name" field.

7) Create an "SLP Directory Agent" in the same container.  Again, it can be named anything.  The recommended name is "FS1_SLPDA," where "FS1" is the name of the server acting as the DA.
    -a- Go to the details of the new object and select the server that is acting as the DA in the "Host server" field.
    -b- Add the previously created scope unit to the "Serviced scope units" list.

8) Load MONITOR.NLM on the Directory agent server.  Enter the "Server Parameters" menu.  Enter the "Service Location Protocol" submenu.  Enter the scope name in the "SLP Scope List" field.  When entering the scope name use only the common name and not the fully qualified domain name (FQDN). For example if the scope is named FRED then just type FRED in the scope list. This change requires restarting the server before it will take effect.  If the server can't be restarted right away then don't load MONITOR.NLM again until the restart or the change may be lost.

9) Edit SYS:\ETC\SLP.CFG on the DA server and make sure that there is nothing in this file besides comments (A DA NEVER POINTS TO ITSELF, NEVER.  It CAN point to other DAs if you are setting up a configuration involving multiple DAs, but NEVER point a DA to ITSELF in the SLP.CFG file).  On the DA server, load SLPDA.NLM and also add it to the AUTOEXEC.NCF file.

10) Reboot the SLPDA server, this will take the scope name parameter set in step 8 and load it into memory, IF your SCOPE name was already set in Monitor you MAY not have to reboot the server, but if the DA's services do not register to itself, then that means that the scope name is NOT in memory, and you HAVE to reboot.

11) Load MONITOR.NLM on every other NW5.x or NW6.x server in the tree.  Enter the "Server Parameters" menu.  Enter the "Service Location Protocol" submenu.  Enter the scope name in the "SLP Scope List" field.  When entering the scope name use only the common name and not the fully qualified domain name (FQDN). For example if the scope is named FRED then just type FRED in the scope list.

12) Edit SYS:\ETC\SLP.CFG on all of the other servers (not the DA server) and add a line that says, "DA IPV4, XX.XX.XX.XX" (without the quotes and where "XX.XX.XX.XX" is the IP address of the DA).  Make sure that there are no other lines in this file except for the comments.  It might be convenient to edit this file on one server and then copy it to the others.  If step 10 is not completed, the servers may not be able to communicate with each other.

13) The SLP SCOPE LIST change requires restarting the server before it will take effect.  If the server can't be restarted right away then don't load MONITOR.NLM again until the restart or the change may be lost.  If this step is not completed for every server in the tree the servers will not register their IP services with the DA and they will not communicate properly over IP with one another. Also, clients will have problems getting services from any server not registered with the DA using the proper scope.  If your SCOPE name was already set in Monitor, you MAY not have to reboot the server, but if this particular server's services do not register to the DA, then that means that the scope name is NOT in memory, and you HAVE to reboot. 

14) Type "DISPLAY SLPDA" at the consoles of the OTHER servers.  A line that starts with "XX.XX.XX.XX : ACTIVE   : " (where XX.XX.XX.XX is the IP address of the DA server) followed by the scope name should be displayed.

15) Type "DISPLAY SLP SERVICES BINDERY.NOVELL" at any server console. One URL for every SLP configured NetWare 5.x server should be displayed. This will show how many servers are registering with the DA. If all the servers show up then the servers are all communicating via SLP.

16) Configure the workstations, either manually (Novell client properties on the "Service Location" tab) or using NetWare DHCP (option 78), with the IP address of the DA (NOTE: Option 79 is SLP Scope List, this parameter does NOT need to be configured on your workstations, SCOPES are for registering services, your client has no services to register, a BLANK or NULL scope list will allow your client to see ALL services with any DAs that it contacts).  If setting the SLPDA address through DHCP, set 'mandatory' if the desired effect is to have DHCP override any local settings. Unload DHCPSRVR and load it again for the DHCP Server to hand out this information. The workstations need to be restarted to make the change effective.  The workstations may not be able to communicate with the servers without restarting.  If you have login scripts and do not want to use DHCP, and if you don't have Zen, you can use the following batch file to set the DA ip address on your WIN9x, WINNT, WIN2K and WINXP clients, the problem with this batch file is that you client has to login first before it will get the DA settings, so you may have to put the IP address of a server holding ANY NDS REPLICA in the TREE field, put in the usual context, and leave the server field blank (or put the IP address of a server if you prefer, but don't use a name because SLP may not be set on the workstation yet), you should be able to login that way, then the login script will run and you will call the SETDATREG.BAT in the script and the workstation will have to be rebooted in order to see the DA:

REM ----------SETDAREG.BAT----------
REM ******BE SURE TO CHANGE THE x.x.x.x TO THE IP ADDRESS OF YOUR SLPDA SERVER******
REM Multiple DAs can be set by adding the line: echo "1"="x.x.x.x">>C:\SETDA.REG
REM under the echo "0"... you can also add "2""3" etc...
@echo off
If exist C:\WINNT\System32\Drivers\ETC\NUL goto NTmach
echo REGEDIT4>C:\SETDA.REG
echo . >>C:\SETDA.REG
echo [HKEY_LOCAL_MACHINE\Network\Novell\System Config\SRVLOC\Directory Agent]>>C:\SETDA.REG
echo "0"="x.x.x.x">>C:\SETDA.REG
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SRVLOC\Parameters]>>C:\SETDA.REG
echo "Static DAs"="ON">>C:\SETDA.REG
echo . >>C:\SETDA.REG
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SRVLOC\Parameters\Directory Agent]>> C:\SETDA.REG
echo "0"="x.x.x.x">> C:\SETDA.REG
regedit -s C:\SETDA.REG
goto end

:NTmach
REM ******BE SURE TO CHANGE THE x.x.x.x TO THE IP ADDRESS OF YOUR SLPDA SERVER******
echo REGEDIT4>C:\SETDA.REG
echo . >>C:\SETDA.REG
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SRVLOC\Parameters]>>C:\SETDA.REG
echo "Static DAs"="ON">>C:\SETDA.REG
echo . >>C:\SETDA.REG
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SRVLOC\Parameters\Directory Agent]>> C:\SETDA.REG
echo "0"="x.x.x.x">> C:\SETDA.REG
regedit -s C:\SETDA.REG

:end
echo SLPDA setting complete
REM ----------SETDAREG.BAT----------

You can always check to see if a client sees the SLPDA server through multicast (or through DHCP or configured), by typing the command (in a DOS or CMD window): SLPINFO /D

.

Additional Information

SLP does for IP what SAP does for IPX.  

SLP, in the default configuration, uses multicasts to discover IP services on the network.  This works very well in non-routed environments.  If the system contains a router that blocks these multicasts, or with a very large routed environment, SLP needs to be configured to use unicasts instead of multicasts.  This requires the use of an SLP directory agent (DA).

The DA acts as a directory of IP services on a network.  As a server's IP services become available, the server contacts the DA and informs it of the existence of these new services.  When the services are halted, the server again notifies the DA. Whenever a server or workstation wants to find a service, it asks the DA for the information.

SLP is intended for use with NetWare versions 5.0 and higher.  There is no need to configure lower versions of NetWare when these instructions are followed.
 Multiple DA's can be configured, but in most cases should NOT. Multiple DA's are used primarily for redundancy, but in some special cases they can be strategically placed to provide a performance enhancement. However these instances have proven to be rare. Make sure that the DA's meet the following requirements: 1) They should be in the same physical location (not crossing a WAN link) when possible, but in SOME cases placing a DA across the WAN is acceptable and will work just fine (Keeping in mind that NDS replication and communication can be significantly affected). 2) they must both have master or read/write replicas of the partition that contains the scope unit (once again, there have been instances where both servers did NOT have a replica and still functioned, but this is not the norm, and is not recommended by Novell). It is recommended to Partition off the Scope unit itself, and only give the DA servers replicas of this partition.  It is also recommended to limit the number of DA's to between 2-4 depending on the size of the network and DA placement.

The configuration process for a scope with two DA's is basically the same as it is for scope with just one.  Only one SLP scope unit should be created, but create two SLP directory agent objects and configure both of them to use the same SLP scope unit.  All of the workstations should have the IP addresses of both DA's added to their directory agent list.  All of the non-DA servers should have two lines added to the SLP.CFG file (one for each DA).  It is recommended that the DA servers have each other's IP address in their SLP.CFG files.  (i.e. Server A will have server B's IP address in its file, server B will have server A's IP address in its file, but neither DA server will have its own IP address in its own SLP.CFG file.)  If a DA server has its own IP address in its SLP.CFG file, it won't work right.
Formerly known as TID# 10059981