Browse Prior Art Database

Quickly Reusable TCP Ports

IP.com Disclosure Number: IPCOM000021782D
Original Publication Date: 2004-Feb-09
Included in the Prior Art Database: 2004-Feb-09
Document File: 1 page(s) / 8K

Publishing Venue

IBM

Abstract

Disclosed is a method to avoid a starvation of TCP ports by reusing TCP ports immediately without TIME_WAIT state after one connection is closed. This method substitute CLOSED state with special flag for TIME_WAIT state. The purpose of this implementation technique is to avoid a starvation of TCP ports due to TIME_WAIT state while guarantees a compatibility with existing implementations.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 76% of the total text.

Page 1 of 1

Quickly Reusable TCP Ports

In RFC793, which defines TCP, ports are required to become a TIME_WAIT state after a connection using the port is closed, for the twice time frame of MSL (Maximum Segment Lifetime). A port in a TIME_WAIT state cannot be used for a new connection. The purpose of being a TIME_WAIT state is to confirm that the remote host should receive an ACK message as a response to the FIN message, and to guarantee that no packets destined for the closed port exist in the network any longer. However, since the number of TCP ports are limited to 65536 according to RFC793, starvation of TCP ports occurs when many connections are made. With this method, a TCP port does not fall into a TIME_WAIT state after its connection is closed . Instead, the TCP port becomes a CLOSED state with an internal special flag (called TW_FLAG), which means the port must act as in a TIME_WAIT state if an incoming packet is destined for an old connection . Figure 1 depicts an original close sequence of a connection cited from RFC793, and Figure 2 depicts a close sequence with this method.

Client Server

====== ======

ESTABLISHED ESTABLISHED

(client closes)

ESTABLISHED ESTABLISHED

<CTL=FIN+ACK><SEQ=Sc><ACK=Ss>------->>

FIN_WAIT_1

<<--------<CTL=ACK><SEQ=Ss><ACK=Sc+1>

FIN_WAIT_2 CLOSE_WAIT

<<--------<CTL=FIN+ACK><SEQ=Ss><ACK=Sc+1>

(server closes)

LAST_ACK

<CTL=ACK><SEQ=Sc+1><ACK=Ss+1>------->>

TIME_WAIT CLOSED

(2*msl elapses...)

CLOSED

Figure 1 Close Sequence (cited from RFC 793)

Client Server

====== ======

ESTABLISHED ESTABLISHED

(client...