Improvement of Flow Control
A proposal to make host buffer allocation updates easier to synchronize.
Conrad, W., "Improvement of Flow Control", RFC 210, DOI 10.17487/RFC0210, August 1971, <https://www.rfc-editor.org/info/rfc210>.
@misc{rfc210,
series = {Request for Comments},
number = 210,
howpublished = {RFC 210},
publisher = {RFC Editor},
doi = {10.17487/RFC0210},
url = {https://www.rfc-editor.org/info/rfc210},
author = {W. Conrad},
title = {{Improvement of Flow Control}},
pagetotal = 2,
year = 1971,
month = aug,
} RFC text
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 ]
ISO Plain Language
On this page
§1Allocation Information Can Drift
The current give-back and return scheme could leave the two hosts out of synchronization. The author argues that a return should report how much space the sender has left after applying a give-back, so the receiving host can learn what allocation the sender believes it has.
Each host needs to know how much buffer space the other host believes is available. The existing return command did not clearly provide that remaining amount.
§2Sequence Give-Back and Return
Every give-back should receive a return reply, and the receiver should not send another give-back until it receives that return. The sender should also wait until it is no longer awaiting a data RFNM on the relevant link before sending a return.
The author describes the return as effectively a reply to the give-back, and suggests it might be better named accordingly.
After one host gives back buffer space, the other must reply before another give-back can be sent. This prevents overlapping updates from confusing the allocation count.
§3Use Absolute Decrements
The current give-back command uses fractions and a format unlike allocate and return. The proposal removes fractions and uses absolute decrements in a format like allocate. Allocations cannot be reduced below zero.
If the receiving host estimates the decrement incorrectly, the return reply supplies corrective information.
The proposal uses whole amounts instead of fractions. A return reply can correct the count if the first estimate was wrong.