MC-MLPPP: The Multi-Class Extension to Multi-Link PPP
Spare bits in the PPP Multilink header become a class number, so urgent real-time fragments can slip between pieces of big packets on slow links.
Bormann, C., "The Multi-Class Extension to Multi-Link PPP", RFC 2686, DOI 10.17487/RFC2686, September 1999, <https://www.rfc-editor.org/info/rfc2686>.
@misc{rfc2686,
series = {Request for Comments},
number = 2686,
howpublished = {RFC 2686},
publisher = {RFC Editor},
doi = {10.17487/RFC2686},
url = {https://www.rfc-editor.org/info/rfc2686},
author = {C. Bormann},
title = {{The Multi-Class Extension to Multi-Link PPP}},
pagetotal = 11,
year = 1999,
month = sep,
} RFC text
Contents
Network Working Group C. Bormann
Request for Comments: 2686 Universitaet Bremen TZI
Category: Standards Track September 1999
The Multi-Class Extension to Multi-Link PPP
Status of this Memo
This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (1999). All Rights Reserved.
Abstract
A companion document describes an architecture for providing
integrated services over low-bitrate links, such as modem lines, ISDN
B-channels, and sub-T1 links [1]. The main components of the
architecture are: a real-time encapsulation format for asynchronous
and synchronous low-bitrate links, a header compression architecture
optimized for real-time flows, elements of negotiation protocols used
between routers (or between hosts and routers), and announcement
protocols used by applications to allow this negotiation to take
place.
This document proposes the fragment-oriented solution for the real-
time encapsulation format part of the architecture. The general
approach is to start from the PPP Multilink fragmentation protocol
[2] and provide a small number of extensions to add functionality and
reduce the overhead.
1. Introduction
As an extension to the "best-effort" services the Internet is well-
known for, additional types of services ("integrated services") that
support the transport of real-time multimedia information are being
developed for, and deployed in the Internet.
The present document defines the fragment-oriented solution for the
real-time encapsulation format part of the architecture, i.e. for the
queues-of-fragments type sender [1]. As described in more detail in
the architecture document, a real-time encapsulation format is
required as, e.g., a 1500 byte packet on a 28.8 kbit/s modem link
makes this link unavailable for the transmission of real-time
information for about 400 ms. This adds a worst-case delay that
causes real-time applications to operate with round-trip delays on
the order of at least a second -- unacceptable for real-time
conversation. The PPP extensions defined in this document allow a
sender to fragment the packets of various priorities into multiple
classes of fragments, allowing high-priority packets to be sent
between fragments of lower priorities.
A companion document based on these extensions [5] defines a
suspend/resume-oriented solution for those cases where the best
possible delay is required and the senders are of type 1 [1].
1.1. Specification Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [8].
2. Requirements
The main design goal for the components of an architecture that
addresses real-time multimedia flows over low-bitrate links is that
of minimizing the end-to-end delay. More specifically, the worst
case delay (after removing possible outliers, which are equivalent to
packet losses from an application point of view) is what determines
the playout points selected by the applications and thus the delay
actually perceived by the user.
In addition, every attempt should obviously be undertaken to maximize
the bandwidth actually available to media data; overheads must be
minimized.
The solution should not place unnecessary burdens on the non-real-
time flows. In particular, the usual MTU should be available to
these flows.
The most general approach would provide the ability to suspend any
packet (real-time or not) for a more urgent real-time packet, up to
an infinite number of levels of nesting. On the other hand, it is
likely that there would rarely be a requirement for a real-time
packet to suspend another real-time packet that is not at least about
twice as long. Typically, the largest packet size to be expected on
a PPP link is the default MTU of 1500 bytes. The smallest high-
priority packets are likely to have on the order of 22 bytes
(compressed RTP/G.723.1 packets). In the 1:72 range of packet sizes
to be expected, this translates to a maximum requirement of about
eight levels of suspension (including one level where long real-time
packets suspend long non-real-time packets). On 28.8kbit/s modems,
there seems to be a practical requirement for at least two levels of
suspension (i.e., audio suspends any longer packet including video,
video suspends other very long packets).
On an architectural level, there are several additional requirements
for the fragmentation scheme:
a) The scheme must be predictable enough that admission control can
make decisions based on its characteristics. As is argued in
[1], this will often only be the case when additional hints
about the characteristics of the flow itself are available
(application hints).
b) The scheme must be robust against errors, at least with the same
level of error detection as PPP.
c) The scheme must in general cooperate nicely with PPP. In
particular, it should be as compatible to existing PPP standards
as possible. On a link that (based on PPP negotiation) makes
use of the scheme, it should always be possible to fall back to
standard LCP (PPP Link Control Protocol [6, 7]) without
ambiguity.
d) The scheme must work well with existing chips and router
systems. (See [1] for a more extensive discussion of
implementation models.) For synchronous links this means using
HDLC framing; with much existing hardware, it is also hard to
switch off the HDLC per-frame CRC. For asynchronous links,
there is much more freedom in design; on the other hand, a
design that treats them much different from synchronous links
would lose a number of desirable properties of PPP.
e) The scheme must be future proof. In particular, the emergence
of V.80 based modems may significantly change the way PPP is
used with modems.
This document does not address additional requirements that may be
relevant in conjunction with Frame Relay; however, there seems to be
little problem in applying the principles of this document to "PPP in
Frame Relay" [3].
3. Using PPP Multilink as-is
Transmitting only part of a packet to allow higher-priority traffic
to intervene and resuming its transmission later on is a kind of
fragmentation. The existing PPP Multilink Protocol (MP, [2])
provides for sequence numbering and begin/end bits, allowing packets
to be split into fragments (Figure 1).
Figure 1: Multilink Short Sequence Number Fragment Format [2]
+---------------+---------------+
PPP Header: | Address 0xff | Control 0x03 |
+---------------+---------------+
| PID(H) 0x00 | PID(L) 0x3d |
+-+-+-+-+-------+---------------+
MP Header: |B|E|0|0| sequence number |
+-+-+-+-+-------+---------------+
| fragment data |
| . |
| . |
| . |
+---------------+---------------+
PPP FCS: | FCS |
+---------------+---------------+
(Note that the address, control, and most significant PID bytes are
often negotiated to be compressed away.)
MP's monotonically increasing sequence numbering (contiguous numbers
are needed for all fragments of a packet) does not allow suspension
of the sending of a sequence of fragments of one packet in order to
send another packet. It is, however, possible to send intervening
packets that are not encapsulated in multilink headers; thus, MP
supports two levels of priority.
The multilink-as-is approach can be built using existing standards;
multilink capability is now widely deployed and only the sending side
needs to be aware that they are using this for giving priority to
real-time packets.
3.1. Limitations of multilink as-is
Multilink-as-is is not the complete solution for a number of reasons.
First, because of the single monotonically increasing serial number,
there is only one level of suspension: "Big" packets that are sent
via multilink can be suspended by "small" packets sent outside of
multilink; the latter are not fragmentable (and therefore, the
content of one packet cannot be sent in parallel on multiple links;
if the packets are sent in rounds on multiple links, the order they
are processed at the receiver may differ from the order they were
sent).
A problem not solved by this specification is that the multi-link
header is relatively large; as delay bounds become small (for
queues-of-fragments type implementations) the overhead may become
significant.
4. Extending PPP Multilink to multiple classes
The obvious approach to providing more than one level of suspension
with PPP Multilink is to run Multilink multiple times over one link.
Multilink as it is defined provides no way for more than one instance
to be active. Fortunately, a number of bits are unused in the
Multilink header: two bits in the short sequence number format (as
can be seen in Figure 1), six in the long sequence number format.
This document defines (some of the) previously unused bits as a class
number:
Figure 2: Short Sequence Number Fragment Format With Classes
+---------------+---------------+
PPP Header: | Address 0xff | Control 0x03 |
+---------------+---------------+
| PID(H) 0x00 | PID(L) 0x3d |
+-+-+-+-+-------+---------------+
MP Header: |B|E|cls| sequence number |
+-+-+-+-+-------+---------------+
| fragment data |
| . |
| . |
| . |
+---------------+---------------+
PPP FCS: | FCS |
+---------------+---------------+
Each class runs a separate copy of the mechanism defined in [2], i.e.
uses a separate sequence number space and reassembly buffer.
Similarly, for the long sequence number format:
Figure 3: Long Sequence Number Fragment Format With Classes
+---------------+---------------+
PPP Header: | Address 0xff | Control 0x03 |
+---------------+---------------+
| PID(H) 0x00 | PID(L) 0x3d |
+-+-+-+-+-+-+-+-+---------------+
MP Header: |B|E| class |0|0|sequence number|
+-+-+-+-+-+-+-+-+---------------+
| sequence number (L) |
+---------------+---------------+
| fragment data |
| . |
| . |
| . |
+---------------+---------------+
PPP FCS: | FCS |
+---------------+---------------+
Together with the ability to send packets without a multilink header,
this provides four levels of suspension with 12-bit headers (probably
sufficient for many practical applications) and sixteen levels with
24-bit headers (only four of the six free bits are used in this case
-- based on the rationale given above, sixteen levels should
generally be more than sufficient).
5. Prefix elision: Compressing common header bytes
For some applications, all packets of a certain class will have a
common protocol identifier (or even more than one common prefix
byte). In this case, the following optimization is possible: the
class number can be associated with a prefix of bytes that are
removed from each packet before transmission and that are implicitly
prepended to the reassembled packet after reception.
Note that if only some of the packets to be transmitted at a certain
level of priority have the common prefix, it may still be possible to
utilize this method by allocating two class numbers and only
associating one of them with the prefix. (This is the reason why
four of the unused bits in the long sequence number format have been
allocated to the class number instead of the three that generally
should suffice.)
Prefix elision is not a replacement for header compression or data
compression: it allows implementations to compress away prefixes that
often are not reachable by header or data compression methods.
6. Negotiable options
The following PPP LCP options are already defined by MP:
o Multilink Maximum Received Reconstructed Unit
o Multilink Short Sequence Number Header Format
o Endpoint Discriminator
This document defines two new LCP options:
o Multilink Header Format
o Prefix Elision
6.1. Multilink header format option
A summary of the Multilink Header Format Option format is shown
below. The fields are transmitted from left to right.
Figure 4:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 27 | Length = 4 | Code | # Susp Clses |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
This LCP option advises the peer that the implementation wishes to
receive fragments with a format given by the code number, with the
maximum number of suspendable classes (see below) given.
When this option is negotiated, the accepting implementation MUST
either transmit all subsequent multilink packets on all links of the
bundle with the multilink header format given or Configure-Nak or
Configure-Reject the option. (Note that an implementation MAY
continue to send packets outside of multilink in any case.) If this
option is offered on a link which is intended to join an existing
bundle, a system MUST offer the same multilink header format option
value previously negotiated for the bundle, or none if none was
negotiated previously.
The values defined in this document for the use of this option are:
- Code = 2: long sequence number fragment format with classes
- Code = 6: short sequence number fragment format with classes
The Multilink Header Format option MUST NOT occur more than once in a
Configure-Request or Configure-Ack, and, if it is present, the Short
Sequence Number Header Format option ([2]) MUST NOT also be present.
If no instance of this option or the Short Sequence Number Header
Format option is present, but an MRRU option [2] is present, then by
default, long sequence number multilink headers with class 0 only are
used; this is equivalent to code equals 2 and number of suspendable
classes equals 1. An instance of the Short Sequence Number Header
Format Option is equivalent to an instance of this option with code
equals 6 and number of suspendable classes equal to 1.
The number of suspendable classes bounds the allowable class numbers:
only class numbers numerically lower than this limit can be used for
suspendable classes. Implementations MAY want to negotiate a number
smaller than made possible by the packet format to limit their
reassembly buffer space requirements. Implementations SHOULD at
least support the value 4 for the short sequence number fragment
format, and the value 8 for the long sequence number fragment format,
unless configured differently. Bit combinations that would indicate
class numbers outside the negotiated range MAY be used for other
semantics if negotiated by other means outside the scope of this
document (e.g., [6]).
6.2. Prefix elision option
This LCP option advises the peer that, in each of the given classes,
the implementation expects to receive only packets with a certain
prefix; this prefix is not to be sent as part of the information in
the fragment(s) of this class. By default, this common prefix is
empty for all classes. When this option is negotiated, the accepting
implementation MUST either transmit all subsequent multilink packets
of each of the given classes with the given prefix removed from the
start of the packet or Configure-Nak or Configure-Reject the option.
If none of the formats with classes has been negotiated, class number
0 may be used to indicate a common prefix for all packets sent within
multilink fragments.
Apart from the type and length octets common to all LCP options, the
option contains a sequence of zero or more sequences of a single-
octet class number, a single-octet length of the prefix for that
class, and the octets in that prefix:
Figure 5:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 26 | Option Length | Class | Prefix Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Prefix... | Class |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Prefix Length | Prefix...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The Prefix Elision option MUST NOT occur more than once in a
Configure-Request or Configure-Nak. If this option is offered on a
link which is intended to join an existing multilink bundle, a system
MUST offer the same prefix elision option value previously negotiated
for the bundle, or none if none was negotiated previously.
IMPLEMENTATION NOTE: as with most PPP options that indicate
capabilities of the receiver to the sender, the sense of this option
is an indication from the receiver to the sender of the packets
concerned. Often, only the senders will have sufficient control over
their usage of classes to be able to supply useful values for this
option. A receiver willing to accept prefix-elided packets SHOULD
request this option with empty content; the sender then can use
Configure-Nak to propose the class-to-prefix mapping desired.
7. Security Considerations
Operation of this protocol is believed to be no more and no less
secure than operation of the PPP multilink protocol [2].
8. References
[1] Bormann, C., "Providing Integrated Services over Low-bitrate
Links", RFC 2689, September 1999.
[2] Sklower, K., Lloyd, B., McGregor, G., Carr, D. and T. Coradetti,
"The PPP Multilink Protocol (MP)", RFC 1990, August 1996.
[3] Simpson, W., "PPP in Frame Relay", RFC 1973, June 1996.
[4] Andrades, R. and F. Burg, "QOSPPP Framing Extensions to PPP",
Work in Progress.
[5] Bormann, C., "PPP in a Real-time Oriented HDLC-like Framing",
RFC 2687, September 1999.
[6] Simpson, W., Editor, "The Point-to-Point Protocol (PPP)", STD
51, RFC 1661, July 1994.
[7] Simpson, W., Editor, "PPP in HDLC-like Framing", STD 51, RFC
1662, July 1994.
[8] Bradner, S., "Key words for use in RFCs to Indicate Requirement
Levels", BCP 14, RFC 2119, March 1997.
9. Author's Address
Carsten Bormann
Universitaet Bremen FB3 TZI
Postfach 330440
D-28334 Bremen, GERMANY
Phone: +49.421.218-7024
Fax: +49.421.218-7000
EMail: cabo@tzi.org
10. Acknowledgements
David Oran suggested using PPP Multilink for real-time framing and
reminded the author of his earlier attempts of making Multilink more
useful for this purpose. The participants in a lunch BOF at the 1996
Montreal IETF gave useful input on the design tradeoffs in various
environments. The members of the ISSLL subgroup on low bitrate links
(ISSLOW) have helped reducing the large set of options that initial
versions of this specification had.
11. Full Copyright Statement
Copyright (C) The Internet Society (1999). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Acknowledgement
Funding for the RFC Editor function is currently provided by the
Internet Society.
ISO Plain Language
On this page
§1The Problem on a Slow Link
Besides the best-effort service the Internet is known for, integrated services that carry real-time multimedia information are being developed and deployed. This document defines the fragment-oriented solution for the real-time encapsulation part of the architecture described in its companion RFC 2689, which covers integrated services over low-bitrate links such as modem lines, ISDN B-channels and sub-T1 links. That architecture has a real-time encapsulation format, a header compression architecture, elements of negotiation protocols between routers, and announcement protocols that let applications start the negotiation.
A real-time encapsulation format is needed because of how long a big packet occupies a slow link. A 1500 byte packet on a 28.8 kbit/s modem link makes that link unavailable for real-time information for about 400 ms. That worst-case delay pushes the round-trip delay of a real-time application to at least a second, which is not acceptable for real-time conversation.
The extensions defined here let a sender fragment the packets of several priorities into multiple classes of fragments, so that a high-priority packet can be sent between the fragments of a lower-priority one. A companion document, RFC 2687, gives a suspend and resume solution for the cases where the best possible delay is required and the senders are of type 1 in the architecture's terms.
A big packet fills a slow link for as long as it takes to send it, and that time is far too long for a live conversation. The memo lets a sender split its traffic into priority classes so that a small urgent piece can be sent in the middle of a large slow one.
§2Design Requirements
The main design goal for a real-time architecture over low-bitrate links is minimising the end-to-end delay. More precisely, the worst case delay, after removing outliers that are equivalent to packet losses from an application's point of view, is what determines the playout points the applications choose and therefore the delay the user actually perceives. Every attempt should also be made to maximise the bandwidth actually available to media data, which means keeping overheads small. The solution should not put unnecessary burdens on non-real-time flows, and the usual MTU should stay available to them.
The memo then works out how many levels of priority are really needed. The most general approach would let any packet be suspended for a more urgent one, to an unlimited depth, but in practice it is unlikely that a real-time packet will ever have to suspend another real-time packet that is not at least about twice as long. The largest packet size to be expected on a PPP link is the default MTU of 1500 bytes, and the smallest high-priority packets are likely to be on the order of 22 bytes, as compressed RTP and G.723.1 packets are. Across that 1:72 range of sizes, the memo works out a maximum requirement of about eight levels of suspension, including one level where long real-time packets suspend long non-real-time packets. On 28.8 kbit/s modems, it says, there seems to be a practical requirement for at least two levels of suspension, so that audio suspends any longer packet including video, and video suspends other very long packets.
Five further requirements are set for the fragmentation scheme. It must be predictable enough for admission control to make decisions from its characteristics, which will often need extra hints about the flow from the application. It must be robust against errors, at least with the same level of error detection as PPP. It must cooperate with PPP, and be as compatible with existing PPP standards as possible: on a link that makes use of the scheme, it must always be possible to fall back to standard LCP without ambiguity. It must work with existing chips and router systems, which for synchronous links means HDLC framing, and with much existing hardware it is hard to switch off the per-frame CRC; for asynchronous links there is more freedom, but a design that treats them very differently would lose desirable properties of PPP. And it must be future proof, in particular because the emergence of V.80 based modems may change the way PPP is used with modems.
The memo does not address requirements that may be relevant in conjunction with Frame Relay, but notes there seems to be little problem in applying its principles to PPP in Frame Relay.
The design has to keep the worst-case delay small, keep overhead low, and leave ordinary traffic alone. Working from the sizes of packets that really occur, the memo concludes that about eight levels of priority are enough in general and two on a modem link, and it lists the properties the scheme must have, including that it must detect errors as well as PPP does and that it must fall back cleanly to plain PPP.
§3Using PPP Multilink as It Is
Transmitting only part of a packet so that higher-priority traffic can intervene, and resuming the transmission later, is a kind of fragmentation. The existing PPP Multilink Protocol of RFC 1990 provides sequence numbering and begin and end bits, which allows packets to be split into fragments. In its short sequence number form the header carries the address and control octets, the protocol identifier, a begin bit, an end bit and a sequence number, followed by the fragment data and the PPP frame check sequence.
Multilink's sequence numbering is monotonic, and contiguous numbers are needed for all the fragments of one packet, so it does not allow a run of fragments of one packet to be suspended in order to send another packet. It is, however, possible to send intervening packets that carry no multilink header at all, so multilink as it is supports two levels of priority.
The memo notes that this approach can be built from existing standards. Multilink capability is widely deployed, and only the sending side needs to know it is being used to give priority to real-time packets.
Two limitations are named. Because of the single monotonic serial number there is only one level of suspension: big packets sent through multilink can be suspended by small packets sent outside multilink, and those small packets are not fragmentable, so the content of one packet cannot be sent in parallel on several links, and if packets are sent in rounds on several links the order they are processed at the receiver may differ from the order they were sent. The second limitation is not solved by this specification either: the multilink header is relatively large, and as delay bounds become small for queues-of-fragments implementations that overhead may become significant.
Plain PPP Multilink can already split a packet and let a small packet slip between the pieces, but only one level of priority is possible, because all the pieces share one number series. The memo uses that as its starting point.
| Aspect | Multilink as it is | Multi-class extension |
|---|---|---|
| Levels of suspension | Two, counting packets sent with no multilink header | Four with 12-bit headers, sixteen with 24-bit headers |
| Sequence number space | One, shared by every fragment | One per class |
| Reassembly buffers | One | One per class |
| Where the class number lives | Not present | Bits that the multilink header left unused |
| Unfragmentable traffic | Sent with no multilink header | Sent with no multilink header, or in a class of its own |
§4Extending Multilink to Multiple Classes
The obvious way to get more than one level of suspension is to run Multilink several times over one link, but Multilink as defined provides no way for more than one instance to be active. Fortunately a number of bits are unused in the Multilink header: two in the short sequence number format and six in the long format. This document defines some of those previously unused bits as a class number.
Each class runs a separate copy of the Multilink mechanism, which means a separate sequence number space and a separate reassembly buffer. In the short sequence number format the header becomes begin bit, end bit, class number and sequence number, and in the long format the class number is four bits wide with the sequence number following in the same row.
Together with the ability to send packets without a multilink header, the memo says this provides four levels of suspension with 12-bit headers, probably sufficient for many practical applications, and sixteen levels with 24-bit headers, where only four of the six free bits are used, because sixteen levels should generally be more than sufficient.
The class number goes into bits that Multilink was not using. Every class is numbered separately and reassembled separately, so a high-priority fragment can be sent between the fragments of a low-priority packet without the receiver mixing the two up.
- Class numberBits that the multilink header left unused now carry a class number.
- Separate numberingEach class has its own sequence number space, so classes do not mix.
- Separate reassemblyEach class has its own reassembly buffer, so a fragment can be held while another class is sent.
- Packets with no headerTraffic can still be sent with no multilink header, which adds one more level.
- Prefix elisionBytes common to a class can be left out of the fragments and restored on arrival.
§5Prefix Elision
For some applications every packet of a certain class has a common protocol identifier, or even more than one common prefix byte. In that case an optimisation is possible: the class number can be associated with a prefix of bytes which are removed from each packet before transmission and implicitly prepended to the reassembled packet after reception.
The memo notes a corner case. If only some of the packets to be transmitted at a certain priority level have the common prefix, it may still be possible to use the method by allocating two class numbers and associating only one of them with the prefix. That is the reason the memo allocated four of the unused bits in the long sequence number format to the class number instead of the three that should generally suffice.
Prefix elision is not a replacement for header compression or data compression. It allows implementations to compress away prefixes that are often not reachable by header or data compression methods.
When every packet of a class starts with the same bytes, those bytes can be left out of the fragments and added back when the packet is reassembled. The class number says which bytes to add back. This saves bytes that ordinary compression usually cannot reach.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 26 | Option Length | Class | Prefix Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Prefix... | Class |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Prefix Length | Prefix...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+§6Negotiable Options
Multilink already defines three PPP LCP options: Multilink Maximum Received Reconstructed Unit, Multilink Short Sequence Number Header Format, and Endpoint Discriminator. This document defines two more, the Multilink Header Format option and the Prefix Elision option.
The Multilink Header Format option has type 27 and a length of 4. It carries a code and the number of suspendable classes. The option tells the peer that the implementation wishes to receive fragments in the format given by the code, with that many suspendable classes. When the option is negotiated, the accepting implementation must either transmit all subsequent multilink packets on all links of the bundle with the header format given, or Configure-Nak or Configure-Reject the option; an implementation may continue to send packets outside multilink in any case. A system offering the option on a link intended to join an existing bundle must offer the same option value that was previously negotiated for the bundle, or none if none was negotiated before.
Two code values are defined here: code 2 for the long sequence number fragment format with classes, and code 6 for the short sequence number fragment format with classes. The option must not occur more than once in a Configure-Request or Configure-Ack, and if it is present the Short Sequence Number Header Format option must not also be present. If neither this option nor the Short Sequence Number Header Format option is present but an MRRU option is, then by default long sequence number multilink headers with class 0 only are used, which is the same as code 2 with one suspendable class. An instance of the Short Sequence Number Header Format option is equivalent to this option with code 6 and one suspendable class.
The number of suspendable classes bounds the class numbers: only class numbers numerically lower than the limit can be used for suspendable classes. An implementation may negotiate a smaller number than the packet format allows, to limit the reassembly buffer space it needs. Implementations should at least support the value 4 for the short sequence number fragment format and the value 8 for the long sequence number fragment format, unless configured differently. Bit combinations that would indicate class numbers outside the negotiated range may be used for other semantics if they are negotiated by other means outside the scope of the memo.
The Prefix Elision option has type 26. Apart from the type and length octets common to all LCP options, it holds a sequence of zero or more sequences made of a single octet class number, a single octet giving the length of the prefix for that class, and the octets of that prefix. The option tells the peer that the implementation expects to receive, in each of the given classes, only packets with a certain prefix, and that this prefix is not to be sent as part of the information in the fragments of that class. By default the common prefix is empty for all classes. When the option is negotiated, the accepting implementation must either transmit all subsequent multilink packets of each of the given classes with the given prefix removed from the start of the packet, or Configure-Nak or Configure-Reject the option. If none of the formats with classes has been negotiated, class number 0 may be used to indicate a common prefix for all packets sent within multilink fragments.
The option must not occur more than once in a Configure-Request or Configure-Nak, and a system offering it on a link intended to join an existing multilink bundle must offer the same value previously negotiated for the bundle, or none if none was negotiated before. An implementation note adds that the sense of this option is an indication from the receiver to the sender about the packets concerned, and that often only the senders have enough control over their use of classes to supply useful values. A receiver willing to accept prefix-elided packets should request the option with empty content, leaving the sender free to use Configure-Nak to propose the class to prefix mapping it wants.
Two options are added to the link negotiation. One tells the peer which header format to use and how many priority levels are allowed. The other tells the peer which bytes are common to every packet of a class so that they can be left out. The two ends must agree, and a new link joining a bundle must offer the same values the bundle already agreed on.
- 26Prefix Elision option — LCP option type 26. Carries a class number, a prefix length and the prefix octets for each class.
- 27Multilink Header Format option — LCP option type 27, length 4. Carries a format code and the number of suspendable classes.
- 2Long sequence number with classes — Code 2 of the Multilink Header Format option: the long sequence number fragment format with classes.
- 6Short sequence number with classes — Code 6 of the Multilink Header Format option: the short sequence number fragment format with classes.
§7Security Considerations
The memo says operation of this protocol is believed to be no more and no less secure than operation of the PPP multilink protocol of RFC 1990. It sets out no other security requirements, and no separate threat analysis, because the change is confined to how fragments are labelled and numbered rather than to how they are protected.
The memo says the scheme is exactly as secure as plain PPP Multilink, and adds nothing further.