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