RFC 210 UNKNOWN TRANSPORT · FLOW-CONTROL

Improvement of Flow Control

A proposal to improve early ARPANET flow-control commands and prevent buffer desynchronization

On rfc-editor.org ↗
PUBLISHED
August 1971
AUTHORS
W. Conrad
STREAM
Legacy
COMMANDS IMPROVED
give back and return
PROBLEM TYPE
Buffer allocation desynchronization
PROPOSED SOLUTIONS
3
DOI
10.17487/RFC0210

RFC text

Original text · RFC Editor View on rfc-editor.org ↗
Request for Comments # 210                                     W. Conrad
Categories  C.4                                                  Harvard
NIC 7189                                                    16 August 71

                      Improvement of Flow Control

The current "give back" - "return" scheme seems to put the cart before
the horse in that the "return" command indicates the amount of space
the sending host is returning rather than the amount of space it has
left after decrementing by the amount specified in the "give back"
command.  Considering the fact that allocation counters at sending and
receiving hosts may get out of synchronization and the fact that the
receiving host has a preemptive priority in the allocation of its
resources, it is only logical that the receiving host be able to find
out exactly how much of its buffer space a sending host thinks it can
claim.

If the "return" command is to accurately reflect a sending host's
current allocation, and if successive "give backs" are to produce
"return" commands which can be properly interpreted, certain race
conditions must be avoided. A "give back" must be answered by a
"return" and no more "give backs" can be issued until that "return" is
received.  In some sense, a "return" command as here proposed is
really a give back reply, and, perhaps, should implemented under that
name. On the sending side, the "return" command must not be issued as
long as a data RFNM is awaited on the link to which the "return"
refers. As soon as the net is clear of data messages, the "return" may
be sent and data transmission may continue when the RFNM for this
message containing the "return" command is received.

The current "give back" command uses fractions and has a format
different from the "allocate" and "return" commands making processing
unnecessarily complicated. By adopting the convention that allocations
can not be decremented below zero, one can safely specify absolute
decrements in a format like that of the "allocate" command. If the
receiving host's estimate of a suitable decrement is inaccurate, no
harm is done and the "return" command in response to the "give back"
provides immediate corrective information.

SUMMARY

          Proposal                       Advantage

1    "Return" specifies amount       Provides more pertinent
     of space left after             information and a means
     decrementing.                   of resynchronization other
                                     than closing connection.

2    "Give Back" must get            Provide more accurate
     "return" in reply and           allocation information
     "return" must not be            by eliminating race
     sent with data on the           conditions.
     link.

3    Eliminate fractions             Eliminate messy math
     from "give back".               and provide symmetry
                                     to allocation commands
                                     making processing easier.



       [ This RFC was put into machine readable form for entry ]
        [ into the online RFC archives by Gunnar Reichert 6/97 ]

AI ELI5

On this page
PROBLEMThe early ARPANET flow-control commands "give back" and "return" could cause the sender's and receiver's buffer allocation counts to drift out of synchronization, potentially causing deadlock or lost data.
MECHANISMThe proposal changes what "return" reports and adds strict sequencing: a "give back" must always be answered by a "return" before another "give back" is sent. It also simplifies the command format to use absolute decrements instead of fractions.
WHY IT MATTERSThe changes would make the flow-control system more predictable and easier to implement correctly, improving network reliability.

§1The Flow-Control Problem

The ARPANET's early host-to-host protocol uses "give back" and "return" commands to manage buffer space. The "give back" command tells the other host that buffer space is being returned. The "return" command tells how much space the sender still has available.

The current scheme has a fundamental problem: the "return" command indicates the amount of space the sending host thinks it can claim, but this can drift out of sync with the receiving host's actual allocation if the commands are not carefully sequenced.

When computers share buffer space, they need to agree about how much is left. Without careful rules, the numbers can get out of sync.

§2The Proposal

The author proposes three key changes.

First, "return" should specify the amount of space left after decrementing, not the total allocation, providing clearer resynchronization information.

Second, a "give back" must receive a "return" reply, and no further "give backs" can be issued until that "return" arrives. This prevents race conditions where both sides send commands simultaneously.

Third, eliminate fractions from the "give back" command and use absolute decrements in a format matching the "allocate" command. If the receiving host's estimate of a suitable decrement is inaccurate, the "return" reply provides immediate corrective information.

The fix has three parts: be clear about what space is left, wait for answers before asking again, and use simple whole numbers instead of fractions.

§3Benefits

These changes provide more pertinent information for resynchronizing when allocation counts drift. They eliminate messy mathematics by using simple absolute decrements and ensure processing is symmetric and easier across both sides of the connection. The sending host side also has a constraint: the "return" command must not be issued if a data RFNM (Request for Next Message) is still awaited on the link.

Simpler math and clearer rules make the system work more reliably on both computers.