1. I Overview
The network protocol provides three facilities:
1. Connection establishment
2. Flow control
3. Reconnection
Reconnection is considered separately from connection establishment
partly because of the complexity of reconnection and partly because I
don't have enough experience with the protocol to present these
concepts in an integrated fashion.
Connection establishment works essentially the same as in NWG/RFC
#33. The major change is that a more general form of switching is
provided independently of establishment, so establishment is
simplified by not including switching procedures.
A rough scenario for connection establishment follows:
1. Process PA in host A grabs socket SA and requests connection with
socket SB. Process PA accomplishes this through a system call.
2. Concurrently with the above, process PB in host B grabs socket SB
and requests connection with socket SA.
3. In response to process PA's request, the network control program
in host A (referred to as NCPA) sends a Request-for-Connection
(RFC) command to host B. NCPB in host B sends a similar command
to host A. No ordering is implied: NCPB may send the command to
NCPA before or after receiving the command from NCPA.
4. NCPA and NCPB are both aware the connection is established when
each has received a RFC command and each has received the RFNM
for the one it has sent. They then notify processes PA and PB,
respectively, that the connection is established.
One of the rules adhered to is that either SA is a send socket and SB
is a receive socket or vice versa. This condition is sometimes
stated as "SA and SB must be a send/receive pair."
5. The sending process may now send.
1.2. Flow Control
In order to prevent a sending process from flooding a receiving
processes it is necessary for the receiving process to be able to
stop the flow(*). Flow control is integrated into the network RFNM
handling. When a receiving host wishes to inhibit flow on a
particular link, the host sends a special message to its IMP which
causes the next RFNM on that link to be modified. The sending host
interprets this message as a RFNM and as a request to stop sending.
A confirming control command is returned.
When the receiving host is ready to receive again, it sends a command
(RSM) telling the sending host to resume sending.
1.3. Reconnection
For a great many reasons it is desirable to be able to switch one (or
both) ends of a connection from one socket to another. Depending
upon the restrictions placed upon the switching process, it may be
easy or hard to implement. To achieve maximum generality, I present
here a scheme for dynamic reconnection, which means that reconnection
can take place even after flow has started. It may turn out that for
the majority of cases, this scheme is much more expensive than it
needs to be; however, the following virtues are claimed:
1. All various forms of switching connections are provided.
2. Reconnection introduces no overhead in the processing of
messages sent over a connection i.e., the whole cost is borne
in processing the protocol.
---------------------------------------------------
*BB&N argues that unlimited buffering should be provided. It is
possible that this would be a proper strategy: but it is foreign to
my way of thinking, and I have based the protocol design on the
assumption that only a small buffer is provided on the receive end of
each connection.