Multics Technical Bulletin                                MTB-748
Networking Overview

To:       Distribution

From:     Richard J.C.  Kissel

Date:     04/02/86

Subject:  Overview of the New Multics Networking Architecture

1 ABSTRACT

    An overview of the  new Multics Networking Architecture (MNA)
is  presented.  This includes  an overview of  the changes to  be
made  for  the  user  interface,  changes  to  the administrative
system, and  internal Multics support changes.  This  is meant to
be  an  introduction  to  the  networking  architecture  and  its
terminology and serves as a prerequisite for understanding future
MTBs.

Comments should be sent to the author:

via Forum:
   >udd>m>rjck>mtgs>Multics_Networking (mnet).

via Multics Mail:
   Kissel.Multics on all systems

via telephone:
   (HVN) 492-9320 or (617) 492-9320

_________________________________________________________________

Multics  project  internal  working  documentation.   Not  to  be
reproduced or distributed outside the Multics project without the
consent of the author or the author's management.

Multics Technical Bulletin                                MTB-748
Networking Overview

2 INTRODUCTION

     This  MTB introduces the  concepts and issues  involved with
designing  and implementing  networking support  on Multics.  The
following paragraphs from MTB-607 ("Problems  With MCS" by C.  A.
Hornig,  1/26/83) summarize  the  reasons  for embarking  on this
effort now.

     "At the  present time there  is a great  deal of demand
     for new  communications functionality.  This  demand is
     coming  largely  from  two  sources,  the  window/video
     system development effort and  the expansion of Multics
     networking capabilities.  The window/video system needs
     real-time   input   editing   without   central  system
     overhead.   Network  implementers  need  extremely high
     throughput,  better   response  time,  and   also  less
     overhead.  These needs cannot be met within the current
     system.  They can and should  be met by any replacement
     for it.

     Another  requirement  which  must  be  met  is that the
     replacement  allow much more  architectural flexibility
     then  the  current  MCS.   We  need  to  support a wide
     variety of Honeywell and foreign equipment through many
     different   communication  media.   In   addition,  the
     concept of 'distributed' front-end processors should be
     supported.  This  would permit processing  performed by
     the FNP to be done by a FNP at a remote site.  This FNP
     would communicate  with the local Multics  FNP over any
     of a number of communications media.  This allows us to
     distribute communications processing  power where it is
     needed,   and   eliminate   unnecessary  communications
     overhead."

3 WHY WE NEED NEW NETWORKING SUPPORT

     Our    current   communications    support,   the    Multics
Communications System (MCS), is  well designed to support locally
connected or  dialed up terminals.  However,  terminals connected
through networks, and computer to computer communications through
networks, are not well supported.  MTB-607 describes the problems
with MCS in a networking environment.  The basic problems are:

   o Obsolete  frontend  hardware   and  software.   The  current
     frontend is  based on the Datanet  355 hardware architecture
     which  is  being  replaced   within  Honeywell  by  the  DN8
     frontend, based  on Level 6 hardware.   The current frontend
     must be programmed in a macro/table-driven assembly language
     (based on  MAP355) which is nearly impossible  to enhance or
     maintain.

MTB-748                                Multics Technical Bulletin
                                              Networking Overview

   o Static connection  descriptions used by ring  0 multiplexers
     (basically  the  CMF).   Most  networks  that  Multics  must
     support, create and  destroy connections dynamically, either
     at the request  of the network for incoming  requests, or at
     the request of the Multics user for outgoing requests.

   o TTY  I/O module  problems and  terminal management problems.
     The  current TTY  interface does   not support  many of  the
     operations  that are needed  to interface to  networks, e.g.
     record  oriented  communication  (as  opposed  to  streams),
     direct manipulation of network  parameters (for instance PAD
     parameters  on X.25  networks), etc.   The current  terminal
     management  (i.e.    input/output  conversion,  translation,
     canonicalization, etc.)  is handled in  ring 0, and thus, is
     not  available  for  use  by  a  network terminal management
     protocol such as is used on a DSA network.

   o Current  administration and  control  is  not suited  to the
     dynamic nature of networks.  Again, the static nature of the
     CMF makes administrative (and  Answering Service) control of
     dynamic  network connections  difficult.  For  instance, all
     channels  have to be  predefined in the  CMF, even though  a
     network may support a very large (or even unknown) number of
     channels.

4 WHAT WE ARE TRYING TO DO

     The  goal  of  this  effort  is  to  provide  a  "networking
platform"  on   Multics.   This  "networking  platform"   is  the
architecture  (and implementation)  of "real"  network support on
Multics.  In particular, the first  goal of the effort is support
of DSA (Honeywell's Distributed  Systems Architecture) on Multics
using   a  DN8   frontend.   However,   the  Multics   Networking
Architecture  (MNA) is  not DSA   specific and  must support  any
network  which might  be  connected  to Multics,  e.g.  Internet,
X.25, Hyperchannel, ChaosNet, CSNet, etc.

     There are  some major constraints that must  be satisfied by
the MNA:

   o MCS  must continue to  work with its  current functionality.
     This includes both the Multics side and the frontend side of
     MCS, since  there is no  current plan to  build a functional
     replacement for  the current DN6xxx frontend.   This will be
     done  by  leaving  MCS  (as  well  as  all of its supporting
     functions  in  the  Answering   Service,  user  ring,  etc.)
     intact.  It may be possible  to migrate (in a user invisible
     fashion) the MCS functionality to MNA as time permits.

Multics Technical Bulletin                                MTB-748
Networking Overview

   o MNA must be a "distributed"  architecture.  That is, it must
     be  possible to distribute  functions and services  from the
     host  to:   local   frontends,  remote  frontends,  personal
     workstations, intelligent  terminals, etc.  It  must support
     networks  connected to  Multics through  PSIA channels (e.g.
     the Hyperchannel) or other hardware channels, as well as the
     normal case of networks  connected through a local frontend.
     case).

   o Multics  security  must  not  be  compromised  by MNA.  This
     includes AIM security.

   o Implementation of MNA must not require changes in user code,
     unless  a user  application wants  to take  advantage of new
     functions that are only offered in the MNA implementation.

     A major result of the DSA  specific part of this effort will
