2.4. The layout of an optimized TCP session

The Riverbed implementation of an optimized TCP session is best described as a TCP tunnel: The internal channel between the two Steelhead appliances is transported via a TCP session. Of the optimized TCP session, only the TCP payload gets optimized, the details of the transport layer itself (the TCP header, IP header and Ethernet frame header) does not get forwarded.

Because of that design, there will be three different TCP sessions on the path between the client and the server, each which look similar but with their own characteristics and behaviour.

Figure 2.4. Three independent TCP sessions

Three independent TCP sessions

2.4.1. Three different TCP sessions

The first TCP session is between the client and the client-side Steelhead appliance. It will be a fast connection with a low latency, most likely to just behind the LAN switch where the client is located. This TCP session is setup by the client and will have the TCP capabilities that the client supports, for example if the client doesn't support TCP Window Scaling, then this TCP session will have a sliding window with a maximum size of 64 Kb. This should not be too much of a problem, since the latency on this part of the path is close to zero. This TCP session is called the client-side outer channel.

This TCP session has the following characteristics:

  • The IP addresses are the IP addresses of the client and server.

  • The TCP ports are the TCP ports used by the client and the server[*].

  • The TCP Sequence numbers used are specific for the TCP session between the client and the client-side Steelhead appliance.

  • It only supports the TCP features that the client offers.

The second TCP session is between the two Steelhead appliances. In general it will be a slow connection with a high latency going over the WAN links. The Steelhead appliances will use all possible TCP features they share, like TCP Window Scaling, TCP Fast Retransmission, TCP Selective ACK, TCP Timestamps and Packet Loss behaviour. This TCP session is called the inner channel.

This TCP session has the following characteristics (by default):

  • The IP addresses are the IP addresses of the in-path interface of the Steelhead appliances.[**]

  • The TCP ports used on the server-side Steelhead appliance is 7800, or 7810 for Fixed Target configurations.[**]

  • The TCP Sequence numbers used are specific for the TCP session between the two Steelhead appliances.

  • It supports the TCP features that the Steelhead appliances support.

The third TCP session is between the server-side Steelhead appliance and the server. It will be a fast connection with a low latency, most likely to just after the LAN switch where the server is located. The Steelhead appliance will offer all possible TCP features to the server, which might or might not support them. This TCP session is called the server-side outer channel.

This TCP session has normally the following characteristics:

  • The IP addresses are the IP addresses of the client and server.

  • The TCP ports are the TCP ports used by the client and the server[*].

  • The TCP Sequence numbers are specific for the TCP session between the server-side Steelhead appliance and the server.

  • It supports the TCP features that the server supports.

Because of these different characteristics on TCP level, especially the difference in TCP sequence numbers, optimized TCP sessions will not recover when the optimization service on one of the Steelhead appliance is restarted or traffic is rerouted to a path without a Steelhead appliance in place.

[*] The exception on this is the with MAPI latency optimization, there the destination TCP port of 7830 is used between the client and client-side Steelhead appliance.

[**] In the default Correct Addressing WAN Visibility.