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