Internet DRAFT - draft-andrades-framing-ext
draft-andrades-framing-ext
HTTP/1.1 200 OK
Date: Mon, 08 Apr 2002 22:31:35 GMT
Server: Apache/1.3.20 (Unix)
Last-Modified: Wed, 25 Sep 1996 02:20:08 GMT
ETag: "2e6fcb-b88b-324896d8"
Accept-Ranges: bytes
Content-Length: 47243
Connection: close
Content-Type: text/plain
Network Working Group R. Andrades
INTERNET DRAFT isochrone, Inc.
Document: draft-andrades-framing-ext-00.txt F. Burg
Expires: March 20, 1997 AT&T
September 20, 1996
QOSPPP Framing Extensions to PPP
(draft-andrades-framing-ext-00.txt)
Status of this Memo
This document is an Internet-Draft. Internet-Drafts are
working documents of the Internet Engineering Task Force (IETF), its
areas, and its working groups. Note that other groups may also
distribute working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six
months and may be updated, replaced, or obsoleted by other documents
at any time. It is inappropriate to use Internet-Drafts as
reference material or to cite them other than as ``work in
progress.''
To learn the current status of any Internet-Draft, please check the
``1id-abstracts.txt'' listing contained in the Internet-Drafts
Shadow Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or
ftp.isi.edu (US West Coast).
Distribution of this document is unlimited.
Abstract
The Point-to-Point Protocol (PPP) [2] provides a standard method for
transporting multi-protocol datagrams over point-to-point links.
PPP datagrams are often encapsulated in HDLC frames [1] when used
over standard analog modems.
This document describes the extensions to PPP encapsulation and
HDLC framing to support Quality of Service (QoS) over low bandwidth
links.
This document is a submission to the IETF ISSLL working group.
Comments are solicited and should be addressed to the working
group's mailing list at issll@mercury.lcs.mit.edu and/or the author.
Andrades, Burg [Page 1]
INTERNET DRAFT QOSPPP Framing Extensions to PPP September 20, 1996
Table of Contents
1. Introduction...............................................3
2. Current Implementation ....................................3
2.1 QOSPPP Extensions to HDLC framing........................3
2.2 QOSPPP Extensions to PPP encapsulation...................7
2.3 QOSPPP Extensions to Link Establishment Protocol.........7
2.4 Planned QOSPPP Features..................................8
3. Comparison with other proposals...........................10
4. Other Possibilities.......................................16
5. Security Considerations...................................18
6. Acknowledgments...........................................19
7. References................................................19
8. Author's Address..........................................20
Andrades, Burg [Page 2]
INTERNET DRAFT QOSPPP Framing Extensions to PPP September 20, 1996
1. Introduction
QOSPPP provides an architectural framework for providing multimedia
and other advanced services, requiring QoS over the Internet. Our
current work is aimed at the consumer market which usually uses
comparatively low bandwidth analog modems for Internet access. The
links from the consumer's residences to their Internet Service
Providers usually run the PPP protocol [2] encapsulated in
asynchronous HDLC frames [1], and so our goal was to add QoS to
this framing scheme. The current document describes our attempt to
extend the PPP encapsulation in asynchronous HDLC framing to
support QoS over these links. One goal was to maintain as much
compatibility as possible with current PPP implementations and to
fall back to the standard PPP/HDLC framing scheme if we detect that
the extensions are not available on the peer. The framework also
included a signalling engine which is used to negotiate parameters
for the QoS connections, and a packet scheduler which contains
the actual scheduling algorithms. The signalling protocol could be
Q.2931 or RSVP or a variant of one of these. The term QOSPPP is
used to refer to the entire framework and not just the framing.
The complete QOSPPP architecture will be described in more detail
in a future document.
Several Internet Services Providers still offer SLIP connections;
however, we felt that this would very soon be obsolete and did not
attempt to address it. At this stage we have not attempted to work
out the framing extensions for synchronous HDLC, since it is not
used in the market we are addressing; however, we feel that the
current work can easily be adapted to that area.
Section 2 describes the current implementation and work in progress.
Section 3 compares this framing scheme with those [5,6] proposed by
Carsten Bormann. Section 4 considers merging the features of QOSPPP
with [6].
2. Current Implementation
2.1 QOSPPP Extensions to HDLC framing
The aim of QOSPPP is to allow a customer to run a mix of
applications with varying communications needs. Currently most PPP
implementations offer a single class of service, best-effort, which
is most suited for conventional data applications (e.g. Telnet, ftp,
WWW, email). However, newer Internet applications such as packet
telephony, video conferencing, etc. require a new class of service
with bandwidth guarantees and upper bounds of the delay and jitter
seen by their packets.
Andrades, Burg [Page 3]
INTERNET DRAFT QOSPPP Framing Extensions to PPP September 20, 1996
QOSPPP supports four classes of service, ABR, UBR, CBR and VBR. We
use these terms in the same sense as defined by the ATM Forum [7].
However, the basic concepts are the same for any other definition
of class of service.
ABR or Available Bit Rate supports traditional data applications,
which do not need bandwidth guarantees, nor any strict bounds on
their delay and jitter. They typically have variable sized packets.
However, ABR applications ARE QoS aware and will specify their
maximum datagram size, expected bandwidth usage, and maximum
tolerable delays. The class of service is specified in the flowspec
along with other parameters like bandwidth, delay and jitter.
The application programming interface (API) MUST provide an
interface by which the flowspec can be communicated by the
application to the transport stack, but this is out of the scope of
this document. While the network does not guarantee the latter
two, it does use them to estimate buffer sizes and expected load.
UBR or Unspecified Bit Rate is for legacy applications that are not
QoS aware. ABR and UBR are equivalent to the framing layer and so
are both referred to as ABR for the remainder of this document.
CBR or Constant Bit Rate is for applications that transmit data at
regular intervals. The datagrams are usually small and of fixed
length (though the latter is not a requirement). An example is a
packet phone which does not do silence detection. They do have
strict upper bounds on the delay and jitter they can tolerate as
well as strict bandwidth requirements. VBR or Variable Bit Rate is
similar to CBR, except that the rate of packet transmission is not
fixed. The transmission rate may vary upto a maximum rate, and it
also defines a long term average rate. CBR and VBR are equivalent
to the framing layer and so are both referred to as QoS streams
for the remainder of this document.
The framing layer then has to support two classes of datagrams,
normal data applications and QoS. Most of this support is done by a
packet scheduler and signalling engine at a layer higher than the
framing layer, and so will not be discussed in this document.
However, one aspect of QoS that is strongly influenced by the
framing layer is the delay bounds of QoS streams. This is because
the delay allowance of QoS streams tends to be in the range of tens
of milliseconds. However, several popular data applications (e.g.
WWW traffic) tend to use large size packets since they are more
efficient. On a 28,800 link, a 1500 byte packet (which is the MTU
used by most PPP implementations, and many data applications use
the MTU) takes approximately half a second to transmit, making the
link unavailable for that time. (In practice, the bandwidth
available with a 28,800 modem is often less than 28,800, depending
on the line conditions.) This clearly indicates that in order to
support QoS streams on low bandwidth links, some change in the
standard PPP framing is required. One possible way to handle it
would be to use a much smaller MTU. However, in order to support
Andrades, Burg [Page 4]
INTERNET DRAFT QOSPPP Framing Extensions to PPP September 20, 1996
delay bounds of around 20 ms for QoS streams, it would be necessary
to restrict the MTU of ABR traffic to around 36 bytes, which is
clearly unacceptable.
Another approach (which is what QOSPPP does) is to allow an ABR
datagram that is currently being transmitted to be preempted by a
QoS stream with stricter delay bounds. When the QoS packet is
complete, the preempted ABR datagram will resume transmission. The
difference between preemption and conventional fragmentation is
that each resuming segment of the ABR datagram does NOT carry a
header telling the receiving end how to put the pieces back
together again. The preemption is indicated by stuffing a
preemption flag byte which is defined as 0x7c. The end of
preemption is indicated by transmitting a standard HDLC Flag byte.
When preemption ends, the interrupted frame is automatically
resumed at the point where it was suspended, with no extra header
bytes. The current implementation supports a single level of
preemption, however we are planning a new version with support for
multiple levels of preemption, see section 2.4.
In this document we use the terms priority and preemption class
interchangeably although that may not be the common usage.
The preemption is explained by the following diagram. Assume that
there are two active streams, a TCP stream (maybe a Web browser)
which is ABR, and a voice stream (the latter for a packet phone
application) which is CBR (or VBR if silence detection is
implemented). Initially, in the absence of any voice data, the
framer begins transmission of a packet of the TCP stream. After
some time, a voice packet is queued for transmission and the
framer suspends transmission of the TCP stream to begin sending
the voice packet. When transmission of the voice packet is
complete, the framer resumes transmission of the suspended TCP
packet. Note that one voice packet can not interrupt another
voice packet. The payload size of the voice packet (16 bytes in
the example), depend on the encoding algorithm used. Also note
that each FCS in the following diagram protects only the frame
it is a part of, (the one that is terminated by the HDLC Flag byte
immediately after the FCS), and not any intermediate (preempting)
frames, Each stream can negotiate the use of an FCS of a different
strength (size). The new Suspend Flag byte needs to be added to the
ACCM for transparency. Note that in the diagram, and elsewhere in
this document, the term PID always refers to the PPP protocol ID.
Andrades, Burg [Page 5]
INTERNET DRAFT QOSPPP Framing Extensions to PPP September 20, 1996
Preempted packet - (starts earlier in time)
--------------------------- - - - -----------------------------
|HDLC |IP PID | TCP data \ \ TCP data |FCS |HDLC |
|Flag |0x21 | \ \ (contd.)|(2 bytes) |Flag |
|0x7e | | \ \ | |0x7e |
------------------------------ - - - --------------------------
Suspend Resume
/ \
/ \
/ \
/ \
/ \
/ Preempting packet \
/ (Starts later in time - \
/ completes earlier) \
----------------------------------------
|Suspend |CBR |Voice data|FCS |HDLC |
|Flag |PID | 16 bytes |(0 or 2|Flag |
|0x7c | | | bytes)|0x7e |
----------------------------------------
As can be seen from the preceding diagram, the preempting packet's
frame format is the same as the standard PPP frame except for the
use of a new Suspend Flag (0x7c) instead of the HDLC Flag (0x7e).
One other difference is that the length of the FCS field can be
different for different PIDs. PPP currently defines three different
FCS', 16-bit, 32-bit and NULL FCS. We use the 16-bit FCS for all
data streams (it is the default anyway). The NULL FCS can be
negotiated for CBR streams that have a small MTU by the signalling
engine. However, this choice, if desired, must be made by the
application. The interface by which the application may negotiate
the choice of an FCS is out of the scope of this document. In
any examples in this document, the length of the FCS shown is just
for illustration.
In the special case, when we have only a single active QoS stream,
we omit sending the CBR PID in preempting frames, since it is
implicit from the Suspend Flag, and reduces the Framing overhead
by a byte.
Andrades, Burg [Page 6]
INTERNET DRAFT QOSPPP Framing Extensions to PPP September 20, 1996
2.2 QOSPPP Extensions to PPP encapsulation
All CBR and VBR streams are each assigned a unique PPP protocol ID
(PID) by the signalling engine. These PID values are taken from
the unused values as specified in [8]. We plan to get a range of
these unused PIDs allocated for this purpose. Unlike the PIDs
currently assigned to protocols by the IETF, the PIDs used by
QOSPPP are not necessarily the same in both directions, because
of the way the signalling engine works. We try to pick the PIDs
from the 1-byte PID space (and since we do not expect too many
streams to be simultaneously active over these low bandwidth
links, it isn't difficult to find enough 1-byte PIDs).
2.3 QOSPPP Extensions to Link Establishment Protocol
PPP uses the Link Control Protocol (LCP) [2] to establish
parameters for the link. Up-to-date values of the LCP Code field
are specified in the most recent "Assigned Numbers" RFC [8].
QOSPPP adds the following configuration option:
--------------------------------------------------------
|Option | Length | version | Preemptive | Link Speed |
|0x55 | = 8 | (4 bytes) | scheduling | Monitoring |
| | | | (1 byte) | (1 byte) |
--------------------------------------------------------
Option: This is a new LCP configuration option code value.
Version: This field is currently set to 1. Future versions
may set this field to other values to indicate other
preemption schemes.
Preemptive scheduling: This is set to 0 to indicate that QoS
streams are not currently supported (even though the peer
apparently is QOSPPP-enabled). The current QOSPPP framing uses a
value of 1 in this field. In the future, we plan to use this field
to indicate the number of levels of preemption supported
(Currently it is one level).
Link Speed Monitoring: This is currently set to 0 to indicate
that Link Speed Monitoring is not required. The purpose of
Link Speed Monitoring is to enable an implementation to track
changes in the link bandwidth and adjust it's packet scheduling
accordingly. No protocol has yet been defined for Link Speed
Monitoring.
Andrades, Burg [Page 7]
INTERNET DRAFT QOSPPP Framing Extensions to PPP September 20, 1996
The node at one end sends a configuration message indicating that
it supports preemption, and the maximum number of preemption levels
it supports. If the other node responds with a reject (i.e. it is
a non QoS-aware implementation and does not recognize the new LCP
option code), then the sender will disable the preemption
capability and send a new configuration message without the
preemption option (and disable the preemption feature locally for
the current session). If the other side responds with a NAK
requesting a smaller number of levels of preemption, we will
adjust our behavior accordingly and resend the configuration
message reflecting the requested changes.
2.4 Planned QOSPPP Features
We will try to choose the PID values so that their Hamming distance
is at least two, allowing single bit errors in the PID field to be
detected.
In the QOSPPP Framing engine the FCS field can be turned off for
individual CBR and VBR streams. We could also adopt Carsten's idea
[6] of using an 8-bit CRC for CBR and VBR streams. Thus the
effective Framing overhead can be reduced by a byte for CBR and
VBR streams. We propose to use the 8-bit FCS described in the V.76
specification [9], unless the IETF already has a standard for
an 8-bit FCS.
Another planned extension to QOSPPP is multiple levels of
preemption. In this we will put different streams into
different preemption classes and allow a packet of a stream of a
higher preemption class to preempt a currently transmitting packet
of a stream of a lower preemption class. Currently, we do not
plan to support dynamic priorities (where two streams' relative
priorities can change dynamically). The QOSPPP frame format can
support multiple preemption levels without any change.
Multiple preemption levels are explained by the following diagram
that shows two levels of preemption. Assume that there are three
active streams, a TCP stream (maybe a Web browser), a video
stream and a voice stream (the latter two for video conferencing).
Assume that the video stream belongs to a higher preemption level
than the TCP stream and the voice stream belongs to a higher
Andrades, Burg [Page 8]
INTERNET DRAFT QOSPPP Framing Extensions to PPP September 20, 1996
preemption level than the video stream. Initially, in the absence
of any voice or video data, the framer begins transmission of a
packet of the TCP stream. After some time, a video packet is queued
for transmission and the framer suspends transmission of the TCP
stream to begin sending the video packet. Before transmission of
the video packet is complete, a voice packet is queued for
transmission. The framer suspends transmission of the video stream
to begin sending the voice packet. When transmission of the voice
packet is complete, the framer resumes transmission of the
suspended video packet. When transmission of the video packet is
complete, the framer resumes transmission of the suspended TCP
packet. Note that a video packet can not interrupt a voice packet
or another video packet, and one voice packet can not interrupt
another voice packet.
Preempted packet - (starts earlier in time)
--------------------------- - - - -----------------------------
|HDLC |IP PID | TCP data \ \ TCP data |FCS |HDLC |
|Flag |0x21 | \ \ (contd.)|(2 bytes) |Flag |
|0x7e | | \ \ | |0x7e |
------------------------------ - - - --------------------------
Suspend Resume
/ \
/ \
/ \
/ \
/ \
/ First level of Preemption \
/ (Starts later in time - \
/ completes earlier) \
--------------- - - - - ----------------
|Suspend |CBR |Video data|FCS |HDLC |
|Flag |PID |'n' bytes |(1 or 2|Flag |
|0x7c | | | bytes)|0x7e |
--------------- - - - - ----------------
Suspend Resume
/ \
/ \
/ \
/ \
/ \
/ Second level of Preemption \
/ (Starts still later in time - \
/ completes first) \
----------------------------------------
|Suspend |CBR |Voice data|FCS |HDLC |
|Flag |PID |'m' bytes |(1 or 2|Flag |
|0x7c | | | bytes)|0x7e |
----------------------------------------
Andrades, Burg [Page 9]
INTERNET DRAFT QOSPPP Framing Extensions to PPP September 20, 1996
Note that the suspended packets have to be resumed in the reverse
(stack-like or LIFO) order; i.e. if streamA preempts streamB
preempts streamC, then when streamC completes, streamB must
resume (and complete) before streamA is resumed. Currently we do
not expect to support resumption of suspended packets in a
different order (which, by the way, would necessarily imply
implementing dynamic priorities).
3. Comparison with other proposals
In all the descriptions below we are assuming that the
address-control field compression and protocol field compression
options have been negotiated by the link control protocol, and that
all PIDs used for the real-time streams are 1 byte.
Case 0. The QOSPPP fragmentation format
|--------------------------------------|
|Preemption FLAG |
|--------------------------------------|
|PID (1 byte - opt) |
|--------------------------------------|
|Fragment Data |
|--------------------------------------|
|FCS (2 bytes or 0 bytes - negotiable) |
|--------------------------------------|
|HDLC Flag |
|--------------------------------------|
This frame has between 5 and 2 bytes of overhead per preemption;
the minimum of two bytes is in the case when there is only a single
active stream of a high preemption class, and it has been
negotiated not to require the use of a CRC; the maximum of five
bytes is when there are multiple active streams of high preemption
classes (either in the same class, or in preemption classes), and
they require the use of a 2 byte CRC. We could also consider using
a 1 byte CRC (as suggested by Carsten Bormann), for streams whose
packets are rather short. Note that there is no overhead on the
interrupted packet. Therefore every low priority packet carries 5
bytes of framing overhead (regardless of whether it is preempted
or not), and every higher priority packet carries 2 to 5 bytes of
overhead.
There is no limit on the number of preemption levels, except the
number of bits in a PID (though not all combinations are valid).
In the case of multiple levels of preemption, it assumes that
suspended frames will be resumed in the reverse order, from that
in which they were suspended.
Andrades, Burg [Page 10]
INTERNET DRAFT QOSPPP Framing Extensions to PPP September 20, 1996
In the absence of preemption, the frame format is exactly the same
as regular PPP.
We will consider the following proposals from Carsten Bormann and
try to consider all the optimizations too.
Case 1. Using PPP Multi-Link as-is (short sequence number fragment
format)
|--------------------------------------|
|HDLC Flag |
|--------------------------------------|
|PID (1 byte) |
|--------------------------------------|
| B | E | 0 | 0 | sequence number |
|--------------------------------------|
|sequence number |
|--------------------------------------|
|Fragment Data |
|--------------------------------------|
|FCS (2 bytes) |
|--------------------------------------|
|HDLC Flag |
|--------------------------------------|
In this scheme, every lower priority packet needs to be sent in at
least two MLPPP frames. (Since we do not know whether it is going
to be interrupted or not, we must begin transmitting with the "E"
bit set to "0". Therefore, even if it is not interrupted, we need
to send a final (empty) fragment with the "E" bit set to "1" to
terminate the packet). Now, the MLPPP frame has 7 bytes of framing
overhead, therefore every lower priority packet has 7*2= 14 bytes
of framing overhead. However, the MLPPP packet actually carries a
PPP packet within it adding an additional 1 byte overhead (for the
PPP PID) making the total framing overhead 15 bytes. We can save
one byte by not transmitting two consecutive Flag bytes making the
total framing overhead 14 bytes as opposed to 5 bytes for a normal
PPP frame. For every preemption, the lower priority packet needs to
be terminated with an MLPPP trailer (3 bytes) and restarted with an
MLPPP header (4 bytes) adding an additional 7 bytes overhead.
Additionally, the preempting packet needs it's PPP header of 5
bytes, giving a total framing overhead of 12 bytes per preemption.
Dropping consecutive Flag bytes will save two bytes giving a total
framing overhead of 10 bytes per preemption as opposed to 5 bytes
for a normal PPP frame. In case the interrupted packet is resumed
near it's end (e.g. it has fewer than say 8 bytes left to
transmit), we can assume that it will not be interrupted again and
can send the last fragment with the "E" bit set to "1", thus
eliminating the 6 bytes of the empty MLPPP header at the end.
Andrades, Burg [Page 11]
INTERNET DRAFT QOSPPP Framing Extensions to PPP September 20, 1996
It supports a single level of preemption.
It can be used even if the other end does not support QoS. This
however, assumes that the other end supports MLPPP; We are not sure
how many implementations, (aside from Windows NT 4.0), and how
many service providers support MLPPP for analog lines.
Case 2. Extending PPP Multi-Link to multiple class (short sequence
number fragment format)
|--------------------------------------|
|HDLC Flag |
|--------------------------------------|
|PID (1 byte) |
|--------------------------------------|
| B | E | class | sequence number |
|--------------------------------------|
|sequence number |
|--------------------------------------|
|Fragment Data |
|--------------------------------------|
|FCS (2 bytes) |
|--------------------------------------|
|HDLC Flag |
|--------------------------------------|
The difference between this scheme and case 1 is that it supports
4 levels of preemption. However, now preempted packets carry an
MLPPP header (plus a PPP PID), instead of a normal PPP header
(except for one of the preemption levels which uses normal PPP
frames). Thus the preempted packets carry (7(MLPPP header) +
1(PPP PID) = ) 8 bytes of framing overhead per packet. So the total
framing overhead per preemption is (7 (preempted) + 8 (preempting)
= ) 15 bytes. Again, dropping consecutive Flag bytes will save two
bytes giving a total framing overhead of 13 bytes per preemption
as opposed to 5 bytes for a normal PPP frame.
It is backward compatible to case 1; i.e. if the remote end does
not support QoS, we can fall back to case 1, restricting ourselves
to a single level of preemption.
In the case of multiple levels of preemption, suspended frames can
be resumed in any order, not necessarily the reverse order from
that in which they were suspended.
Andrades, Burg [Page 12]
INTERNET DRAFT QOSPPP Framing Extensions to PPP September 20, 1996
Case 3. The Compact Fragment Format (Normal header)
|--------------------------------------|
|HDLC Flag |
|--------------------------------------|
|R | Sequence | Class | 1 |
|--------------------------------------|
|Fragment Data |
|--------------------------------------|
|FCS (2 bytes) |
|--------------------------------------|
|HDLC Flag |
|--------------------------------------|
It supports 7 levels of preemption.
In the case of multiple levels of preemption, suspended frames can
be resumed in any order, not necessarily the reverse order from
that in which they were suspended.
The header above has 5 bytes of overhead per frame which is the
same as the normal PPP header. However [6] seems to imply that all
fragments will be sent using the header described above, not just
the interrupting packet. (This needs to be clarified with Carsten
Bormann.) This means that every time a lower priority packet is
preempted by a higher priority packet, the lower priority packet
is terminated by an FCS and Flag byte (3 bytes), and when it
resumes, it will carry a 2 byte header, adding 5 bytes of overhead
per preemption. Also the Higher priority packet will need 5 bytes
of framing overhead, making the total framing overhead (5+5=) 10
bytes per preemption. Again, dropping consecutive Flag bytes will
save two bytes giving a total framing overhead of 8 bytes per
preemption as opposed to 5 bytes for a normal PPP frame.
Case 4. The Compact Fragment Format (Insertion Header)
|--------------------------------------|
|HDLC Flag |
|--------------------------------------|
|Length L | C | 0 |
|--------------------------------------|
|Inserted Packet (Length L) |
|--------------------------------------|
|FCS (1 byte) |
|--------------------------------------|
It supports 2 levels of preemption.
Andrades, Burg [Page 13]
INTERNET DRAFT QOSPPP Framing Extensions to PPP September 20, 1996
This frame format carries 3 bytes of overhead for the preempting
packet. Also, it does not impose any additional overhead on the
packet being interrupted.
It does have the restriction that the higher priority packet be
not more than 64 bytes in length.
Comparison of Overhead
Cases 1 & 2 have more overhead than the rest. Case 1 is useful
only if it is necessary to support (a single level of) preemption
even for links where the peer does not support QoS. Even this is
debatable for two reasons:
(1) How many implementations actually support MLPPP for analog
lines, and,
(2) Preemption by itself is generally not sufficient to support
QoS for analog lines, one also needs to do some form of header
compression, especially considering the increased size of the
MLPPP headers. Would the remote end which does not have support
for QoS support the header compression scheme?
Case 2 does not seem useful considering that it requires the remote
end to support a non-standard extension to MLPPP. If the remote end
has to be modified to support this extension, one should question
why it can not be modified to support some other, more efficient,
extension. It does have the advantage of being able to gracefully
fallback to case 1, but as mentioned above, the value of this
advantage seems to be rather dubious. We shall not consider cases
1 & 2 any longer.
Case 4 appears to have less overhead (3 bytes as opposed to 5
bytes for case 0 & 8 bytes for case 3), than any other. However,
one of the optimizations that caused a 1 byte reduction in
overhead (the smaller FCS) can also be applied to cases 0 and 3.
The second optimization (dropping the intermediate Flag byte) is
achieved mainly by putting a length field in the header and
shrinking the class number to 1 bit. The former restricts the
length of high priority packets to 64 bytes which may be O.K., the
latter restricts the number of high priority streams to 2, which
makes it O.K. as an optimization of case 3 rather than as a
separate case (which anyway, is what Carsten presents it as).
Let us examine cases 0 & 3. Consider the following scenarios for
cases 0 & 3 (with case 4 as an optimization of case 3).
1. normal case, case 0 has 5 bytes overhead, case 3 has 8 bytes
2. 8-bit FCS, overhead reduces by 1 byte for both cases.
3. No FCS, overhead reduces by 2 bytes for both cases.
Andrades, Burg [Page 14]
INTERNET DRAFT QOSPPP Framing Extensions to PPP September 20, 1996
4. A single high priority stream, reduces case 0 overhead by 1
byte by dropping the PID. If the length of the packet is less than
64 bytes, case 3 reduces to case 4. This means that cases 0 & 3 are
identical, assuming the FCS is the same size in both.
5. Upto 2 high priority streams whose packet lengths are less than
64 bytes, and which use an 8-bit FCS can have their overhead reduced
to 3 bytes for case 3 by using the case 4 optimizations. This
compares with 4 bytes for case 0 under the same conditions, except
that you can do it for a greater number of streams.
6. Case 0 overhead can be reduced by 1 byte by dropping the
intermediate Flag byte, however this can be done only for streams
that have fixed size packets, and it carries the danger of two
packets (the preempted and the preempting,) being corrupted if
any byte of the preempting packet is dropped.
As can be seen, there does not appear to be a clear advantage
of one scheme over the other.
Note that the frame formats of cases 1 & 2 actually indicate
fragmentation rather than preemption, since each frame carries
a header telling the receiver how to put it back together. The
idea behind preemption is precisely to avoid the overhead of this
kind of header. However, although the frame format makes it look
like fragmentation, calling it preemption is justifiable
from the point of view of the actual operation of the protocol;
i.e., with conventional fragmentation, the stack will decide
on how to fragment a packet either when it is given a packet from
the higher layer, or, when it decides to begin transmission. In
preemption, the decision of how, when, etc. to "fragment" is made
at the time a higher priority "preempting" packet becomes eligible
for transmission. This distinction can only be made at the sending
side, for the receiver it does look like fragmentation.
Comparison of error detection capability
Case 3 packets have a sequence number which will allow it to detect
a lost fragment. Of course, even in case 0, lost fragments can be
caught by the FCS, but the sequence number provides an additional
check.
Comparison of number of levels of preemption
Consider cases 0 and 3 alone as case 4 is an optimization of case 3.
Case 0 supports an arbitrary number of levels of preemption,
limited only by the PID space. Case 3 supports 7 levels of
preemption. There does not seem to be much to choose between them
here as 7 levels of preemption are probably enough.
Andrades, Burg [Page 15]
INTERNET DRAFT QOSPPP Framing Extensions to PPP September 20, 1996
Comparison of support for dynamic priorities
Case 3 appears to have slightly better support for dynamic
priorities. However, let us see if this advantage is meaningful.
There is one way in which the use of dynamic priorities can affect
the framing format. Consider the case where there are three stream
A, B and C, in the increasing order of priorities. Assume that the
priorities are dynamic so the priority ordering may change over
time. Now consider a scenario where stream B has preempted stream
A and stream C has preempted stream B. Suppose stream A gets a
priority boost making it temporarily of higher priority that stream
B (but lower than stream C). Therefore when stream C completes
transmission of it's packet, there is an issue of whether we should
resume transmission of stream A or stream B. Carsten's proposals
(cases 2 & 3) give the implementation the choice in this matter,
QOSPPP does not.
This does not mean that dynamic priorities are impossible with
QOSPPP. Dynamic priorities can still be used in controlling the
decision of preemption of one stream by another, they simply can
not be used for making the resumption decision. Also, the scenario
above could be considered farfetched by some. For that matter, the
whole idea of dynamic priorities might be considered irrelevant
for the applications we are considering; the alternative is to
allow a slightly larger jitter, which might be perfectly
acceptable.
Case 0, being limited to a strict stack-like sequence of
suspends-resumes might be slightly simpler to implement.
4. Other Possibilities
Based on the discussion above, we propose a new framing format
which attempts to borrow the best features of both the QOSPPP
framing and Carsten's proposals.
Use a preemption flag and the requirement that packets be resumed
in the reverse order from that in which they were suspended.
In the case of a single higher priority stream, keep the option of
dropping the PID byte. This however, has to be negotiated by LCP.
Andrades, Burg [Page 16]
INTERNET DRAFT QOSPPP Framing Extensions to PPP September 20, 1996
QOSPPP uses UDP header compression. This consists of not
transmitting the UDP and IP headers of any packet that is
associated with a specific PID. The receiver automatically prepends
the UDP & IP headers to every incoming packet.The information needed
for the headers is transmitted when the PID is negotiated by the
signalling engine (the checksum can be generated by the receiver
on the reconstructed received packet - or we can use the
optimization of setting the checksum to 0). Carsten proposes prefix
elision [6] which is basically associating each class or PID with a
prefix of bytes that begin every packet belong to that class or PID
and then not transmitting those bytes. The receiver automatically
prepends the prefix to every packet it receives. UDP header
compression gives better reduction in overhead than prefix elision
for UDP streams. It does not handle non-UDP streams, but we assume
Van Jacobson does a fairly good job at that. Are there other
non-UDP, non-TCP streams that we have to consider? If so, we can do
prefix elision for these streams. (This will have to be negotiated
by the signalling protocol on a per-stream basis).
The sequence number gives us some additional error detection
capability. However, it is more useful for the packet being
interrupted than the interrupting packet, as the former is spread
out over a longer time and has a higher probability of being
corrupted. Therefore we will put it only in the packet being
resumed. This also has the advantage that in case a packet is not
interrupted, it will have exactly the same format as a regular PPP
frame. We shall therefore call it a fragment number and every
fragment being resumed will have this as the first byte. The first
fragment has an implicit fragment number of 0.
The signalling protocol will negotiate the size of the FCS for each
stream.
We can use one of Carsten's values of 0xDE or 0xC3 for the
Preemption flag. Maybe we should run tests over a PPP link (before
the byte stuffing stage) rather than over an Ethernet as he did.
The use or non-use of dynamic priorities is an independent decision
which will not affect the frame format. Also, it needs to be
implemented on the sending side alone (for the framing scheme we
are considering), so both sides need not have it.
The frame format is shown below.
Andrades, Burg [Page 17]
INTERNET DRAFT QOSPPP Framing Extensions to PPP September 20, 1996
|--------------------------------------|
|Preemption Flag |
|--------------------------------------|
|PID (opt) |
|--------------------------------------|
|Fragment Data |
|--------------------------------------|
|FCS (1, or 2 bytes) |
|--------------------------------------|
|HDLC Flag |
|--------------------------------------|
|Fragment # for resuming packet |
|--------------------------------------|
We can also continue to use the optimizations of case 4 (Insertion
headers) as follows.
|--------------------------------------|
|Preemption Flag |
|--------------------------------------|
|Length L | S | 0 |
|--------------------------------------|
|Inserted Packet (Length L) |
|--------------------------------------|
|FCS (1, or 2 bytes) |
|--------------------------------------|
This is similar to that described by Carsten. The difference is
that now we are not using the concept of Class any more, so the
"C" bit becomes a stream identifier and is renamed to be an "S"
bit (a purely cosmetic change). There can be only two such streams,
and they must be negotiated by a signalling protocol. A stream using
insertion headers can continue to use the normal preemption frame
format interchangeably.
This scheme has the standard 5 bytes of PPP framing overhead for
lower priority packets that are not interrupted, and 6 to 3 bytes
of framing overhead per preemption. In the "normal" case when we
have multiple high priority streams and they all use a 1 byte FCS,
there will be 5 bytes of framing overhead per preemption, which is
the same as regular PPP. Upto two of these streams can take
advantage of the insertion header format to reduce the overhead to
3 bytes.
5. Security Considerations
This document does not raise any new security issues.
Andrades, Burg [Page 18]
INTERNET DRAFT QOSPPP Framing Extensions to PPP September 20, 1996
6. Acknowledgments
Much of the work in implementing the QOSPPP architecture and
testing the concepts presented in this document was done by
Murali Aravamudan and Kumar Vishwanathan of isochrone, Inc.
Andreas Papanicolau and Khasha Mohammadi of AT&T also provided
many helpful insights in the design of the architecture.
7. References
[1] Simpson, W., Editor, "PPP in HDLC Framing", RFC 1662,
STD 51, Daydreamer, July 1994.
[2] Simpson, W., Editor, "The Point-to-Point Protocol (PPP)",
RFC 1661, STD 51, Daydreamer, July 1994.
[3] Simpson, W., Editor, "PPP LCP Extensions", RFC 1570,
Daydreamer, January 1994.
[4] McGregor, G., "The PPP Internet Control Protocol", RFC 1332,
Merit, May 1992.
[5] Bormann, Carsten, "Providing integrated services over
low-bitrate links", work in progress, Internet Draft
(draft-ietf-issll-isslow-00.txt), Universitaet Bremen,
June 1996.
[6] Bormann, Carsten, "The Multi-Class Extensions to Multi-Link
PPP", work in progress, Internet Draft,
(draft-ietf-issll-isslow-mcml-00.txt), Universitaet Bremen,
September 1996.
http://www-rn.informatik.uni-bremen.de/research/mcml.html,
Universitaet Bremen, July 1996.
[7] "ATM User-Network Interface (UNI) Specification Version 3.1",
The ATM Forum, 1995.
[8] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2,
RFC 1700, USC/Information Sciences Institute, October 1994.
[9] Burg, F., editor, "Recommendation V.76 - Generic Multiplexer
using V.42 LAPM-based procedures", International
Telecommunication Union, April 1996.
Andrades, Burg [Page 19]
INTERNET DRAFT QOSPPP Framing Extensions to PPP September 20, 1996
8. Author's Address
Questions about this memo can be directed to:
Richard Andrades
isochrone, Inc. Phone: (908) 544 5508
One Main Street Fax: (908) 544 2059
Suite 511 Email: richard@isochrone.com
Eatontown, NJ 07724
Fred M. Burg
AT&T
307 Middletown-Lincroft Road Phone: (908) 576 4322
Room 3L209 Fax: (908) 576 4689
Lincroft, NJ 07738 Email: fred.burg@att.com
Andrades, Burg [Page 20]