Using SLP (service location protocol) in an environment without multicast (OpenSLP)

networking

Is it possible to use SLP (service location protocol) in an environment which does not support multicasts but just broadcasts? From what I've read it should be possible, but I can't get it to work.

Let's say I have a very simple little network with just a couple of computers attached to an unmanaged switch. So there is no router which could handle multicast group tables.

When using OpenSLP, the server side (the windows servcie which implements a SLP SA (service agent)) has an option which forces it to use broadcast instead of multicast. So far so good. But how can I tell OpenSLP to use broadcasts on the UA (user agent) side (when calling SLPFindSrvs, for example)?

All I want to do is a little test in that network where on one computer (where slpd is running as a windows service) I register a service using

slptool register service:myserv.x://myhost.com

And on an other computer I want to find that service using

slptool findsrvs service:myserv.x

But no services are found…

Best Answer

Thanks to Roel from the OpenSLP newsgroup I found the solution. It was not a network problem but a problem of misusing slptool. Here is what Roel wrote:

With the default settings, a registration will automatically be removed a few seconds after the process disappeared that made the registration. This is to prevent keeping 'dangling' registrations from processes that didn't properly deregister.

In case you use 'slptool register' the process making the registration is 'slptool', which immediately exits. The registration is therefore automatically removed a few seconds afterwards.

Try using a configuration file with 'net.slp.watchRegistrationPID = false'.

Unfortunately this setting is not documented and there is no hint in the usage notes of slptool...

So to answer my question: Yes, it's possible to run SLP (OpenSLP) in a network without a multicast router.