Internet Experiment Note No. 201

                                David D. Clark
                      MIT Laboratory for Computer Science
                   Computer Systems and Communications Group

1.  Introduction
  The  purpose of this document is to identify the milestones which must be met
in order to bring the current internet architecture to a stable  service  which
can  be  used while the next round of research development is undertaken.  This
document describes the functionality associated with the service to be offered,
and identifies the work to be done in order to achieve  that  function.    This
document  discusses  all  aspects  of the internet service, and is intended for
planning purposes within  the  internet  research  community.    More  detailed
documents  are available as RFC's that discuss the specifics of host conversion
from NCP to TCP.

  This document should be viewed in the larger context of the long-term project
planning which is now underway.  An assumption underlying this document is that
it is necessary to identify carefully a service which  we  will  provide  in  a
stable  form  at  this  time,  in  parallel  with  which  a  follow-on enhanced
capability will be designed and implemented in  selected  hosts  and  gateways.
This  current service should more or less mimic the quality of service provided
today on the ARPANET by the NCP protocol, in  terms  of  supported  application
protocols, reliability, responsiveness, etc.

2.  Service Milestones
  There  are  five  major  milestones in the achievement of the current service
offering.  Two of these relate to support of TCP on the  ARPANET.    The  other
three  relate  to  support of actual internet traffic.  These milestones are as

  1. First use of internet for service (now happening!)

  2. NCP quality support for first TCP-only host on ARPANET (July 1982)

  3. NCP quality service for internet (?)


  4. Heavy load on internet (?)

  5. Last NCP host removed from ARPANET (January 1983)

  These   five  milestones  are  explained  and  elaborated  in  the  following

3.  Milestone One:  Minimal Support for Internet Service
  Internet service is being used today, as part of the Fort Bragg packet  radio
demonstration  and  by the machines at COMSAT, which are not connected directly
to the ARPANET.  I would characterize the service currently available to  these
users  as  somewhat  less  than  minimal, in that it works only because certain
special case adjustments have been made to individual hosts.  There  are  three
important components to this milestone:

  a. Fragmentation  and  reassembly must be completely implemented through
     the internet.  It is repeatedly brought  home  that  the  failure  to
     implement   this   portion  of  the  protocol  causes  important  and
     substantial confusion.  At the last internet meeting, the failure  of
     the  TIU  to  support  reassembly once again prevented machines which
     sent jumbograms from being used.    There  is  no  justification  for
     continuing to sidestep this problem.

  b. Name  tables  on operational hosts must be upgraded so that they have
     both the structure and capacity to name  all  of  the  hosts  in  the
     internet.    In  the long term, we hope that it will not be necessary
     for every host to  maintain  a  complete  internet  table,  since  we
     postulate  the  existence of name servers to which an individual host
     can turn to convert a name to a number.  However,  name  servers  are
     not currently available, and the requirement for this name conversion
     is immediate.

  c. ICMP  must  be  supported.    Without ICMP, one cannot achieve even a
     minimal level of error recovery.

  These  subtasks  must  be  completed  quickly,  because  minimal  service  is
important  for  the  sites in Europe who are momentarily being removed from the
ARPANET. If the only requirement of the European community is user telnet, then
the name table problem on server hosts such  as  TOPS  20  can  be  momentarily
sidestepped, but the lack of fragmentation will prove totally unworkable, as it
already has.


4.  Milestone Two:  NCP Quality Support for TCP on ARPANET
  Today, there exist hosts on the internet that speak only TCP.  However, these
hosts  are  very  substantially  limited as to what they can do.  The intent of
this milestone is to define a point at which a TCP-only host connected  to  the
ARPANET  can obtain a level of service to all other hosts directly connected to
the ARPANET that it might achieve using NCP  today.    This  goal  is  for  the
ARPANET only, not the general internet.  This restriction is important, because
it  defines  the  point at which a host converting from NCP to TCP can obtain a
reasonable service to other hosts to which it previously had NCP access.

  In order to achieve this goal, there must be conversion facilities  available
