<chapter id="chapter4-1"><title>Internet Protocol Suite Tunable Parameters</title><highlights><para>This chapter describes various Internet Protocol suite parameters, such
as TCP, IP, UDP, and SCTP.</para><itemizedlist><listitem><para><olink targetptr="chapter4-21" remap="internal">IP Tunable Parameters</olink></para>
</listitem><listitem><para><olink targetptr="chapter4-31" remap="internal">TCP Tunable Parameters</olink></para>
</listitem><listitem><para><olink targetptr="chapter4-57" remap="internal">UDP Tunable Parameters</olink></para>
</listitem><listitem><para><olink targetptr="chapter4-62" remap="internal">IPQoS Tunable Parameter</olink></para>
</listitem><listitem><para><olink targetptr="chapter4-98" remap="internal">SCTP
Tunable Parameters</olink></para>
</listitem><listitem><para><olink targetptr="chapter4-64" remap="internal">Per-Route Metrics</olink></para>
</listitem>
</itemizedlist>
</highlights><sect1 id="chapter4-9"><title>Where to Find Tunable Parameter Information</title><informaltable frame="topbot"><tgroup cols="2" colsep="0" rowsep="0"><colspec colname="colspec0" colwidth="50*"/><colspec colname="colspec1" colwidth="50*"/><thead><row rowsep="1"><entry><para>Tunable Parameter</para>
</entry><entry><para>For Information</para>
</entry>
</row>
</thead><tbody><row><entry><para>Solaris kernel tunables</para>
</entry><entry><para><olink targetptr="chapter2-1" remap="internal">Chapter&nbsp;2, Solaris Kernel Tunable
Parameters</olink></para>
</entry>
</row><row><entry><para>NFS tunable parameters</para>
</entry><entry><para><olink targetptr="chapter3-1" remap="internal">Chapter&nbsp;3, NFS Tunable Parameters</olink></para>
</entry>
</row><row><entry><para>Network Cache and Accelerator (NCA) tunable parameters</para>
</entry><entry><para><olink targetptr="chapter5-1" remap="internal">Chapter&nbsp;5, Network Cache and Accelerator
Tunable Parameters</olink></para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect1><sect1 id="chapter4-2"><title>Overview of Tuning IP Suite Parameters</title><para>For new information about IP forwarding, see <olink targetptr="chapter1-36" remap="internal">New and Changed TCP/IP Parameters</olink>.</para><para>You can set all of the tuning parameters described in this chapter by
using the <command>ndd</command> command except for the following parameters:.</para><itemizedlist><listitem><para><olink targetptr="chapter4-75" remap="internal">ipcl_conn_hash_size</olink></para>
</listitem><listitem><para><olink targetptr="chapter4-5" remap="internal">ip_squeue_worker_wait</olink></para>
</listitem>
</itemizedlist><para>These parameters can only be set in the <filename>/etc/system</filename> file.</para><para>For
example, use the following syntax to set TCP/IP parameters by using the <command>ndd</command> command:</para><screen># <userinput>ndd -set</userinput> <replaceable>driver</replaceable> <replaceable>parameter</replaceable></screen><para>For more information, see <olink targetdoc="refman1m" targetptr="ndd-1m" remap="external"><citerefentry><refentrytitle>ndd</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink>.</para><para>Although the SMF framework provides a method for managing system services, <command>ndd</command> commands are still included in system startup scripts. For more
information on creating a startup script, see <olink targetdoc="sysadv1" targetptr="fahqr" remap="external"><citetitle remap="section">Using Run Control Scripts</citetitle> in <citetitle remap="book">System Administration Guide: Basic Administration</citetitle></olink>.</para><sect2 id="chapter4-65"><title>IP Suite Parameter Validation</title><para>All parameters described in this section are checked to verify that
they fall in the parameter range. The parameter's range is provided with the
description for each parameter.</para>
</sect2><sect2 id="chapter4-67"><title>Internet Request for Comments (RFCs)</title><para>Internet protocol and standard specifications are described in RFC documents.
You can get copies of RFCs from <literal>ftp://ftp.rfc-editor.org/in-notes</literal>.
Browse RFC topics by viewing the <filename>rfc-index.txt</filename> file at
this site.</para>
</sect2>
</sect1><sect1 id="chapter4-21"><title>IP Tunable Parameters</title><sect2 id="chapter4-22"><title><literal>ip_icmp_err_interval</literal> and <literal>ip_icmp_err_burst</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Controls the rate of IP in generating IPv4 or IPv6 ICMP error
messages. IP generates only up to <literal>ip_icmp_err_burst</literal> IPv4
or IPv6 ICMP error messages in any <literal>ip_icmp_err_interval</literal>.</para><para>The <literal>ip_icmp_err_interval</literal> parameter protects
IP from denial of service attacks. Setting this parameter to 0 disables rate
limiting. It does not disable the generation of error messages.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>100 milliseconds for <literal>ip_icmp_err_interval</literal></para><para>10 error messages for <literal>ip_icmp_err_burst</literal></para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>0 &ndash; 99,999 milliseconds for <literal>ip_icmp_err_interval</literal> </para><para>1 &ndash; 99,999 error messages for <literal>ip_icmp_err_burst</literal></para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>If you need a higher error message generation rate for diagnostic
purposes.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-23"><title><literal>ip_respond_to_echo_broadcast</literal> and <literal>ip6_respond_to_echo_multicast</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Controls whether IPv4 or IPv6 responds to a broadcast ICMPv4 echo
request or a multicast ICMPv6 echo request.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>1 (enabled)</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>0 (disabled) or 1 (enabled)</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>If you do not want this behavior for security reasons, disable
it.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-24"><title><literal>ip_send_redirects</literal> and <literal>ip6_send_redirects</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Controls whether IPv4 or IPv6 sends out ICMPv4 or ICMPv6 redirect
messages.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>1 (enabled)</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>0 (disabled) or 1 (enabled)</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>If you do not want this behavior for security reasons, disable
it.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-25"><title><literal>ip_forward_src_routed</literal> and <literal>ip6_forward_src_routed</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Controls whether IPv4 or IPv6 forwards packets with source IPv4
routing options or IPv6 routing headers.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>0 (disabled)</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>0 (disabled) or 1 (enabled)</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Keep this parameter disabled to prevent denial of service
attacks.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry><varlistentry><term>Change History</term><listitem><para>For information, see <olink targetptr="appendixa-44" remap="internal">ip_forward_src_routed
and ip6_forward_src_routed (Solaris 10 Release)</olink>.</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-28"><title><literal>ip_addrs_per_if</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Defines the maximum number of logical interfaces associated with
a real interface.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>256</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>1 to 8192</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Do not change the value. If more logical interfaces are required,
you might consider increasing the value. However, recognize that this change
might have a negative impact on IP's performance.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-29"><title><literal>ip_strict_dst_multihoming</literal> and <literal>ip6_strict_dst_multihoming</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Determines whether a packet arriving on a non forwarding interface
can be accepted for an IP address that is not explicitly configured on that
interface. If <literal>ip_forwarding</literal> is enabled, or <replaceable>xxx</replaceable><literal>:ip_forwarding</literal> for the appropriate interfaces is enabled, then this
parameter is ignored, because the packet is actually forwarded.</para><para>Refer to RFC 1122, 3.3.4.2.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>0 (loose multihoming)</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>0 = Off (loose multihoming)</para><para>1 = On (strict multihoming)</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>If a machine has interfaces that cross strict networking domains
(for example, a firewall or a VPN node), set this parameter to 1.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="gbglv"><title><literal>ip_multidata_outbound</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Enables the network stack to send more than one packet at
one time to the network device driver during transmission.</para><para>Enabling this parameter reduces the per-packet processing costs by improving
host  CPU utilization, network throughput, or both.</para><para>This parameter now controls the use of multidata transmit (MDT) for
transmitting IP fragments. For example, when sending out a UDP payload larger
than the link MTU. When this tunable is enabled, IP fragments of a particular
upper-level protocol, such as UDP, are delivered in batches to the network
device driver.  Disabling this feature results in both TCP and IP fragmentation
logic in the network stack to revert back to sending one packet at a time
to the driver. </para><para>The MDT feature is only effective for device drivers that support this
feature.</para><para>See also <olink targetptr="fapwd" remap="internal">tcp_mdt_max_pbufs</olink>.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>1 (Enabled)</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>0 (disabled) or 1 (enabled)</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>If you do not want this parameter enabled for debugging purposes
or for any other reasons, disable it.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry><varlistentry><term>Change History</term><listitem><para>For information, see <olink targetptr="appendixa-43" remap="internal">ip_multidata_outbound
(Solaris 10 Release)</olink>.</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-7"><title><literal>ip_squeue_fanout</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Determines the mode of associating TCP/IP connections with
squeues</para><para>A value of 0 associates a new TCP/IP connection with the CPU that
creates the connection. A value of 1 associates the connection with multiple
squeues that belong to different CPUs. The number of squeues that are used
to fanout the connection is based upon <olink targetptr="gbsbo" remap="internal">ip_soft_rings_cnt</olink>.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>0</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>0 or 1</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Consider setting this parameter to 1 to spread the load across
all CPUs in certain situations. For example, when the number of CPUs exceed
the number of NICs, and one CPU is not capable of handling the network load
of a single NIC, change this parameter to 1.</para>
</listitem>
</varlistentry><varlistentry><term>Zone Configuration</term><listitem><para>This parameter can only be set in the global zone.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry><varlistentry><term>Change History</term><listitem><para>For information, see <olink targetptr="getmg" remap="internal">ip_squeue_fanout
(Solaris 10 11/06 Release)</olink>.</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="gbsbo"><title><literal>ip_soft_rings_cnt</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Determines the number of squeues to be used to fanout the
incoming TCP/IP connections.</para><note><para>The incoming traffic is placed on one of the rings. If the ring
is overloaded, packets are dropped. For every packet that gets dropped, the
kstat dls counter,  <literal>dls_soft_ring_pkt_drop</literal>, is incremented.</para>
</note>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>2</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>0 - nCPUs, where nCPUs is the maximum number of CPUs in the
system</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>No. The interface should be plumbed again when changing this
parameter.</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Consider setting this parameter to a value greater than 2
on systems that have 10 Gbps NICs and many CPUs.</para>
</listitem>
</varlistentry><varlistentry><term>Zone Configuration</term><listitem><para>This parameter can only be set in the global zone.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Obsolete</para>
</listitem>
</varlistentry><varlistentry><term>Change History</term><listitem><para>For information, see <olink targetptr="getmv" remap="internal">ip_soft_rings_cnt
(Solaris 10 11/06 Release)</olink>.</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-68"><title>IP Tunable Parameters With Additional Cautions</title><para>Changing the following parameters is not recommended.</para><sect3 id="chapter4-26"><title><literal>ip_ire_pathmtu_interval</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Specifies the interval in milliseconds when IP flushes the path
maximum transfer unit (PMTU) discovery information, and tries to rediscover
PMTU.</para><para>Refer to RFC 1191 on PMTU discovery.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>10 minutes</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>5 seconds to 277 hours</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Do not change this value.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect3><sect3 id="chapter4-27"><title><literal>ip_icmp_return_data_bytes</literal> and <literal>ip6_icmp_return_data_bytes</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>When IPv4 or IPv6 sends an ICMPv4 or ICMPv6 error message, it
includes the IP header of the packet that caused the error message. This parameter
controls how many extra bytes of the packet beyond the IPv4 or IPv6 header
are included in the ICMPv4 or ICMPv6 error message.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>64 bytes</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>8 to 65,536 bytes</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Do not change the value. Including more information in an
ICMP error message might help in diagnosing network problems. If this feature
is needed, increase the value.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect3>
</sect2>
</sect1><sect1 id="chapter4-31"><title>TCP Tunable Parameters</title><sect2 id="chapter4-37"><title><literal>tcp_deferred_ack_interval</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Specifies the time-out value for the TCP-delayed acknowledgment
(ACK) timer for hosts that are not directly connected.</para><para>Refer to RFC 1122, 4.2.3.2.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>100 milliseconds</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>1 millisecond to 1 minute</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Do not increase this value to more than 500 milliseconds.</para><para>Increase the value under the following circumstances:</para><itemizedlist><listitem><para>Slow network links (less than 57.6 Kbps) with greater than
512 bytes maximum segment size (MSS)</para>
</listitem><listitem><para>The interval for receiving more than one TCP segment is short</para>
</listitem>
</itemizedlist>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-71"><title><literal>tcp_local_dack_interval</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Specifies the time-out value for TCP-delayed acknowledgment (ACK)
timer for hosts that are directly connected.</para><para>Refer to RFC 1122, 4.2.3.2.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>50 milliseconds</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>1 millisecond to 1 minute</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Do not increase this value to more than 500 milliseconds.</para><para>Increase the value under the following circumstances:</para><itemizedlist><listitem><para>Slow network links (less than 57.6 Kbps) with greater than
512 bytes maximum segment size (MSS)</para>
</listitem><listitem><para>The interval for receiving more than one TCP segment is short</para>
</listitem>
</itemizedlist>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-38"><title><literal>tcp_deferred_acks_max</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Specifies the maximum number of TCP segments received from remote
destinations (not directly connected) before an acknowledgment (ACK) is generated.
TCP segments are measured in units of maximum segment size (MSS) for individual
connections. If set to 0 or 1, no ACKs are delayed, assuming all segments
are 1 MSS long. The actual number is dynamically calculated for each connection.
The value is the default maximum.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>2</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>0 to 16</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Do not change the value. In some circumstances, when the network
traffic becomes very bursty because of the delayed ACK effect, decrease the
value. Do not decrease this value below 2.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-72"><title><literal>tcp_local_dacks_max</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Specifies the maximum number of TCP segments received from directly
connected destinations before an acknowledgment (ACK) is generated. TCP segments
are measured in units of maximum segment size (MSS) for individual connections.
If set to 0 or 1, it means no ACKs are delayed, assuming all segments are
1 MSS long. The actual number is dynamically calculated for each connection.
The value is the default maximum.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>8</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>0 to 16</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Do not change the value. In some circumstances, when the network
traffic becomes very bursty because of the delayed ACK effect, decrease the
value. Do not decrease this value below 2.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-39"><title><literal>tcp_wscale_always</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>When this parameter is enabled, which is the default setting,
TCP always sends a SYN segment with the window scale option, even if the window
scale option value is 0. Note that if TCP receives a SYN segment with the
window scale option, even if the parameter is disabled, TCP responds with
a SYN segment with the window scale option. In addition, the option value
is set according to the receive window size.</para><para>Refer to RFC 1323 for the window scale option.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>1 (enabled)</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>0 (disabled) or 1 (enabled)</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>If there is an interoperability problem with an old TCP stack
that does not support the window scale option, disable this parameter.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry><varlistentry><term>Change History</term><listitem><para>For information, see <olink targetptr="gbudm" remap="internal">tcp_wscale_always
(Solaris 9 Releases)</olink>.</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-40"><title><literal>tcp_tstamp_always</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>If set to 1, TCP always sends a SYN segment with the timestamp
option. Note that if TCP receives a SYN segment with the timestamp option,
TCP responds with a SYN segment with the timestamp option even if the parameter
is set to 0.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>0 (disabled)</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>0 (disabled) or 1 (enabled)</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>If getting an accurate measurement of round-trip time (RTT)
and TCP sequence number wraparound is a problem, enable this parameter.</para><para>Refer to RFC 1323 for more reasons to enable this option.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-42"><title><literal>tcp_xmit_hiwat</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Defines the default send window size in bytes. Refer to <olink targetptr="chapter4-64" remap="internal">Per-Route Metrics</olink> for a discussion of setting
a different value on a per-route basis. See also <olink targetptr="chapter4-45" remap="internal">tcp_max_buf</olink>.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>49,152</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>4096 to 1,073,741,824</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>An application can use <olink targetdoc="refman3b" targetptr="setsockopt-3xnet" remap="external"><citerefentry><refentrytitle>setsockopt</refentrytitle><manvolnum>3XNET</manvolnum></citerefentry></olink> <literal>SO_SNDBUF</literal> to
change the individual connection's send buffer.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-43"><title><literal>tcp_recv_hiwat</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Defines the default receive window size in bytes. Refer to <olink targetptr="chapter4-64" remap="internal">Per-Route Metrics</olink> for a discussion of setting
a different value on a per-route basis. See also <olink targetptr="chapter4-45" remap="internal">tcp_max_buf</olink> and <olink targetptr="chapter4-44" remap="internal">tcp_recv_hiwat_minmss</olink>.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>49,152</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>2048 to 1,073,741,824</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>An application can use <olink targetdoc="refman3b" targetptr="setsockopt-3xnet" remap="external"><citerefentry><refentrytitle>setsockopt</refentrytitle><manvolnum>3XNET</manvolnum></citerefentry></olink> <literal>SO_RCVBUF</literal> to
change the individual connection's receive buffer.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-45"><title><literal>tcp_max_buf</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Defines the maximum buffer size in bytes. This parameter controls
how large the send and receive buffers are set to by an application that uses <olink targetdoc="refman3b" targetptr="setsockopt-3xnet" remap="external"><citerefentry><refentrytitle>setsockopt</refentrytitle><manvolnum>3XNET</manvolnum></citerefentry></olink>. </para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>1,048,576</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>8192 to 1,073,741,824</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>If TCP connections are being made in a high-speed network
environment, increase the value to match the network link speed.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-46"><title><literal>tcp_cwnd_max</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Defines the maximum value of the TCP congestion window (cwnd)
in bytes.</para><para>For more information on the TCP congestion window, refer to RFC 1122
and RFC 2581.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>1,048,576</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>128 to 1,073,741,824</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Even if an application uses <olink targetdoc="refman3b" targetptr="setsockopt-3xnet" remap="external"><citerefentry><refentrytitle>setsockopt</refentrytitle><manvolnum>3XNET</manvolnum></citerefentry></olink> to change the window size
to a value higher than <literal>tcp_cwnd_max</literal>, the actual window
used can never grow beyond <literal>tcp_cwnd_max</literal>. Thus, <literal>tcp_max_buf</literal> should be greater than <literal>tcp_cwnd_max</literal>.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-47"><title><literal>tcp_slow_start_initial</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Defines the maximum initial congestion window (cwnd) size in the
maximum segment size (MSS) of a TCP connection.</para><para>Refer to RFC 2414 on how the initial congestion window size is calculated.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>4</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>1 to 4</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Do not change the value.</para><para>If the initial cwnd size causes network congestion under special circumstances,
decrease the value.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-48"><title><literal>tcp_slow_start_after_idle</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>The congestion window size in the maximum segment size (MSS) of
a TCP connection after it has been idled (no segment received) for a period
of one retransmission timeout (RTO).</para><para>Refer to RFC 2414  on how the initial congestion window size is calculated.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>4</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>1 to 16,384</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>For more information, see <olink targetptr="chapter4-47" remap="internal">tcp_slow_start_initial</olink>.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-49"><title><literal>tcp_sack_permitted</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>If set to 2, TCP always sends a SYN segment with the selective
acknowledgment (SACK) permitted option. If TCP receives a SYN segment with
a SACK-permitted option and this parameter is set to 1, TCP responds with
a SACK-permitted option. If the parameter is set to 0, TCP does not send a
SACK-permitted option, regardless of whether the incoming segment contains
the SACK permitted option. </para><para>Refer to RFC 2018 for information on the SACK option.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>2 (active enabled)</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>0 (disabled), 1 (passive enabled), or 2 (active enabled)</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>SACK processing can improve TCP retransmission performance
so it should be actively enabled. Sometimes, the other side can be confused
with the SACK option actively enabled. If this confusion occurs, set the value
to 1 so that SACK processing is enabled only when incoming connections allow
SACK processing.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-50"><title><literal>tcp_rev_src_routes</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>If set to 0, TCP does not reverse the IP source routing option
for incoming connections for security reasons. If set to 1, TCP does the normal
reverse source routing.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>0 (disabled)</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>0 (disabled) or 1 (enabled)</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>If IP source routing is needed for diagnostic purposes, enable
it.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-51"><title><literal>tcp_time_wait_interval</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Specifies the time in milliseconds that a TCP connection stays
in TIME-WAIT state.</para><para>For more information, refer to RFC 1122, 4.2.2.13.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>60,000 (60 seconds)</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>1 second to 10 minutes</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Do not set the value lower than 60 seconds.</para><para>For information on changing this parameter, refer to RFC 1122, 4.2.2.13.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-73"><title><literal>tcp_ecn_permitted</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Controls Explicit Congestion Notification (ECN) support.</para><para>If this parameter is set to 0, TCP does not negotiate with a peer that
supports the ECN mechanism.</para><para>If this parameter is set to 1 when initiating a connection, TCP does
not tell a peer that it supports ECN mechanism.</para><para>However, TCP tells a peer that it supports ECN mechanism when accepting
a new incoming connection request if the peer indicates that it supports ECN
mechanism in the SYN segment.</para><para>If this parameter is set to 2, in addition to negotiating with a peer
on the ECN mechanism when accepting connections, TCP indicates in the outgoing
SYN segment that it supports the ECN mechanism when TCP makes active outgoing
connections.</para><para>Refer to RFC 3168 for information on ECN.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>1 (passive enabled)</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>0 (disabled), 1 (passive enabled), or 2 (active enabled)</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>ECN can help TCP better handle congestion control. However,
there are existing TCP implementations, firewalls, NATs, and other network
devices that are confused by this mechanism. These devices do not comply to
the IETF standard.</para><para>Because of these devices, the default value of this parameter is set
to 1. In rare cases, passive enabling can still cause  problems.  Set the
parameter to 0 only if absolutely necessary.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-53"><title><literal>tcp_conn_req_max_q</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Specifies the default maximum number of pending TCP connections
for a TCP listener waiting to be accepted by <olink targetdoc="refman3b" targetptr="accept-3socket" remap="external"><citerefentry><refentrytitle>accept</refentrytitle><manvolnum>3SOCKET</manvolnum></citerefentry></olink>. See also <olink targetptr="chapter4-54" remap="internal">tcp_conn_req_max_q0</olink>.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>128</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>1 to 4,294,967,296</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>For applications such as web servers that might receive several
connection requests, the default value might be increased to match the incoming
rate.</para><para>Do not increase the parameter to a very large value. The pending TCP
connections can consume excessive memory. Also, if an application cannot handle
that many connection requests fast enough because the number of pending TCP
connections is too large, new incoming requests might be denied. </para><para>Note that increasing <literal>tcp_conn_req_max_q</literal> does not
mean that applications can have that many pending TCP connections. Applications
can use <olink targetdoc="refman3b" targetptr="listen-3socket" remap="external"><citerefentry><refentrytitle>listen</refentrytitle><manvolnum>3SOCKET</manvolnum></citerefentry></olink> to change the maximum number of pending TCP connections
for each socket. This parameter is the maximum an application can use <literal>listen()</literal> to set the number to. Thus, even if this parameter is set to a
very large value, the actual maximum number for a socket might be much less
than <literal>tcp_conn_req_max_q</literal>, depending on the value used in <literal>listen()</literal>.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry><varlistentry><term>Change History</term><listitem><para>For information, see <olink targetptr="appendixa-10" remap="internal">xxx:ip_forwarding
(Solaris 9 Releases)</olink>.</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-54"><title><literal>tcp_conn_req_max_q0</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Specifies the default maximum number of incomplete (three-way
handshake not yet finished) pending TCP connections for a TCP listener.</para><para>For more information on TCP three-way handshake, refer to RFC 793. See
also <olink targetptr="chapter4-53" remap="internal">tcp_conn_req_max_q</olink>.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>1024</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>0 to 4,294,967,296</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>For applications such as web servers that might receive excessive
connection requests, you can increase the default value to match the incoming
rate.</para><para>The following explains the relationship between <literal>tcp_conn_req_max_q0</literal> and the maximum number of pending connections for each socket. </para><para>When a connection request is received, TCP first checks if the number
of pending TCP connections (three-way handshake is done) waiting to be accepted
exceeds the maximum (<replaceable>N</replaceable>) for the listener. If the
connections are excessive, the request is denied. If the number of connections
is allowable, then TCP checks if the number of incomplete pending TCP connections
exceeds the sum of <replaceable>N</replaceable> and <literal>tcp_conn_req_max_q0</literal>.
If it does not, the request is accepted. Otherwise, the oldest incomplete
pending TCP request is dropped. </para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry><varlistentry><term>Change History</term><listitem><para>For information, see <olink targetptr="appendixa-10" remap="internal">xxx:ip_forwarding
(Solaris 9 Releases)</olink>.</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-55"><title><literal>tcp_conn_req_min</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Specifies the default minimum value for the maximum number of
pending TCP connection requests for a listener waiting to be accepted. This
is the lowest maximum value of <olink targetdoc="refman3b" targetptr="listen-3socket" remap="external"><citerefentry><refentrytitle>listen</refentrytitle><manvolnum>3SOCKET</manvolnum></citerefentry></olink> that an application
can use.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>1</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>1 to 1024</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>This parameter can be a solution for applications that use <olink targetdoc="refman3b" targetptr="listen-3socket" remap="external"><citerefentry><refentrytitle>listen</refentrytitle><manvolnum>3SOCKET</manvolnum></citerefentry></olink> to set
the maximum number of pending TCP connections to a value too low. Increase
the value to match the incoming connection request rate.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="fahpm"><title><literal>tcp_rst_sent_rate_enabled</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>If this parameter is set to 1, the maximum rate of sending
a RST segment is controlled by the <command>ndd</command> parameter, <literal>tcp_rst_sent_rate</literal>.  If this parameter is set to 0, no rate control when sending a
RST segment is available.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>1 (enabled)</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>0 (disabled) or 1 (enabled)</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>This tunable helps defend against denial of service attacks
on TCP by limiting the rate by which a RST segment is sent out. The only time
this rate control should be disabled is when strict conformance to RFC 793
is required.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="fahpq"><title><literal>tcp_rst_sent_rate</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Sets the maximum number of RST segments that TCP can send
out per second.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>40</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>0 to 4,294,967,296</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>In a TCP environment, there might be a legitimate reason to
generate more RSTs than the default value allows. In this case, increase the
default value of this parameter.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="fapwd"><title><literal>tcp_mdt_max_pbufs</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Specifies the number of payload buffers that can be carried
by a single <literal>M_MULTIDATA</literal> message that is generated by TCP.
See also <olink targetptr="gbglv" remap="internal">ip_multidata_outbound</olink>.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>16</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>1 to 16</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Decreasing this parameter might aid in debugging device driver
development by limiting the amount of payload buffers per <literal>M_MULTIDATA</literal> message
that is generated by TCP.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="fsvdg"><title><literal>tcp_keepalive_interval</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>This <command>ndd</command> parameter sets a probe interval
that is first sent out after a TCP connection is idle on a system-wide basis.</para><para>Solaris supports the TCP keep-alive mechanism as described in RFC 1122.
This mechanism is enabled by setting the <literal>SO_KEEPALIVE</literal> socket
option on a TCP socket.</para><para>If <literal>SO_KEEPALIVE</literal> is enabled for a socket, the first
keep-alive probe is sent out after a TCP connection is idle for two hours,
the default value of the <literal>tcp_keepalive_interval</literal> parameter.
If the peer does not respond to the probe after eight minutes, the TCP connection
is aborted.  For more information, refer to <olink targetptr="fsvdh" remap="internal">tcp_keepalive_abort_interval</olink>.</para><para>You can also use the <literal>TCP_KEEPALIVE_THRESHOLD</literal> socket
option on individual applications to override the default interval so that
each application can have its own interval on each socket. The option value
is an unsigned integer in milliseconds.  See also <olink targetdoc="refman7" targetptr="tcp-7p" remap="external"><citerefentry><refentrytitle>tcp</refentrytitle><manvolnum>7P</manvolnum></citerefentry></olink>.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>2 hours</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>10 seconds to 10 days</para>
</listitem>
</varlistentry><varlistentry><term>Units</term><listitem><para>Unsigned integer (milliseconds)</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Do not change the value.  If under special circumstances,
the first keepalive probe needs to be sent earlier than two hours, use the <literal>TCP_KEEPALIVE_THRESHOLD</literal> socket option to reduce the interval on
an individual application.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="fsvdh"><title><literal>tcp_keepalive_abort_interval</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>This <command>ndd</command> parameter sets a default time
threshold to abort a TCP connection after the keepalive probing mechanism
has failed.</para><para>This abort time threshold can also be changed on a per socket basis
by using the <literal>TCP_KEEPALIVE_ABORT_THRESHOLD</literal> option on a
TCP socket.  The option value is an unsigned integer in milliseconds.</para><para>If an application has the <literal>SO_KEEPALIVE</literal> socket option
enabled, it can then use the <literal>TCP_KEEPALIVE_THRESHOLD</literal> socket
option to change the initial probe interval and <literal>TCP_KEEPALIVE_ABORT_THRESHOLD</literal> socket option to change the abort interval.</para><para>A value of zero means that TCP should never time out and abort the connection
when probing.</para><para>See also <olink targetptr="fsvdg" remap="internal">tcp_keepalive_interval</olink>.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>8 minutes</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>0 to 8 minutes</para>
</listitem>
</varlistentry><varlistentry><term>Units</term><listitem><para>Unsigned integer (milliseconds)</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Do not change the value.  If under special circumstances,
a TCP connection needs to be aborted earlier than the default eight minutes
of the keepalive probing, use the <literal>TCP_KEEPALIVE_ABORT_THRESHOLD</literal> socket
option to reduce the abort interval on an individual application.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-66"><title>TCP/IP Parameters Set in the <filename>/etc/system</filename> File</title><para>The following parameters can be set only in the <filename>/etc/system</filename> file.
After the file is modified, reboot the system.</para><para>For example, the following entry sets the <literal>ipcl_conn_hash_size</literal> parameter:</para><screen>set ip:ipcl_conn_hash_sizes=<replaceable>value</replaceable></screen><sect3 id="chapter4-75"><title><literal>ipcl_conn_hash_size</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Controls the size of the connection hash table used by IP. The
default value of 0 means that the system automatically sizes an appropriate
value for this parameter at boot time, depending on the available memory.</para>
</listitem>
</varlistentry><varlistentry><term>Data Type</term><listitem><para>Unsigned integer</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>0</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>0 to 82,500</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>No. The parameter can only be changed at boot time.</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>If the system consistently has tens of thousands of TCP connections,
the value can be increased accordingly. Increasing the hash table size means
that more memory is wired down, thereby reducing available memory to user
applications.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect3><sect3 id="chapter4-5"><title><literal>ip_squeue_worker_wait</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Governs the maximum delay in waking up a worker thread to process
TCP/IP packets that are enqueued on an squeue. An <emphasis>squeue</emphasis> is
a serialization queue that is used by the TCP/IP kernel code to process TCP/IP
packets.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>10 milliseconds</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>0 &ndash; 50 milliseconds</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Consider tuning this parameter if latency is an issue, and
network traffic is light. For example, if the machine serves mostly interactive
network traffic.</para><para>The default value usually works best on a network file server, a web
server, or any server that has substantial network traffic.</para>
</listitem>
</varlistentry><varlistentry><term>Zone Configuration</term><listitem><para>This parameter can only be set in the global zone.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry><varlistentry><term>Change History</term><listitem><para>For information, see <olink targetptr="getlj" remap="internal">ip_squeue_worker_wait
(Solaris 10 11/06 Release)</olink>.</para>
</listitem>
</varlistentry>
</variablelist>
</sect3>
</sect2><sect2 id="chapter4-69"><title>TCP Parameters With Additional Cautions</title><para>Changing the following parameters is not recommended.</para><sect3 id="chapter4-32"><title><literal>tcp_ip_abort_interval</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Specifies the default total retransmission timeout value for a
TCP connection. For a given TCP connection, if TCP has been retransmitting
for <literal>tcp_ip_abort_interval</literal> period of time and it has not
received any acknowledgment from the other endpoint during this period, TCP
closes this connection.</para><para>For TCP retransmission timeout (RTO) calculation, refer to RFC 1122,
4.2.3.  See also <olink targetptr="chapter4-34" remap="internal">tcp_rexmit_interval_max</olink>.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>8 minutes</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>500 milliseconds to 1193 hours</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Do not change this value. See <olink targetptr="chapter4-34" remap="internal">tcp_rexmit_interval_max</olink> for exceptions.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect3><sect3 id="chapter4-33"><title><literal>tcp_rexmit_interval_initial</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Specifies the default initial retransmission timeout (RTO) value
for a TCP connection. Refer to <olink targetptr="chapter4-64" remap="internal">Per-Route Metrics</olink> for
a discussion of setting a different value on a per-route basis.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>3 seconds</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>1 millisecond to 20 seconds</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Do not change this value. Lowering the value can result in
unnecessary retransmissions.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect3><sect3 id="chapter4-34"><title><literal>tcp_rexmit_interval_max</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Defines the default maximum retransmission timeout value (RTO).
The calculated RTO for all TCP connections cannot exceed this value. See also <olink targetptr="chapter4-32" remap="internal">tcp_ip_abort_interval</olink>.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>60 seconds	</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>1 millisecond to 2 hours</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Do not change the value in a normal network environment.</para><para>If, in some special circumstances, the round-trip time (RTT) for a connection
is about 10 seconds, you can increase this value. If you change this value,
you should also change the <literal>tcp_ip_abort_interval</literal> parameter.
Change the value of <literal>tcp_ip_abort_interval</literal> to at least four
times the value of <literal>tcp_rexmit_interval_max</literal>.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect3><sect3 id="chapter4-35"><title><literal>tcp_rexmit_interval_min</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Specifies the default minimum retransmission time out (RTO) value.
The calculated RTO for all TCP connections cannot be lower than this value.
See also <olink targetptr="chapter4-34" remap="internal">tcp_rexmit_interval_max</olink>.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>400 milliseconds	</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>1 millisecond to 20 seconds</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Do not change the value in a normal network environment.</para><para>TCP's RTO calculation should cope with most RTT fluctuations. If, in
some very special circumstances, the round-trip time (RTT) for a connection
is about 10 seconds, increase this value. If you change this value, you should
change the <literal>tcp_rexmit_interval_max</literal> parameter. Change the
value of <literal>tcp_rexmit_interval_max</literal> to at least eight times
the value of <literal>tcp_rexmit_interval_min</literal>.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect3><sect3 id="chapter4-36"><title><literal>tcp_rexmit_interval_extra</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Specifies a constant added to the calculated retransmission time
out value (RTO). </para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>0 milliseconds</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>0 to 2 hours</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Do not change the value.</para><para>When the RTO calculation fails to obtain a good value for a connection,
you can change this value to avoid unnecessary retransmissions.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect3><sect3 id="chapter4-41"><title><literal>tcp_tstamp_if_wscale</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>If this parameter is set to 1, and the window scale option is
enabled for a connection, TCP also enables the <literal>timestamp</literal> option
for that connection.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>1 (enabled)</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>0 (disabled) or 1 (enabled)</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Do not change this value. In general, when TCP is used in
high-speed network, protection against sequence number wraparound is essential.
Thus, you need the <literal>timestamp</literal> option.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect3><sect3 id="chapter4-44"><title><literal>tcp_recv_hiwat_minmss</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Controls the default minimum receive window size. The minimum
is <literal>tcp_recv_hiwat_minmss</literal> times the size of maximum segment
size (MSS) of a connection.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>4</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>1 to 65,536</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Do not change the value. If changing it is necessary, do not
change the value lower than 4.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect3>
</sect2>
</sect1><sect1 id="chapter4-57"><title>UDP Tunable Parameters</title><sect2 id="chapter4-58"><title><literal>udp_xmit_hiwat</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Defines the default maximum UDP socket datagram size. For more
information, see <olink targetptr="chapter4-60" remap="internal">udp_max_buf</olink>.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>57,344 bytes</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>1,024 to 1,073,741,824 bytes</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Note that an application can use <olink targetdoc="refman3b" targetptr="setsockopt-3xnet" remap="external"><citerefentry><refentrytitle>setsockopt</refentrytitle><manvolnum>3XNET</manvolnum></citerefentry></olink> <literal>SO_SNDBUF</literal> to
change the size for an individual socket. In general, you do not need to change
the default value.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry><varlistentry><term>Change History</term><listitem><para>For information, see <olink targetptr="gbhkk" remap="internal">udp_xmit_hiwat
(Solaris 9 Releases)</olink>.</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-59"><title><literal>udp_recv_hiwat</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Defines the default maximum UDP socket receive buffer size. For
more information, see <olink targetptr="chapter4-60" remap="internal">udp_max_buf</olink>.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>57,344 bytes</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>128 to 1,073,741,824 bytes</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Note that an application can use <olink targetdoc="refman3b" targetptr="setsockopt-3xnet" remap="external"><citerefentry><refentrytitle>setsockopt</refentrytitle><manvolnum>3XNET</manvolnum></citerefentry></olink> <literal>SO_RCVBUF</literal> to
change the size for an individual socket. In general, you do not need to change
the default value. </para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry><varlistentry><term>Change History</term><listitem><para>For information, see <olink targetptr="gbhkt" remap="internal">udp_recv_hiwat
(Solaris 9 Releases)</olink>.</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-70"><title>UDP Parameter With Additional Caution</title><para>Changing the following parameter is not recommended.</para><sect3 id="chapter4-60"><title><literal>udp_max_buf</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Controls how large send and receive buffers can be for a UDP socket. </para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>2,097,152 bytes</para>
</listitem>
</varlistentry><varlistentry><term> </term><term>Range</term><listitem><para>65,536 to 1,073,741,824 bytes</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Do not change the value. If this parameter is set to a very
large value, UDP socket applications can consume too much memory.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry><varlistentry><term>Change History</term><listitem><para>For information, see <olink targetptr="appendixa-49" remap="internal">udp_max_buf
(Solaris 9 Releases)</olink>.</para>
</listitem>
</varlistentry>
</variablelist>
</sect3>
</sect2>
</sect1><sect1 id="chapter4-62"><title>IPQoS Tunable Parameter</title><sect2 id="chapter4-56"><title><literal>ip_policy_mask</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Enables or disables IPQoS processing in any of the following callout
 positions: forward outbound, forward inbound, local outbound, and local inbound.
