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.