Configuring TCP Settings

This section describes how to configure the TCP settings used for client‑to‑router and router-to-router connections.

Configuring TCP Keepalive Settings

The TCP Keepalive facility is used to keep TCP connections alive on Solace routers. The timers for the TCP Keepalive facility can be configured for client-to-router connections and router-to-router neighbor connections.

Configuring TCP Keepalives for Client-to-Router Connections

To configure the TCP Keepalive for client-to-router connections, enter the following CONFIG commands.

solace# configure

solace(configure)# client-profile <name> message-vpn <name>

solace(configure/client-profile)# tcp keepalive

solace(configure/client-profile/tcp/keepalive)#

Where:

<name> is the name of the client profile. A client profile name can contain up to 32 alphanumeric characters (case-sensitive). The “_” character is also permitted.

<vpn-name> is the name of an existing Message VPN the client profile belongs to.

The CLI is now in the TCP Keepalive configuration mode, where you can make the following configurations for the TCP Keepalive facility timers for client-to-router connections:

  • solace(configure/client-profile/tcp/keepalive)# count <num>—sets the maximum number of keepalive probes (from 2 to 5 ) TCP should send before dropping the connection. The default value is 5.
  • solace(configure/client-profile/tcp/keepalive)# idle <seconds>—sets the time (from 3 to 120 seconds) a connection must remain idle before TCP begins sending keepalive probes. The default value is 3.
  • solace(configure/client-profile/tcp/keepalive)# interval <seconds>—sets the time (from 1 to 30 seconds) to set as the interval between individual keepalive probes. The default value is 1.

Note:  The no version of these commands (no) resets the values back to the defaults.

Configuring TCP Keepalives for Router-to-Router Connections

To configure the TCP Keepalive for router-to-router neighbor connections, enter the following commands on each neighbor router:

solace# configure

solace(configure)# routing

solace(configure/routing)# cspf neighbor <physical-router-name>

solace(configure/routing/cspf/neighbor)# tcp keepalive

solace(...e/routing/cspf/neighbor/tcp/keepalive)#

The CLI is now in the TCP Keepalive configuration mode, where you can make the following configurations for the TCP Keepalive facility timers for router-to-router connections:

  • solace(configure/client-profile/tcp/keepalive)# count <num>—sets the maximum number of keepalive probes (from 2 to 5 ) TCP should send before dropping the connection. The default value is 5.
  • solace(configure/client-profile/tcp/keepalive)# idle <seconds>—sets the time (from 3 to 120 seconds) a connection must remain idle before TCP begins sending keepalive probes. The default value is 3.
  • solace(configure/client-profile/tcp/keepalive)# interval <seconds>—sets the time (from 1 to 30 seconds) to set as the interval between individual keepalive probes. The default value is 1.

Note:  The no version of these commands (no) resets the values back to the defaults.

Configuring TCP Initial Congestion Window Size

The TCP initial congestion window size is used when starting up a TCP connection or on recovery from idle (that is, no traffic). It is the number of segments TCP sends before waiting for an acknowledgment from the peer. Larger values of initial window allows a connection to come up to speed more quickly. For further details, refer to RFC 2581.

ALERT! Changing the TCP initial congestion window size from its default of 2 results in non-compliance with RFC 2581. Further, care must be taken for if this parameter value is set too high, it may cause congestion in the network. Always contact Solace for technical support before you attempt to change this TCP parameter on Solace routers.

The TCP initial congestion window size facility can be configured for both client‑to‑router connections and router‑to‑router neighbor connections.

Configuring TCP Initial Congestion Window Sizes for Router-to-Client Connections

To configure the initial congestion window size for the router to use when sending data to a client, enter the following CONFIG commands.

solace(configure)# client-profile <name> message-vpn <vpn-name>

solace(configure/client-profile)# tcp initial-cwnd <num-mss>

Where:

<name> is the name of the client profile. A client profile name can contain up to 32 alphanumeric characters (case-sensitive). The “_” character is also permitted. If the profile does not already exist, it is created.

<vpn-name> is the name of the Message VPN the client profile belongs to. It must already exist.

<num-mss> is an integer specifying the size of the TCP initial congestion window measured in number of TCP maximum segment size (MSS). Valid values are 2 through 7826. The default value is 2.

Note:  The no version of this command (no tcp initial-cwnd) resets the size of the TCP initial congestion window back to the default value.

Configuring TCP Initial Congestion Window Sizes for Router-to-Router Connections