be that the Multics Organization  will no longer support, or have
control of, one  of the Multics frontends.  This  will impact the
implementation  of many  of the  distributed aspects  of the MNA,
since much  of the support  for distributed services  will not be
implemented by MDC.  That is, changes  to the DN8 will have to be
negotiated  with the  organizations that  support it  (currently,
Distributed  Systems and  Computing Operations,  DS&CO).  It  may
also  have an  impact on  other aspects  of Multics,  such as the
Multics security rating, etc.

5 SOME NETWORKING IDEAS AND TERMINOLOGY

     Many  of the  ideas for  the MNA  have been  taken from  the
International   Standards   Organization   (ISO)   Open   Systems
Interconnection (OSI)  Reference Model.  The OSI  Reference Model
is currently a Draft Internation Standard (DIS7498), and is being
extended  with  an  addendum  on  Naming  and  Addressing  and an
addendum on Security.  The rest of this section will describe the
OSI Reference  Model concepts and  terminology.  The rest  of the
MTB will then describe how  the concepts and terminology apply to
the MNA.

5.1 Basic Elements

     There  are four  basic elements  used in  describing the OSI
Reference Model:

   o Systems  - A set  of one or  more computers, the  associated
     software, peripherals, terminals,  human operators, physical
     processes,  information transfer  means, etc.,  that form an
     autonomous   whole   capable   of   performing   information
     processing and/or information transfer.

MTB-748                                Multics Technical Bulletin
                                              Networking Overview

   o Application-Entities  -  An  element  within  a system which
     performs  the   information  processing  for   a  particular
     application.

   o Connections  -  The   means  by  which  application-entities
     exchange information.   Although the OSI Reference  Model is
     currently  based  on  the  assumption  that  a connection is
     needed  for   information  transfer,  an  addendum   to  the
     Reference   Model    is   being   developed    to   describe
     connectionless information transfer (e.g.  datagrams).

   o Physical  Media -  The actual  physical connections  between
     systems.

     The  term  entity  (of  which  an  application-entity  is  a
particular type) is used to refer to that part of a process which
is of concern  to the Reference Model.  That is,  an entity has a
name  and an  address and  is what  uses connections  to exchange
information   with  other   entitites  (see   below  for  further
characteristics of entitites).

5.2 Layers

     Each  system   in  the  Reference  Model   is  divided  into
subsytems,  each  of  which  is  an  element  in  a  hierarchy of
elements, where each element in the hierarchy interacts only with
the elements directly above and  below it.  A particular level in
the hierarchy is called an (N)-subsystem, where N is the level of
the  subsystem in the  hierarchy.  A layer  is the collection  of
subsystems (in  all the systems) which  are at the same  level in
the hierarchy.

     A specific layer is referred to  as an (N)-layer.   The next
higher layer is  the (N+1)-layer and the next lower  layer is the
(N-1)-layer.    An  (N)-entity is   an active  element within  an
(N)-layer and system (i.e.  within an (N)-subsystem).

     Peer-entities are entities within  the same layer.  They may
be on the same or different systems.

     An  (N)-service is  a capability   of an  (N)-layer and  the
layers beneath  it, which is  provided to (N+1)-entitites  at the
boundary   between  the   (N)-layer  and   the  (N+1)-layer.   In
programming terms, a  service is defined by an  interface.   That
is, an (N+1)-entity obtains an  (N)-service by calling through an
interface to an (N)-entity.

     An   (N)-service-access-point   is   the   point   at  which
(N)-services  are provided by  an (N)-entity to  an (N+1)-entity.

Multics Technical Bulletin                                MTB-748
Networking Overview

An (N)-service-access-point is basically identified by an address
as described below.

     An (N)-facility is a part  of an (N)-service.  For instance,
connection   establishment,  data  transfer,   and  disconnection
facilities might be three parts of an (N)-service.

     An (N)-quality-of-service  is a parameter which  expresses a
value  for  some  characteristic  of  a  service.   For instance,
performance   characteristics  like  throughput,   or  connection
establishment   delay,  and   reliability  characteristics   like
residual error rate, or  connection failure probability, might be
possible qualities-of-service for a particular service.

     An  (N)-function   is  a  part  of  the   activities  of  an
(N)-entity.  Generally, (N)-functions are used by (N)-entities to
perform an (N)-service,  but they may also be  used for functions
which are not specifically service oriented (e.g.  "housekeeping"
functions) within an (N)-layer.

     An (N)-protocol  is a set of syntactical  and semantic rules
which  govern the  form and  meaning of  information exchanged by
(N)-entities when performing (N)-functions.  (N)-entities may use
a number of (N)-protocols to perform their functions.

5.3 Names, Titles and Addresses

     A name is a linguistic object which corresponds to an object
in some universe of discourse.   In the OSI Reference Model there
are three basic types of names:

   o A    title   which    names   an    entity,   including   an
     application-entity.

   o An address which names a service access point.

   o An identifier  which names something else.   For instance, a
     connection-endpoint,   to   distinguish    it   from   other
     connection-endpoints in a service-access-point (see below).

     Names are assigned by a  naming authority (i.e.  titles by a
title  authority and  addresses by  an addressing  authority).  A
name is expected to be  unambiguous, and to uniquely identify one
object for  all time (or at  least long enough).  One  object may
have  multiple names, or  synonyms.  A primitive  name is a  name
which does not have any  internal structure visible to its users.
A descriptive name is a name  which identifies an object by means
of a set  of assertions concerning the properties  of the object.
Names can also be generic or  multicast.   A generic name names a
set  of objects,  such that  when  the  generic name  is used  to

