PLAN : A Programming Language for Active Networkssubmitted to PLDI ' 98

PLAN (Programming Language for Active Networks) is a new language for programs that are carried in the packets of a programmable network. PLAN programs replace the packet headers (which can be viewed as`dumb' programs) used in current networks. As a header replacement, PLAN programs must be lightweight and of limited functionality. These limitations are mitigated by allowing PLAN code to call service routines written in other, more powerful languages. These service routines may also be loaded into the routers dynamically. This two-level architecture, in which PLAN serves as a scripting or`glue' language for more general services, is the primary contribution of the paper. PLAN is a strict functional language providing a limited set of primitives and datatypes. PLAN deenes primitives for remotely executing PLAN programs on other nodes, and these primitives are used to provide basic data transport in the network. Because remote execution makes debugging diicult, PLAN provides strong static guarantees to the programmer , such as type safety. A more novel property aimed at protecting network availability is a guarantee that PLAN programs use a bounded amount of space and time on active routers and bandwidth in the network.

[1]  Jon Postel,et al.  Internet Control Message Protocol , 1981, RFC.

[2]  David Clark,et al.  Supporting Real-Time Applications in an Integrated Services Packet Network: Architecture and Mechanism , 1992, SIGCOMM.

[3]  Robbert van Renesse,et al.  Operating system support for mobile agents , 1995, Proceedings 5th Workshop on Hot Topics in Operating Systems (HotOS-V).

[4]  George C. Necula,et al.  Safe kernel extensions without run-time checking , 1996, OSDI '96.

[5]  Peter Lee,et al.  Optimizing ML with run-time code generation , 1996, SIGP.

[6]  Jonathan M. Smith,et al.  Switchware: accelerating network evolution , 1996 .

[7]  G.J. Minden,et al.  A survey of active network research , 1997, IEEE Communications Magazine.

[8]  Marianne Shaw,et al.  Active bridging , 1997, SIGCOMM '97.

[9]  Carl A. Gunter,et al.  Infrastructure for Proof-Referencing Code , 1997 .

[10]  George C. Necula,et al.  Proof-carrying code , 1997, POPL '97.

[11]  John V. Guttag,et al.  ANTS: a toolkit for building and dynamically deploying network protocols , 1998, 1998 IEEE Open Architectures and Network Programming.

[12]  Jonathan M. Smith,et al.  Protocol boosters , 1998, IEEE J. Sel. Areas Commun..

[13]  Liwu Li,et al.  The Java Language , 1998 .