Network Working Group E. Meyer
Request for Comments: 492 MIT-Multics
NIC: 15357 18 April 1973
RESPONSE TO RFC 467
Jerry Burchfiel and Ray Tomlinson of Bolt, Beranek, and Newman, Inc, have issued a Network Request for Comments (#467) which proposes a solution to two problems which have been annoying to Network users. This document will briefly describe the problems and proposed solutions, and offer comments and alternative suggestions.
Meyer [Page 1]
RFC 492 RESPONSE TO RFC 467 18 April 1973
The second problem arises when the host at one side of an open connection crashes and purges its tables when it comes back up, while the host at the other end of the connection does not notice that anything has happened. (A similar situation occurs when the Network path temporarily fails between the two hosts, but only one host notices the failure and closes the connection.) If the host which crashed attempts to re-establish the connection, the host at the other end refuses to do so because the socket to which the connection request is targeted is seemingly already involved in an open connection. Given the idiosyncrasies of the terminal support software of some systems, users at some consoles may be unable to reconnect to the distant system they were connected with when the local system supporting his terminal crashed. This can continue indefinitely until the system which believes the original connections to be still open resets its internal state. This is call the "half- closed" phenomenon, and a solution is proposed in RFC 467. The basic principle of the RFC 467 proposal is that the side which has the open connection is able to detect an inconsistency whenever either side performs communication regarding this connection. When it does, it is supposed to silently (without regard to normal protocol) close the connection and be ready to handle connection requests to the previously connected port.
Meyer [Page 2]
RFC 492 RESPONSE TO RFC 467 18 April 1973
COMMENTS AND ALTERNATIVE PROPOSALS
Meyer [Page 3]
RFC 492 RESPONSE TO RFC 467 18 April 1973
A receiving host may at an arbitrary time issue a Give-Back allocation (GVB) control message for a connection.
8 8 8 8
+-------+-------+--------+--------+
| GVB | link | f =255 | f =255 |
| | | m | b |
+-------+-------+--------+--------+
The format of this GVB message is the same as that currently defined, except that the fraction fields f(m) and f(b) are required to all 1s. This is designed to provide a measure of upward compatibility. A host operating under the modified protocol will ignore the fraction fields, but under the current protocol this message means return everything. A sending host which receives a GVB control message immediately ceases transmission on the specified link. When the RFNM from the last message transmitted is received (indicating an empty pipeline), the sending host issues a Return Allocation (RET) control message, returning the remaining allocation.
8 8 16 32
+------+------+-----------+-----------+
| RET | link | msg space | bit space |
+------+------+-----------+-----------+
The modified RET command has the same format as that currently defined. The two differences are that it can not be sent until data transmission ceases and the last RFNM is received, and that it must return all remaining allocation for the send link (i.e., the allocation counters are set to zero).
Meyer [Page 4]
RFC 492 RESPONSE TO RFC 467 18 April 1973
This modified control message pair is capable of both its originally intended function,and of detecting errors and resynchronizing allocations (if desired) when initiated by the receiving side. I feel that the inability of this scheme to initiate allocation checking from either side is only a minor disadvantage which is more than compensated for by its positive features: this scheme gives positive indication that an error has occurred (the proposed RCS/RCR method conceals errors), and this minor change to the protocol may mean a correspondingly minor change to NCP's.
Meyer [Page 5]
RFC 492 RESPONSE TO RFC 467 18 April 1973
I'd like to set down here a number of principles which I think are at least peripherally concerned with alleviating the "half-closed" phenomenon. None of these is explicitly stated in the current Host- Host protocol document, but I believe that their enunciation would tend to alleviate confusion caused by network and host failures.
Meyer [Page 6]
RFC 492 RESPONSE TO RFC 467 18 April 1973
5. An NCP which receives a message from a foreign host that seems inconsistent with its current state should take no action to modify that state. Rather it should send an ERR error control message specifying the type of inconsistency and discard the inconsistent message. An NCP receiving an ERR message should log it for human inspection and is then allowed to silently modify its internal state or send out control messages in order to remove the inconsistency. (This is an extension of the proposal in RFC 467 that an NCP should delete a connection when it receives an ERR message specifying that the link involved is unknown.)