This parameter is a bitmask as follows:</para><informaltable frame="all"><tgroup cols="8" colsep="1" rowsep="1"><colspec colwidth="11.05*"/><colspec colwidth="10.86*"/><colspec colwidth="10.86*"/><colspec colwidth="11.05*"/><colspec colwidth="13.19*"/><colspec colwidth="12.99*"/><colspec colwidth="12.99*"/><colspec colwidth="12.99*"/><thead><row><entry><para>Not Used</para>
</entry><entry><para>Not Used</para>
</entry><entry><para>Not Used</para>
</entry><entry><para>Not Used</para>
</entry><entry><para>Forward Outbound</para>
</entry><entry><para>Forward Inbound</para>
</entry><entry><para>Local Outbound</para>
</entry><entry><para>Local Inbound</para>
</entry>
</row>
</thead><tbody><row><entry><para>X</para>
</entry><entry><para>X</para>
</entry><entry><para>X</para>
</entry><entry><para>X</para>
</entry><entry><para>0</para>
</entry><entry><para>0</para>
</entry><entry><para>0</para>
</entry><entry><para>0</para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable><para>A <literal>1</literal> in any of the position masks
or disables IPQoS processing in that particular callout position. For example,
a value of <literal>0x01</literal> disables IPQoS processing for all the local
inbound packets.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>The default value is 0, meaning that IPQoS processing is enabled
in all the callout positions.</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>0 (0x00) to 15 (0x0F). A value of 15 indicates that IPQoS
processing is disabled in all the callout positions.</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>If you want to enable or disable IPQoS processing in any of
the callout positions.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1><sect1 id="chapter4-98"><title>SCTP Tunable Parameters</title><sect2 id="chapter4-61"><title><literal>sctp_max_init_retr</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Controls the maximum number of attempts an SCTP endpoint should
make at resending an INIT chunk. The SCTP endpoint can use the SCTP initiation
structure to override this value. </para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>8</para>
</listitem>
</varlistentry><varlistentry><term> </term><term>Range</term><listitem><para>0 to 128</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>The number of INIT retransmissions depend on <olink targetptr="chapter4-63" remap="internal">sctp_pa_max_retr</olink>. Ideally, <literal>sctp_max_init_retr</literal> should be less than or equal  to <literal>sctp_pa_max_retr</literal>.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-63"><title><literal>sctp_pa_max_retr</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Controls the maximum number of retransmissions (over all paths)
for an SCTP association. The SCTP association is aborted when this number
is exceeded.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>10</para>
</listitem>
</varlistentry><varlistentry><term> </term><term>Range</term><listitem><para>1 to 128</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>The maximum number of retransmissions over all paths depend
on the number of paths and the maximum number of retransmission over each
 path. Ideally, <literal>sctp_pa_max_retr</literal> should be set to the sum
