## OpenSLP - Frequently Asked Questions

`A really compresensive FAQ is not yet available for OpenSLP so please send`
`your questions to the OpenSLP mailing lists:`

`openslp-devel@lists.sourceforge.net`
`openslp-users@lists.sourceforge.net`

`Q: Where is the configure script to build OpenSLP?`
`A: Did you read section 3 of the README? You need to run autogen.sh to`
`generate the configure script.`

`Q: How do I build OpenSLP on Windows?`
`A: The MSVC project files used by the developers who ported OpenSLP to win32`
`available in the source directories. If you do not use MSVC and you are a`
`Windows developer, then you will be used to trying to get MSVC makes to`
`work with your tools`

`Q: Will OpenSLP work on my operating system`
`A: Yes, the OpenSLP code has proven to be very portable. It currently works`
`many operating systems including: Linux, BSD, Solaris, Tru64, HPUX, UnixWare,`
`OSR5, and Win32`

`Q: I am having trouble discovering attributes using FindAttr() and "slptool`
`findattrs". The functions seem to execute properly, and the services URL's`
`can be discovered, but no attributes are returned. I am registering`
`services in slp.reg files. I don't think it is my syntax in the slp.reg`
`file, because the example registrations in that file do not return`
`attributes either. Can anyone help?`
`A: If you just want to use slptool to see if things are working, you need to`
`do the following:`

`Contents of the slp.reg:`
`------------------------`
`service:myservice1.x://myhost.caldera.com,en,65535`
`owner=Matt Peterson`
`email=mpeterson@caldera.com`

`service:myservice1.x://yourhost.yourdomain.com,en,65535`
`owner=Kim Jackson`
`email=bjackson@yourhost.yourdomain.com`

`IMPORTANT: Restart slpd and check the /var/log/slpd.log to ensure that`
`there were no errors during parsing of the .reg file`

`Use slptool to find attributes`
`------------------------------`
`$ slptool findsrvs service:myservice1.x`
`service:myservice1.x://myhost.caldera.com.com,65535`
`service:myservice1.x://yourhost.yourdomain.com,65535`

`$ slptool findattrs service:myservice1.x://myhost.mydomain.com`
`(owner=Matt Peterson),(email=mpeterson@caldera.com)`

`$ slptool findattrs service:myservice1.x://yourhost.caldera.com`
`(owner=Kim Jackson),(email=bjackson@yourhost.yourdomain.com)`

`Note that you need to supply the service-url as returned by findsrvs`

`Q: I have a multi-homed machine and OpenSLP is not working.`
`A: Please read the updated installation guide`
`http://www.openslp.org/doc/html/UsersGuide/Installation.html.`
`There are special instructions for users of multi-homed machines.`

`Q: In our development lab, the multicast SLP requests work just fine.`
`However, in our SVT lab, the multicasts requests never work. We always`
`have to edit the slp.conf file and turn on broadcast. Have any others seen`
`this? Do you recall what the solution was? We have spent a great deal of`
`time trying to figure this one out without success.`
`A: Yes, others have seen this behavior -- I know I have. I should put this in`
`the FAQ because I get a lot of questions. The following is a list of the`
`most common problems along with trouble shooting and resolution info:`

`No multicast route`
`-------------------`
`A very common problem with some OS installations (especially Linux) is`
`that there is no multicast or default route set up. On systems with BSD`
`derived TCP/IP stacks (nearly all OSes), broadcast and multicast traffic`
`are delivered using the unicast routing table. If the unicast routing`
`table does not have either a default route or an explicit multicast route,`
`then the kernel does not know where to send the SLP datagram and returns`
`an error 101 - network unreachable error which translates into a SLPError`
`-23 SLP_NETWORK_ERROR. A quick test is to try to ping SLP multicast:`

`$ ping 239.255.255.253`

`If ping returns an error that the network was unreachable, you will need`
`to set up a default route or a multicast route.`

`Note you may not get any responses to the ping. This may not indicate`
`a problem. The only thing to be concerned about is if there is an error`
`actually sending the ping.`

`Please read the installation instructions for more information on how`
`to install a multicast route:`

`http://www.openslp.org/doc/html/UsersGuide/Installation.html`

`The "smart switch /stupid router" problem`
`------------------------------------------`
`The smart switch / stupid router (or no router) problem is something that`
`happens on switched ethernet networks only. If you do not have a`
`switched ethernet network, then you do not have this problem. If you do`
`have a switched ethernet network, then you may have this problem if you`
`are using newer switching hardware. The reason is that ethernet`
`switching hardware is smart enough to monitor IGMP traffic and only`
`forward multicast ethernet frames to those ports that are connected to a`
`host that has maintained the appropriate IGMP conversations with the`
`router.`

