TCP/IP Tunable Parameters
ip_forward_src_routed and ip6_forward_src_routed (Solaris 10 Release)
The default value of these parameters was incorrectly documented in the Solaris 9
and Solaris 10 releases. The correct default value is disabled.
- Description
 
Controls whether IPv4 or IPv6 forwards packets with source IPv4 routing options or IPv6 routing headers.
 
- Default
 
1 (enabled)
 
ip_multidata_outbound (Solaris 10 Release)
This parameter was enhanced in the Solaris Express 12/05 release to deliver IP
fragments in batches to the network driver. For more information, see ip_multidata_outbound.
- Description
 
Enables the network stack to send more than one packet at one time to the network device driver during transmission.
Enabling this parameter reduces the per-packet processing costs by improving host CPU utilization, network throughput, or both.
The multidata transmit (MDT) feature is only effective for device drivers that support this feature.
See also tcp_mdt_max_pbufs.
 
- Default
 
1 (Enabled)
 
- Range
 
0 (disabled) or 1 (enabled)
 
- Dynamic?
 
Yes
 
- When to Change
 
If you do not want this parameter enabled for debugging purposes or for any other reasons, disable it.
 
- Commitment Level
 
Unstable
 
- Change History
 
For information, see ip_multidata_outbound (Solaris 9 Release).
 
ip_multidata_outbound (Solaris 9 Release)
This parameter information changed significantly in releases after the Solaris 9 8/03 release.
Please see ip_multidata_outbound for more information.
- Description
 
This parameter enables the network stack to send more than one packet at one time to the network device driver during transmission.
Enabling this parameter reduces the per-packet processing costs by improving the host CPU utilization and/or network throughput.
The multidata transmit (MDT) feature is only effective for device drivers that support this feature.
The following parameter must be enabled in the /etc/system file to use the MDT parameter:
set ip:ip_use_dl_cap = 0x1
 
- Default
 
Disabled
 
- Range
 
0 (disabled), 1 (enabled)
 
- Dynamic?
 
Yes
 
- When to Change
 
This feature can be enabled at any time to allow for improved system performance with the following cautions:
Enabling this feature might change the appearance of any packets between the IP layer and the DLPI provider. So, any third-party STREAMS module that is dynamically inserted between the IP layer and the DLPI provider by using ifconfig's modinsert feature, which doesn't understand the MDT STREAMS data type, might not work.
Modules that are inserted between the IP and the DLPI provider with the autopush(1m) mechanism might not work as well.
 
Keep this feature disabled when a STREAMS module is not MDT aware. For example, the public domain utilities such as ipfilter, Checkpoint Firewall-1, and so on, are not MDT aware.
 
- Commitment Level
 
Unstable
 
ip_squeue_fanout (Solaris 10 11/06 Release)
Zone configuration information was added in the Solaris 10 8/07 release. For more
information, see ip_squeue_fanout.
ip_squeue_worker_wait (Solaris 10 11/06 Release)
Zone configuration information was added in the Solaris 10 8/07 release. For more
information, see ip_squeue_worker_wait In addition, this parameter was moved to TCP/IP Parameters Set in the /etc/system File.
ip_soft_rings_cnt (Solaris 10 11/06 Release)
Zone configuration information was added in the Solaris 10 8/07 release. For more
information, see ip_soft_rings_cnt.
ip_squeue_write (Solaris 10 Release)
This parameter was incorrectly documented in the Solaris 10 release. It has been
removed.
tcp_conn_hash_size (Solaris 9 Releases)
This parameter was removed in the Solaris 10 release.
- Description
 
Controls the hash table size in the TCP module for all TCP connections.
 
- Data Type
 
Signed integer
 
- Default
 
512
 
- Range
 
512 to 1,073,741,824
 
- Implicit
 
The value should be a power of 2.
 
- Dynamic?
 
No. The parameter can only be changed at boot time. 
 
- Validation
 
If you set the parameter to a value that is not a power of 2, it is rounded up to the nearest power of 2.
 
- When to Change
 
If the system consistently has tens of thousands of TCP connections, increase the value accordingly. With the default value, TCP performs well up to a few thousand active connections. Note that increasing the hash table size means more memory consumption so set an appropriate value to avoid wasting memory unnecessarily.
 
