RFC 2140 (rfc2140) - Page 3 of 11
TCP Control Block Interdependence
Alternative Format: Original Text Document
RFC 2140 TCP Control Block Interdependence April 1997
TCB Interdependence
The observation that some TCB state is host-pair specific rather than
application-pair dependent is not new, and is a common engineering
decision in layered protocol implementations. A discussion of sharing
RTT information among protocols layered over IP, including UDP and
TCP, occurred in [8]. T/TCP uses caches to maintain TCB information
across instances, e.g., smoothed RTT, RTT variance, congestion
avoidance threshold, and MSS [3]. These values are in addition to
connection counts used by T/TCP to accelerate data delivery prior to
the full three-way handshake during an OPEN. The goal is to aggregate
TCB components where they reflect one association - that of the
host-pair, rather than artificially separating those components by
connection.
At least one current T/TCP implementation saves the MSS and
aggregates the RTT parameters across multiple connections, but omits
caching the congestion window information [4], as originally
specified in [2]. There may be other values that may be cached, such
as current window size, to permit new connections full access to
accumulated channel resources.
We observe that there are two cases of TCB interdependence. Temporal
sharing occurs when the TCB of an earlier (now CLOSED) connection to
a host is used to initialize some parameters of a new connection to
that same host. Ensemble sharing occurs when a currently active
connection to a host is used to initialize another (concurrent)
connection to that host. T/TCP documents considered the temporal
case; we consider both.
An Example of Temporal Sharing
Temporal sharing of cached TCB data has been implemented in the SunOS
4.1.3 T/TCP extensions [4] and the FreeBSD port of same [7]. As
mentioned before, only the MSS and RTT parameters are cached, as
originally specified in [2]. Later discussion of T/TCP suggested
including congestion control parameters in this cache [3].
The cache is accessed in two ways: it is read to initialize new TCBs,
and written when more current per-host state is available. New TCBs
are initialized as follows; snd_cwnd reuse is not yet implemented,
although discussed in the T/TCP concepts [2]:
Touch Informational