CONFERENCE PROGRAM
Program at a glance   Tutorial program   Technical program   Abstracts   Papers

Abstract

Session
Header Processing
Paper
9-2
Full Paper
ps.gz
Title
Packet Types: Abstract Specification of Network Protocol Messages
Author(s)
Peter J. McCann (Bell Labs, Lucent Technologies)
Satish Chandra (Bell Labs, Lucent Technologies)
Abstract:
In writing networking code, one is often faced with the task of interpreting a raw buffer according to a standardized packet format. This is needed, for example, when monitoring network traffic for specific kinds of packets, or when unmarshaling an incoming packet for protocol processing. In such cases, a programmer typically writes C code that understands the grammar of a packet and that also performs any necessary byte-order and alignment adjustments. Because of the complexity of certain protocol formats, and because of the low-level of programming involved, writing such code is usually a cumbersome and error-prone process. Furthermore, code written in this style loses the domain-specific information, viz. the packet format, in its details, making it difficult to maintain.
We propose to use the idea of {\em types} to eliminate the need for writing such low-level code manually. Unfortunately, types in programming languages, such as C, are not well-suited for the purpose of describing packet formats. Therefore, we have designed a small {\em packet specification language} that serves as a type system for packet formats. Our language conveniently expresses features commonly found in protocol formats, including layering of protocols by encapsulation, variable-sized fields, and optional fields. A compiler for this language generates efficient code for type checking a packet, i.e., matching a packet against a type. In this paper, we describe the design, implementation, and some uses of this language.