13 Feb 1986 05:14-EST
One of the wonderful things about layered architectures is that they have
a tendency to result in resource allocation problems in each layer.
Generally, the solution to the resource allocation problem at one layer
(congestion control, flow control, Receiver not Ready ....) does nothing
for the resource allocation problem at some other layer.
As a consequence, we seem to relearn now and then that we have to invent
resource allocation strategies for each layer to use to protect its
resources. The methods may vary from layer to layer, of course, depending
on the functionality of the layer, the freedom it may have to discard
information (or lack of freedom to do so), etc.
The best example I can think of is in a packet net - there may be
end to end flow control above the network layer (e.g TCP) and
flow control on the access link (e.g. HDLC), but the network needs
internal (end/end) flow control to avoid lockups and store/forward
congestion control to deal with trunking/tandem resource limits.
The biggest challenge in communication system design is recognizing
all these various limitations and figuring out a constellation of
resource allocation strategies which are consistent and which can
yield high performance. Usually, this requires that one look at
the problem at all (or at least, several) layers at once and not
focus solely on one layer and hope that solving its problems will
solve all of them - it will simply move the place where congestion
occurs to someplace else... like a balloon filled with water; you
squeeze here and it pops out there.
This archive was generated by hypermail 2.0b3 on Thu Mar 09 2000 - 14:35:40 GMT