Robbert van Renesse, Proceedings of the 1996 ACM SIGCOMM Conference, Stanford, September 1996
Notes by Li Li (3/30/98)
General Idea
Protocol layering is needed in order to implement complex protocol, but layering introduces overhead. This paper aims at reducing this overhead for the common case. There are two things we can do: one is to reduce header overhead, the other is to reduce layer crossing overhead.
Techniques in Masking the Overhead of Protocol Layering
Reducing Header OverheadThe field of protocol header is divided into four classes: connection identification, protocol-specific information, message-specific information and gossip.
Use connection cookie (a 62-bit magic number which is chosen at random and identifies the connection) to reduce the overhead introduced by connection identification part of message header.
The Protocol Accelerator (PA) collects all the fields of each protocol layer and compiles them into four compact headers. It does so as efficient as possible. Traditionally each field is aligned to 4 or 8 byte boundary, it's easy to see this trick reduces a great deal of the padding overhead.
It tries to minimize the critical path by delaying all updating of the protocol state until the actual message sending or delivery.
By predicting the protocol-specific header of the next message, in most cases the creation or checking of the protocol-specific header can be eliminated.
Packet filters, both in the send and delivery critical path, avoids passing through the layers all together.
To reduce the time waiting for the post processing of previous message, PA uses message packing to deal with backlogs.
The Implementation of These Techniques-----Protocol Accelerator (PA)
Each connection has a PA. The implementation of PA is about 1500 lines of C code. For architecture, see Figure 2 in the paper.
Problems with the PA
Discussion
This paper seems a little abstract. In order to have a deeper understanding of the concepts in the paper, I will propose some question about how the concepts relate to the protocol we know about.