MTB-748                                Multics Technical Bulletin
                                              Networking Overview

identify  the recipient of  a communication request,  exactly one
member of the set will be selected.  The initiator of the request
has no control over which member  of the set will be selected.  A
multicast name  also names a set  of objects as above,  but, such
that all members of the set will be selected, rather than exactly
one.

     An  (N)-title identifies  an (N)-entity,  and an (N)-address
identifies  an  (N)-service-access-point.   At  a  given point in
time,  an   (N+1)-title  is  bound   to  an  (N)-address   by  an
(N)-directory-service (i.e.   there is a  way to find  an address
for an entity, given its title).  When an (N)-connection is to be
established,  the (N)-layer is  provided with the  (N)-address of
the  desired  destination  (i.e.   (N+1)-entity).   The entity to
address mapping may change over time, but at any given time it is
one to many.  That is, one entity may have many addresses, but an
address can only locate a single entity at a time.

     An     (N)-entity     can     support     a     number    of
(N)-service-access-points  (addresses),  and   use  a  number  of
(N-1)-service-access-points.   This  gives  rise  to  a number of
possible     relations     of     (N)-service-access-points    to
(N-1)-service-access-points through an (N)-entity.  The relations
can  be   one-one,  one-many,  many-one,  or   many-many.   These
possibilities  should not  be confused  with the  multiplexing of
connections as described below.  They  only relate to the ways an
(N)-entity  can  map  the  address(es)  it  provides  to  its own
address(es).

5.4 Connections

     An  (N)-connection  is  an  association  established  by  an
(N)-layer between two or more  (N+1)-entities for the transfer of
data.   An  (N)-connection-endpoint  is  the  termination  of  an
(N)-connection    within    an    (N)-service-access-point.    An
(N)-service-access-point  may have  many (N)-connection-endpoints
within it at any given time.

     In order to establish an (N)-connection, the local (N)-layer
needs to know the  remote (N)-service-access-point address.  This
is  supplied   by  the  local  (N+1)-entity   which  desires  the
connection.  The  (N)-layer uses this address  to determine:  the
protocol  control   information  to  be  passed   to  the  remote
(N)-entity which "owns"  that (N)-service-access-point; the local
(N-1)-service-access-point    to    use;     and    the    remote
(N-1)-service-access-point   address  to    pass  to   the  local
(N-1)-layer.  The (N)-layer obtains this information by using the
directory funtions mentioned above.

Multics Technical Bulletin                                MTB-748
Networking Overview

5.4.1 MULTIPLEXING AND SPLITTING

     An (N)-entity can map (N)-connections onto (N-1)-connections
either one-one,  many-one (called multiplexing, whose  inverse is
demultiplexing ), or one-many (called splitting, whose inverse is
recombining   ).    These   mappings   are   independent  of  the
service-access-point relations described  above.  Multiplexing is
usually  used  to  make  more  efficient  or  economic  use of an
(N-1)-connection (e.g.  the X25 packet level allows multiple user
connections to share the same physical wire).  Splitting might be
used    to    improve    reliability    (by    having   redundant
(N-1)-connections  for each   (N)-connection), or  provide better
performance  at lower  cost (by  using multiple,  low-cost, slow,
(N-1)-connections to support a single fast (N)-connections).

5.5 Data Units

     (N)-entities exchange data through an (N-1)-connection while
performing  (N)-services for an  (N+1)-entity.  The unit  of data
exchanged    between    two     (N)-entites    is    called    an
(N)-protocol-data-unit.   It consists  of any control information
required by  the protocol and  user data which  has been obtained
from, or is to be delivered to, an (N+1)-entity.

     An  (N+1)-entity  passes  information  to  an (N)-entity for
transfer on an (N)-connection through the interface between them.
The   data   passed   through   the   interface   is   called  an
(N)-interface-data-unit.     It  consists  of  interface  control
information and data to be transferrred on the (N)-connection.  A
very important unit of data available at the interface between an
(N+1)-entity  and an  (N)-entity is  the (N)-service-data-unit.
This is  a unit of  data which is  preserved from one  end of the
(N)-connection  to the  other.  That  is, the  (N)-layer makes an
(N)-service-data-unit  sent  by  an  (N+1)-entity  visible to the
receiving     (N+1)-entity    across    the     interface.     An
(N)-service-data-unit   may   be   contained   entirely   in  one
(N)-interface-data-unit,     or    it    may     span    multiple
(N)-interface-data-units.

5.5.1 RELATIONSHIPS BETWEEN DATA UNITS

     An   (N)-entity  can   combine  (N)-service-data-units   and
protocol  control information  into (N)-protocol-data-units  in a
number  of ways.  It  can combine a  single (N)-service-data-unit
with appropriate protocol control  information to create a single
(N)-protocol-data-unit.    It   can    perform   segmenting   and
reassembling  by  putting   a  single  (N)-service-data-unit  and
appropriate  protocol  control  information  into  more  than one
(N)-protocol-data-unit.  It  can perform blocking  and deblocking

MTB-748                                Multics Technical Bulletin
                                              Networking Overview

by putting  more than one (N)-service-data-unit  with appropriate
protocol      control     information      into     a      single
(N)-protocol-data-unit.     And   finally,    it   can    perform
concatenation   and  separation   by  combining   more  than  one
(N)-protocol-data-unit into a single (N-1)-service-data-unit.  As
the protocol-data-units  at layer N turn  into service-data-units
at  layer N-1,  they must  go through  the interface  between the
layers   as   interface-data-units.    The   boundaries   of  the
interface-data-units are arbitrary with respect to the other data
units, but  the interface must  provide some way  to identify the
service-data-units.

