IEN 98
                       TCP Implementation Status
                               Jon Postel
                             Mike Wingfield
                            Norm Abramovitz
                               Bob Braden
                             Gary Grossman
                              Bill Plummer
                               Jim Mathis
                              Aage Stensby
                               Dave Clark
                               3 May 1979
                     Information Sciences Institute
                   University of Southern California
                           4676 Admiralty Way
                   Marina del Rey, California  90291
                             (213) 822-1511
IEN-98                                                         J. Postel
                                                                     ISI
                                                              3 May 1979
                       TCP IMPLEMENTATION STATUS
                       -------------------------
Introduction
------------
This is a collection  of reports on the status of implementations of the
Transmission Control Protocol (TCP) [1].  The systems and reporters are:
  BBN Unix      --  Mike Wingfield
  Ford KSOS     --  Norm Abramovitz
  UCLA 360      --  Bob Braden
  DTI Unix      --  Gary Grossman
  BBN Tenex     --  Bill Plummer
      Tops-20
  SRI LSI-11    --  Jim Mathis
  NDRE NORD-10  --  Aage Stensby
  MIT Multics   --  Dave Clark
Postel                                                          [page 1]
                                                              3 May 1979
TCP Implementation Status                                         IEN 98
BBN Unix
BBN Unix Report - Michael A. Wingfield
---------------
The following  is a status  report  on the TCP developed  at BBN for DCA
under contract DCA100-78-C-0011.
Implementation Language
  C
Memory requirements
  Bytes: 22000 instr, 15000 data
Number of connections
  10 currently, but a compile time parameter
Operating System
  Unix with BBN IPC additions
Hardware
  PDP-11
Status
  TCP has been completed since March 15, 1979.
User Programs
  There is a THP user and server available, as well as a Telnet user and
  server.   A trivial  ftp user and server for the raw movement of bytes
  between files exists and has been used to move files between a Unix on
  the ARPANET  and a Unix on the RCCNET.   There  is also a test package
  for exercising TCP.
Bandwidth
  12Kb - 13Kb looped through the IMP, 20Kb internally looped.
Programming Effort
  6 man-months
[page 2]                                                       Wingfield
3 May 1979
IEN 98                                         TCP Implementation Status
                                                                BBN Unix
Documentation
  "TCP/PSIP  Development  Report"  which describes the user interface to
  TCP and  high  level  design.   A  software  documentation  report  is
  required under the contract but is not available yet.
Accessibility
  TCP is always  available  on link 155 at BBN-Unix (Host 0, Imp 63).  A
  THP server  is always  listening.   TCP and THP are also available  at
  EDN-Unix  when their  machine  is on the net (Host  3,  Imp 20).   All
  numbers are decimal.
Additional Features
  This TCP implements  the AUTODIN  II  security,  precedence,  and  TCC
  features  specified  in the SRI TCP report.  The gateway/2 program can
  forward  incoming  segments  to other destinations  if  necessary.   A
  flakiness  simulator  in the gateway  can be made to drop,  duplicate,
  reorder,  and break different  percentages  of outgoing  segments  for
  testing purposes.  These parameters can be changed dynamically.
Wingfield                                                       [page 3]
                                                              3 May 1979
TCP Implementation Status                                         IEN 98
Ford KSOS
Ford KSOS Report - Norm Abramovitz
----------------
Implementation Language
  C and Modula
Memory Requirements
  ??
Number of Simultaneous Connections
  will depend on system capacity (not table space limited)
Operating System
  KSOS Kernel
Hardware
  PDP-11/70, 11/45(?)
Status
  Currently in detail design, implementation to start circa 1 May 79.
Higher Level Protocols
  none yet.   (Server protocols for multi-level secure systems need some
  serious research work yet.)
Other Features
  Design envisages support for a multi-level secure network, although no
  specific  support  is included.   Internet datagram layer is supported
  including fragment reassembly.
Point of Contact
  Jay McCauley or Norm Abramovitz (chief designer/KSOS TCP)
