Solaris Tunable Parameters Reference Manual
Previous Next

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.

Previous Next