5.5.2 FLOW CONTROL

     There  are  two  basic  types  of  flow  control:  peer flow
control which regulates the rate at which (N)-protocol-data-units
are sent  between (N)-entities, and interface  flow control which
regulates  the rate  at which  (N)-interface-data-units are  sent
between  and   (N+1)-entity  and  an  (N)-entity.    In  general,
multiplexing will require peer flow control, and the flow control
information will  be part of the protocol  control information in
the (N)-protocol-data-units.

5.6 Routing

     A   routing    function   within   an    (N)-layer   enables
communications between  two or more (N+1)-entities  to be relayed
by  a chain  of (N)-entities.   The fact  that communications are
being routed by intermediate (N)-entities is known by neither the
lower layers nor the higher layers.  Routing specifies how to get
from   a  starting  address   to  a  destination   address.   The
(N)-entities  which participate in  routing require some  sort of
routing table to do their work.

6 MULTICS NETWORKING ARCHITECTURE (MNA) OVERVIEW

     The MNA  uses the networking ideas described  above to solve
the  prblems  presented  in   Section  3  under  the  constraints
presented  in  Section  4.   The  ultimate  goal  is  to  support
distributed user  applications which implement (and  use) various
services in such  a way that the applications  are independent of
the way in which information is actually trasferred between them.

     For instance, a  user who wants to transfer a  file from his
local  host to  a remote  host usually  does not  care what  file
transfer protocol is used, or  what type of network connection is
used.  Also,  a particular file transfer  protocol implementation
usually  does not depend  on what type  of network connection  is

Multics Technical Bulletin                                MTB-748
Networking Overview

used to get  the protocol information from the local  host to the
remote host.  It only requires that certain services be available
from  the  connection,  for  instance,  that  it  can mark record
boundaries such that  they are visible to the  receiving side, or
that  records are not  lost, and are  received in the  order that
they were sent.

     Later sections of this MTB will discuss the various standard
services   offered  by   the   application   layer  as   well  as
implementation strategies and  interfaces for Network Application
Support  Procedures  (NASPs),  Request  Daemons,  Server Daemons,
Connection  Daemons,  and  Server  Processes  that  handle users'
requests for services.

     The general  networking overview above discussed  layers and
the  services offered by  a layer.  This  is useful in  a general
way, especially  if one then  defines a particular  set of layers
and services (as is done by  ISO).  However, the MNA must support
a  number of  different ways   of dividing  the total  networking
functionality  into  layers  and  services.   Therefore,  the MNA
simply  defines entities  that  provide  services by  using other
services.   These  are  the  same  entities  as  defined  in  the
networking  overview above,  but, by  leaving layers  out of  the
description, they  can be "stacked" in whatever  way is necessary
to meet  the needs of a particular  networking architecture (e.g.
DSA or Internet).

     For  example,  an  entity  which  provides  the Internet TCP
service  would be roughly  the same as  two entities in  DSA, one
which  provided a  session service  by using  a transport service
provided by the other one.  This  still does not provide an exact
match since the TCP service and the session service have a number
of differences.   So, although the Internet services  and the DSA
services  are both  layered, the  layers do  not match  up in any
useful way.

     The  major objects described  by the MNA  systems, entities,
and  services  (as  described  in  the  networking overview), and
addressing endpoints, drivers, and devices.  All of these objects
are described more fully in the following sections.

     Certain  major ideas  have also  been used  in designing the
framework for the implementation of the MNA.

   o All hardware  interfaces will be handled  through IOI.  This
     means that no networking code will run in ring 0.  This also
     dictates  the  use  of  an  Input  Daemon  process  for each
     hardware connection (i.e.  frontend),  because IOI must know
     the  processid  of  a  process  that  will  get wakeups when
     hardware interrupts  occur (and no appropriate  user process
     may exist).  The Input Daemon will use RCP in the normal way

MTB-748                                Multics Technical Bulletin
                                              Networking Overview

     to attach a channel  (frontend) through IOI.  Some unforseen
     circumstances may dictate that  the interface for some piece
     of hardware must bypass IOI.  In this case, some part of the
     networking code would have to run in ring 0.

   o The  Input  Daemons  should  be  timer  driven  rather  than
     interrupt  driven,  if  at   all  possible  (e.g.   the  DN8
     interface  (CXI)  is  timer  driven).   We  hope  this  will
     ameliorate possible  performance problems which  might arise
     from handling  interrupts in ring  1 rather than  ring 0 (as
     MCS currently does).

   o Output  should be  handled in   the user's  process with  as
     little  copying as  possible.  In  general, the  user's data
     should be  copied (once) from  the user's buffer  to the IOI
     workspace of the channel which  will send it out of Multics.
     Input should be  handled by the Input Daemon  and the user's
     process with  as little copying  as possible.  This  is even
     more  important than  the  output  copying, since  the Input
     Daemon  can easily  become a  bottleneck if  it has  to copy
     large amounts  of user data  (because taking page  faults is
     expensive).  This should be done  by leaving the data in the
     IOI  workspace  when  it  arrives,  and  letting  the user's
     process copy it to its eventual destination.

   o An  entity which provides  a many-one, or  many-many mapping
     for service access points, or which provides multiplexing of
     connections, must  run in ring 1 because  it can potentially
     handle data for different users simultaneously.  Notice that
     one-many  mappings for  service access  points, or splitting
     for  connections, do  not generate  this requirement.   This
     also means that most Input Daemons  must run in ring 1 since
     they will be handling connections for multiple users through
     a  single  hardware  channel.   If  the  hardware channel is
     dedicated to a single user at  a time, then the Input Daemon
     does not need to run in ring 1.