of     <olink targetptr="chapter4-76" remap="internal">sctp_pp_max_retr</olink> over all available
paths. For example, if there are 3 paths to the destination and the maximum
number of  retransmissions over each of the 3 paths is 5, then <literal>sctp_pa_max_retr</literal>  should be set to less than or equal to 15. (See the Note in Section
8.2, RFC 2960.)</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-76"><title><literal>sctp_pp_max_retr</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Controls the maximum number of retransmissions over a specific
path. When this number is exceeded for a path, the path (destination) is considered
unreachable.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>5</para>
</listitem>
</varlistentry><varlistentry><term> </term><term>Range</term><listitem><para>1 to 128</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Do not change this value to less than 5.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-77"><title><literal>sctp_cwnd_max</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Controls the maximum value of the congestion window for an SCTP
association.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>1,048,576</para>
</listitem>
</varlistentry><varlistentry><term>Range</term><listitem><para>128 to 1,073,741,824</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Even if an application uses <olink targetdoc="refman3b" targetptr="setsockopt-3xnet" remap="external"><citerefentry><refentrytitle>setsockopt</refentrytitle><manvolnum>3XNET</manvolnum></citerefentry></olink> to change the window size
to a value higher than <literal>sctp_cwnd_max</literal>, the actual window
used can never  grow beyond <literal>sctp_cwnd_max</literal>. Thus, <olink targetptr="chapter4-87" remap="internal">sctp_max_buf</olink> should be greater than <literal>sctp_cwnd_max</literal>.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-78"><title><literal>sctp_ipv4_ttl</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Controls the time to live (TTL) value in the IP version 4 header
for the outbound IP version 4 packets on an SCTP association.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>64</para>
</listitem>
</varlistentry><varlistentry><term> </term><term>Range</term><listitem><para>1 to 255</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Generally, you do not need to change this value. Consider
increasing this parameter if the path to the destination is likely to span
more than 64 hops.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-79"><title><literal>sctp_heartbeat_interval</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Computes the interval between HEARTBEAT chunks to an idle
destination, that is allowed to heartbeat.</para><para>An SCTP endpoint periodically sends an HEARTBEAT chunk to monitor
the reachability of the idle destinations transport addresses of its peer. </para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>30 seconds</para>
</listitem>
</varlistentry><varlistentry><term> </term><term>Range</term><listitem><para>0 to 86,400 seconds</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Refer to RFC 2960, section 8.3.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-100"><title><literal>sctp_new_secret_interval</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Determines when a new secret needs to be generated. The generated
secret is used to compute the MAC for a cookie.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>2 minutes</para>
</listitem>
</varlistentry><varlistentry><term> </term><term>Range</term><listitem><para>0 to 1,440 minutes</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Refer to RFC 2960, section 5.1.3.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-80"><title><literal>sctp_initial_mtu</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Determines the initial maximum send size for an SCTP packet including
the length of the IP header.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>1500 bytes</para>
</listitem>
</varlistentry><varlistentry><term> </term><term>Range</term><listitem><para>68 to 65,535</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Increase this parameter if the underlying link supports frame
sizes that are greater than 1500 bytes.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-81"><title><literal>sctp_deferred_ack_interval</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Sets the time-out value for SCTP delayed acknowledgment (ACK)
timer in milliseconds.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>100 milliseconds</para>
</listitem>
</varlistentry><varlistentry><term> </term><term>Range</term><listitem><para>1 to 60,000 milliseconds</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Refer to RFC 2960, section 6.2.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-82"><title><literal>sctp_ignore_path_mtu</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Enables or disables path MTU discovery.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>0 (disabled)</para>
</listitem>
</varlistentry><varlistentry><term> </term><term>Range</term><listitem><para>0 (disabled) or 1 (enabled)</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Enable this parameter if you want to ignore MTU changes along
the path. However, doing so might result in IP fragmentation if the path MTU
decreases.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-83"><title><literal>sctp_initial_ssthresh</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Sets the initial slow start threshold for a destination address
of the peer.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>102,400</para>
</listitem>
</varlistentry><varlistentry><term> </term><term>Range</term><listitem><para>1024 to 4,294,967,295</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Refer to RFC 2960, section 7.2.1.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-84"><title><literal>sctp_xmit_hiwat</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Sets the default send window size in bytes. See also <olink targetptr="chapter4-87" remap="internal">sctp_max_buf</olink>.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>102,400</para>
</listitem>
</varlistentry><varlistentry><term> </term><term>Range</term><listitem><para>8,192 to 1,073,741,824</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>An application can use <olink targetdoc="refman3b" targetptr="getsockopt-3socket" remap="external"><citerefentry><refentrytitle>getsockopt</refentrytitle><manvolnum>3SOCKET</manvolnum></citerefentry></olink> <literal>SO_SNDBUF</literal> to
change the individual association's send buffer.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-85"><title><literal>sctp_xmit_lowat</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Controls the lower limit on the send window size.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>8,192</para>
</listitem>
</varlistentry><varlistentry><term> </term><term>Range</term><listitem><para>8,192 to 1,073,741,824</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Generally, you do not need to change this value. This parameter
sets the minimum size required     in the send buffer for the socket to be
marked writable. If required, consider changing this parameter in accordance
with <olink targetptr="chapter4-84" remap="internal">sctp_xmit_hiwat</olink>.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-86"><title><literal>sctp_recv_hiwat</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Controls the default receive window size in bytes. See also <olink targetptr="chapter4-87" remap="internal">sctp_max_buf</olink>.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>102,400</para>
</listitem>
</varlistentry><varlistentry><term> </term><term>Range</term><listitem><para>8,192 to 1,073,741,824</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>An application can use <olink targetdoc="refman3b" targetptr="getsockopt-3socket" remap="external"><citerefentry><refentrytitle>getsockopt</refentrytitle><manvolnum>3SOCKET</manvolnum></citerefentry></olink> <literal>SO_RCVBUF</literal> to
change the individual association's receive buffer.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-87"><title><literal>sctp_max_buf</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Controls the maximum buffer size in bytes. It controls how large
the send and receive buffers are set to by an application that uses <olink targetdoc="refman3b" targetptr="getsockopt-3socket" remap="external"><citerefentry><refentrytitle>getsockopt</refentrytitle><manvolnum>3SOCKET</manvolnum></citerefentry></olink>.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>1,048,576</para>
</listitem>
</varlistentry><varlistentry><term> </term><term>Range</term><listitem><para>8,192 to 1,073,741,824</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Increase the value of this parameter to match the network
link speed if associations are being made in a high-speed network environment.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-88"><title><literal>sctp_ipv6_hoplimit</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Sets the value of the hop limit in the IP version 6 header for
the outbound IP version 6 packets on an SCTP association.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>60</para>
</listitem>
</varlistentry><varlistentry><term> </term><term>Range</term><listitem><para>0 to 255</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Generally, you do not need to change this value. Consider
increasing this parameter if the path to the destination is likely to span
more than 60 hops.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-89"><title><literal>sctp_rto_min</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Sets the lower bound for the retransmission timeout (RTO) in milliseconds
for all the destination addresses of the peer.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>1,000</para>
</listitem>
</varlistentry><varlistentry><term> </term><term>Range</term><listitem><para>500 to 60,000</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Refer to RFC 2960, section 6.3.1.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-90"><title><literal>sctp_rto_max</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Controls the upper bound for the retransmission timeout (RTO)
in milliseconds for all the destination addresses of the peer.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>60,000</para>
</listitem>
</varlistentry><varlistentry><term> </term><term>Range</term><listitem><para>1,000 to 60,000,000</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Refer to RFC 2960, section 6.3.1.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-91"><title><literal>sctp_rto_initial</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Controls the initial retransmission timeout (RTO) in milliseconds
for all the destination addresses of the peer.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>3,000</para>
</listitem>
</varlistentry><varlistentry><term> </term><term>Range</term><listitem><para>1,000 to 60,000,000</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Refer to RFC 2960, section 6.3.1.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-92"><title><literal>sctp_cookie_life</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Sets the lifespan of a cookie in milliseconds.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>60,000</para>
</listitem>
</varlistentry><varlistentry><term> </term><term>Range</term><listitem><para>10 to 60,000,000</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Generally, you do not need to change this value. This parameter
might be changed in accordance with <olink targetptr="chapter4-90" remap="internal">sctp_rto_max</olink>.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-93"><title><literal>sctp_max_in_streams</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Controls the maximum number of inbound streams permitted for an
SCTP association.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>32</para>
</listitem>
</varlistentry><varlistentry><term> </term><term>Range</term><listitem><para>1 to 65,535</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Refer to RFC 2960, section  5.1.1.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-94"><title><literal>sctp_initial_out_streams</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Controls the maximum number of outbound streams permitted for
an SCTP association.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>32</para>
</listitem>
</varlistentry><varlistentry><term> </term><term>Range</term><listitem><para>1 to 65,535</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Refer to RFC 2960, section  5.1.1.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-95"><title><literal>sctp_shutack_wait_bound</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Controls the maximum time, in milliseconds, to wait for a SHUTDOWN
ACK after having sent a SHUTDOWN chunk.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>60,000</para>
</listitem>
</varlistentry><varlistentry><term> </term><term>Range</term><listitem><para>0 to 300,000</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Generally, you do not need to change this value. This parameter
might be changed in accordance with <olink targetptr="chapter4-90" remap="internal">sctp_rto_max</olink>.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-96"><title><literal>sctp_maxburst</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Sets the limit on the number of segments to be sent in a burst.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>4</para>
</listitem>
</varlistentry><varlistentry><term> </term><term>Range</term><listitem><para>2 to 8</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>You do not need to change this parameter. You might change
it for testing purposes.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-97"><title><literal>sctp_addip_enabled</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Enables or disables SCTP dynamic address reconfiguration.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>0 (disabled)</para>
</listitem>
</varlistentry><varlistentry><term> </term><term>Range</term><listitem><para>0 (disabled) or 1 (enabled)</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>The parameter can be enabled if dynamic address reconfiguration
is needed. Due to security implications, enable this parameter only for testing
purposes.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2><sect2 id="chapter4-99"><title><literal>sctp_prsctp_enabled</literal></title><variablelist><varlistentry><term>Description</term><listitem><para>Enables or disables the partial reliability extension (RFC 3758)
to SCTP.</para>
</listitem>
</varlistentry><varlistentry><term>Default</term><listitem><para>1 (enabled)</para>
</listitem>
</varlistentry><varlistentry><term> </term><term>Range</term><listitem><para>0 (disabled) or 1 (enabled)</para>
</listitem>
</varlistentry><varlistentry><term>Dynamic?</term><listitem><para>Yes</para>
</listitem>
</varlistentry><varlistentry><term>When to Change</term><listitem><para>Disable this parameter if partial reliability is not supported
in your SCTP environment.</para>
</listitem>
</varlistentry><varlistentry><term>Commitment Level</term><listitem><para>Unstable</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1><sect1 id="chapter4-64"><title>Per-Route Metrics</title><para>Starting in the Solaris 8 release, you can use per-route metrics to
associate some properties with IPv4 and IPv6 routing table entries.</para><para>For example, a system has two different network interfaces, a fast Ethernet
interface and a gigabit Ethernet interface. The system default <literal>tcp_recv_hiwat</literal> is 24,576 bytes. This default is sufficient for the fast Ethernet
interface, but may not be sufficient for the gigabit Ethernet interface.</para><para>Instead of increasing the system's default for <literal>tcp_recv_hiwat</literal>,
you can associate a different default TCP receive window size to the gigabit
Ethernet interface routing entry. By making this association, all TCP connections
going through the route will have the increased receive window size.</para><para>For example, the following is in the routing table (<command>netstat
-rn</command>), assuming IPv4:</para><screen>192.123.123.0        192.123.123.4         U        1      4  hme0
192.123.124.0        192.123.124.4         U        1      4  ge0
default              192.123.123.1         UG       1      8</screen><para>In this example, do the following:</para><screen># <userinput>route change -net 192.123.124.0 -recvpipe</userinput> <replaceable>x</replaceable></screen><para>Then, all connections going to the <literal>192.123.124.0</literal> network,
which is on the <literal>ge0</literal> link, use the receive buffer size <replaceable>x</replaceable>, instead of the default <literal>24567</literal> receive window
size.</para><para>If the destination is in the <literal>a.b.c.d</literal> network, and
no specific routing entry exists for that network, you can add a prefix route
to that network and change the metric. For example:</para><screen># <userinput>route add -net a.b.c.d 192.123.123.1 -netmask w.x.y.z</userinput>
# <userinput>route change -net a.b.c.d -recvpipe</userinput> <replaceable>y</replaceable></screen><para>Note that the prefix route's gateway is the default router. Then, all
connections going to that network use the receive buffer size <replaceable>y</replaceable>.
If you have more than one interface, use the <option>ifp</option> argument
to specify which interface to use. This way, you can control which interface
to use for specific destinations. To verify the metric, use the <olink targetdoc="refman1m" targetptr="route-1m" remap="external"><citerefentry><refentrytitle>route</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> <command>get</command> command.</para>
</sect1>
</chapter>