RFC 794 (rfc794) - Page 2 of 2
Pre-emption
Alternative Format: Original Text Document
September 1981
Pre-Emption
connection in favor of the higher precedence pre-empting one. Then the
THP would do a new LISTEN on that terminal's port in case a higher
precedence connection is attempted.
One of the reasons for suggesting this model is that processes are the
users of TCP (in general) and that TCP itself cannot cause processes to
be created on behalf of an incoming connection request. Implementations
could be realized in which TCPs accept incoming connection requests and,
based on the destination port number, create appropriate server
processes. In terms of pre-empting access to a remote terminal,
however, it seems more sensible to let the process which interfaces the
terminal to the system mediate the pre-emption. If the terminal is not
connected or is turned off, there is no point in creating a process to
serve the incoming high precedence connection request.
For example, suppose a routine FTP is in operation between Host X and
Host Y. Host Z decides to do a flash-override FTP to Host X. It opens
a high precedence connection via its TCP and the "SYN" goes out to the
FTP port on Host X.
FTP always leaves one LISTEN pending to pre-empt lower precedence remote
users if it cannot serve one more user (and still keep a LISTEN
pending). In this way, the FTP is naturally in a state permitting the
high precedence connection request to be properly served, and the FTP
can initiate any cleaning up that is needed to deal with the
pre-emption.
In general, this strategy permits the processes using TCP to accommodate
pre-emption in the context of the applications they support.
A non-pre-emptable process is one that does not have a LISTEN pending
while it is serving one (or more) users.
The actions taken to deal with pre-emption of TCP connections will be
application-process specific and this strategy of a second (or N+1st)
LISTEN is well suited to the situation.
Pre-emption may also be necessary at the site initiating a high
precedence connection request. Suppose there is a high precedence user
who wants to open an FTP connection request from Host Z to Host X. But
all FTP and/or TCP resources are saturated when this user tries to start
the user FTP process. In this case, the operating system would have to
know about the precedence of the user and would have to locally pre-empt
resources on his behalf (e.g., by logging out lower precedence users).
This is a system issue, not specific only to TCP. Implementation of
pre-emption at the source could vary greatly. Precedence may be
associated with a user or with a terminal. The TCP implementation may
locally pre-empt resources to serve high precedence users. The
operating system may make all pre-emption decisions.