7 SYSTEMS

     In  the MNA, a  system is identified  by a descriptive  name
which consists of a primitive  name for the system, together with
a hierarchy  of primitive names  of the naming  domains needed to
make the primitive name of the system unique.  The syntax is that
used for Internet domain names, for example, "CISL.HONEYWELL.COR"
might name  the CISL machine.  The primitive  names that identify
naming  authorities will  be the  names defined  by the  Internet
authorities,  and  the  naming  authorities  are  assumed  to  be
hierarchically arranged, as specified in RFC-882 and RFC-883 (see
>udd>m>gmp>doc>mail>DDN.domains.doc).  Systems are defined in the
Network Information Table (the NIT).

Multics Technical Bulletin                                MTB-748
Networking Overview

8 ENTITIES, DRIVERS, AND DEVICES

     An (N)-entity provides an  (N)-service to an (N+1)-entity by
using the services offered by (N-1)-entities.  The (N)-service is
provided  at an (N)-service-access-point  which is located  by an
(N)-address.   An  (N)-entity  uses  a  set  of  (N)-protocols to
provide the (N)-service.  For example, an entity which provides a
file transfer  service might use the DSA  file transfer protocol,
or the Internet file transfer  protocol, depending which parts of
the   file  transfer   service  (i.e.    which  facilities)  were
requested.  For  instance, if checkpointing of  the file transfer
was  requested,  the  entity  would  use  the  DSA  file transfer
protocol, since it supports  checkpointing, and the Internet file
transfer protocol does not.

     An entity has  a title which is a 3-tuple  consisting of the
name of the  system on which the entity resides,  the name of the
service offered by the entity,  and an identifier which makes the
3-tuple unique in case there is  more than one entity on a system
offering the same service.  Entities  are defined in the NIT, and
the syntax for their names will be described in a future MTB.

     A  particular layering  of  entities  always has  a top-most
entity called the application enitity.   It does not have service
access points, or define addresses in the MNA sense.  Instead, it
offers a service directly to a user.

     The rest of the entities in a particular layering are called
networking entites.   These entities  also have a top-most entity
called  (surprise!)  the top-most  networking entity.    Also, at
some point in a particular layering,  the next entity will not be
implemented on Multics, but will  be implemented in some exterior
piece of  hardware connected to  Multics through an  IOM channel.
The interface to that exterior entity  is provided by a driver on
Multics.   A driver  may need  to provide  a number  of different
interfaces if the exterior hardware and software is sophisticated
enough to implement  a number of different types  of entities.  A
driver  is a  program that   handles both  input and  output, and
generally runs  in both an  Input Daemon process  (see below) and
the  users'  processes.   A  driver  uses  a  device which is the
connection  to  the  exterior   hardware.   The  connection  will
normally  be an  IOM channel,  but could  be an  MCS channel.  An
Input  Daemon  will  be  responsible  for  one  or  more devices.
Drivers and devices are defined in the NIT.

     The  decision as to  where to make  the division between  an
application  entity and  the top-most  metworking entity  is made
using the  following criteria.  In  the NIT, a  networking entity
has addressing information assoicated with it, and an application
entity does  not.  An application entity does  not provide either
multiplexing of  connections, or a many-one  service access point

MTB-748                                Multics Technical Bulletin
                                              Networking Overview

mapping.   The top-most  networking entity  has at  least one  of
these features.

9 NETWORKING ENDPOINTS

     The pair consisting of a top-most networking entity name and
an  address (of a  service access point)  is called a  networking
endpoint.   This is the address  of an application entity, and is
also  the  point  at  which  networking  security  information is
attached.   The  top-most  networking  entity  is responsible for
using this security information as described in later sections.

10 SERVICES

     A  service  provided  by  an  entity  is  a  related  set of
facilities with a defined interface.  A service also has a set of
associated qualities-of-service  which can be requested  when the
service is  invoked.  The purpose  of defining a  service and its
interface is  to hide the  details of the  implementation of that
service.  The implementation of a service will use a set of lower
level services.

10.1 How Does a Service Look to Its User?

     A  service has a  name and is  implemented by a  program (or
gate) with a specific set of entries.  The entries will generally
correspond to particular facilities of the service, and arguments
to the entries will  specify quality-of-service parameters, along
with  other  information  required  to  invoke  the facility.  An
entity is just an invocation  of the program that implements that
entity's service.   If the program which implements  a service is
written so that each invocation  maintains its own data (e.g.  an
address space or a state table)separately from other invocations,
then there  can be multiple  entities offering that  service.  In
this  case, the  identifier part  of an  entity name  is just the
information that  the program needs to locate  the particular set
of data for that entity.

10.2 Standard Application Entity Services

     The following standard application entity services have been
identified   (i.e.    they   will   have   command   interfaces):
file_transfer,  remote_login, and  mail.  The  command interfaces
for the file_transfer and  remote_login services will be provided
using  the standard  NASP interface  (see MTB-NCI).   The command
interface for the mail service will be the standard mail commands
(read_mail, send_mail, etc.).

Multics Technical Bulletin                                MTB-748
Networking Overview

     Each of these application entities  will use the services of
various top-most  networking entites (e.g.  DSA  session control,
or TCP).  The  intent is that these application  entities will be
able  to  use  any  top-most  networking  entity  that provides a
certain  minimum  set  of  facilities.   For  instance,  the file
transfer entity  might provide get_file and  put_file facilities,
and require connect, disconnect,  read, and write facilities from
a  top-most   networking  entity.   The  program   providing  the
file_transfer service would be structured  in such a way that the
different  protocols that  might be  used for  file transfer  all
provide  the get_file  and put_file  facilities by  making use of
these top-most networking entity facilities.

     The mail  service should use a  "reliable transfer" service,
