<chapter id="ch.configuration-6"><title>Administering SLP (Tasks)</title><highlights><para>The following sections provide information and tasks for configuring
SLP agents and processes.</para><itemizedlist><listitem><para><olink targetptr="slp.config-1a" remap="internal">Configuring SLP Properties</olink></para>
</listitem><listitem><para><olink targetptr="slp.config-8" remap="internal">Modifying DA Advertising and
Discovery Frequency</olink></para>
</listitem><listitem><para><olink targetptr="slp.config-14" remap="internal">Accommodating Different Network
Media, Topologies, or Configurations</olink></para>
</listitem><listitem><para><olink targetptr="slp.config-19" remap="internal">Modifying Timeouts on SLP
Discovery Requests</olink></para>
</listitem><listitem><para><olink targetptr="slp.config-22" remap="internal">Deploying Scopes</olink></para>
</listitem><listitem><para><olink targetptr="slp.config-dda" remap="internal">Deploying DAs</olink></para>
</listitem><listitem><para><olink targetptr="slp.config-6" remap="internal">SLP and Multihoming</olink></para>
</listitem>
</itemizedlist>
</highlights><sect1 id="slp.config-1a"><title>Configuring SLP Properties</title><itemizedlist><para>SLP configuration properties control network interactions, SLP agent
characteristics, status, and logging. In most situations, the default configuration
of these properties requires no modification. However, you can use the procedures
in this chapter when the network medium or topology changes and to achieve
the following goals:</para><listitem><para>Compensate for network latencies</para>
</listitem><listitem><para>Reduce congestion on the network</para>
</listitem><listitem><para>Add agents or reassign IP addresses</para>
</listitem><listitem><para>Activate SLP logging</para>
</listitem>
</itemizedlist><para>You can edit the SLP configuration file, <filename>/etc/inet/slp.conf</filename>,  to perform operations such as those shown in the following table.</para><table frame="topbot" pgwide="1" id="slp.config-tbl-2a3"><title>SLP Configuration
Operations</title><tgroup cols="2" colsep="1" rowsep="1"><colspec colname="colspec0" colwidth="94.47*"/><colspec colname="col2" colwidth="169.40*"/><thead><row><entry><para>Operation</para>
</entry><entry><para>Description</para>
</entry>
</row>
</thead><tbody><row><entry><para>Specify whether <literal>slpd</literal> should act as a DA server. SA
server is the default.</para>
</entry><entry><para>Set the <literal>net.slpisDA</literal> property to <literal>True</literal>.</para>
</entry>
</row><row><entry><para>Set timing for DA multicast messages.</para>
</entry><entry><para>Set the <literal>net.slp.DAHeartBeat</literal> property to control how
often a DA multicasts an unsolicited DA advertisement.</para>
</entry>
</row><row><entry><para>Enable DA logging to monitor network traffic.</para>
</entry><entry><para>Set the <literal>net.slp.traceDATraffic</literal> property to <literal>True</literal>.</para>
</entry>
</row>
</tbody>
</tgroup>
</table><sect2 id="slp.config-49"><title>SLP Configuration File: Basic Elements</title><itemizedlist><para>The <filename>/etc/inet/slp.conf</filename> file defines and activates
all SLP activity each time you restart the SLP daemon. The configuration file
consists of the following elements: </para><listitem><para>Configuration properties</para>
</listitem><listitem><para>Comment lines and notations</para>
</listitem>
</itemizedlist><sect3 id="slp.config-51"><title>Configuration Properties</title><para>All of the basic SLP properties, such as <literal>net.slp.isDA</literal> and <literal>net.slp.DAHeartBeat</literal>, are named in the following format.</para><screen>net.slp.&lt;keyword></screen><para>SLP behavior is defined by the value of a property or a combination
of properties in the <filename>slp.conf</filename> file. Properties are structured
as key-value pairs in the SLP configuration file. As shown in the following
example, a key-value pair consists of a property name and an associated setting.</para><screen>&lt;property name>=&lt;value></screen><itemizedlist><para>The key for each property is the property name. The value sets the numeric
(distance or time), true/false state, or string value parameters for the property.
Property values consist of one of the following data types:</para><listitem><para>True/False setting (Boolean)</para>
</listitem><listitem><para>Integers</para>
</listitem><listitem><para>List of integers</para>
</listitem><listitem><para>Strings</para>
</listitem><listitem><para>List of strings</para>
</listitem>
</itemizedlist><para>If the value defined is not allowed, the default value for that property
name is used. In addition, an error message is logged using syslog.</para>
</sect3><sect3 id="slp.config-52"><title>Comment Lines and Notations</title><para>You can add comments to the <filename>slp.conf</filename> file
that describe the nature and function of the line. Comment lines are optional
in the file, but can be useful for administration. </para><note><para>Settings in the configuration file are case insensitive. For more
information, refer to: Guttman, Erik, James Kempf, and Charles Perkins, &ldquo;Service
Templates and service: scheme,&rdquo; RFC 2609 from the Internet Engineering
Task Force (IETF). [<ulink url="http://www.ietf.org/rfc/rfc2609.txt" type="text">http://www.ietf.org/rfc/rfc2609.txt</ulink>]</para>
</note>
</sect3>
</sect2><task id="ch.configuration-155"><title>How to Change Your SLP Configuration</title><tasksummary><para>Use this procedure to change the property settings in your SLP configuration
file. SLP&ndash; enabled client or service software also can alter the SLP
configuration by using the SLP API. This API is documented in &ldquo;An API
for Service Location,&rdquo; RFC 2614 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>
</tasksummary><procedure>&rolestepA;<step id="ch.configuration-step-35b"><para>Stop <literal>slpd</literal> and
all SLP activity on the host.</para><screen># <userinput>svcadm disable network/slp</userinput></screen>
</step><step id="ch.configuration-step-36"><para>Back up the default <filename>/etc/inet/slp.conf</filename> file
before you change the configuration settings.</para>
</step><step id="ch.configuration-step-38"><para>Edit the property settings in the <filename>/etc/inet/slp.conf</filename> file as necessary. </para><para>Refer to <olink targetptr="slp.config-51" remap="internal">Configuration Properties</olink> for general information
about the SLP property settings. See the sections that follow this procedure
for examples of different scenarios in which you might change the <filename>slp.conf</filename> properties. See <olink targetdoc="refman4" targetptr="slp.conf-4" remap="external"><citerefentry><refentrytitle>slp.conf</refentrytitle><manvolnum>4</manvolnum></citerefentry></olink>.</para>
</step><step id="ch.configuration-step-39c"><para>Save your changes and close the
file.</para>
</step><step id="ch.configuration-step-40b"><para>Restart <command>slpd</command> to
activate your changes.</para><screen># <userinput>svcadm enable network/slp</userinput></screen><note><para>The SLP daemon obtains information from the configuration file
when you stop or start <command>slpd</command>.</para>
</note>
</step>
</procedure><example id="slp.config-ex-78"><title>Setting up <command>slpd</command> to Operate as a DA Server</title><para>You can change the SA server default to enable <command>slpd</command> to
operate as a DA server by setting the <literal>net.slp.isDA</literal> property
to <literal>True</literal> in the <filename>slpd.conf</filename> file.</para><screen>net.slp.isDA=True</screen><para>In each area, various properties control different aspects of the configuration.
The following sections describe different scenarios in which you might change
the default property settings that are used in SLP configuration.</para>
</example>
</task>
</sect1><sect1 id="slp.config-8"><title>Modifying DA Advertising and Discovery Frequency</title><itemizedlist><para>In situations such as the following, you can modify properties
that control the timing of DA advertisements and discovery requests.</para><listitem><para>When you want the SA or UA to obtain DA configuration information
statically from the <literal>net.slp.DAAddresses</literal> property in the <filename>slp.conf</filename> file, you can disable DA discovery.</para>
</listitem><listitem><para>When the network is subject to recurrent partitioning, you
can change the frequency of passive advertisements and active discovery.</para>
</listitem><listitem><para>If UA and SA clients access DAs on the other side of a dial-up
connection, you can decrease the DA heartbeat frequency and the active discovery
interval to reduce the number of times a dial-up line is activated.</para>
</listitem><listitem><para>If network congestion is high, you can limit multicasting.</para>
</listitem>
</itemizedlist><para>The procedures in this section explain how to modify the following properties.</para><table frame="topbot" pgwide="1" id="slp.config-tbl-2a"><title>DA Advertisement
Timing and Discovery Request Properties</title><tgroup cols="2" colsep="1" rowsep="1"><colspec colname="colspec0" colwidth="4*"/><colspec colname="col2" colwidth="6*"/><thead><row><entry><para>Property</para>
</entry><entry><para>Description</para>
</entry>
</row>
</thead><tbody><row><entry><para><literal>net.slp.passiveDADetection</literal></para>
</entry><entry><para>Boolean that specifies whether <literal>slpd</literal> listens
for unsolicited DA advertisements</para>
</entry>
</row><row><entry><para><literal>net.slp.DAActiveDiscoveryInterval</literal></para>
</entry><entry><para>Value that specifies how often <literal>slpd</literal> performs
active DA discovery for a new DA</para>
</entry>
</row><row><entry><para><literal>net.slp.DAHeartBeat</literal></para>
</entry><entry><para>Value that specifies how often a DA multicasts an unsolicited
DA advertisement</para>
</entry>
</row>
</tbody>
</tgroup>
</table><sect2 id="slp.config-9"><title>Limiting UAs and SAs to Statically Configured
DAs</title><para>Sometimes you might need to limit UAs and SAs to obtaining DA
addresses from the static configuration information in the <filename>slp.conf</filename> file.
In the next procedure, you can modify two properties that cause <literal>slpd</literal> to
obtain DA information exclusively from the <literal>net.slp.DAAddresses</literal> property.</para>
</sect2><task id="slp.config-4"><title>How to Limit UAs and SAs to Statically Configured
DAs</title><tasksummary><para>Use the following procedure to change the <literal>net.slp.passiveDADetection</literal> and the <literal>net.slp.DAActiveDiscoveryInterval</literal> properties.</para><note><para>Use this procedure only on hosts that execute UAs and SAs which
are restricted to static configurations. </para>
</note>
</tasksummary><procedure>&rolestepA;<step id="ch.configuration-step-35c"><para>Stop <command>slpd</command> and
all SLP activity on the host.</para><screen># <userinput>svcadm disable network/slp</userinput></screen>
</step><step id="ch.configuration-step-36a"><para>Back up the default <filename>/etc/inet/slp.conf</filename> file
before you change the configuration settings.</para>
</step><step id="ch.configuration-step-38b"><para>Set the <literal>net.slp.passiveDADetection</literal> property
to <literal>False</literal> in the <filename>slp.conf</filename> file to disable
passive discovery. This setting causes <command>slpd</command> to ignore unsolicited
DA advertisements.</para><screen>net.slp.passiveDADetection=False</screen>
</step><step id="slp.config-step-2"><para>Set the <literal>net.slp.DAActiveDiscoveryInterval</literal> to <literal>-1</literal> to disable initial and periodic active discovery.</para><screen>net.slp.DAActiveDiscoveryInterval=-1</screen>
</step><step id="ch.configuration-step-39b"><para>Save your changes and close the
file.</para>
</step><step id="ch.configuration-step-40c"><para>Restart <command>slpd</command> to
activate your changes.</para><screen># <userinput>svcadm enable network/slp</userinput></screen>
</step>
</procedure>
</task><sect2 id="slp.config-5"><title>Configuring DA Discovery for Dial-up Networks</title><para>If the UAs or SAs are separated from the DA by a dial-up network,
you can configure DA discovery to reduce or eliminate the number of discovery
requests and DA advertisements. Dial-up networks usually incur a charge when
activated. Minimizing extraneous calls can reduce the cost of using the dial-up
network.</para><note><para>You can disable DA discovery completely with the method that is
described in <olink targetptr="slp.config-9" remap="internal">Limiting UAs and SAs to Statically
Configured DAs</olink>. </para>
</note>
</sect2><task id="wuftp-63"><title>How to Configure DA Discovery for Dial-up Networks</title><tasksummary><para>You can use the following procedure to reduce unsolicited DA advertisements
and active discovery by increasing the DA heartbeat period and the active
discovery interval.</para>
</tasksummary><procedure>&rolestepA;<step id="slp.config-step-6"><para>Stop <command>slpd</command> and all SLP
activity on the host.</para><screen># <userinput>svcadm disable network/slp</userinput></screen>
</step><step id="slp.config-step-7"><para>Back up the default <filename>/etc/inet/slp.conf</filename> file
before you change the configuration settings.</para>
</step><step id="wuftp-step-66"><para>Increase the <literal>net.slp.DAHeartbeat</literal> property
in the <filename>slpd.conf</filename> file.</para><screen><literal>net.slp.DAHeartbeat</literal>=<replaceable>value</replaceable></screen><variablelist><varlistentry><term><replaceable>value</replaceable></term><listitem><para>A 32-bit integer that sets the number of seconds for the passive
DA advertisement heartbeat</para><para>Default Value=10800 seconds (3 hours)</para><para>Range of Values=2000&ndash;259200000 seconds</para>
</listitem>
</varlistentry>
</variablelist><para>For example, you can set the DA heartbeat to approximately 18 hours
on a host that is executing a DA:</para><screen>net.slp.DAHeartbeat=65535</screen>
</step><step id="slp.config-step-8"><para>Increase the <literal>net.slp.DAActiveDiscoveryInterval</literal> property in the <filename>slpd.conf</filename> file:</para><screen><literal>net.slp.DAActiveDiscoveryInterval</literal> <replaceable>value</replaceable></screen><variablelist><varlistentry><term><replaceable>value</replaceable></term><listitem><para>A 32&ndash;bit integer that sets the number of seconds for
DA active discovery queries</para><para>Default Value=900 seconds (15 minutes)</para><para>Range of Values=300&ndash;10800 seconds</para>
</listitem>
</varlistentry>
</variablelist><para>For example, you can set the DA active discovery interval to 18 hours
on a host that is executing a UA and an SA:</para><screen>net.slp.DAActiveDiscoveryInterval=65535</screen>
</step><step id="ch.configuration-step-39d"><para>Save your changes and close the
file.</para>
</step><step id="ch.configuration-step-40d"><para>Restart <command>slpd</command> to
activate your changes.</para><screen># <userinput>svcadm enable network/slp</userinput></screen>
</step>
</procedure>
</task><sect2 id="slp.config-2"><title>Configuring the DA Heartbeat for Frequent
Partitions</title><para>SAs are required to register with all DAs that support their scopes.
A DA can appear after <command>slpd</command> has performed active discovery.
If the DA supports <command>slpd</command> scopes, the SLP daemon registers
all advertisements on its host with the DA.</para><para>One way <command>slpd</command> discovers DAs is by the initial unsolicited
advertisement a DA sends when it boots. The SLP daemon uses the periodic unsolicited
advertisement (the heartbeat) to determine whether a DA is still active. If
the heartbeat fails to appear, the daemon removes the DAs the daemon uses
and those the daemon offers to UAs.</para><para>Finally, when a DA undergoes a controlled shutdown, it transmits a special
DA advertisement that informs listening SA services that it will be out of
service. The SLP daemon also uses this advertisement to remove inactive DAs
from the cache.</para><para>If your network is subject to frequent partitions and SAs are
long-lived, <command>slpd</command> can remove cached DAs during the partitioning
if heartbeat advertisements are not received. By decreasing the heartbeat
time, you can decrease the delay before a deactivated DA is restored to the
cache after the partition is repaired.</para>
</sect2><task id="slp.config-3"><title>How to Configure DA Heartbeat for Frequent
Partitions</title><tasksummary><para>Use the following procedure to change the <literal>net.slp.DAHeartBeat</literal> property to decrease the DA heartbeat period.</para><note><para>If DA discovery is completely disabled, the <literal>net.slp.DAAddresses</literal> property must be set in <filename>slp.conf</filename> on the hosts
that are executing UAs and SAs so that they access the correct DA.</para>
</note>
</tasksummary><procedure>&rolestepA;<step id="slp.config-step-10"><para>Stop <command>slpd</command> and all SLP
activity on the host.</para><screen># <userinput>svcadm disable network/slp</userinput></screen>
</step><step id="slp.config-step-11"><para>Back up the default <filename>/etc/inet/slp.conf</filename> file
before you change the configuration settings.</para>
</step><step id="slp.config-step-12"><para>Decrease the <literal>net.slp.DAHeartBeat</literal> value to 1
hour (3600 seconds). By default, the DA heartbeat period is set to 3 hours
(10800 seconds). </para><screen>net.slp.DAHeartBeat=3600</screen>
</step><step id="slp.config-step-13"><para>Save your changes and close the file.</para>
</step><step id="slp.config-step-14"><para>Restart <command>slpd</command> to activate
your changes.</para><screen># <userinput>svcadm enable network/slp</userinput></screen>
</step>
</procedure>
</task><sect2 id="slp.config-13"><title>Relieving Network Congestion</title><para>If network congestion is high, you can limit the amount of multicast
activity. If DAs have not already been deployed in the network, deploying
DAs can drastically reduce the amount of SLP-related multicast.</para><para>However, even after DAs are deployed, multicast is still necessary
for DA discovery. You can reduce the amount of multicast necessary for DA
discovery by using the method that is described in <olink targetptr="wuftp-63" remap="internal">How
to Configure DA Discovery for Dial-up Networks</olink>. You can completely
eliminate multicast for DA discovery by using the method that is described
in <olink targetptr="slp.config-9" remap="internal">Limiting UAs and SAs to Statically Configured
DAs</olink>.</para>
</sect2>
</sect1><sect1 id="slp.config-14"><title>Accommodating Different Network Media, Topologies,
or Configurations</title><para>This section describes possible scenarios in which you can change
the following properties to tune SLP performance.</para><table frame="topbot" id="slp.config-tbl-2a1b"><title>SLP Performance Properties</title><tgroup cols="2" colsep="0" rowsep="0"><colspec colname="colspec0" colwidth="4*"/><colspec colname="col2" colwidth="6*"/><thead><row><entry><para>Property</para>
</entry><entry><para>Description</para>
</entry>
</row>
</thead><tbody><row><entry><para><literal>net.slp.DAAttributes</literal></para>
</entry><entry><para>The minimum refresh interval that a DA accepts for advertisements.</para>
</entry>
</row><row><entry><para><literal>net.slp.multicastTTL</literal></para>
</entry><entry><para>The <emphasis>time-to-live</emphasis> value that is specified for multicast
packets.</para>
</entry>
</row><row><entry><para><literal>net.slp.MTU</literal></para>
</entry><entry><para>The byte size set for network packets. The size includes IP and TCP
or UDP headers.</para>
</entry>
</row><row><entry><para><literal>net.slp.isBroadcastOnly</literal></para>
</entry><entry><para>The Boolean that is set to indicate if broadcast should be used for
DA and non-DA-based service discovery.</para>
</entry>
</row>
</tbody>
</tgroup>
</table><sect2 id="slp.config-15"><title>Reducing SA Reregistrations</title><para>SAs periodically need to refresh their service advertisements
before lifetimes expire. If a DA is handling an extremely heavy load from
many UAs and SAs, frequent refreshes can cause the DA to become overloaded.
If the DA becomes overloaded, UA requests start to time out and are then dropped.
UA request timeouts  have many possible causes. Before you assume that DA
overload is the problem, use a <command>snoop</command> trace to check the
lifetimes of service advertisements that are registered with a service registration.
If the lifetimes are short and reregistrations are occurring often, the timeouts
are probably the result of frequent reregistrations.</para><note><para>A service registration is a <emphasis>reregistration</emphasis> if
the FRESH flag is not set. See <olink targetptr="slpreference" remap="internal">Chapter&nbsp;11,
SLP (Reference)</olink> for more information on service registration messages.</para>
</note>
</sect2><task id="slp.config-rsar"><title>How to Reduce SA Reregistrations</title><tasksummary><para>Use the following procedure to increase the minimum refresh interval
for SAs to reduce reregistrations.</para>
</tasksummary><procedure>&rolestepA;<step id="slp.config-step-16"><para>Stop <command>slpd</command> and all SLP
activity on the host.</para><screen># <userinput>svcadm disable network/slp</userinput></screen>
</step><step id="slp.config-step-17"><para>Back up the default <filename>/etc/inet/slp.conf</filename> file
before you change the configuration settings.</para>
</step><step id="slp.config-step-18"><para>Increase the value of the <literal>min-refresh-interval</literal> attribute
of the <literal>net.slp.DAAttributes</literal> property.</para><para>The default
minimum reregistration period is zero. The zero default allows SAs to reregister
at any point. In the following example, the interval is increased to 3600
seconds (one hour).</para><screen>net.slp.DAAttributes(min-refresh-interval=3600)</screen>
</step><step id="slp.config-step-19"><para>Save your changes and close the file.</para>
</step><step id="slp.config-step-20"><para>Restart <command>slpd</command> to activate
your changes.</para><screen># <userinput>svcadm enable network/slp</userinput></screen>
</step>
</procedure>
</task><sect2 id="slp.config-16"><title>Configuring the Multicast Time-to-Live Property</title><para>The multicast time&ndash;to-live property (<literal>net.slp.multicastTTL</literal>) determines the range over which a multicast packet is propagated
on your intranet. The multicast TTL is configured by setting the <literal>net.slp.multicastTTL</literal> property to an integer between 1 and 255. The default value of
the multicast TTL is 255, which means, theoretically, that the packet routing
is unrestricted. However, a TTL of 255 causes a multicast packet to penetrate
the intranet to the border routers on the edge of your administrative domain.
Correct configuration of multicast on border routers is required to prevent
multicast packets from leaking into the Internet's multicast backbone, or
to your ISP.</para><para>Multicast TTL scoping is similar to standard IP TTL, with the exception
that a TTL comparison is made. Each interface on a router that is multicast
enabled is assigned a TTL value. When a multicast packet arrives, the router
compares the TTL of the packet with the TTL of the interface. If the TTL of
the packet is greater than or equal to the TTL of the interface, the packet
TTL is reduced by one, as with the standard IP TTL. If the TTL becomes zero,
the packet is discarded. When you use TTL scoping for SLP multicasting, your
routers must be properly configured to limit packets to a particular subsection
of your intranet.</para>
</sect2><task id="slp.config-htcmttlp"><title>How to Configure the Multicast Time-to-Live
Property</title><tasksummary><para>Use the following procedure to reset the <literal>net.slp.multicastTTL</literal> property.</para>
</tasksummary><procedure>&rolestepA;<step id="slp.config-step-23"><para>Stop <command>slpd</command> and all SLP
activity on the host.</para><screen># <userinput>svcadm disable network/slp</userinput></screen>
</step><step id="slp.config-step-24"><para>Back up the default <filename>/etc/inet/slp.conf</filename> file
before you change the configuration settings.</para>
</step><step id="slp.config-step-25"><para>Change the <literal>net.slp.multicastTTL</literal> property
in the <filename>slpd.conf</filename> file:</para><screen><literal>net.slp.multicastTTL</literal>=<replaceable>value</replaceable></screen><variablelist><varlistentry><term><replaceable>value</replaceable></term><listitem><para>A positive integer less than or equal to 255 that defines
the multicast TTL</para>
</listitem>
</varlistentry>
</variablelist><note><para>You can reduce the range of multicast propagation by reducing
the TTL value. If the TTL value is 1, then the packet is restricted to the
subnet. If the value is 32, the packet is restricted to the site. Unfortunately,
the term <emphasis>site</emphasis> is not defined by RFC 1075, where multicast
TTLs are discussed. Values above 32 refer to theoretical routing on the Internet
and should not be used. Values below 32 can be used to restrict multicast
to a set of accessible subnets, if the routers are properly configured with
TTLs.</para>
</note>
</step><step id="slp.config-step-26"><para>Save your changes and close the file.</para>
</step><step id="slp.config-step-27"><para>Restart <command>slpd</command> to activate
your changes.</para><screen># <userinput>svcadm enable network/slp</userinput></screen>
</step>
</procedure>
</task><sect2 id="slp.config-17"><title>Configuring the Packet Size</title><para>The default packet size for SLP is 1400 bytes. The size should
be sufficient for most local area networks. For wireless networks or wide
area networks, you can reduce the packet size to avoid message fragmentation
and reduce network traffic. For local area networks that have larger packets,
increasing the packet size can improve performance. You can determine whether
the packet size needs to be reduced by checking the minimum packet size for
your network. If the network medium has a smaller packet size, you can reduce
the <literal>net.slp.MTU</literal> value accordingly.</para><para>You can increase the packet size if your network medium has larger packets.
However, unless the service advertisements from SAs or queries from UAs frequently
overflow the default packet size, you should not have to change the <literal>net.slp.MTU</literal> value. You can use <command>snoop</command> to determine whether
UA requests often overflow the default packet size and roll over to use TCP
rather than UDP. </para><para>The <literal>net.slp.MTU</literal> property measures the complete IP
packet size, including the link layer header, the IP header, the UDP or TCP
header, and the SLP message.</para>
</sect2><task id="slp.config-28"><title>How to Configure the Packet Size</title><tasksummary><para>Use the following procedure to change the default packet size by adjusting
the <literal>net.slp.MTU</literal> property.</para>
</tasksummary><procedure>&rolestepA;<step id="slp.config-step-31"><para>Stop <command>slpd</command> and all SLP
activity on the host.</para><screen># <userinput>svcadm disable network/slp</userinput></screen>
</step><step id="slp.config-step-32"><para>Back up the default <filename>/etc/inet/slp.conf</filename> file
before you change the configuration settings.</para>
</step><step id="slp.config-step-33"><para>Change the <literal>net.slp.MTU</literal> property
in the <filename>slpd.conf</filename> file:</para><screen><literal>net.slp.MTU</literal>=<replaceable>value</replaceable></screen><variablelist><varlistentry><term><replaceable>value</replaceable></term><listitem><para>A 16&ndash;bit integer that specifies the network packet size,
in bytes</para><para>Default Value=1400</para><para>Range of Values=128&ndash;8192</para>
</listitem>
</varlistentry>
</variablelist>
</step><step id="slp.config-step-34"><para>Save your changes and close the file.</para>
</step><step id="slp.config-step-35"><para>Restart <command>slpd</command> to activate
your changes.</para><screen># <userinput>svcadm enable network/slp</userinput></screen>
</step>
</procedure>
</task><sect2 id="slp.config-18"><title>Configuring Broadcast-Only Routing</title><para>SLP is designed to use multicast for service discovery in the
absence of DAs and for DA discovery. If your network does not deploy multicast
routing, you can configure SLP to use broadcast by setting the <literal>net.slp.isBroadcastOnly</literal> property to <literal>True</literal>.</para><para>Unlike multicast, broadcast packets do not propagate across subnets
by default. For this reason, service discovery without DAs in a non-multicast
network works only on a single subnet. In addition, special considerations
are required when deploying DAs and scopes on networks in which broadcast
is used. A DA on a multihomed host can bridge service discovery between multiple
subnets with multicast disabled. See <olink targetptr="slp.config-47" remap="internal">DA Placement
and Scope Name Assignment</olink> for more information on deploying DAs on
multihomed hosts.</para>
</sect2><task id="slp.config-36"><title>How to Configure Broadcast-Only Routing</title><tasksummary><para>Use the following procedure to change <literal>net.slp.isBroadcastOnly</literal> property to <literal>True</literal>.</para>
</tasksummary><procedure>&rolestepA;<step id="slp.config-step-39"><para>Stop <command>slpd</command> and all SLP
activity on the host.</para><screen># <userinput>svcadm disable network/slp</userinput></screen>
</step><step id="slp.config-step-40"><para>Back up the default <filename>/etc/inet/slp.conf</filename> file
before you change the configuration settings.</para>
</step><step id="slp.config-step-41"><para>Change the <literal>net.slp.isBroadcastOnly</literal> property
in the <filename>slpd.conf</filename> file to <literal>True</literal>:</para><screen>net.slp.isBroadcastOnly=True</screen>
</step><step id="slp.config-step-42"><para>Save your changes and close the file.</para>
</step><step id="slp.config-step-43"><para>Restart <command>slpd</command> to activate
your changes.</para><screen># <userinput>svcadm enable network/slp</userinput></screen>
</step>
</procedure>
</task>
</sect1><sect1 id="slp.config-19"><title>Modifying Timeouts on SLP Discovery Requests</title><itemizedlist><para>Two situations might require that you change the timeouts for
SLP discovery requests:</para><listitem><para>If the SLP agents are separated by multiple subnets, dial-up
lines, or other WANs, the network latency can be high enough that the default
timeouts are insufficient for a request or registration to be completed. Conversely,
if your network is low latency, you can improve performance by decreasing
the timeouts.</para>
</listitem><listitem><para>If the network is subject to heavy traffic or a high collision
rates, the maximum period that SAs and UAs need to wait before sending a message
might be insufficient to assure collision-free transactions.</para>
</listitem>
</itemizedlist><sect2 id="slp.config-20"><title>Changing Default Timeouts</title><para>High network latency can cause UAs and SAs to time out before
a response returns for requests and registrations. Latency can be a problem
if a UA is separated from an SA, or if both a UA and an SA are separated from
a DA;either by multiple subnets, a dial-up line, or a WAN. You can determine
if latency is a problem by checking whether SLP requests are failing because
of timeouts on UA and SA requests and registrations. You can also use the <command>ping</command> command to measure the actual latency.</para><para>The following table lists configuration properties that control timeouts.
You can use the procedures in this section to modify these properties.</para><table frame="topbot" id="slp.config-tbl-cdto"><title>Time-out Properties</title><tgroup cols="2" colsep="1" rowsep="1"><colspec colname="colspec0" colwidth="89.39*"/><colspec colname="col2" colwidth="94.97*"/><thead><row><entry><para>Property</para>
</entry><entry><para>Description</para>
</entry>
</row>
</thead><tbody><row><entry><para><literal>net.slp.multicastTimeouts</literal></para><para><literal>net.slp.DADiscoveryTimeouts</literal></para><para><literal>net.slp.datagramTimeouts</literal></para>
</entry><entry><para>The properties that control timeouts for repeated multicast and unicast
UDP message transmissions before the transmission is abandoned.</para>
</entry>
</row><row><entry><para><literal>net.slp.multicastMaximumWait</literal></para>
</entry><entry><para>The property that controls the maximum amount of time a multicast message
is transmitted before it is abandoned.</para>
</entry>
</row><row><entry><para><literal>net.slp.datagramTimeouts</literal></para>
</entry><entry><para>The upper bound of a DA timeout that is specified by the sum of values
that are listed for this property. A UDP datagram is repeatedly sent to a
DA until a response is received or the time-out bound is reached.</para>
</entry>
</row>
</tbody>
</tgroup>
</table><para>If frequent timeouts are occurring during multicast service discovery
or DA discovery, increase the <literal>net.slp.multicastMaximumWait</literal> property
from the default value of 15000 milliseconds (15 seconds). Increasing the
maximum wait period allows more time for requests on high latency networks
to be completed. After you change the <literal>net.slp.multicastMaximumWait</literal>,
you should also modify the <literal>net.slp.multicastTimeouts</literal> and <literal>net.slp.DADiscoveryTimeouts</literal>. The sum of the timeout values for these
properties equals the <literal>net.slp.multicastMaximumWait</literal> value.</para>
</sect2><task id="slp.config-44"><title>How to Change Default Timeouts</title><tasksummary><para>Use the following procedure to change the SLP properties that control
timeouts.</para>
</tasksummary><procedure>&rolestepA;<step id="slp.config-step-47"><para>Stop <command>slpd</command> and all SLP
activity on the host.</para><screen># <userinput>svcadm disable network/slp</userinput></screen>
</step><step id="slp.config-step-48"><para>Back up the default <filename>/etc/inet/slp.conf</filename> file
before you change the configuration settings.</para>
</step><step id="slp.config-step-49"><para>Change the <literal>net.slp.multicastMaximumWait</literal> property in the <filename>slpd.conf</filename> file:</para><screen><literal>net.slp.multicastMaximumWait</literal>=<replaceable>value</replaceable></screen><variablelist><varlistentry><term><replaceable>value</replaceable></term><listitem><para>A 32&ndash;bit integer that lists the sum of the values that
are set for <literal>net.slp.multicastTimeouts</literal> and <literal>net.slp.DADiscoveryTimeouts</literal></para><para>Default Value=15000 milliseconds (15 seconds)</para><para>Range of Values=1000 to 60000 milliseconds</para>
</listitem>
</varlistentry>
</variablelist><para>For example, if you determine that multicast requests require 20 seconds
(20000 milliseconds), you would adjust the values that are listed for <literal>net.slp.multicastTimeouts</literal> and the <literal>net.slp.DADiscoveryTimeouts</literal> properties
to equal 20000 milliseconds.</para><screen>net.slp.multicastMaximumWait=20000
net.slp.multicastTimeouts=2000,5000,6000,7000
net.slp.DADiscoveryTimeouts=3000,3000,6000,8000</screen>
</step><step id="slp.config-step-50"><para>If necessary, change the <literal>net.slp.datagramTimeouts</literal> property in the <filename>slpd.conf</filename> file:</para><screen><literal>net.slp.datagramTimeouts</literal>=<replaceable>value</replaceable></screen><variablelist><varlistentry><term><replaceable>value</replaceable></term><listitem><para>A list of 32&ndash;bit integers that specify timeouts, in
milliseconds, to implement unicast datagram transmission to DAs</para><para>Default=3000,3000,3000</para>
</listitem>
</varlistentry>
</variablelist><para>For example, you can increase the datagram timeout to 20000 milliseconds
to avoid frequent timeouts.</para><screen>net.slp.datagramTimeouts=2000,5000,6000,7000</screen><para>In high-performance networks, you can reduce the time-out bound for
multicast and unicast UDP datagram transmission. When you reduce the time-out
bound, you decrease latency that is required to satisfy SLP requests.</para>
</step><step id="slp.config-step-51"><para>Save your changes and close the file.</para>
</step><step id="slp.config-step-52"><para>Restart <command>slpd</command> to activate
your changes.</para><screen># <userinput>svcadm enable network/slp</userinput></screen>
</step>
</procedure>
</task><sect2 id="slp.config-21"><title>Configuring the Random-Wait Bound</title><para>In networks with heavy traffic or a high collision rate, communication
with a DA might be affected. When collision rates are high, the sending agent
must retransmit the UDP datagram. You can determine if retransmission is occurring
by using <command>snoop</command> to monitor traffic on a network of hosts
that are running <command>slpd</command> as an SA server and a host that is
running <command>slpd</command> as a DA. If multiple service registration
messages  for the same service appear in the <command>snoop</command> trace
from the host that is running <command>slpd</command> as an SA server, you
might have notice collisions.</para><para>Collisions can be particularly troubling at boot time. When a
DA first starts, it sends unsolicited advertisements and the SAs respond with
registrations. SLP requires the SAs to wait for a random amount of time after
receiving a DA advertisement before responding. The random-wait bound is uniformly
distributed with a maximum value that is controlled by the <literal>net.slp.randomWaitBound</literal>. The default random-wait bound is 1000 milliseconds (1 second).</para>
</sect2><task id="slp.config-53"><title>How to Configure the Random-Wait Bound</title><tasksummary><para>Use the following procedure to change the <literal>net.slp.RandomWaitBound</literal> property
in the <filename>slp.conf</filename> file.</para>
</tasksummary><procedure>&rolestepA;<step id="slp.config-step-56"><para>Stop <command>slpd</command> and all SLP
activity on the host.</para><screen># <userinput>svcadm disable network/slp</userinput></screen>
</step><step id="slp.config-step-57"><para>Back up the default <filename>/etc/inet/slp.conf</filename> file
before you change the configuration settings.</para>
</step><step id="slp.config-step-58z"><para>Change the <literal>net.slp.RandomWaitBound</literal> property
in the <filename>slpd.conf</filename> file:</para><screen><literal>net.slp.RandomWaitBound</literal>=<replaceable>value</replaceable></screen><variablelist><varlistentry><term><replaceable>value</replaceable></term><listitem><para>The upper bound for calculating the random-wait time before
attempting to contact a DA</para><para>Default Value=1000 milliseconds (1 second)</para><para>Range of Values=1000 to 3000 milliseconds</para>
</listitem>
</varlistentry>
</variablelist><para>For example, you can lengthen the maximum wait to 2000 milliseconds
(2 seconds).</para><screen>net.slp.randomWaitBound=2000</screen><para>When you lengthen the random-wait bound, a longer delay in registration
occurs. SAs can complete registrations with newly discovered DAs more slowly
to avoid collisions and timeouts.</para>
</step><step id="slp.config-step-59"><para>If necessary, change the <literal>net.slp.datagramTimeouts</literal> property in the <filename>slpd.conf</filename> file:</para><screen><literal>net.slp.datgramTimeouts</literal>=<replaceable>value</replaceable></screen><variablelist><varlistentry><term><replaceable>value</replaceable></term><listitem><para>A list of 32&ndash;bit integers that specify timeouts, in
milliseconds, to implement unicast datagram transmission to DAs</para><para>Default=3000,3000,3000</para>
</listitem>
</varlistentry>
</variablelist><para>For example, you can increase the datagram timeout to 20000 milliseconds
to avoid frequent timeouts.</para><screen>net.slp.datagramTimeouts=2000,5000,6000,7000</screen><para>In high-performance networks, you can reduce the time-out bound for
multicast and unicast UDP datagram transmission. This setting reduces the
amount of latency in satisfying SLP requests.</para>
</step><step id="slp.config-step-60"><para>Save your changes and close the file.</para>
</step><step id="slp.config-step-61"><para>Restart <command>slpd</command> to activate
your changes.</para><screen># <userinput>svcadm enable network/slp</userinput></screen>
</step>
</procedure>
</task>
</sect1><sect1 id="slp.config-22"><title>Deploying Scopes</title><para>With scopes, you can provision services  that depend on the logical,
physical, and administrative groupings of users. You can use scopes to administer
access to service advertisements.</para><para>Use the <literal>net.slp.useScopes</literal> property to create
scopes. For example, in the <filename>/etc/inet/slp.conf</filename> file on
a host, add a new scope, called <literal>newscope</literal>, as shown:</para><screen>net.slp.useScopes=newscope</screen><para>Your organization might, for example, have an alcove of networked devices,such as printers
and fax machines, at the end of the south hall on the second floor of
Building 6. These devices could be used by everyone on the second floor, or
you might restrict the usage to members of a certain department. Scopes provide
a way for you to provision access to the service advertisements for these
machines.</para><para>If the devices are dedicated to a single department, you can create
a scope with the department name, for example, <literal>mktg</literal>. Devices
that belong to other departments can be configured with different scope names.</para><para>In another scenario, the departments might be dispersed. For instance,
the mechanical engineering and the CAD/CAM departments might be split between
floors 1 and 2. However, you can provide the floor 2 machines for the hosts
on both floors by assigning them to the same scope. You can deploy scopes
in any manner that operates well with your network and users.</para><note><para>UAs that have particular scope are not prevented from actually
using services that are advertised in other scopes. Configuring scopes controls
only which service advertisements a UA detects. The service is responsible
for enforcing any access control restrictions.</para>
</note><sect2 id="slp.config-23"><title>When to Configure Scopes</title><para>SLP can function adequately without any scope configuration. In the
Solaris operating environment, the default scope for SLP is <literal>default</literal>.
If no scopes are configured, <literal>default</literal> is the scope of all
SLP messages. </para><para>You can configure scopes in any of the following circumstances.</para><itemizedlist><listitem><para>The organizations you support want to restrict service advertisement
access to their own members.</para>
</listitem><listitem><para>The physical layout of the organization you support suggests
that services in a certain area be accessed by particular users.</para>
</listitem><listitem><para>The service advertisements that are appropriate for specific
users to see must be partitioned.</para>
</listitem>
</itemizedlist><para>An example of the first circumstance was cited in <olink targetptr="slp.config-5" remap="internal">Configuring DA Discovery for Dial-up Networks</olink>.
An example of the second is a situation in which an organization is spread
between two buildings, and you want users in a building to access local services
in that building. You can configure users in Building 1 with the <literal>B1</literal> scope,
while you configure users in Building 2 with the <literal>B2</literal> scope.</para>
</sect2><sect2 id="slp.config-30"><title>Considerations When Configuring Scopes</title><para>When you modify the <literal>net.slp.useScopes</literal> property
in the <filename>slpd.conf</filename> file, you configure scopes for all agents
on the host. If the host is running any SAs or is acting as a DA, you must
configure this property if you want to configure the SAs or DA into scopes
other than <literal>default</literal>. If only UAs are running on the machine
and the UAs should discover SAs and DAs supporting scopes other than <literal>default</literal>, you do not need to configure the property unless you want to restrict
the scopes the UAs use. If the property is not configured, UAs can automatically
discover available DAs and scopes through <literal>slpd</literal>. The SLP
daemon uses active and passive DA discovery to find DAs, or it uses SA discovery
if no DAs are running. Alternatively, if the property is configured, UAs use
only the configured scopes and do not discard them.</para><para>If you decide to configure scopes, you should consider keeping
the <literal>default</literal> scope on the list of configured scopes unless
you are sure that all SAs in the network have scopes configured. If any SAs
are left unconfigured, UAs with configured scopes are unable to find them.
This situation occurs because the unconfigured SAs automatically have scope <literal>default</literal>, but the UAs have the configured scopes.</para><para>If you also decide to configure DAs by setting the <literal>net.slp.DAAddresses</literal> property, be sure that the scopes that are supported by the configured
DAs are the same as the scopes that you have configured with the <literal>net.slp.useScopes</literal> property. If the scopes are different, <literal>slpd</literal> prints
an error message when it is restarted.</para>
</sect2><task id="slp.config-62"><title>How to Configure Scopes</title><tasksummary><para>Use the following procedure to add scope names to the <literal>net.slp.useScopes</literal> property in the <filename>slp.conf</filename> file. </para>
</tasksummary><procedure>&rolestepA;<step id="slp.config-step-65"><para>Stop <command>slpd</command> and all SLP
activity on the host.</para><screen># <userinput>svcadm disable network/slp</userinput></screen>
</step><step id="slp.config-step-66"><para>Back up the default <filename>/etc/inet/slp.conf</filename> file
before you change the configuration settings.</para>
</step><step id="slp.config-step-67"><para>Change the <literal>net.slp.useScopes</literal> property
in the <filename>slpd.conf</filename> file:</para><screen><literal>net.slp.useScopes</literal>=<replaceable>&lt;scope names></replaceable></screen><variablelist><varlistentry><term><replaceable>scope names</replaceable></term><listitem><para>A list of strings that indicate which scopes a DA or SA is
allowed to use when making requests, or which scopes a DA must support</para><para>Default Value=Default for SA and DA/Unassigned for UA</para>
</listitem>
</varlistentry>
</variablelist><note><itemizedlist><para>Use the following to construct scope names:</para><listitem><para>Any alphanumeric characters, uppercase or lowercase</para>
</listitem><listitem><para>Any punctuation characters (except for: <emphasis>''</emphasis>, <emphasis>\</emphasis>, <emphasis>!</emphasis>, <emphasis>&lt;</emphasis>, <emphasis>=</emphasis>, <emphasis>></emphasis>, and <emphasis>~</emphasis>)</para>
</listitem><listitem><para>Spaces that are considered part of the name</para>
</listitem><listitem><para>Non-ASCII characters</para><para>You use a backslash to escape
non-ASCII characters. For example, UTF-8 encoding uses <literal>0xc3a9</literal> hex
code to represent the letter <emphasis>e</emphasis> with the French <emphasis>aigue</emphasis> accent. If the platform does not support UTF-8, you use the UTF-8
hex code as the escape sequence <literal>\c3\a9</literal>.</para>
</listitem>
</itemizedlist>
</note><para>For example, to specify scopes for <literal>eng</literal> and <literal>mktg</literal> groups in <literal>bldg6</literal>, you change the <literal>net.slp.useScopes</literal> line to the following.</para><screen>net.slp.useScopes=eng,mktg,bldg6</screen>
</step><step id="slp.config-step-68"><para>Save your changes and close the file.</para>
</step><step id="slp.config-step-69"><para>Restart <command>slpd</command> to activate
your changes.</para><screen># <userinput>svcadm enable network/slp</userinput></screen>
</step>
</procedure>
</task>
</sect1><sect1 id="slp.config-dda"><title>Deploying DAs</title><para>This section describes the strategic deployment of DAs in a network
that is running SLP.</para><para>SLP functions adequately with only the base agents (UAs and SAs), and
with no deployed DAs or configured scopes. All agents that lack specific configurations
use the <literal>default</literal> scope. DAs serve as caches for service
advertisements. Deploying DAs decreases the number of messages that are sent
on the network and reduces the time that is required to receive responses
to messages. This capability enables SLP to accommodate larger networks.</para><sect2 id="slp.config-31"><title>Why Deploy an SLP DA?</title><para>The primary reason to deploy DAs is to reduce the amount of multicast
traffic and the delays that are associated with gathering unicast replies.
In a large network with many UAs and SAs, the amount of multicast traffic
that is involved in service discovery can become so large that network performance
degrades. By deploying one or more DAs, UAs must unicast to DAs for service
and SAs must register with DAs by using unicast. The only SLP-registered multicast
in a network with DAs is for active and passive DA discovery.</para><para>SAs register automatically with any DAs they discover within a
set of common scopes, rather than accepting multicast service requests. Multicast
requests in scopes that are not supported by the DA are still answered directly
by the SA, however. </para><para>Service requests from UAs are unicast to DAs rather than multicast
onto the network when a DA is deployed within the UA's scopes. Consequently,
DAs within the UA's scopes reduce multicast. By eliminating multicast for
normal UA requests, the time that is required to obtain replies to queries
is greatly reduced (from seconds to milliseconds).</para><para>DAs act as a focal point for SA and UA activity. Deploying one
or several DAs for a collection of scopes provides a centralized point for
monitoring SLP activity. By turning on DA logging, it is easier to monitor
registrations and requests than by checking the logs from multiple SAs that
are scattered around the network. You can deploy any number of DAs for a particular
scope or scopes, depending on the need to balance the load.</para><para>In networks without multicast routing enabled, you can configure
SLP to use broadcast. However, broadcast is very inefficient, because it requires
each host to process the message. Broadcast also does not normally propagate
across routers. As a result, in a network without multicast routing support,
services can be discovered only on the same subnet. Partial support for multicast
routing leads to inconsistent ability to discover services on a network. Multicast
messages are used to discover DAs. Partial support for multicast routing,
therefore, implies that UAs and SAs register services with all known DAs in
the SA's scope. For example, if a UA queries a DA that is called <literal>DA1</literal> and
the SA has registered services with <literal>DA2</literal>, the UA will fail
to discover a service.  See <olink targetptr="slp.config-18" remap="internal">Configuring Broadcast-Only
Routing</olink> for more information on how to deploy SLP on networks without
multicast enabled.</para><para>On a network with inconsistent site-wide support for multicast routing,
you must configure the SLP UAs and SAs with a consistent list of DA locations
by using the <literal>net.slp.DAAdresseses</literal> property.</para><para>Finally, the Solaris SLPv2 DA supports interoperability with SLPv1.
SLPv1 interoperability is enabled by default in the Solaris DA. If your network
contains SLPv1 devices, such as printers, or you need to interoperate with
Novell Netware 5, which uses SLPv1 for service discovery, you should deploy
a DA. Without a DA, the Solaris SLP UAs are unable to find SLPv1 advertised
services.</para>
</sect2><sect2 id="slp.config-32"><title>When to Deploy DAs</title><itemizedlist><para>Deploy DAs on your enterprise if any of the following conditions are
true:</para><listitem><para>Multicast SLP traffic exceeds 1 percent of the bandwidth on
your network, as measured by <command>snoop</command>.</para>
</listitem><listitem><para>UA clients experience long delays or timeouts during multicast
service requests.</para>
</listitem><listitem><para>You want to centralize the monitoring of SLP service advertisements
for particular scopes on one or several hosts.</para>
</listitem><listitem><para>Your network does not have multicast enabled and consists
of multiple subnets that must share services.</para>
</listitem><listitem><para>Your network employs devices that support earlier versions
of SLP (SLPv1) or you would like SLP service discovery to interoperate with
Novell Netware 5.</para>
</listitem>
</itemizedlist>
</sect2><task id="slp.config-70"><title>How to Deploy DAs</title><tasksummary><para>Use the following procedure to set the <literal>net.slp.isDA</literal> property
to <literal>True</literal> in the <filename>slp.conf</filename> file. </para><note><para>You can assign only one DA per host.</para>
</note>
</tasksummary><procedure>&rolestepA;<step id="slp.config-step-73"><para>Stop <command>slpd</command>and all SLP
activity on the host.</para><screen># <userinput>svcadm disable network/slp</userinput></screen>
</step><step id="slp.config-step-74"><para>Back up the default <filename>/etc/inet/slp.conf</filename> file
before you change the configuration settings.</para>
</step><step id="slp.config-step-75"><para>Set the <literal>net.slp.isDA</literal> property
in the <filename>slpd.conf</filename> file to <literal>True</literal>:</para><screen>net.slp.isDA=True</screen>
</step><step id="slp.config-step-76"><para>Save your changes and close the file.</para>
</step><step id="slp.config-step-77"><para>Restart <command>slpd</command> to activate
your changes.</para><screen># <userinput>svcadm enable network/slp</userinput></screen>
</step>
</procedure>
</task><sect2 id="slp.config-40"><title>Where to Place DAs</title><para>This section provides suggestions for where to place DAs in different
situations.</para><itemizedlist><listitem><para>When multicast routing is not enabled and DAs are required
to bridge service discovery between subnets</para><para>In this situation, a DA must be placed on a host with interfaces
and all subnets that share services. The <literal>net.slp.interfaces</literal> configuration
property does <emphasis>not</emphasis> need to be set, unless IP packets are
not routed among the interfaces. See <olink targetptr="slp.config-42" remap="internal">Multihoming
Configuration for SLP</olink> for more information on configuring the <literal>net.slp.interfaces</literal> property.</para>
</listitem><listitem><para>When DAs are deployed for scalability and the primary consideration
is optimizing agent access</para><para>UAs typically make many requests for
services to DAs. An SA registers with the DA once, and can refresh the advertisement
at periodic but infrequent intervals. As a result, UA access to DAs is far
more frequent than SA access. The number of service advertisements is also
usually smaller than the number of requests. Consequently, most DA deployments
are more efficient if the deployment is optimized for UA access.</para>
</listitem><listitem><para>Situating DAs so that they are topologically close to UAs
on the network to optimize UA access</para><para>Naturally, you must configure
the DA with a scope that is shared by both the UA and SA clients.</para>
</listitem>
</itemizedlist><sect3 id="slp.config-41"><title>Placing Multiple DAs for Load Balancing</title><itemizedlist><para>You can deploy multiple DAs for the same collection of scopes as a means
of load balancing. Deploy DAs in any of the following circumstances:</para><listitem><para>UA requests to a DA are timing out, or are returning with the <literal>DA_BUSY_NOW</literal> error.</para>
</listitem><listitem><para>The DA log shows that many SLP requests are being dropped.</para>
</listitem><listitem><para>The network of users who share services in the scopes spans
a number of buildings or physical sites.</para>
</listitem>
</itemizedlist><para>You can run a <command>snoop</command> trace of SLP traffic to
determine how many UA requests return with the <literal>DA_BUSY_NOW</literal> error.
If the number of UA requests returned is high, UAs in buildings physically
and topologically distant from the DA can exhibit slow response or excessive
timeouts. In such a scenario, you can deploy a DA in each building to improve
response for UA clients within the building.</para><para>Links that connect buildings are often slower than the local area
networks within the buildings. If your network spans multiple buildings or
physical sites, set the <literal>net.slp.DAAddresses</literal> property in
the <literal>/etc/inet/slp.conf</literal> file to a list of specific host
names or addresses so that the UAs access only the DAs you specify.</para><para>If a particular DA is using large amounts of host memory for service
registrations, reduce the number of SA registrations by reducing the number
of scopes the DA supports. You can split into two a scope that has many registrations.
You can then support one of the new scopes by deploying another DA on another
host.</para>
</sect3>
</sect2>
</sect1><sect1 id="slp.config-6"><title>SLP and Multihoming</title><para>A multihomed server acts as a host on multiple IP subnets. The server
can sometimes have more than one network interface card and can act as a router.
IP packets, including multicast packets, are routed between the interfaces.
In some situations, routing between interfaces is disabled. The following
sections describe how to configure SLP for such situations.</para><sect2 id="slp.config-42"><title>Multihoming Configuration for SLP</title><para>Without configuration, <command>slpd</command> listens for multicast
and for UDP/TCP unicast on the default network interface. If unicast and multicast
routing is enabled between interfaces on a multihomed machine, no additional
configuration is needed. This is because multicast packets that arrive at
another interface are properly routed to the default. As a result, multicast
requests for DA or other service advertisements arrive at <command>slpd</command>.
If routing is not turned on for some reason, configuration is required.</para>
</sect2><sect2 id="slp.config-43"><title>When to Configure for Nonrouted, Multiple
Network Interfaces</title><para>If one of the following conditions exist, you might need to configure
multihomed machines.</para><itemizedlist><listitem><para>Unicast routing is enabled between the interfaces and multicast
routing is disabled.</para>
</listitem><listitem><para>Unicast routing and multicast routing are both disabled between
the interfaces.</para>
</listitem>
</itemizedlist><para>When multicast routing is disabled between interfaces, it is usually
because multicast has not been deployed in the network. In that situation,
broadcast is normally used for  service discovery  that is not DA-based and
for DA discovery on the individual subnets. Broadcast is configured by setting
the <literal>net.slp.isBroadcastOnly</literal> property to <literal>True</literal>.</para>
</sect2><sect2 id="slp.config-tcnmi"><title>Configuring Nonrouted, Multiple Network
Interfaces (Task Map)</title><table frame="all" pgwide="1" id="slp.config-tbl-2"><title>Configuring Nonrouted,
Multiple Network Interfaces</title><tgroup cols="3" colsep="1" rowsep="1"><colspec colname="colspec0" colwidth="117.93*"/><colspec colname="col2" colwidth="155.77*"/><colspec colname="colspec3" colwidth="113.31*"/><thead><row><entry><para>Task</para>
</entry><entry><para>Description</para>
</entry><entry><para>For Instructions</para>
</entry>
</row>
</thead><tbody><row><entry><para>Configure the <literal>net.slp.interfaces</literal> property</para>
</entry><entry><para>Set this property to enable <filename>slpd</filename> to listen for
unicast and multicast/broadcast SLP requests on the specified interfaces.</para>
</entry><entry><para><olink targetptr="slp.config-45" remap="internal">Configuring the net.slp.interfaces
Property</olink></para>
</entry>
</row><row><entry><para>Arrange proxy service advertisements so that UAs on subnets get service
URLs with reachable addresses</para>
</entry><entry><para>Restrict proxy advertisement to a machine that is running <filename>slpd</filename> connected
to a single subnet rather than a multihomed host.</para>
</entry><entry><para><olink targetptr="slp.config-46" remap="internal">Proxy Advertising on Multihomed Hosts</olink></para>
</entry>
</row><row><entry><para>Place the DAs and configure scopes to assure reachability between UAs
and SAs</para>
</entry><entry><para>Configure the <literal>net.slp.interfaces</literal> property on multihomed
hosts with a single interface host name or address.</para><para>Run a DA on a multihomed host, but configure scopes so that SAs and
UAs on each subnet use different hosts.</para>
</entry><entry><para><olink targetptr="slp.config-47" remap="internal">DA Placement and Scope Name Assignment</olink></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</sect2><sect2 id="slp.config-45"><title>Configuring the <literal>net.slp.interfaces</literal> Property</title><para>If the <literal>net.slp.interfaces</literal> property is set, <command>slpd</command> listens for unicast and multicast/broadcast SLP requests on
the interfaces that are listed in the property, rather than on the default
interface. </para><para>Usually, you set the <literal>net.slp.interfaces</literal> property
in conjunction with enabling broadcast by setting the <literal>net.slp.isBroadcastOnly</literal> property, because multicast has not been deployed in the network.
However, if  multicast has been deployed, but is not being routed on this
particular multihomed host, a multicast request can arrive at <command>slpd</command> from
more than one interface. This situation can occur when the routing of packets
is handled by another multihomed host or router that connects the subnets
that are served by the interfaces.</para><para>When such a situation occurs, the SA server or the UA that is
sending the request receives two responses from <command>slpd</command> on
the multihomed host. The responses are then filtered by the client libraries
and the client does not see them. The responses are, however, visible in the <command>snoop</command> trace.</para><note><itemizedlist><para>If unicast routing is turned off, services that are advertised by SA
clients on multihomed hosts might not be reachable from all the subnets. If
services are unreachable, SA clients can do the following:</para><listitem><para>Advertise one service URL for each individual subnet.</para>
</listitem><listitem><para>Assure that requests from a particular subnet are answered
with a reachable URL.</para>
</listitem>
</itemizedlist>
</note><para>The SA client library makes no effort to assure that reachable
URLs are advertised. The service program, which might or might not handle
a multihomed host with no routing, is then responsible for assuring that reachable
URLs are advertised. </para><para>Before you deploy a service on a multihomed host with  unicast
routing disabled, use <command>snoop</command> to determine whether the service
handles requests from multiple subnets correctly. Furthermore, if you plan
to deploy a DA on the multihomed host, see <olink targetptr="slp.config-47" remap="internal">DA
Placement and Scope Name Assignment</olink>.</para><task id="slp.config-htcnsi"><title>How to Configure the <literal>net.slp.interfaces</literal> Property</title><tasksummary><para>Use the following procedure to change the <literal>net.slp.interfaces</literal> property
in the <filename>slp.conf</filename> file.</para>
</tasksummary><procedure>&rolestepA;<step id="slp.config-step-56z"><para>Stop <command>slpd</command> and all
SLP activity on the host.</para><screen># <userinput>svcadm disable network/slp</userinput></screen>
</step><step id="slp.config-step-57z"><para>Back up the default <filename>/etc/inet/slp.conf</filename> file
before you change the configuration settings.</para>
</step><step id="slp.config-step-58"><para>Change the <literal>net.slp.interfaces</literal> property
in the <filename>slpd.conf</filename> file:</para><screen><literal>net.slp.interfaces</literal>=<replaceable>value</replaceable></screen><variablelist><varlistentry><term><replaceable>value</replaceable></term><listitem><para>List of IPv4 addresses or host names of the network interface
cards on which the DA or SA should listen for multicast, unicast UDP, and
TCP messages on port 427</para>
</listitem>
</varlistentry>
</variablelist><para>For example, a server with three network cards and multicast routing
that is  turned off is connected to three subnets. The IP addresses of the
three network interfaces are <literal>192.147.142.42</literal>, <literal>192.147.143.42</literal>, and <literal>192.147.144.42</literal>. The subnet mask is <literal>255.255.255.0</literal>. The following property setting causes <literal>slpd</literal> to
listen on all three interfaces for unicast and  multicast/broadcast messaging:</para><screen>net.slp.interfaces=192.147.142.42,192.147.143.42,192.147.144.42</screen><note><para>You can specify IP addresses or resolvable host names for the <literal>net.slp.interfaces</literal> property.</para>
</note>
</step><step id="slp.config-step-60z"><para>Save your changes and close the file.</para>
</step><step id="slp.config-step-61z"><para>Restart <command>slpd</command> to activate
your changes.</para><screen># <userinput>svcadm enable network/slp</userinput></screen>
</step>
</procedure>
</task>
</sect2><sect2 id="slp.config-46"><title>Proxy Advertising on Multihomed Hosts</title><para>If a host with multiple interfaces advertises services by using <command>slpd</command> and proxy registration, the service URLs that are advertised by <command>slpd</command> must contain reachable host names or addresses. If unicast
routing is enabled between the interfaces, hosts on all subnets can reach
hosts on other subnets. Proxy registrations can also be made for a service
on any subnet. If, however, unicast routing is disabled, service clients on
one subnet cannot reach services on another subnet through the multihomed
host. However, those clients might be able to reach the services through another
router.</para><para>For example, suppose the host with default host name <literal>bigguy</literal> has
three  interface cards on three different unrouted subnets. The host names
on these subnets are <literal>bigguy</literal>, with IP address <literal>192.147.142.42</literal>, <literal>bigguy1</literal>, with IP address <literal>192.147.143.42</literal>,
and <literal>bigguy2</literal>, with IP address <literal>192.147.144.42</literal>.
Now suppose that a legacy printer, <literal>oldprinter</literal>, is connected
to the <literal>143</literal> subnet and that the URL <literal>service:printing:lpr://oldprinter/queue1</literal> is configured with the <literal>net.slp.interfaces</literal> to
listen on all interfaces. The <literal>oldprinter</literal> URL is proxy-advertised
on all interfaces. The machines on the <literal>142</literal> and <literal>144</literal> subnets
receive the URL in response to service requests, but are unable to access
the <literal>oldprinter</literal> service.</para><para>The solution to this problem is to perform the proxy advertisement with <command>slpd</command> running on a machine that is connected to the <literal>143</literal> subnet
only, rather than on the multihomed host. Only hosts on the <literal>143</literal> subnet
can obtain the advertisement in response to a service request.</para>
</sect2><sect2 id="slp.config-47"><title>DA Placement and Scope Name Assignment</title><para>The placement of DAs and assignment of scope names on a network
with a multihomed host must be done carefully to assure that clients obtain
accessible services. Be particularly cautious when routing is disabled and
the <literal>net.slp.interfaces</literal> property is configured. Again, if
unicast routing is enabled between the interfaces on a multihomed machine,
no special DA and scope configuration is necessary. The advertisements are
cached with the DA identify services that are accessible from any of the subnets.
However, if unicast routing is disabled, poor placement of DAs can result
in problems.</para><para>To see what problems can result in the previous example, consider what
would happen if <literal>bigguy</literal> runs a DA, and clients on all subnets
have the same scopes. SAs on the <literal>143</literal> subnet register their
service advertisements with the DA. UAs on the <literal>144</literal> subnet
can obtain those service advertisements, even though hosts on the <literal>143</literal> subnet
are unreachable.</para><para>One solution to this problem is to run a DA on each subnet and
not on the multihomed host. In this situation, the <literal>net.slp.interfaces</literal> property
on the multihomed hosts should be configured with a single interface host
name or address, or it should be left unconfigured, forcing the default interface
to be used. A disadvantage of this solution is that multihomed hosts are often
large machines that could better handle the computational load of a DA.</para><para>Another solution is to run a DA on the multihomed host, but configure
scopes so that the SAs and UAs on each subnet have a different scope. For
example, in the previous situation, UAs and SAs on the <literal>142</literal> subnet
might have a scope that is called <literal>scope142</literal>. UAs and SAs
on the <literal>143</literal> subnet might have another scope that is called <literal>scope143</literal> and UAs and SAs on the <literal>144</literal> subnet could
have third scope that is called <literal>scope144</literal>. You can configure
the <literal>net.slp.interfaces</literal> property on <literal>bigguy</literal> with
the three interfaces so that the DA serves three scopes on the three subnets.</para>
</sect2><sect2 id="slp.config-48"><title>Considerations When Configuring for Nonrouted,
Multiple Network Interfaces</title><para>Configuring the <literal>net.slp.interfaces</literal> property
enables a DA on the multihomed host to bridge service advertisements between
the subnets. Such configuration is useful if multicast routing is turned off
in the network, but unicast routing between interfaces on a multihomed host
is enabled.  Because unicast is routed between the interfaces, hosts on a
subnet different from the subnet on which the service is located can contact
the service when they receive the service URL. Without the DA, SA servers
on a particular subnet receive only broadcasts that were made on the same
subnet, so they cannot locate services off of their subnet.</para><para>The most common situation that necessitates configuration of the <literal>net.slp.interfaces</literal> property occurs when multicast is not deployed on the network and
broadcast is used instead. Other situations require careful thought and planning
to avoid unnecessary duplicate responses or unreachable services.</para>
</sect2>
</sect1>
</chapter>