RFC 516 UNKNOWN NCP · RELIABILITY

Lost message detection

Jon Postel offers three ways for a host to notice that the network has lost a message.

On rfc-editor.org ↗
PUBLISHED
May 1973
AUTHORS
J. Postel
STREAM
Legacy
SCHEMES
3, non-conflicting
EXAMPLE NUMBER MODULUS
N=256
DOI
10.17487/RFC0516

RFC text

Original text · RFC Editor View on rfc-editor.org ↗
Network Working Group                           Jonathan B. Postel
RFC # 516                                          UCLA-NMC
NIC # 16683                                         May 18, 1973


                         LOST MESSAGE DETECTION

I have three suggestions for detecting the loss of messages by the
communications subsystem.  The first of these is perhaps the more
powerful and simpler to implement since it uses no new concepts and has
the power to retransmit the message detected as lost.

The first scheme:

    If upon sending a message the host saved a copy of that message and
    waited until either:

        a RFNM was returned, in which case everything is ok and the next
        message is processed.

        a INCOMPLETE TRANSMISSION is returned, in which case the copy of
        the message is retransmitted (this could be a loop so put a
        finite upper bound on the number of times to retransmit the same
        message).

        a DESTINATION DEAD is returned, in which case mark the
        destination down and require the exchange of reset commands
        before further communication is allowed.

        something else is received indicating an error in the network or
        local IMP, in which case at least log the error, and probably
        close the conversation.

    Following the above procedures either on a per host basis or a per
    link basis should prevent a lost message problem from
    developing.

The second scheme:

    If on a per host basis, message numbers are included in the host to
    host header of messages,, and messages are delivered in order (this
    is currently the case in the network, except for priority messages
    so this proposal requires that each host either send everything as
    priority or nothing as priority) then each receiving host can detect
    a missing message by comparing the message number of the received
    message with the previously received message.

        On exchanging resets the sequence numbers between that pair of
        hosts is set to zero.

        Each time a message is sent the current send message number is
        entered into a field in the message header, and the current send
        message number is incremented (modulo N, say N=256)

        Each time a message is received the message number from the
        message is compared to the current receive message number and:

            if the received message is the expected one then the message
            is acceptable and current receive message number is
            incremented (modulo N);

            if the received message is not the expected one then a
            message has been lost.

    What to do when a missing message is detected, not clear, but at
    least can be logged and reported to the network control center.  A
    missing message may not be fatal to an interactive conversation, but
    it is critical in a file transfer, thus I suggest that missing
    messages which are not recovered be cause to close the conversation.

The third scheme:

    Host to host acknowledgements could be required.  Such an
    acknowledgement scheme could be implemented similarly to the IMP to
    IMP scheme.  This is a serious change to the current protocols so I
    will not elaborate on it here, feeling that deeper study will be
    necessary to fully specify a reasonable host to host acknowledgement
    strategy.


Of these three suggestions the first is the most immediately practical
and implementable;  in fact several hosts all ready do this.  These
schemes also are non-conflicting, they could be implemented and used
simultaneously.








       [ 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
PROBLEMThe communications subsystem could lose messages, and hosts had no systematic way of noticing.
MECHANISMThree schemes: keep a copy of each message until the network answers and resend on INCOMPLETE TRANSMISSION, number messages per host pair so gaps show up, or add host-to-host acknowledgments.
WHY IT MATTERSThe first scheme is called the most immediately practical, and several hosts already did it. The schemes do not conflict, so they could be used together.

§1Three Suggestions

Jonathan Postel of UCLA-NMC offers three suggestions for detecting the loss of messages by the communications subsystem. He calls the first perhaps the most powerful and simplest to implement, since it uses no new concepts and can retransmit a message detected as lost.

There are three ways to be sure your mail got there: keep a copy, number the letters, or ask for a receipt.

THE THREE SCHEMES IN RFC 516
  • 1. Save and resendKeep a copy until RFNM; resend on INCOMPLETE TRANSMISSION.
  • 2. Message numbersPer host pair numbering in the host to host header, checked on receipt.
  • 3. Host acknowledgmentsHost to host acks, a serious protocol change left for further study.

§2Scheme One: Save a Copy and Wait

After sending a message, the host saves a copy and waits for the network's reply. A RFNM means all is well and the next message is processed. An INCOMPLETE TRANSMISSION means the copy is retransmitted, with a finite upper bound on retries since it could loop. A DESTINATION DEAD means the destination is marked down and a reset exchange is required before more communication.

Anything else indicates an error in the network or local IMP, so it should at least be logged and probably the conversation closed. This can be done per host or per link.

Hold on to your copy until the post office says delivered. If it says it fell out of the truck, send the copy again, but not forever.

§3Schemes Two and Three: Numbers and Acknowledgments

In the second scheme, message numbers go in the host to host header, per host pair. Messages must be delivered in order, which the network does except for priority messages, so each host would send everything or nothing as priority. Resets set the numbers between a pair of hosts to zero. The sender puts the current number in the header and increments it modulo N (for example N=256). The receiver compares the arriving number with the expected one; a mismatch means a message was lost.

What to do on a gap is not clear, but it can be logged and reported to the network control center. Unrecovered missing messages should close the conversation, since loss may be tolerable in interactive use but is critical in file transfer.

The third scheme would require host to host acknowledgments, similar to the IMP to IMP scheme. This is a serious change to current protocols, so Postel does not elaborate.

Number every letter so gaps show, or have the other side send back a receipt for each one. The receipt idea is the biggest change, so it is left for later.