which  would  provide  reliable,  store  and  forward transfer of
arbitrarily  sized blocks  of data   from host  to host  (through
multiple  networks if  necessary, and  with no  direct connection
between the  source and destination hosts  needed).  This service
is not currently defined, but will be discussed in a future MTB.

10.3 Networking Entity Services

     As  part of  the Multics  DSA project  a DSA_session service
will   be  provided   by   a   top-most  networking   entity.   A
DSA_transport service will  also be provided by a  driver using a
device  corresponding to an  IOM DIA channel  connected to a  DN8
frontend.   The driver  will  use  the Common  Exchange Interface
(CXI)  to  talk  to  the  entity  in  the  DN8  which handles DSA
transport  control.  Future  top-level networking  entities might
provide  an Internet_TCP service  and an X25_level_3  service.  A
networking entity might also provide an Internet_IP service.  The
names  of these  services are  for illustration  only, the actual
names would be defined in the NIT for a particular system.

11 SECURITY

     The MNA must address security issues in much the same way as
these issues  are currently addressed  in Multics.  That  is, AIM
support  must be designed  into all the  inner ring software  and
databases (e.g.  the NIT, the  Input Daemons, etc.).  The current
networks  to which Multics  is connected (e.g.   TYMNET, TELENET,
etc.)  are insecure, and this is  likely to remain true of future
network connections.   Thus, the MNA must provide  the same level
of  security as  is provided   on current  networks, and  also be
flexible enough  to use the  features of secure  networks if they
exist.   The problem in  the MNA is  compounded by the  fact that
many  frontends (e.g.  the  DN8) can no  longer be assumed  to be
secure.   In MCS, security  is provided by  the isolation of  the
frontend from users, and its  complete control by the secure part

MTB-748                                Multics Technical Bulletin
                                              Networking Overview

of the Multics operating system.  In the MNA, the frontend can no
longer  be  assumed  to  be  isolated.   For  instance,  on a DSA
network, the DN8  frontend is accessed directly by  users as they
provide  the  information  needed  to  connect  their terminal to
Multics (or any other host in the DSA network).

     Handling  security for server  daemons presents a  number of
problems.   Remote users must  identify themselves to  the server
daemon, probably by presenting a user id and password.  Since the
remote user's request may have been sitting in an insecure remote
host  queue for  some time,  the user  may not  want to  have the
password that he uses for the server be the same one that he uses
to  login to  Multics (which  is presumably  more immediate,  and
therefore, more secure).  Thus, we might  want to use the idea of
a "high  security" password and  a "low security"  password.  The
high security password  would give rise to a process  in the same
way as is  currently done.  The low security  password would only
allow a process to be created in ring 6 or ring 7.  It would also
restrict   some   of   the    login   control   arguments,   e.g.
-change_password.   We  would  then  have  to  make the necessary
changes to the system to allow support for ring 6 or 7 processes,
and to make it easy for  users to make use of their discretionary
access  control without a  lot of work  (e.g.  not having  to use
set_acl and  set_ring_brackets all the  time to get  some desired
effect).

     Server  Daemons must  also be  able to  handle requests from
remote users who are not registered on the local system both with
respect to security, and with respect to billing for services.

     One  way to avoid  some of the  security problems of  Server
Daemons is to usee a Connection Daemon to create a Server Process
(see below).  This process is just a standard user process with a
special   process  overseer,   thus  avoiding   the  problems  of
interpretive access control, billing, etc.

     Security in the MNA will be enforced by the top-most network
entities at  the networking endpoints.  Each  networking endpoint
will be  an object in a  security database, with an  extended ACL
attached  to  it  to  control   access  to  that  endpoint.   The
networking endpoint names consist of a top-most networking entity
name, and an address.  "Star"  name components will be allowed as
a  shorthand notation.   As examples,   the endpoints  for a  DSA
session entity are (session  control entity name, mailbox) pairs;
in the Internet,  they are (TCP or UDP entity  name, port number)
pairs; and in an X25 network,  they are (X25 level 3 entity name,
subaddress) pairs.  The  current plan is to allow  both local and
remote  endpoints into  the database,  and check  a local  user's
access to  the local endpoint and  to the remote endpoint  when a
connection is requested,  and to check a remote  user's access to
the  local endpoint for  incoming connections.  The  extended ACL

Multics Technical Bulletin                                MTB-748
Networking Overview

modes allowed are:

      l - listen for incoming connections allowed
      c - calls (outbound connects) allowed
      r - remote use (inbound connects) allowed

     Networking endpoints are  created by network administrators,
since  this may  involve changes  in  the  NIT as  well as  other
changes that normal users should not be allowed to do.

     This design,  and the acutal structures  and algorithms used
in the security database, are discussed more fully in MTB-SEC.

12 THE NETWORK INFORMATION TABLE (NIT)

     Most  of  the   information  describing  systems,  services,
protocols,   entities,  etc.,  will   be  kept  in   the  Network
Information Table  (NIT).  The information in this  table will be
used by all parts of the MNA.   It will be possible to update the
information  dynamically by   using an  administrative subsystem.
Most of  the information should  be fairly static,  although some
information may change more frequently.

     In the context  of RFCs 881, 882, and  883 referenced above,
the NIT is the repository for the authoritative information about
a particular part of the  domain name space.  This information is
used to  build the database  to which queries  are directed.  The
user interface to  this information is through a  resolver.   The
resolver  accesses the  local  database  and queries  remote name
servers if necessary, perhaps updating  the local database in the
process.  The local database will also be used by any name server
on Multics.  The resolver cooperates  with the local name servers
in maintaining this database.

     Details of  the design of  the NIT, the  local database, the
standard subroutine (i.e.  resolver  and name server) interfaces,
and the  administrative interfaces will be specified  in a future
MTB.

