More on lost message detection
Wayne Hathaway proposes a Sequence Control Byte in the host message leader so a receiving NCP can spot lost messages at once.
Hathaway, W., "More on lost message detection", RFC 512, DOI 10.17487/RFC0512, May 1973, <https://www.rfc-editor.org/info/rfc512>.
@misc{rfc512,
series = {Request for Comments},
number = 512,
howpublished = {RFC 512},
publisher = {RFC Editor},
doi = {10.17487/RFC0512},
url = {https://www.rfc-editor.org/info/rfc512},
author = {W. Hathaway},
title = {{More on lost message detection}},
pagetotal = 2,
year = 1973,
month = may,
} RFC text
Network Working Group Wayne Hathaway
RFC # 512 AMES-67
NIC # 16443 25 May 1973
MORE ON LOST MESSAGE DETECTION
I would like to second Edwin Meyer's (RFC #492) strong opposition to the
proposals made in RFC #467 concerning solutions to the "lost allocate"
and "half-closed" phenomena. In particular I support all of his
principles concerning the "half-closed" phenomenon. I also agree that
the proposed "lost allocate" solution tends to mask the real problem of
lost messages. I would, however, like to propose the following
alternative scheme for recognizing lost messages.
I propose that one of the two unused eight-bit bytes in the level 2
message leader be designated the "Sequence Control Byte" (SCB). This
SCB would be essentially a modulo 255 message count. Upon receipt of a
message, the receiving NCP would compare the SCB in the previous the
message with the expected SCB as computed from the SCB in the previous
message on the same link. A discrepancy indicates a lost message, which
could then be reported immediately via an appropriate ERR message. This
ERR message (to be defined) would contain both received and expected
SCB's, allowing possible recovery of the lost message (if sufficient
space were available in the sending host to save the last several
messages for each link). At any rate, the lost message would be
recognized immediately, whether it was an ALL (or any control message)
or a data message. The message with the unexpected SCB should be
processed normally, with the SCB for the next message computed from it.
For compatibility, the SCB would be defined such that an SCB of zero
indicates that no checking is to be done. The SCB following 255 would
thus be 1. This would mean that current NCP's would not have to be
changed unless actual checking were desired (since the level 2 protocol
specifies that these two unused bytes must be zero.) This special
definition of zero SCB would also allow RST's and ERR's to bypass
checking, which would be useful in avoiding possible loops.
This proposed scheme is similar to the second scheme suggested by Jon
Postel (RFC #516) except that it is on a per-link basis rather than a
per-host basis. This is significant, however, as it removes the
requirement that all messages from one host to another arrive in the
order sent (which cannot be guaranteed). It also provides for
compatibility with existing NCP's. Jon's first proposal (save all
messages until RFNM received) is weak in two areas: first, it is
possible that the receiving IMP has sent a RFNM for a message that in
fact never gets to its host, and second, it requires (at least for
swapped systems such as ours) either that messages be saved in resident
storage (expensive) or that RFNM's be handled by a swapped process (also
expensive). The third proposal (that of a host-to-host acknowledgment
scheme) is perhaps the best, but as that requires quite major changes to
the level 2 protocol, an interim solution such as that proposed here
seems of value.
[ This RFC was put into machine readable form for entry ]
[ into the online RFC archives by Alex McKenzie with ]
[ support from GTE, formerly BBN Corp. 9/99 ]
AI ELI5
On this page
§1Why Lost Messages Matter
Wayne Hathaway of AMES-67 seconds Edwin Meyer's strong opposition (in RFC 492) to the proposals in RFC 467 about the lost allocate and half-closed phenomena. He supports Meyer's principles on the half-closed phenomenon and agrees that the lost allocate fix masks the real problem of lost messages. He then proposes an alternative scheme for recognizing lost messages.
If letters vanish and you only patch the symptoms, you never find out that letters are vanishing. This note goes after the vanishing itself.
§2The Sequence Control Byte
One of the two unused eight-bit bytes in the level 2 message leader would be named the Sequence Control Byte (SCB), essentially a modulo 255 message count kept on each link. The receiving NCP computes the expected SCB from the previous message on the same link and compares.
A discrepancy indicates a lost message, which can be reported immediately with an ERR message (still to be defined) carrying both the received and expected SCBs. That could allow recovery if the sender kept the last several messages for each link. The message with the unexpected SCB should still be processed normally, and the next expected SCB is computed from it.
Each letter in a stack gets a page number. If the receiver sees page 5 after page 3, it knows page 4 is missing and says so right away.
§3Compatibility and Comparison
An SCB of zero means that no checking is to be done, and the SCB after 255 is 1. Because the level 2 protocol says these two unused bytes must be zero, current NCPs need not change unless checking is wanted. The zero rule also lets RST and ERR messages bypass checking, which avoids possible loops.
The scheme resembles the second scheme in RFC 516 but works per link rather than per host, so it does not require all messages between two hosts to arrive in the order sent, which cannot be guaranteed. Hathaway finds the first RFC 516 scheme weak because an IMP may send a RFNM for a message that never reaches its host, and because saving messages is expensive on swapped systems. He thinks the third scheme, host-to-host acknowledgments, is perhaps the best, but it needs major changes to the level 2 protocol, so an interim solution like this has value.
A page number of zero means do not check, so old machines that never number their pages keep working just as before.