CS262A Reading
Summary 31
Architectural Considerations for a New Generation of Protocols
D. D. Clark and D. L. Tennenhouse
Summary by Feng Zhou
11/12/2002
3 things in the paper,
-
Basic motivation: As networking hardware becomes faster and more diversified, and computer
architecture advances (pipelined/parallel processors), the conventional abstraction of network
connections as streams (TCP) and rigorously layered protocol designs seem inappropriate.
Different applications need different level of functionalities provided by transport
protocols. Layering and abstraction lower data locality and pipeline efficiency of modern
computers. Therefore, new transport protocols needs to be designed with these changes in mind.
Two principles(techniques) are described in the paper.
-
The first technique is Applicaiton Level Framing, which basically changes the stream model
of network connection into an application-specific framing model. Applications delimit their
data frames, called Application Data Units. Each ADU is the appropriate unit of data that
the application can make use of independantly. While each ADU is delivered intact, different
ADUs can arrive out of order. Thus different kinds of applications, such as video conferencing
vs. file transfering, can do different things with out of order ADUs.
-
The second technique is Integrated layer Processing. The idea is to combine the processing
of a number of layers regarding a single ADU into a single iteration over the data, in contrast
to each layer processing the ADU independently and passing the result to another layer. The
benefits include better memory locality, better pipeline efficiency for the processor and
less data copying. This is actually very much like the operator/iterator technique used
in database query processing systems, such as Volcano.
1 flaw:
In the programmers' view, a network facility described here may be much inconvenient to use than
traditional TCP network facility, because all the processing of protocol data is done in a
single loop, inside the application itself. It's somewhat like event-based programming where
the the events are now ADUs.