13 THE CONNECTION OBJECT MANAGER SOFTWARE

     As a  networking connection is established  through a number
of entities, each entity will need to keep some information about
the connection.  Each entity will  also need some way to identify
this information in a process independent fashion, since the code
for a  particular entity may run  in more than one  process (e.g.
an  Input   Daemon  and  a  user  process).    Pointers  are  not
sufficient,  since multiple  processes  will  have to  access the
information.  In order to make this job easier, a standard set of

MTB-748                                Multics Technical Bulletin
                                              Networking Overview

subroutine  entries will  be defined  that will  create an object
with  a standard  header, and  an arbitrary  user specified  data
area.  These  entries will create  and use a  process independent
"handle" to  find the object.  The  objects will be created  in a
known  place, and  will be  linked together  through the standard
header to  facilitate administrative operations (such  as cleanup
on process destruction).

14 THE INPUT DAEMONS

     In  general,  a  particular  IOI  connection  will be shared
between  all of  the users  who have  connections which  use that
physical connection (either a DIA,  PSIA, or CPI channel), and an
Input  Daemon.  The  Input Daemon  is the  only process  which is
guaranteed to exist and know about the IOI connection.  It is the
process  which initially  attaches the  channel through  RCP, and
therefore, is  known to IOI.  It  is also the process  which will
initially  process all  input on  that connection  and handle all
hardware interrupts.

     The  Input Daemon  runs  the  driver software  which handles
