2 May 1979


IEN 90






                         Multiplexing Protocol




                              Danny Cohen

                               Jon Postel














                               2 May 1979




                     Information Sciences Institute
                   University of Southern California
                           4676 Admiralty Way
                   Marina del Rey, California  90291

                             (213) 822-1511


IEN-90                                                          D. Cohen
                                                               J. Postel
                                                                     ISI
                                                              2 May 1979



                         Multiplexing Protocol
                         ---------------------

Introduction
------------

This  Multiplexing  Protocol  is  defined  to  allow  the  combining  of
transmission   units  of  different   higher   level  protocols  in  one
transmission  unit of a lower level protocol.   Only messages  with  the
same Internet  Protocol  (IN) [1] header, with the possible exception of
the protocol  field  may be combined.  For example, the msg (H1, B1) and
the message  (H2, B2), where Hi and Bi are the headers and the bodies of
the messages,  respectively,  may  be  combined  (multiplexed)  only  if
H=H1=H2.  The combined messages are either (H, B1, B2) or (H, B2, B1).

Since (H,D1)+(H,D2)=(H,D1+D2)  resembles  the notion  of  factoring,  we
sometime refer to this process as "factoring".

The receiver  of this combined  message  should  treat  it as if the two
original  messages,  (H,D1),  and (H,D2),  arrived separately, in either
order.

The multiplexing  is achieved  by  combining  the  individual  messages,
(H,B1)  through  (H,Bn), into a single message.  This single message has
an IN header  which  is equal to H, but having in the PROTOCOL field the
value 18 which is the protocol  number  of  the  multiplexing  protocol.
This IN header  is followed  by all the message  bodies,  B1 through Bn.
Each message  body,  Bi,  is preceeded  by a 4 octet multiplexing  link.
This link contain  the number  of the protocol  to which  this  body  is
addressed.   It also contain  the total length  of this portion (message
body),  including  this multiplexing  link.   Since  this  link  is  not
otherwise  protected  by a checksum,  it also includes  a checksum field
which covers this multiplexing link.

If an error is discovered in a checksum of some multiplexing header, the
rest of the message, starting there, is ignored.

If an unknown  PROTOCOL  field is discovered in any multiplexing header,
this section, and only this one, is ignored.




Cohen & Postel                                                  [page 1]


                                                              2 May 1979
Multiplexing Protocol                                             IEN-90
Introduction



The  demultiplexing   routine  should  be  able  to  handle  recursively
multiplexed  messages.   This is  to  allow  higher  level  protocol  to
demultiplex  their own messages  if they can be combined.   Since such a
multiplexed  message  may be  multiplexed  again  by  the  IN  level,  a
multi-level multiplexing results.

This protocol  assumes  that  the  Internet  Protocol  is  used  as  the
underlying protocol.

Format
------


                  0      7 8     15 16            31
                 +--------+--------+----------------+
                 |        |        |                |
                 |   CS   |Protocol|      Length    |
                 |        |        |                |
                 +--------+--------+----------------+

                       Multiplexing Header Format

Fields
------

CS is a checksum  covering  only this 32 bit multiplexing header.  Until
further notice, it is the exclusive OR of the other three octets in this
header.

Protocol is the number of the following protocol.

Length is the length in octets of this header and the following protocol
block.  Hence, it must be at least 4.
















[page 2]                                                  Cohen & Postel


2 May 1979
IEN-90                                             Multiplexing Protocol
                                                                 Example



Example
-------


                  0              15 16             31
                 +--------+--------+--------+--------+
                 |   CS   |Protocol|      Length     |
                 +--------+--------+--------+--------+
                 |  a transmission unit              |
                 |                 of some protocol  |
                 +--------+--------+--------+--------+
                 |   CS   |Protocol|      Length     |
                 +--------+--------+--------+--------+
                 |  a transmission unit              |
                 |                 of some protocol  |
                 +--------+--------+--------+--------+
                 |   CS   |Protocol|      Length     |
                 +--------+--------+--------+--------+
                 |  a transmission unit              |
                 |                 of some protocol  |
                 +--------+--------+--------+--------+

                     Multiplexing Protocol Concept


























Cohen & Postel                                                  [page 3]


                                                              2 May 1979
Multiplexing Protocol                                             IEN-90
Example




               0              15 16             31
              +--------+--------+--------+--------+
              |   CS   |datagram|     Length = 20 | ----+
              +--------+--------+--------+--------+     |
              | source socket   |   dest. socket  |     |
              +--------+--------+--------+--------+     |
              |     length = 8  |     checksum    |     |
              +--------+--------+--------+--------+     |
              |                data               |     |
              +--------+--------+--------+--------+     |
              |                data               |     |
              +--------+--------+--------+--------+ <---+
              |   CS   |  TCP   |     Length = 32 | ----+
              +--------+--------+--------+--------+     |
              |   source port   | destination port|     |
              +--------+--------+--------+--------+     |
              |          sequence number          |     |
              +--------+--------+--------+--------+     |
              |       acknowledgment number       |     |
              +--------+--------+--------+--------+     |
              |offset    control|      window     |     |
              +--------+--------+--------+--------+     |
              |     checksum    |  urgent pointer |     |
              +--------+--------+--------+--------+     |
              |                data               |     |
              +--------+--------+--------+--------+     |
              |                data               |     |
              +--------+--------+--------+--------+ <---+
              |   CS   |datagram|     Length = 16 | ----+
              +--------+--------+--------+--------+     |
              | source socket   |   dest. socket  |     |
              +--------+--------+--------+--------+     |
              |     length = 4  |     checksum    |     |
              +--------+--------+--------+--------+     |
              |                data               |     |
              +--------+--------+--------+--------+ <---+

                     Multiplexing Protocol Example

Protocol Application
--------------------

The major use of this protocol  is to allow several  transmission  units
from differing  (or the same) higher level protocols to be combined into
one transmission unit of a lower level protocol.



[page 4]                                                  Cohen & Postel


2 May 1979
IEN-90                                             Multiplexing Protocol
                                                         Protocol Number



Protocol Number
---------------

This is protocol  18 (22 octal)  when used  in  the  Internet  Protocol.
Other protocol numbers are listed in [2].

Notes
-----

-  If so desired,  one has the  option  of  applying  this  multiplexing
   protocol recursively.

-  The receiving  process  should  never be able to tell if its messages
   were multiplexed  or not.  The multiplexing is totally transparent to
   the higher lever protocols.

-  Information  from the  external  header  (e.g.,  the  IN  header)  is
   available to each protocol in the multiplexed message.































Cohen & Postel                                                  [page 5]


                                                              2 May 1979
Multiplexing Protocol                                             IEN-90
References



References
----------

[1]     Postel,  J.,  "Internet Datagram Protocol -- Version 4," IEN-80,
        USC-Information Sciences Institute, February 1979.

[2]     Postel,   J.,   "Assigned   Numbers,"  USC-Information  Sciences
        Institute, RFC-755, IEN 93, May 1979.









































[page 6]                                                  Cohen & Postel