Network Working Group Richard Schantz
RFC # 671 BBN-TENEX
NIC # 31439 December 6, 1974
A Note on Reconnection Protocol
I. PROTOCOL for RECONNECTING TELNET COMMUNICATION PATHS
A process initiates the reconnection of two of its Telnet connections by sending (or requesting its "system" to send) the <IAC><DO><RECONNECT> Telnet command sequence over each of the two send connections. The process initiating the reconnection is attempting to cause the direct connection of the objects of the two Telnet connections. In this manner, the initiating process can remove itself from the communication path between Telnet objects. The initiating process awaits positive responses to both reconnection requests before proceeding further with the reconnection. A reconnection request may be accepted by replying with the Telnet sequence <IAC><WILL><RECONNECT>. It may be rejected by sending the Telnet sequence <IAC><WONT><RECONNECT>. Rejection of both requests means normal communication may resume at once. Rejection of one request (but not the other) requires that the process agreeing to the reconnection be notified by sending it the Telnet sequence <IAC><DONT><RECONNECT> in response to its acceptance reply.
Schantz [Page 1]
RFC 671 A Note on Reconnection Protocol December 1974
After receiving positive responses to both requests, the initiating agent next selects the object of one of the Telnet connections for a passive role in the subsequent connection attempt. The other is designated as the active participant. The passive participant is to listen on a set of sockets, and the active participant is to send Request for Connections (RFCs) for those sockets. By designating roles, we are trying to reduce the probability of synchronization problems.
Schantz [Page 2]
RFC 671 A Note on Reconnection Protocol December 1974
The <IAC><SE> reply means that the passive participant has begun its connection shutdown, and will listen on the appropriate sockets. The initiator may now close its connections to the passive participant and supply the parameters to the active participant. This can be done with the assurance that it (the initiator) has done all it can to ensure that the passive process listens before the active process sends its RFCs. Failure to coordinate these actions may result in the failure of the reconnection, if, for example, the passive host does not queue unmatched RFCs. Persistence on the part of the active participant should be an integral part of the protocol, due to uncertainties of synchronization.
Schantz [Page 3]
RFC 671 A Note on Reconnection Protocol December 1974
DEFAULT CONDITIONS and RACES
Schantz [Page 4]
RFC 671 A Note on Reconnection Protocol December 1974
ASIDE:
Schantz [Page 5]
RFC 671 A Note on Reconnection Protocol December 1974
2. To avoid possible deadlock, the active (passive) process must simultaneously send (listen for) RFCs for both send and receive connections, which will form the new Telnet connection. Since the reconnection protocol does not specify an ordering for establishing the connections, it is important that passive processes listen in parallel on both the potential send and receive sockets, and that active processes send RFCs in parallel for both the potential send and receive sockets.
Schantz [Page 6]
RFC 671 A Note on Reconnection Protocol December 1974
III. TENEX RELATED DETAILS
Schantz [Page 7]
RFC 671 A Note on Reconnection Protocol December 1974
3. The switch to binary transmission requires two option negotiations. During this period data transfer is possible. However, the actual data transferred is dependent on the state of the negotiation at that point (e.g., depending upon the state, the IAC character may or may not be doubled). There does not seem to be a facility for alerting the process that the option has been accepted (rejected) and that all further transmissions will be in the new mode (binary). Perhaps suspending the process for the duration of the (timed out) option negotiation would eliminate this period of uncertainty in the mode switch. In TENEX, this could be coupled with pseudo-interrupts to note option negotiation failure for certain critical user initiated options.
Schantz [Page 8]
RFC 671 A Note on Reconnection Protocol December 1974
[ This RFC was put into machine readable form for entry ] [ into the online RFC archives by Alex McKenzie with ] [ support from BBN Corp. and its successors. 7/2000 ]