[ih] Flow Control in IP
Steve Crocker
steve at shinkuro.com
Tue Apr 30 08:27:46 PDT 2024
Detlef,
In the Arpanet, the initial implementation of the IMPs had a flow control
mechanism that attempted to protect the IMP subnet from being overloaded
with too many packets. This was implemented via an end-to-end protocol
between the sending IMP and the receiving IMP that allowed only one message
per link.
At the host level, the original host-host protocol -- later referred to as
the Network Control Protocol (NCP) -- implemented virtual bitstreams. It
had a flow control mechanism that gave the receiving host control over how
many bits and messages -- yes, both bits and messages were controlled --
could be in flight over each connection.
For those who do not remember or who have not studied the details of the
Arpanet:
The IMPs were the routers. A host was connected to an IMP. The unit of
transmission between a host and an IMP was a "message" of up to about 8,000
bits. The IMP receiving (Source IMP) the message from the sending host
(Source host) chopped it into packets. Each packet was up to about 1,000
bits. The Destination IMP reassembled the packets into a message and
transmitted it to the Destination host.
>From a protocol perspective, there were multiple layers:
1. The IMP-IMP protocol governed the transmission of a packet from one
IMP to the next. It included strong error detection and retransmission if
the packet was not acknowledged as having been received correctly.
2. The End-to-End IMP protocol (my terminology) governed the breakdown
of a message received from a host into packets and the reassembly of those
packets into a message at the destination IMP. The End-to-End IMP protocol
imposed a limit of one message in transit per link.
3. The Host-IMP protocol governed the interaction between a host and its
connected IMP, as noted above. Each message included a link number. It
was intended that processes within two communicating hosts would use the
same link number for successive messages. Thus, the End-to-End IMP
protocol limited the flow between two host level processes. This scheme
did not limit the overall number of connections, nor did it prevent two
processes from using multiple connections if they chose to. (And, as we
experienced, it was indeed possible to flood the IMPs with enough packets
to cause a system-wide lockup.)
4. The host-host protocol, as noted above, implemented virtual
bitstreams between processes. It included metering of both the number of
bits and the number of messages in transit between the processes. The
receiving host controlled these quantities to avoid being overrun.
As you can see, there was more than one layer of flow control in the
original Arpanet. At the same time, there was strong interest in real-time
use of the Arpanet for applications where timeliness was paramount and loss
of a small percentage of packets was tolerable, e.g. speech. Relatively
early in the Arpanet development, an additional protocol was added to the
IMPs in parallel with the End-to-End IMP protocol that did not impose flow
control but also did not guarantee delivery. Layers 2, 3 and 4 above were
thus accompanied by parallel layers 2r, 3r and 4r (my terminology invented
for the purpose of this explanation).
By the time IP was being designed, it was fully understood that it would
not be possible to achieve perfect reliability within the packet-routing
layer of the Internet. Flow control as well as checksums and
retransmission were included in the TCP layer. Explicit flow control
within the packet-routing layer was dropped, but achieved implicitly with
feedback in the routing protocol via info about queue lengths and dropping
of packets when memory was exceeded.
In the early days, memory was quite limited. Over time, Moore's law
resulted in a complete reversal. Memory became inexpensive and plentiful.
Nowadays, the lack of flow control has led to enormously long queues of
messages waiting to be delivered. The term of art is bufferbloat.
Steve
On Tue, Apr 30, 2024 at 3:41 AM Detlef Bosau via Internet-history <
internet-history at elists.isoc.org> wrote:
> Dear all,
>
>
> may I ask this question?
>
> RFC 791 explicitly states that there is NO flow control in IP.
>
> As far as I see, some packet switching networks provide flow control
> mechanisms, while others don't. So, I have some rough idea, why this
> design decision was taken.
>
> I wonder, whether there was a general discussion of this issue in the
> past, particularly as this issue should have been relevant for the
> ARPANET as well.
>
> Many thanks for any comments on this one
>
>
> Detlef
>
> --
> Internet-history mailing list
> Internet-history at elists.isoc.org
> https://elists.isoc.org/mailman/listinfo/internet-history
>
--
Sent by a Verified
[image: Sent by a Verified sender]
<https://wallet.unumid.co/authenticate?referralCode=tcp16fM4W47y>
sender
More information about the Internet-history
mailing list