`At a very high level, IGMP works like this. First, the host joins the`
`multicast group by sending the router an IGMP message. The router`
`responds periodically with request to the host to see if the host is`
`still interested in multicast traffic. Since IGMP conversations are`
`handled transparently by the kernel level IP stack implementations, most`
`developers and users do not even realize anything is happening.`

`However, "smart" ethernet switches do realize something is happening!`
`If they do not see the IGMP messages being sent from the router to a host`
`that is plugged into a given port of the switch, then they will will not`
`forward multicast ethernet frames to that port. This is good and bad.`
`It is good because it makes multicast extremely efficient in terms of`
`physical network usage. However, it also makes it so multicast will not`
`work at all if a router does not exist (or does not support IGMP) to`
`maintain it's end of the IGMP conversation.`

`Trouble Shooting:`

`Monitor IGMP traffic! Make sure that periodic IGMP traffic is happening`
`on your network. IGMP traffic can be monitored on Linux (and many other`
`OSes) with the following command:`

`# tcpdump igmp`

`Issue this command before starting slpd. You will notice that several`
`IGMP "report" messages are sent. The important thing to look for a IGMP`
`"query" message from the router. If you do not see the IGMP query`
`message from the router then you will soon find that you will no longer`
`see any "report" messages either.`

`Another good test is to try to ping the multicast address and see where`
`it is visable.`

`$ ping 239.255.255.253`

`Finally, the best advice is to read the normally untouched section of`
`your ethernet switch manual that describes how the switch handles`
`multicast. Stupid/inexpensive switches treat multicast frames exactly`
`like broadcast frames which means that they are forwarded to every port`
`of the switch. Smart/Expensive switches often allow this behavior to be`
`configured. If you are on a network without a router, then it is`
`possible that you might need to "dumb down" your switch.`

`Broken NIC driver`
`------------------`
`Some NICs do not support multicast operation, so the driver does the`
`work by placing the NIC into permiscuous mode (accept everything) then`
`the driver filters out what is not needed. The problem with this is`
`that sometimes on a very busy ethernet, the NIC buffers may not be able`
`to keep up with all the traffic and some frames will be dropped. This`
`is normally not a problem since SLP is designed to work on unreliable`
`physical networks, but if enough frames are dropped, OpenSLP may not`
`be able to find DAs or other services. This would result in erratic`
`behavior.```

`Q: I'm pretty new to SLP. I just installed the Open-SLP package. It comes`
`with the SLP daemon(slpd). Is it the Directory agent?`
``
`A: OpenSLP consists of two binary pieces of software. One is libslp.so and the`
`other is slpd.`
``
`libslp.so is the SLP API implementation library that is linked to applications`
`that will be using SLP to register and locate services. See`
`http://www.openslp.org/doc/html/ProgrammersGuide/index.html for more information`
`on how this library can be used to write more intelligent applications.```

`slpd is the SA/DA daemon. In otherwords, slpd has two modes of operation. slpd`
`can be an SA or it can be an SA and a DA.```

`In SA only mode, slpd keeps track services that were registered by applications`
`that link to libslp.so and call SLPReg(). As an SA slpd responds appropriately`
`to multicast requests for location of services that it has registrations for.```

`In SA/DA mode slpd additionally acts as an DA (directory agent). The existence`
`of a DA is optional, but desireable on large networks to reduce multicast`
`traffic. To enable DA functionality in slpd, you will need to set the`
`.net.slp.isDA=true setting in the /etc/slp.conf file.```

`In deploying OpenSLP you should be aware of the following guidelines:```

`1 - Existence of a DA (directory agent) is optional but beneficial on larger`
`networks to reduce the amount of multicast SLP traffic. On smaller networks`
`where multicast traffic is not a problem it is simpler to operate without a DA.```

`2 - As a general rule there should only be one DA per IP network. Too many DAs`
`on the same network will cause a reduction in performance.`
``
`3 - With OpenSLP it is not required that ALL machines run slpd however it is`
`highly recommended. This is because the OpenSLP implementation uses slpd to`
`cache important information that would otherwise need to be discovered via`
`multicast or broadcast. Therefore, for optimal performance, slpd should run on`
`all machines as an SA with only a very few (usually 1) machine running slpd as a`
`DA.`
``
`4 - In deployments where it is not possible to run slpd on all machines it is at`
`least REQUIRED that slpd run on ALL machines that run software that calls`
`SLPReg() or SLPDeReg().`