To configure the initial congestion window size for a router to use when sending data to the neighbor router, you must use the tcp initial-cwnd command.

Example:

solace(configure)# routing

solace(configure/routing)# cspf neighbor <physical-router-name>

solace(configure/routing/cspf/neighbor)# tcp initial-cwnd <num-mss>

Where:

<num-mss> is an integer specifying the size of the TCP initial congestion window measured in number of TCP maximum segment size (MSS). Valid values are 2 through 7826. The default value is 2.

Note:  The no version of this command (no tcp initial-cwnd) resets the size of the TCP initial congestion window back to the default value.

Configuring TCP Max Window Sizes

The TCP maximum window size should be set to equal at least the bandwidth‑delay product of the link between the TCP peers.

If the maximum window size is set to less than the bandwidth-delay product, then the TCP connection operates below its maximum potential throughput. If the maximum window is set to less than about twice the bandwidth-delay product, then occasional packet loss causes the TCP connection to operate below its maximum potential throughput as it handles the missing acknowledgments and retransmissions.

Alternately, if the TCP maximum window size is set too large, in the presence of a high offered load, TCP gradually increases its congestion window size until either:

  • the congestion window size reaches the maximum window size
  • packet loss occurs in the network

Initially, when the TCP congestion window size is small, the physical bandwidth‑delay of the network acts as a memory buffer for packets in flight. But as the congestion window crosses the bandwidth-delay product, the buffering of in-flight packets moves to queues in various switches, routers, and other equipment throughout the network. As the TCP congestion window continues to increase in size, these various equipment queues overflow, causing packet loss and TCP backoff.

The TCP maximum window size can be configured for both client‑to‑router connections and router‑to‑router neighbor connections.

Configuring TCP Max Window Size for Client-to-Router Connections

To configure a maximum window size for data that clients send to the router, enter the following CONFIG commands:

solace(configure)# client-profile <name> message-vpn <vpn-name>

solace(configure/client-profile)# tcp max-wnd <num-kilo-bytes>

Where:

<name> is the name of the client profile. A client profile name can contain up to 32 alphanumeric characters (case-sensitive). The “_” character is also permitted. If the profile does not already exist, it is created.

<vpn-name> is the name of an existing Message VPN that the client profile belongs to.

<num-kilo-bytes> is an integer specifying the size of the TCP maximum window measured in number of kilobytes (KB). Valid values are 32 through 65536. The default value is 256.

Note:   

  • The no version of this command (no tcp max-wnd) resets the size of the TCP maximum window back to the default value.
  • Configuration changes are applied to all existing client connections.

Configuring TCP Max Window Sizes for Router-to-Router Neighbor Connections

To configure a maximum window size for data sent from the neighbor router, enter the following CONFIG commands:

solace(configure)# routing

solace(configure/routing)# cspf neighbor <physical-router-name>

solace(configure/routing/cspf/neighbor)# tcp max-wnd <num-kilo-bytes>

Where:

<num-kilo-bytes> is an integer specifying the size of the maximum TCP window size in KB. Valid values are 32 through 65536. The default value is 2048.

Note:  The no version of this command (no tcp max-wnd) resets the size of the TCP maximum window back to the default value.

Configuring TCP MSS

You can configure the TCP maximum segment size (MSS) used for client‑to‑router and router-to-router connections.

Configuring TCP MSS for Client-to-Router Connections

To configure the TCP MSS for data that the router sends to clients, enter the following CONFIG commands:

solace# configure

solace(configure)# client-profile <name> message-vpn <name>

solace(configure/client-profile)# tcp mss <byte-count>

Where:

<byte-count> is the size of the maximum segment size in bytes (256 through 1460). The default value is 1460.

Note:  The no version of this command (no mss) resets the TCP maximum segment size back to default. Changing this value during router operation takes effect immediately on all existing and new TCP connections.

Configuring TCP MSS for Router-to-Router Connections

To configure the TCP MSS for a neighbor router, enter the following CONFIG commands:

solace(configure)# routing

solace(configure/routing)# cspf neighbor <physical-router-name>

solace(configure/routing/cspf/neighbor)# mss <byte-count>

Where:

<byte-count> is the size of the maximum segment size in bytes (256 through 1460). The default value is 1460.

Note:  The no version of this command (no mss) resets the TCP maximum segment size back to default. Changing this value during router operation takes effect immediately on all existing and new TCP connections.