- Commitment Level
 
Unstable
 
tcp_wscale_always (Solaris 9 Releases)
The default value of this parameter was changed to enabled in the
Solaris 10 release.
- Description
 
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.
Refer to RFC 1323 for the window scale option.
 
- Default
 
0 (disabled)
 
- Range
 
0 (disabled) or 1 (enabled)
 
- Dynamic?
 
Yes
 
- When to Change
 
If there is an interoperability problem with an old TCP stack that does not support the window scale option, disable this parameter.
 
- Commitment Level
 
Unstable
 
ipc_tcp_conn_hash_size (Solaris 9 Releases)
This parameter was removed in the Solaris 10 release.
- Description
 
Controls the hash table size in an IP module for all active (in ESTABLISHED state) TCP connections.
 
- Data Type
 
Unsigned integer
 
- Default
 
512
 
- Range
 
512 to 2,147,483,648
 
- Implicit
 
It should be a power of two.
 
- Dynamic?
 
No. This parameter can only be changed at boot time. 
 
- Validation
 
If you set the parameter to a value that is not a power of 2, it is rounded up to the nearest power of two.
 
- When to Change
 
If the system consistently has tens of thousands of active TCP connections, increase the value accordingly. With the default value, the system performs well up to a few thousand active connections. Note that increasing the hash table size means more memory consumption so set an appropriate value to avoid wasting memory unnecessarily.
 
- Commitment Level
 
Unstable
 
tcp_compression_enabled (Solaris 9 Releases)
This parameter was removed in the Solaris 10 release.
- Description
 
If set to 1, protocol control blocks of TCP connections in TIME-WAIT state are compressed to reduce memory usage. If set to 0, no compression is done. See tcp_time_wait_interval also. 
 
- Default
 
1 (enabled)
 
- Range
 
0 (disabled), 1 (enabled)
 
- Dynamic?
 
Yes
 
- When to Change
 
Do not turn off the compression mechanism.
 
- Commitment Level
 
Unstable
 
ip_forwarding and ip6_forwarding (Solaris 9 Releases)
These parameters are obsolete in the Solaris 10 release.
- Description
 
Controls whether IP does IPv4 or IPv6 forwarding between interfaces. See also xxx:ip_forwarding (Solaris 9 Releases).
 
- Default
 
0 (disabled)
 
- Range
 
0 (disabled) or 1 (enabled)
 
- Dynamic?
 
Yes
 
- When to Change
 
If IP forwarding is needed, enable it.
 
- Commitment Level
 
Unstable
 
xxx:ip_forwarding (Solaris 9 Releases)
This parameter is obsolete in the Solaris 10 release.
- Description
 
Enables IPv4 forwarding for a particular xxx interface. The exact name of the parameter is interface-name:ip_forwarding. For example, two interfaces are hme0 and hme1. Here are their corresponding parameter names:
hme0:ip_forwarding and hme1:ip_forwarding
 
- Default
 
0 (disabled)
 
- Range
 
0 (disabled) or 1 (enabled)
 
- Dynamic?
 
Yes
 
- When to Change
 
If you need IPv4 forwarding, use this parameter to enable forwarding on a per-interface basis.
 
- Commitment Level
 
Unstable
 
tcp_conn_req_max_q0 (Solaris 8 Release)
The when to change text was revised in later Solaris releases from
this:
- When to Change
 
For applications, such as web servers that might receive excessive connection requests, you can increase the default value to match the incoming rate.
The following explains the relationship between tcp_conn_req_max_q0 and the maximum number of pending connections for each socket. 
When a connection request is received, TCP first checks if the number (N) of pending TCP connections (three-way handshake is done) waiting to be accepted exceeds the maximum 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 N and tcp_conn_req_max_q0. If it does not, the request is accepted. Otherwise, the oldest incomplete pending TCP request is dropped.
to this:
 
- When to Change
 
For applications, such as web servers that might receive excessive connection requests, you can increase the default value to match the incoming rate. 
The following explains the relationship between tcp_conn_req_max_q0 and the maximum number of pending connections for each socket.
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 (N) 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 N and tcp_conn_req_max_q0. If it does not, the request is accepted. Otherwise, the oldest incomplete pending TCP request is dropped.