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,
  1. 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.
  2. 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.
  3. 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.