SDI Seminar

Speaker: Edoardo Biagioni, CMU

Building Block Protocols for Networking Protocol Implementations

Date: January 18, 1996

Abstract:The Fox Net networking protocol implementation allows safe compositions of independent modules to implement protocol stacks. In the Fox Net each module independently implements one logical protocol. The SML language, used to write the Fox Net, provides mechanisms to guarantee that any composition is properly typed and to automatically provide renaming.

Experience with the Fox Net shows that even individual protocols (such as IP) in real-world protocol stacks (e.g. TCP/IP) are quite complex. As a result of this complexity, the number of useful ways of combining existing protocol implementations to build novel protocol stacks is relatively small; conversely, the number of useful protocol stacks that can be built using a given set of protocol modules is equally limited.

Building Block Protocols are designed to allow the construction of arbitrary protocol stacks using a finite number of very simple, generic protocol modules. To the extent possible, each module implements a single, "atomic" (indivisible) protocol function. For example, the "length" protocol module encodes a length field in outgoing packets, and uses the encoded length field of incoming packets to resize the packets (if necessary) on receipt. Each module is as generic as possible so that the same module can be re-used even within a single stack; for example, the IP and TCP checksum computations can be implemented by two instances of the same generic checksum module.

This talk will cover the decomposition of standard protocols into atomic building blocks, the interfaces supported by the building blocks, some of the generic building blocks themselves and their implementations, and the use of building blocks to build more complex protocols.