[page 4]                                                      Abramovitz
3 May 1979
IEN 98                                         TCP Implementation Status
                                                                UCLA 360
UCLA 360 Report - Bob Braden
-----------
Philosophical Remarks
  This implementation  of the Internet  and TCP protocols is designed to
  meet the following general objectives:
    (a)  operate  within  the existing  NCP system job, sharing code and
    control-block formats wherever possible;
    (b)  be compatible  at  the  system-call  level  with  the  existing
    user-level protocol modules;
    (c)  implement  the Internet  protocol  as a  distinct  layer,  with
    interfaces   designed   to  expedite  the  implementation  of  other
    higher-level internet protocols in addition to TCP;
    (d)  require  minimum NCP resources when internet protocol is not in
    use.
Hardware
  IBM 360/370, with a Santa Barbara interface to the IMP.
Operating System
  OS/MVT,  Release  21.8,  with the  addition  of  several  user-written
  Supervisor-call  routines  (including the Exchange program).  The UCLA
  NCP operates  as a system  job, with its own internal multiprogramming
  and resource management mechanism.
Implementation Language
  BAL (IBM's macro assembly language)
Code Size (addition to existing NCP code)
  Resident Control Process     4K bytes
  Internet Protocol Layer      8K bytes (transient)
  TCP Protocol Layer           9K bytes (transient)
Braden                                                          [page 5]
                                                              3 May 1979
TCP Implementation Status                                         IEN 98
UCLA 360
Fixed Table Space
  The limited fixed table space is included in the code (above).
Connections Supported
  Only practical  limitation is amount of memory available in NCP region
  for buffers and per-connection control blocks (see following).
Cost per Connection
  Control blocks
    For each connection,  the internet  and TCP layers  require  control
    blocks totaling 256 bytes.
  (*)Receive
    Segment  reassembly  buffer=  max segment size - min internet header
    length + 16= 572 bytes per buffer.
  (*)Send
    128 bytes per unacknowledged segment.
  Note:   The actual data being sent is not counted here, as it occupies
  buffer space belonging to the appropriate user-level protocol module.
  (*)Note:   There is a dynamic  pool of these objects, shared among all
  active  connections.   The pool grows and shrinks dynamically with the
  number  of connections; it is probably reasonable to expect an average
  of one segment reassembly buffer and one unacknowledged segment (total
  of 700 bytes) per TCP connection.
  In addition  to this TCP-specific  memory,  there  is  the  memory  to
  support the user-level protocol.  For example, a server-Telnet session
  to TSO requires  control blocks and buffers totaling about 1800 bytes;
  this is identical for TCP and for the ARPANET Host-Host protocol.
Performance
  No information available yet
[page 6]                                                          Braden
3 May 1979
IEN 98                                         TCP Implementation Status
                                                                UCLA 360
Operational Status
  In debugging
Implementation Time
  Approximately 20 man-months
User-Level Protocols Available
  User and Server Telnet
Documentation
  In progress
Braden                                                          [page 7]
                                                              3 May 1979
TCP Implementation Status                                         IEN 98
DTI Unix
DTI Unix Report - Gary Grossman
---------------
Background
  Digital  Technology  Incorporated (DTI) is constructing an IOC Network
  Front End (INFE)  to connect WWMCCS hosts and terminals to the AUTODIN
  II network.  As part of the INFE effort, DTI has developed a version 3
  TCP which will be updated to a version 4 TCP when Government direction
  is forthcoming.
Implementation Language
  PDP-11 Version 6 Unix C
Instruction Space Memory Required
  9.6K 16-bit words of PDP-11 instructions
Buffer and Table Memory Space Required
  Fixed
    4K 16-bit words
  Per-connection
    Words of tables, etc.
      100
    Words of buffer space
      None (uses user process buffers)
Connections Supported
  Order of 50
Operating System
  Version  6 Unix as modified  for the INFE by the addition of a special
  interprocess communication mechanism.
[page 8]                                                        Grossman
3 May 1979
IEN 98                                         TCP Implementation Status
                                                                DTI Unix
Hardware
  DEC PDP-11/70 and PDP-11/45  (Code  not  machine-dependent; could  run
  on  other   machines   given  appropriate  C  compiler  and  operating
  system,  but there may  be  address  space  problems  on machines with
  a single 16-bit address space per process.)
Operational Status
  Has been  run  extensively  with  identical  implementations only.
Telnet Availability
  None
Other Protocols Available
  Terminal-to-Host Protocol (THP) as specified in
    Postel,  J.,  Garlick,  L.,  and Rom,  R., Terminal-to-Host Protocol
    Specification,  Stanford  Research  Institute,  Menlo Park,  15 July
    1976.
Measured Bandwidth
  Maximum  bandwidth  on a single connection through the DTI H516 IMP is
  60K bits/second.
Measured Packet Processing Rate
  Order of 40 packets/second
Implementation Time
  Six (6) man-months
Documentation
  Described in
    Healy,  D.C.  and Buford,  W.E.,  Transmission  Control Protocol and
    Pseudo  Segment  Interface  Protocol Program Maintenance Manual, DTI
    Document  Number  78020.C-INFE.3,  Digital  Technology Incorporated,
    Champaign, Illinois, 18 December 1978, 207 pp.
Grossman                                                        [page 9]
                                                              3 May 1979
TCP Implementation Status                                         IEN 98
DTI Unix
  There is also extensive documentation in the source.
[page 10]                                                       Grossman
3 May 1979
IEN 98                                         TCP Implementation Status
                                                        BBN TENEX/TOPS20
BBN TENEX/TOPS20 Report - William W. Plummer
-----------------------
Background Information
  There are several TCP implementations for TENEX and TOPS20.  The first
  such version  was written  in (the compiler  language) BCPL and ran in
  user mode.   Later a MACRO-10  (assembly language) version was written
  which has been included in the monitors.  The BCPL version tracked all
  protocol  changes  through TCP 2.5.2 and the assembly language version
  started  with TCP 2.4.  The BCPL TCP has now been retired and assembly
  language  version are available for versions 2.5.2, 4.0 and 4.0(ver 1)
  (see below).
  It should be noted that the higher level protocols such as Telnet were
  implemented  originally  for the BCPL TCP.   Since only minor  changes
  have been made to the user interface,  it is these same programs which
  are still in use with the monitors TCP.
  Bandwidth figures are rather hard to give because of variations in the
  operating  systems, networks, setting of various parameters in the TCP
  during  the measurement  runs, and the continuing evolution of the TCP
  code itself.   The bench  mark used for the figures below is TCPTST, a
  program which sends 1000. packets to itself.  This program attempts to
  keep 8 packets  outstanding  and thus something between 125. and 1000.
  acknowledge packets will flow in the reverse direction.
BCPL TCP 2.5.2
  Code size
    20,000. words
  Data space
    16,000. words
  Environment
    KA10 processor
    TENEX operating system
    JSYS traps used to simulate monitor calls SNDIM/RCVIM to communicate
    with ARPANET
Plummer                                                        [page 11]
                                                              3 May 1979
TCP Implementation Status                                         IEN 98
BBN TENEX/TOPS20
  Implementation time
    Basic protocol module
      4 man-months, coding 6 man-months, debugging
    Each server
      1 man-month, coding 1 man-month, debugging
  Higher-level protocols implemented
    Telnet server
    Telnet user
    ECHO
    SINK
    PRDATA (measurement program for PR Net)
  Bandwidth bench mark
    438 seconds
  Status
    Retired, but could easily be revived.
  Comments
    Debugging  was relatively  easy since  it was done in user mode.  On
    the other  hand only on other  host was available  to talk to.  Many
    debugging  feature  such as a packet  tracer were incorporated which
    helped   considerably.    Being  in  BCPL,   the  TCP   implementors
    occasionally   found  themselves   at  the  mercy  of  the  compiler
    implementors.
Assembly language TCP 2.5.2
  Code size
    5,000. words
  Data space
    4,000. words on TOPS20 101B 16,000. words on TENEX
    16,000. words on TOPS20 3A on 2020
[page 12]                                                        Plummer
3 May 1979
IEN 98                                         TCP Implementation Status
                                                        BBN TENEX/TOPS20
  Environment
    KA10 processor running TENEX or, Model A KL10/20 running TOPS20 101B
    or, Model 2020 running TOPS20 3A.
  Implementation time
    Basic protocol module
      2 man-months, coding 6 man-months, debugging
    Each server
      None.  (Same programs used)
    Higher-level protocols implemented
      Same as above.
  Bandwidth bench marks
    46 seconds on KA10 67 seconds on 2020 30 seconds on KL10 with cache
  Status
    Currently  available  on BBNC,  ISIC,  and SRI-KA.   Secure  version
    running on BBNE and ISIA.
  Comments
    Last version  2.5 implementation.   Many  intermediate  version  2.X
    steps were taken over a relatively  long time. Debugging hampered by
    lack of stand alone computer time for monitor debugging.
TCP 4.0
  This is the first  of the version  4 implementations.   The  code  was
  derived  from the version  2.5.2 sources  in  approximately  2  weeks.
  Bandwidth and size figures are the same.
  Status
    Running on BBNB
Plummer                                                        [page 13]
                                                              3 May 1979
TCP Implementation Status                                         IEN 98
BBN TENEX/TOPS20
TCP 4.0(ver 1)
  TCP 4.0(ver  1)  is derived  from TCP 4.   Internally  it is  somewhat
  different and offers more features to users.  Most notable is a set of
  JSYS calls  by which  users  may access the Internet layer in order to
  experiment  with private  Internet  protocols.  The mechanism by which
  TCP transfers  data between  user  buffers  and  Internet  packets  is
  considerably  different  than it was in 4.0 and is much faster.   Also
  the free storage  management  package has been streamlined.  The major
  task underway is embedding the Telnet server in the monitor along with
  the TCP itself.
  Code size
    5,200 words
  Data space
    256,000  words on KL20 TOPS20 3A 16,000 words on TENEX, 2020, TOPS20
    101B
  Environment
    Development System
      KL2040 processor
      TOPS20 3A monitor
      (Should work with TENEX and other versions of TOPS20, but this has
      not been tried yet.)
    Bandwidth bench mark
      26 seconds (2040 without cache) 43 seconds (2020)
  Status
    Running on BBNF by arrangement
[page 14]                                                        Plummer
3 May 1979
IEN 98                                         TCP Implementation Status
                                                              SRI LSI-11
SRI LSI-11 Report - Jim Mathis
-----------------
Implementation Language
  PDP-11 MACRO assembler
Hardware
  LSI-11 or PDP-11 in user mode
  Note:   The software  was developed to run on the MOS operating system
  for LSI-11s,  but should  be transportable with minor changes to other
  real-time operating systems that provide an interprocess communication
  and signaling  mechanism.  An earlier version of the software (version
  2.5) has been transported to RSX-11, ELF, and Unix.
Instruction Space Requirements
  TCP
    approximately 1800 decimal words
  Internet Protocol
    approximately 1000 decimal words
  Note:    The  TCP  and  Internet   protocol  operate  from  a  network
  characteristics  table that simplifies  conversion  from  use  on  one
  packet-switched  network  to another.  The software currently supports
  attachment  to the ARPANET  or the Packet Radio Network.  The software
  is structured to allow attachments to multiple networks, although this
  feature has not been tested.
Simultaneous Connections
  limited only by CPU loading and the amount of buffer space available
  The state information  for each TCP  connection  is  maintained  in  a
  connection  block of approximately  50 words; but a minimum of 100-500
  words of buffer  space is recommended  for each connection  in  active
  use.
Mathis                                                         [page 15]
                                                              3 May 1979
TCP Implementation Status                                         IEN 98
SRI LSI-11
Comment
  The TCP and Internet  software  were developed  for the  Packet  Radio
  Terminal  Interface  Unit to provide  terminal  access to internetwork
  hosts (a function  similar  to that provided  by the TIPS for  ARPANET
  hosts).  Because the TIU is not a timesharing machine, the only higher
  level protocols  available  are Telnet.   The Telnet  will operate, by
  manual command, in either the active (user) or passive (server) mode.
Status
  TCP
    - in preliminary release stage and undergoing further debugging
    - has undergone functional tests with other TCP version 4 sites
  Internet
    - has undergone functional tests with other TCP version 4 sites
Implementation Time
  The effort  expended  to design and code the TCP and Internet software
  is difficult  to estimate; the software has been evolving for the last
  3 years.   Reconstruction  of the software from scratch would probably
  require about 6 to 10 man-months.
[page 16]                                                         Mathis
3 May 1979
IEN 98                                         TCP Implementation Status
                                                            NDRE NORD-10
NDRE NORD-10 Report - Aage Stensby
-------------------
TCP STATUS
  Philosophical Remarks
    Due to the idiosyncrasies  of the operating  system,  it has been  a
    goal to keep the number  of processes  as low  as  possible  without
    complicating  the internal logic of the program.  Accordingly, there
    is one process  for  input  handling  and  one  process  for  output
    handling.   In addition, it has been necessary to include a separate
    retransmission  process.  The code has been tested rather thoroughly
    routine  by routine  and connections  have been opened  and closed a
    number  of times  in loop mode.  The TCP does not yet support urgent
    or rubber EOL.
  Hardware
    The TCP runs on a NORD-10 with 64K memory.
  Operating System
    SINTRAN III, version 77.05.17c
  Implementation Language
    NORD PL, which is a machine oriented medium level language.
  Code Size
    7k words(16 bit) This includes the present internet module.
  Buffer Space
    Dynamically allocated, maximum 7k which may be extended.
  Connections Supported
    No strict  limit,  but probably in the order of 4-5 due to available
    processing power.
  Cost per Connection
    ?
Stensby                                                        [page 17]
                                                              3 May 1979
TCP Implementation Status                                         IEN 98
NDRE NORD-10
  Delay per Packet
    Not measured
  Bandwidth
    Not measured
  CPU Utilization
    Not estimated
INTERNET STATUS
  The internet  code is not separated  from the TCP code.  It is planned
  to gather  it in a separate  process  with a well-defined interface to
  the  TCP.   Reassembling  of  fragments  is  not  yet  done.   Maximum
  acceptable segment size is 1008 bytes.
  The internet address is:
    IMP   LH  HOST
     51    0    1
[page 18]                                                        Stensby
3 May 1979
IEN 98                                         TCP Implementation Status
                                                             MIT Multics
MIT Multics Report - Dave Clark
------------------
Implementation Language
  PL/I
Memory Space (in 36 bit words)
  TCP 13.6k, IN 5.5k
Table Space
  About 40 words per connection
Buffer Space
  In virtual memory, no relevant limit in size
Hardware/Operating System
  H68/80, Multics
Operational Status
  Currently  available  about  half  time  for  experimentation,  up  as
  experimental service in week or so.
Other Protocols
  Datagram protocol, name server, user Telnet, server Telnet (The server
  Telnet is a kludge and requires programming by Honeywell before it can
  be  considered   really   useable.   Performance:   No  relevant  data
  available yet.  In a subjective test, Telnet is useable, but sometimes
  sluggish.
Implementation Time
  I have  no idea.   It has been  worked on by several people at the 10%
  level, so the total time invested is quite unclear.
Clark                                                          [page 19]
                                                              3 May 1979
TCP Implementation Status                                         IEN 98
References
References
----------
[1]     J. Postel. "Transmission Control Protocol -- Version 4," IEN 81,
        USC-Information Sciences Institute, February 1979.
[page 20]                                                         Postel