A Structured TCP in Standard ML

This paper describes the design of an implementation of the Transmission Control Protocol using an extension of the Standard ML (SML) language. SML supports higher-order functions, modularity, and type-safe module composition. We find that by using SML we can achieve good structure and good performance simultaneously. Good structure includes a modular decomposition of the protocol stack and of the TCP implementation, a control structure that imposes a total ordering on all events and processes them synchronously, and a test structure that allows component testing to catch problems before system integration. Strategies that help achieve good performance include using fast algorithms, using language constructs that make it easy to stage function evaluation, and language implementation features such as compacting garbage collection.

[1]  Andrew W. Appel,et al.  Standard ML of New Jersey , 1991, PLILP.

[2]  David D. Clark,et al.  The structuring of systems using upcalls , 1985, SOSP '85.

[3]  Andrew W. Appel A runtime system , 1990 .

[4]  David D. Clark,et al.  Architectural considerations for a new generation of protocols , 1990, SIGCOMM '90.

[5]  Robin Milner,et al.  Commentary on standard ML , 1990 .

[6]  Scott Nettles,et al.  Real-time replication garbage collection , 1993, PLDI '93.

[7]  Robert T. Braden,et al.  Requirements for Internet Hosts - Communication Layers , 1989, RFC.

[8]  David Clark,et al.  An analysis of TCP processing overhead , 1989 .

[9]  Brian N. Bershad,et al.  Protocol service decomposition for high-performance networking , 1994, SOSP '93.

[10]  Christian F. Tschudin,et al.  Flexible protocol stacks , 1991, SIGCOMM '91.

[11]  Robin Milner,et al.  Definition of standard ML , 1990 .

[12]  Ben Zorn,et al.  A memory allocation profiler for c and lisp , 1988 .

[13]  David A. Borman,et al.  Computing the internet checksum , 1989, CCRV.

[14]  Peter Lee,et al.  Signatures for a network protocol stack: a systems application of Standard ML , 1994, LFP '94.

[15]  John H. Reppy,et al.  CML: A Higher-Order Concurrent Language , 1991, PLDI.

[16]  D. Orr,et al.  Mach: a foundation for open systems (operating systems) , 1989, Proceedings of the Second Workshop on Workstation Operating Systems.

[17]  Larry L. Peterson,et al.  A dynamic network architecture , 1992, TOCS.

[18]  David A. Moon,et al.  Symbolics Architecture , 1990, Computer.

[19]  Joseph Pasquale,et al.  The importance of non-data touching processing overheads in TCP/IP , 1993, SIGCOMM 1993.