so  that  the  TCP  host  can  communicate  with  NCP-only hosts, and symmetric
conversion routines must be available to permit NCP only hosts to  have  access
to  the TCP host.  The exact function required for conversion in each direction
is slightly different, since the  protocols  available  on  the  TCP  side  are
sometimes  somewhat  more  powerful,  as  in  SMTP,  and  we  are interested in
providing a better level of service for the TCP only host than we are  for  the
unconverted NCP only host.  The specific requirements for this milestone are:

  a. Telnet forwarding in both directions.  This is a machine which speaks
     both  TCP  and NCP, to which a user can log in using one protocol and
     then request an outgoing telnet connection using the other protocol.

  b. FTP staging facility.  It appears to be rather difficult to build  an
     automatic facility for linking two FTP transfers together end to end.
     The  FTP  syntax  is  not  rich  enough so that one can describe to a
     forwarder where the ultimate destination of the  transmission  is  to
     be.    Thus,  since  this  is  only  a transition mechanism, it seems
     sufficient to create an FTP  facility  which  is  operated  manually.
     First the user transfers this file to an intermediate point, and then
     he  manually  logs  in  to  this  intermediate point (or to the final
     destination  machine)  to  transfer  the   file   to   its   ultimate

  c. Mail  forwarding.  This is a very important facility, since mail is a
     very important part of the day to day business of  the  ARPANET,  and
     because  it  will  be  a  highly  visible means by which we will make
     conversion to TCP popular.  SMTP has been specifically implemented to
     make possible the use of forwarders  to  provide  automatic  protocol
     conversion.  As originally proposed, automatic forwarding of mail was
     to  be  implemented  by causing every host on the ARPANET, whether or
     not it supported TCP, to implement SMTP by this milestone.  It is not
     clear that universal conformence can be achieved.    I  propose  that
     this  strategy  be  modified to permit an alternative in which a more


     sophisticated forwarder will permit mail to flow from an NCP to a TCP
     host  if  the  sender  of  the  mail  manually  constructs  a special
     destination string which triggers forwarding.

     In order to achieve SMTP service, the following  sub-milestones  must
     occur.    First,  the  definition of the protocol must be stabilized.
     This  is  now  being  done.    Secondly,  mail  forwarders  must   be
     implemented and brought to a service level.

  d. The  TCP-only  hosts  must  be  identified  and  brought  to  a full,
     functional level.  Full function includes the following:




         -TELNET(User, Server)

         -FTP(User, Server)

         -SMTP(Sender, Receiver, Composer)

     As part of implementing this rather ambitious list of  protocols,  it
     is  important  to identify and eliminate certain popular deficiencies
     which appear in some existing  implementations.    For  example,  the
     structure  which  exists  between  the  protocol layers for reporting
     errors must be rich enough that network conditions such as  host-dead
     or  imp-dead  correctly  terminate  the  network  connection with the
     appropriate message for the user.  For another example the name table
     must be upgraded from an ARPANET only to an internet facility.

  There is a great deal of work implied by the above list.  Currently  none  of
the  forwarders,  either  TELNET,  FTP,  or  SMTP, exist except in experimental
forms, and it is not clear that these experimental forms in  fact  provide  the
basis for a service offering.  This milestone is seven months away, and it will
require prompt effort to achieve it.

  It  is  not  the  purpose  of  this  milestone  to  encourage  (or  permit) a
"preliminary" host implementation  suitable  only  for  the  relatively  benign
ARPANET  environment.    The  host  implementor should be working toward all of
these goals at once.  It is in  the  networks  that  these  milestones  can  be


5.  Milestone Three:  NCP Level Service Over Internet
  This  is a somewhat vague milestone, and items which appear only on this list
have a habit of being repeatedly postponed in  task  schedules.    Nonetheless,
this  is an important goal, because it will establish the point at which we can
stop tinkering with the service we provide and proceed on to the next level  of
design.    It is important not to include too many items in this list, less the
list grow so big that we never complete its implementation.  On the  otherhand,
if  we  do  agree to include something on this list, then we must be consistent
and sincere about implementing it  in  all  the  relevant  machines.    Partial
implementation  is  not  a  useful  middle ground.  The following functions are
nominated for this category.

  a. Robustness features.  Included in this category  are  replication  of
     hardware  to  provide  an  alternative  path  in the case of a single
     component failure.  This is particularly important in the SATNET link
     to Europe.  Dual gateways may be required in other  locations,  where
     important acces nets enter the transport core.

  b. Fault  detection  and isolation.  "Dissapearing packets" are still an
     overly common aspect of internet communication.  It is important that
     every host be equipped with suitable tools  to  detect  and,  to  the
     extent  possible,  recover  from internetwork outages.  At a minimum,
     all hosts must use  the  ICMP  facilities  of  host  unreachable  and
     redirect  to recover from gateway outages or at least notify the user
     that further communication is impossible.  It is also important  that
     tools be put in place so that proper repair procedures are instituted
     properly when a portion of the internet fails.

  c. Proper  handling  of  option  fields  in  the  protocols.  Currently,
     options are most commonly processed by ignoring them.  We must decide
     which options we are really serious about and  implement  them.    An
     obvious topic for discussion is the set of options that deal with the
     source route function.  This is a good example of where we must do an
     all  or  nothing  implementation.   Isolated implementation of source
     route is demonstrably useless.

  d. Access control.  Certain mechanisms for  controlling  access  to  the
     internet  must  be  implemented as part of the interim service.  At a
     minimum, these include  login  features  in  the  TAC.    It  may  be
     necessary  to implement some further controls inside the gateway, but
     as yet no one has conceived of what those mechanisms could be.   This
     topic requires consideration.

  e. Name  servers.   The number of hosts, and thus the number of names in


     the  internet  is  much  larger  than that of the ARPANET.  Many name
     tables are overflowing. One way to avoid this problem is by providing
     name servers to which a host  can  turn  in  order  to  translate  an
     unknown  name  into  an  internet address.  In some respects, a namer
     server is a very simple mechanism, but it is very easy to  develop  a
     name  server mechanism which is so complicated as to be unrealizable.
     Some firm decision must be made as to the  level  of  service  to  be
     provided  by  name  servers  in  the internet, and then to provide an
     implementation  strategy  whereby  name   servers   are   universally

