RFC 512 UNKNOWN NCP · RELIABILITY

More on lost message detection

A proposal to detect lost host messages with a Sequence Control Byte in each message.

On rfc-editor.org ↗
PUBLISHED
May 1973
AUTHORS
W. Hathaway
STREAM
Legacy
SCB SIZE
One 8-bit byte
COUNTING METHOD
Modulo 255, per link
NO-CHECKING VALUE
0
VALUE AFTER 255
1
DOI
10.17487/RFC0512

RFC text

Original text · RFC Editor View on rfc-editor.org ↗
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 ]

ISO Plain Language

On this page
PROBLEMThe author argues that allocation-reset fixes can conceal a more general problem: messages may be lost between hosts.
MECHANISMA receiving NCP checks a per-link Sequence Control Byte against the expected count and can report a mismatch with an ERR message.
THE PROPOSAL'S TRADE-OFFThe proposal uses zero to mean no checking, so existing NCPs need not change unless they choose to use the check. It is presented as an interim approach.

§1Detect Lost Messages Directly

Wayne Hathaway agrees with Meyer's opposition in RFC 492 to the proposed fixes in RFC 467 for the lost allocate and half-closed phenomena. He also agrees that resetting allocations can hide the underlying problem of lost messages. RFC 512 proposes a way to recognize those losses.

The author argues that resetting allocation counters may hide lost messages. The proposal aims to make a missing message visible when it reaches the receiver.

§1The Sequence Control Byte

The proposal designates one of the two unused 8-bit bytes in the Level 2 message leader as a Sequence Control Byte (SCB). It acts as a modulo 255 message count for each link. When a message arrives, the receiving NCP compares the SCB with the value expected from the previous message on that link.

A mismatch indicates that a message was lost. The receiving NCP could report the received and expected values in an ERR message, which the memo says still needed definition. The message with an unexpected SCB should still be processed, and the next expected value is computed from it.

Each message carries a count for its link. If the next count is not what the receiver expects, the receiver can report a possible loss.

§1Compatibility with Existing NCPs

An SCB of zero means no checking is performed. The value after 255 is 1. Because the Level 2 protocol specifies that the two bytes are zero, existing NCPs would not need to change unless they wanted to use checking. RST and ERR messages could also use zero to bypass checking and avoid loops.

The author compares this proposal with the per-host message numbering in RFC 516. RFC 512's count is per link, so it does not require all messages between a pair of hosts to arrive in the order sent. Hathaway calls it an interim solution because host-to-host acknowledgments would require larger Level 2 protocol changes.

Zero keeps checking off, so older NCPs can leave the field unchanged. The proposed count is per link, rather than one count shared by all traffic between two hosts.

§4References