whatever protocol is used between Multics and the external box at
the other  end of the channel  (the driver software also  runs in
the users' processes for output).  For instance, for DSA with the
DN8 frontend, the  Input Daemon will run a timer  which causes it
to  wake up periodically  to check an  input queue for  input, as
specified  by the  CXI.  For  the Hyperchannel,  the Input Daemon
would be the process which would get the interrupts from the PSIA
channel,  and  then  distribute  them  to  the  user processes if
necessary.  It should be possible  to have multiple Input Daemons
for  a connection, but  the details of  how this would  work will
require further study.

     The Input Daemon  will handle input by running  the code for
each entity up to the  top-most networking entity.  Each protocol
implementation used by  an entity will have to  maintain a shared
database to coordinate the protocol between the input side of the
protocol in the Input Daemon and  the output side of the protocol
in   the  user's   process.   The   top-most  networking   entity
implementation  should allow  ipc_ wakeups  to be  sent from  the
Input Daemon to the user's process  for normal input.  A new ips_
signal will be  defined for the MNA which can  optionally be sent
in exceptional cases.  The user should be able to specify whether
either  of these  types of  wakeups will  be sent,  or whether he
should simply receive an error code the next time he makes a call
to  the  top-most  networking  entity  (e.g.   the  way  MCS uses
error_table_$line_status_pending).

     Input  from the  physical channel  will first  appear in the
wired IOI workspace belonging to an Input Daemon.  The networking

Multics Technical Bulletin                                MTB-748
Networking Overview

entity  implementations should leave  the input in  the workspace
until  it can  be copied  out  by  the user  process to  which it
belongs.

     Output  will  generally  be  handled  directly  by  a user's
process  in  an  inner  ring,  with  no  intervention by a daemon
process necessary.  This will be  done by having the user process
know the pathname  of the wired IOI workspace, and  being able to
copy output  data directly into  it.  This does  not preclude any
particular implementation which requires  a daemon to handle both
input and output across the physical channel.  However, this type
of implementation should only  be necessary in exceptional cases,
since the daemon can easily become a bottleneck.

14.1 Timers

     A  number of  protocols that  might be  run by  entities use
timers in their operation.  For instance, a timer might control a
timeout for  re-transmission of data, or  the time to wait  for a
connection  request to  be acknowledged.   The normal  way to run
these timers would be by  using timer_manager_ alarm call timers.
However, since many of the  networking entities may be running in
ring 1 (not the user's normal login ring), this approach will not
work.   Thus, these timers  should probably be  run in the  Input
Daemons.  If all of the  networking entities running in the Input
Daemon run in ring 1  then timer_manager_ alarm call timers could
be used.   Alternatively, the hardware interface  code (a driver)
running  in the  Input Daemon  could provide  a timer  management
service.  For instance, CXI is  timer driven, itself, so it could
maintain a list  of timers for the networking  entities, which it
would check each time it woke  up.  In any case, the entries that
are called by  an alarm call must be very  carefully written, and
run with alarms inhibited, so  that other timers going off cannot
generate inconsistent states.

15 HANDLING USER REQUESTS -- DAEMONS AND SPECIAL PROCESSES

     A number of types of  daemons and special user processes are
described below.  We expect most of the daemons to use tasking to
make it  easier to implement multiple activities  in each daemon.
More details on these can be found in MTB-NSA.

15.1 Request Daemons

     A request daemon is a process that has been set up to handle
the requests in  a request queue or set of  queues.  The requests
are built by  NASP entries, and are put in  the queue by standard
system software.  Request Daemons  will manage the request queues

MTB-748                                Multics Technical Bulletin
                                              Networking Overview

themselves, without the help of  a coordinator daemon (i.e.  like
the  IO  coordinator).   This  will  require  new message segment
primitives to allow individual entries in a message segment to be
locked and updated in place.

15.2 Server Daemons

     A server daemon is a process that has been set up to provide
a service over  a network.  For instance, a  file transfer server
daemon might  be set up  to handle remote  file transfer requests
from the Internet.  A server  daemon does the processing for each
request itself, using some  form of "interpretive" access control
to provide service to different users.

15.3 Connection Daemons

     In order to avoid changing the Answering Service each time a
new network or terminal handling protocol is added, there will be
a set of  connection daemons to handle the  initial dialogue with
users trying  to login or  request services.  These  daemons will
have  to  be  trusted  because   they  will  be  handling  users'
passwords.   The  daemons  will  engage  in  whatever dialogue is
appropriate with  a user and obtain the  information necessary to
create a process.   For instance, on some DSA  networks, the user
must login to the DN8  and provide name, password, authorization,
etc.  If the user then connects to Multics, the DN8 packages this
information into  a security record  and sends it  along with the
connection  request.  The  connection daemon  in this  case could
just  use this information  without further interaction  with the
user.

     Once  the   connection  daemon  has  gotten   the  necessary
information,  it will  engage in  a dialogue  with the  Answering
Service to  create a process.   This dialogue will  be carried on
through  a message  segment, and  will follow  a strict  protocol
using defined record structures to hold the information.

     The  connection daemon  will be  the "owner"  of the network
connection, and will have a way to make the newly created process
the  "user" of  the connection.    The AS  will notify  the login
daemon  when a  process, which   has a  connection for  which the
daemon is the  owner, is terminated in order that  the daemon can
make sure the connection is properly terminated.

15.4 Server Processes

     A  server processes is  a normal user  process created by  a
connection daemon with a  special process overseer.  This process

Multics Technical Bulletin                                MTB-748
Networking Overview

overseer performs the requested application entity service on the
connection and then logs out.  The current Internet file transfer
application  works in  this way,  as does  the Satellite  6M file
transfer.

16 NEW TERMINAL INTERFACE

     A new terminal interface has not yet been designed.  For the
DSA implementation  details, see MTB-DSATM.  Basically,  calls to
TM will replace calls to hcs_  in tc_io_ (the lowest layer of the
video  system).  An IOX  interface for TM  will also be  written,
similar  to window_io_iox_,  for use  by processes  not using the
video system.

17 NETWORK ADMINISTRATION

     Network  administration in  the MNA  will be  concerned with
many  of the  same things  that current  MCS administration deals
with:  logging interesting events, loading and dumping frontends,
adding and deleting networks and hosts, setting access to network
connections, turning  tracing and debugging features  on and off,
etc.  Each of these is discussed below.

17.1 The Network Log

     The network  log will use  the new logging  technology being
developed for  security purposes.  The major events  to be logged
are  the  creation  and  destruction  of  the  connection objects
described  above.   All   administrative  modifications  will  be
logged.   Each  entity  implementation  will  have  some  set  of
"interesting"  events  that  it  will  log  during its operation.
Standard tools will be available  for printing and displaying the
log, and  each entity implementation  will have entries  that can
interpret its "interesting" log entries.

17.2 Loading and Dumping Frontends

     There will  be standard administrative commands  to load and
dump  frontends.  Each type  of physical connection,  and channel
protocol, will have code which implements these standard actions.
For  instance, for  the DN8  connected across  a DIA,  there is a
Cross-Net Protocol  (CNP) used to  transfer DN8 core  images from
the host  for loading, or to  transfer dumps from the  DN8 to the
host.

MTB-748                                Multics Technical Bulletin
                                              Networking Overview

17.3 Metering

     Each  entity  implementation  will   keep  meters  that  are
appropriate for  what the entity  does.  For instance,  counts of
bytes sent and received, counts  of packets or frames, etc.  Each
entity will also provide  interfaces for retrieving and resetting
these  meters.   In  addition,  the  "interesting"  events in the
network log may contain metering information.

17.4 Debugging and Tracing

     Each  entity implementation  will have  standard entries for
tracing its operation.  It  will also have non-standard debugging
entries for use by systems personnel.

17.4.1 TESTS AND DIAGNOSTICS (T&DS)

     Any network  or hardware specific T&Ds used  by the Customer
Services Division (CSD) in supporting customers will be supported
by each entity and frontend implementation.

17.4.2 DUMP ANALYSIS

     Frontend  specific tools  will  be  provided to  analyze the
dumps generated by  a frontend.  In the case of  the DN8, we hope
to re-host tools that have been developed to run on DPS 8 and DPS
6.

17.5 Config Deck Changes

     The  Multics  config  deck  will  be  modified  to allow the
definition of frontends, so that RCP and IOI can handle them like
any other piece of hardware described in the config deck.

18 INDEX OF TERMS

     This index lists all of the  terms defined in this MTB along
with the page number on which they were defined.



                              INDEX

"(N)-address" 6                   "Application-Entities" 4

"(N)-connection" 6                "blocking" 7

"(N)-connection-endpoint" 6       "concatenation" 8

"(N)-directory-service" 6         "connection daemon" 18

"(N)-entity" 4                    "connection" 4

"(N)-facility" 5                  "deblocking" 7

"(N)-function" 5                  "demultiplexing" 7

"(N)-interface-data-unit" 7       "descriptive name" 5

"(N)-layer" 4                     "device" 11

"(N)-protocol" 5, 11              "driver" 11

"(N)-protocol-data-unit" 7        "entity" 4

"(N)-quality-of-service 5         "generic" 5

"(N)-service" 4                   "identifier" 5

"(N)-service-access-point" 4      "input daemon" 16

"(N)-service-data-unit" 7         "interface" 4

"(N)-subsystem" 4                 "layer" 4

"(N)-title" 6                     "multicast" 5

"(N+1)-layer" 4                   "multiplexing" 7

"(N-1)-layer" 4                   "name server" 15

"address" 5                       "name" 5

"application enitity" 11          "networking endpoint" 12



"networking entites" 11           "separation" 8

"peer-entities" 4                 "server daemon" 18

"physical media" 4                "server processe" 18

"primitive name" 5                "splitting" 7

"reassembling" 7                  "subsytems" 4

"recombining" 7                   "Systems" 3

"request daemon" 17               "title" 5

"resolver" 15                     "top-most networking entity" 11

"segmenting" 7                    NIT 15