6.  Milestone Four:  Heavy Traffic Over the Internet
  This  is  difficult  milestone  to quantify, since we do not know the rate at
which traffic will build up, nor what maximum traffic level  we  must  support.
Nonetheless,  it seems clear that the existing gateway implementations will not
support the expected load.   There  are  three  improvements  which  have  been
proposed to address this topic.  All of these depend on replacement of existing
gateways with C/70 gateways or recoding of the existing software, so that there
is additional space available.

  a. Upgrade the net interface software so that it shows more intelligence
     about  interacting with the support network.  For example, the driver
     for the ARPANET should count RFNMs, and the  driver  for  the  SATNET
     should  interact properly with the selective refusal mechanism of the
     SATNET's non blocking interface.

  b. More buffers in the gateway.

  c. Improved instrumentation in the gateway, so that it  is  possible  to
     determine where bottlenecks are.

  In  addition  to  gateway  tuning,  we need to achieve a minimum level of TCP
"good behavior".  The occurrence of Silly Window Syndrome under heavy load must
be avoided, or the net will clog up totally.   Hosts  must  provide  sufficient
buffering to obtain reasonable throughput under long-delay situations.

  Finally, we must begin to plan for substantial congestion control problems in
the  internet.    The  existing  algorithm,  which  is based on a source quench
message from the gateway to the host, has not been shown to work well.  In  the
short  run,  we  have  not identified any alternative mechanism which will work
better.  At a minimum, every host and gateway should implement  ICMP,  so  that
source  quench  messages  can  at  least  be  sent  and received.  More work is
required in this area to determine what the proper action should be.


  Milestones  three and four are closely related, and could have been combined.
The distinction is that milestone three contains things that must be done  even
if  the  offered load is small.  Adequate performance may depend on new gateway
hardware, which may delay milestone four.    If  this  is  so,  users  will  be
interested in milestone three as a separate goal.

7.  Milestone Five:  NCP Service is Discontinued in the ARPANET
  This  milestone  has  occasionally been described as a very important one for
the internet implementors.  In fact, most of the work necessary at the internet
level to achieve this goal  will  have  been  done  as  part  of  the  previous
milestones.    There  are  essentially  two  important  subcomponents  of  this

  a. The TCP TAC must be deployed.  This is very important, and should  be
     done  somewhat  in  advance of this actual milestone to allow for the
     following point.

  b. Facilities for testing and debugging new TCPs  must  be  conveniently
     available  on  the  ARPANET, so that hosts converting from NCP to TCP
     can verify the correct operation.

  The major effort in achieving this milestone is  the  implementation  of  the
previously  itemized  list  of protocols on every host attached to the ARPANET.
This task will require substantial effort, but this effort is provided  by  the
system  maintainers  for  the  systems  in  question.  Our responsibility is to
provide the proper support for those implementors.

  In addition to the testing and debugging facility provided above,  the  other
important requirement is informal documentation that provides help and guidance
to  implementors  beyond  the  actual protocol specification.  A number of ways
have been proposed to provide this informal help.   One  easy  strategy  is  to
distribute  a collection of TCP design documents for the TCPs that have already
been implemented.  I am currently preparing a number of reports that attempt to
gather together the insights about TCP and IP which are well understood in  the
implementation  community  but  may  not be obvious to first time implementors.
First  topics  include  strategies  for  reassembly  and  packet  resequencing,
management  of  window and acknowledgement algorithms, and proper management of
names, addresses, routes, and ports.  Anyone wishing to contribute to this work
should contact me.  A table of contents will be out soon.

  There are a large  number  of  preliminary  milestones  associated  with  the
upgrade  of  all  ARPANET  hosts  to  TCP,  such  as document distribution, and
interaction with the various host maintainers, and managers.    These  subgoals
are  not  outlined  in  this document, but are described in a separate document
recently released by Jon Postel.


8.  Priorities
  The preceding discussion of the five service milestones has presented a rough
outline  of subtasks necessary to achieve these five goals.  A separate project
milestone document, now being prepared, lists these individual tasks in a  more
structured form, and provides dates and probabilities of success where known.