<chapter id="slparch-16"><title>SLP (Overview)</title><highlights><para>The Service Location Protocol (SLP) provides a portable, platform-independent
framework for the discovery and provisioning of SLP-enabled network services.
This chapter describes the SLP architecture and the Solaris implementation
of SLP for IP intranets.</para><itemizedlist><listitem><para><olink targetptr="slparch-17" remap="internal">SLP Architecture</olink></para>
</listitem><listitem><para><olink targetptr="slparch-41" remap="internal">SLP Implementation</olink></para>
</listitem>
</itemizedlist>
</highlights><sect1 id="slparch-17"><title>SLP Architecture</title><para>This section outlines the fundamental operation of SLP and describes
agents and processes that are used in SLP administration.</para><itemizedlist><para>SLP provides all of the following services automatically, with little
or no configuration.</para><listitem><para>Client application requests for information that is required
to access a service</para>
</listitem><listitem><para>Advertisement of services on network hardware devices or software
servers; for example, printers, file servers, video cameras, and HTTP servers</para>
</listitem><listitem><para>Managed recovery from primary server failures</para>
</listitem>
</itemizedlist><itemizedlist><para>In addition, you can do the following to administer and tune SLP
operation if necessary. </para><listitem><para>Organize services and users into <firstterm>scopes</firstterm> that
are composed of logical or functional groups</para>
</listitem><listitem><para>Enable SLP logging to monitor and troubleshoot the SLP operation
on your network</para>
</listitem><listitem><para>Adjust SLP timing parameters to enhance performance and scalability</para>
</listitem><listitem><para>Configure SLP not to send and not to process multicast messages
when SLP is deployed on networks that lack support for multicast routing</para>
</listitem><listitem><para>Deploy SLP Directory Agents to improve scalability and performance</para>
</listitem>
</itemizedlist><sect2 id="slparch-18"><title>Summary of the SLP Design</title><para>SLP libraries inform network-aware agents that advertise services in
order for those services to be discovered over a network. SLP agents maintain
up-to-date information on the type and location of services. These agents
can also use proxy registrations to advertise services that are not directly
SLP enabled. For more information, see <olink targetptr="legacy-7" remap="internal">Chapter&nbsp;10,
Incorporating Legacy Services</olink>.</para><para>Client applications rely on SLP libraries that make requests directly
to the agents that advertise services.</para>
</sect2><sect2 id="slparch-19"><title>SLP Agents and Processes</title><para>The following table describes the SLP agents. For expanded definitions
of these terms and other terms that are used in this volume, refer to the <olink targetptr="glossary-1" remap="internal">Glossary</olink>.</para><table frame="topbot" id="slparch-tbl-20"><title>SLP Agents</title><tgroup cols="3" colsep="0" rowsep="0"><colspec colname="column1" colwidth="119*"/><colspec colname="colspec0" colwidth="272*"/><colspec colname="col3" colwidth="5*"/><thead><row><entry rowsep="1"><para>SLP Agent</para>
</entry><entry rowsep="1"><para>Description</para>
</entry><entry><para></para>
</entry>
</row>
</thead><tbody><row><entry><para>Directory Agent (DA)</para>
</entry><entry><para>Process that caches SLP advertisements that are registered by Service
Agents (SAs). The DA forwards service advertisements to User Agents (UAs)
on demand.</para>
</entry><entry><para></para>
</entry>
</row><row><entry><para>Service Agent (SA)</para>
</entry><entry><para>SLP agent that acts on behalf of a service to distribute service advertisements
and to register the service with Directory Agents (DAs).</para>
</entry><entry><para></para>
</entry>
</row><row><entry><para>User Agent (UA)</para>
</entry><entry><para>SLP agent that acts on behalf of a user or application to obtain service
advertisement information.</para>
</entry><entry><para></para>
</entry>
</row><row><entry><para>scope</para>
</entry><entry><para>An administrative or logical grouping of services.</para>
</entry><entry><para></para>
</entry>
</row>
</tbody>
</tgroup>
</table><para>The following figure shows the basic agents and processes that implement
the SLP architecture. The figure represents a default deployment of SLP. No
special configuration has been done. Only two agents are required: the UA
and SA. The SLP framework allows the UA to multicast requests for services
to the SA. The SA unicasts a reply to the UA. For example, when the UA sends
a service request message, the SA responds with a service reply message. The
service reply contains the location of services that match the client's requirements.
Other requests and replies are possible for attributes and service types.
For more information, see <olink targetptr="slpreference" remap="internal">Chapter&nbsp;11,
SLP (Reference)</olink>.</para><figure id="slparch-fig-31"><title>SLP Basic Agents and Processes</title><mediaobject><imageobject><imagedata entityref="bas-agnt"/>
</imageobject><textobject><simpara>The context describes the graphic.</simpara>
</textobject>
</mediaobject>
</figure><para>The following figure shows the basic agents and processes that implement
the SLP architecture when a DA is deployed in the framework. </para><figure id="slparch-fig-33"><title>SLP Architectural Agents and Processes
Implemented With a DA</title><mediaobject><imageobject><imagedata entityref="bas-agnt-da"/>
</imageobject><textobject><simpara>The context describes the graphic.</simpara>
</textobject>
</mediaobject>
</figure><para>When you deploy DAs, fewer messages are sent in the network and UAs
can retrieve information much faster. DAs are essential when the size of a
network increases or for situations in which there is no support for multicast
routing. The DA serves as a cache for registered service advertisements. SAs
send register messages (<literal>SrvReg</literal>) that list all the services
they advertise to DAs. SAs then receive acknowledgments (<literal>SrvAck</literal>)
in reply. The service advertisements are refreshed with the DA, or they expire
according to the lifetime that is set for the advertisement. After a UA discovers
a DA, the UA unicasts a request to the DA rather than multicasting requests
to SAs.</para><para>For more information about Solaris SLP messages, refer to <olink targetptr="slpreference" remap="internal">Chapter&nbsp;11, SLP (Reference)</olink>.</para>
</sect2>
</sect1><sect1 id="slparch-41"><title>SLP Implementation</title><itemizedlist><para>In the Solaris SLP implementation, the SLP SAs, UAs, DAs, SA servers,
scopes, and other architectural components in <olink targetptr="slparch-tbl-20" remap="internal">Table
7&ndash;1</olink> are partially mapped into <literal>slpd</literal> and partially
into application processes. The SLP daemon, <literal>slpd</literal>, organizes
certain off-host SLP interactions to do the following:</para><listitem><para>Employ passive and active directory agent discovery in order
to discover all DAs on the network</para>
</listitem><listitem><para>Maintain an updated table of DAs for the use of the UAs and
SAs on the local host</para>
</listitem><listitem><para>Act as a proxy SA server for legacy service advertisements
(proxy registration)</para>
</listitem>
</itemizedlist><para>You can set the <literal>net.slpisDA</literal> property to also configure <literal>slpd</literal> to act as a DA. See <olink targetptr="ch.configuration-6" remap="internal">Chapter&nbsp;9,
Administering SLP (Tasks)</olink>.</para><para>For more information about the SLP daemon, see <olink targetdoc="refman1m" targetptr="slpd-1m" remap="external"><citerefentry><refentrytitle>slpd</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink>.</para><itemizedlist><para>In addition to <literal>slpd</literal>, the C/C++ and Java client
libraries (<filename>libslp.so</filename> and <filename>slp.jar</filename>)
enable access to the SLP framework for UA and SA clients. The client libraries
provide the following features:</para><listitem><para>Software that offers network services which can register and
deregister service advertisements</para>
</listitem><listitem><para>Client software that can request services by issuing queries
for service advertisements</para>
</listitem><listitem><para>The list of SLP scopes available for registration and requests</para>
</listitem>
</itemizedlist><para>No special configuration is necessary to enable the inter-process communication
between <literal>slpd</literal> and the client libraries that provide the
previous services. You must, however, run the <literal>slpd</literal> process
first before you load the client libraries in order for the libraries to function.</para><para>In the following figure, the SLP client library in the Service Provider
Program employs SA functionality. The Service Provider Program uses the SLP
client library to register and deregister services with <literal>slpd</literal>.
The SLP client library in the Service Client Program employs UA functionality.
The Service Client Program uses the SLP client library to make requests. The
SLP client library either multicasts requests to SAs or unicasts them to DAs.
This communication is transparent to the application except that the unicast
method of issuing requests is faster. The behavior of the client library can
be affected by setting various SLP configuration properties. For further information,
see <olink targetptr="ch.configuration-6" remap="internal">Chapter&nbsp;9, Administering SLP
(Tasks)</olink>. The <literal>slpd</literal> process handles all SA functionality,
such as answering multicast requests and registering with DAs.</para><figure id="slparch-fig-42"><title>SLP Implementation</title><mediaobject><imageobject><imagedata entityref="slp-arch"/>
</imageobject><textobject><simpara>The context describes the graphic.</simpara>
</textobject>
</mediaobject>
</figure><sect2 id="slpintro-other"><title>Other SLP Information Sources</title><itemizedlist><para>Refer to the following documents for further information on SLP:</para><listitem><para>Kempf, James, and Pete St. Pierre. <citetitle>Service
Location Protocol for Enterprise Networks</citetitle>. John Wiley &amp; Sons,
Inc. ISBN Number: 0&ndash;471&ndash;31587&ndash;7.</para>
</listitem><listitem><para><citetitle>Authentication Management Infrastructure Administration
Guide</citetitle>. Part Number: 805&ndash;1139&ndash;03.</para>
</listitem><listitem><para>Guttman, Erik, Charles Perkins, John Veizades, and Michael
Day. <citetitle>Service Location Protocol, Version 2, RFC 2608</citetitle> from
the Internet Engineering Task Force (IETF). [<ulink url="http://www.ietf.org/rfc/rfc2608.txt" type="text">http://www.ietf.org/rfc/rfc2608.txt</ulink>]</para>
</listitem><listitem><para>Kempf, James, and Erik Guttman. <citetitle>An API for Service
Location, RFC 2614</citetitle> from the Internet Engineering Task Force (IETF).
[<ulink url="http://www.ietf.org/rfc/rfc2614.txt" type="text">http://www.ietf.org/rfc/rfc2614.txt]</ulink></para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
</chapter>