[Search] [txt|pdf|bibtex] [Tracker] [Email] [Nits]

Versions: 00                                                            
 Internet-Draft                                             M. Takefman
                                                            R. Broberg
                                                            Cisco Systems
                                                            P. Lothberg
                                                         July 31st, 1998
             Enabling Byte Stuffing Transparency for RFC-1619
 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).
    This memo provides information for the Internet community.  This memo
    does not specify an Internet standard of any kind.  Distribution of
    this memo is unlimited.
 1. Abstract
    Recent Internet Draft submissions and discussion on the PPP
    Extensions Working Group email list have highlighted transparency
    issues with the PPP over SONET/SDH mapping described in IETF RFC1619
    and RFC1549. The HDLC byte stuffing described by RFC1549 can result
    in a worst case expansion of the actual payload data by a factor of
    2. An algorithm suggested below limits the expansion factor to be a
    maximum of 6% the actual data to be transported.
 2. Introduction
    Byte synchronous PPP (as described in RFC1549) is technique for link
    layer encoding of data streams on byte boundaries to maintain data
    transparency. The transparency processing used in PPP causes
    expansion of the data stream that is dependant on the contents of
    the data stream. On average the expansion factor is small enough to
    be ignored. However, a worst case expansion would result in the
    reduction of the available bandwidth by a factor of 2.
    Transparency processing is required in order to allow frame
    deliniation and the passage of control characters. Transparency
    processing ensures that control characters (0x7E, 0x7D) do not
    appear within the encoded data stream that is mapped into the
    payload. When a control character is encountered during
    the encoding phase the link layer inserts an escape character
    (0x7D) into the output stream and then XORs the control character
    with the value 0x20. This operation is referred to as stuffing as
    it results in one byte being represented by two. The receiver
    operation is quite simple, anytime an escape character is
    encountered it is deleted and the following character is XORed with
    The following example shows part of a data stream before and after
    pre-stuff 0x01 0x02 0x7E 0x7D 0x05 0x7D 0x06 0x7E 0x08
    post-stuff 0x01 0x02 0x7D 0x5e 0x7D 0x5D 0x05 0x7D 0x5D 0x06 0x7D
    0x5E 0x08
    Assuming a random data stream there is a 2 in 256 chance that a
    stuffing operation will occur. Therefore, the average expansion factor
    (due to stuffing) of a PPP encoded stream will be less than 1%.
    The worst case expansion will occur if the frame to be transmitted
    consists of control characters. In this case, the expansion factor
    will be 100%, as every byte is transformed into 2 output bytes.
 3. An option to PPP syncronous byte stuffing
    While the worst case expansion scenario is highly unlikely, it is
    always prudent to avoid problems, however unlikely, when possible.
    The following stuffing compression scheme provides a method for
    bounding the expansion factor.
    The key concept in this compression scheme is to recognize when
    stuff operations will occur within 32 bytes of each other. In this
    case, a new encoding can allow a single stuff operation to replace 2
    stuff operations. An escape character is inserted into the data stream
    followed by a character encoded as follows:
        Bit     Value / Description
        7       1 to differentiate from the standard encoding.
        6       1 if the first stuff operation is a 0x7E.
                0 if the first stuff operation is a 0x7D.
        5       1 if the second stuff operation is a 0x7E.
                0 if the second stuff operation is a 0x7D.
        4:0     the number of bytes between the stuff operations
                0 indicates adjacent bytes.
                31 indicates that 31 bytes are between the control characters.
    The second byte requiring stuffing is deleted from the stream as it
    has already been sent within the encoded byte.
    For the example stream shown above no expansion occurs and the post-stuff
    encoding is given by:
                0x01 0x02 0x7D 0xC0 0x05 0x7D 0xA1 0x08
    At the receiver, when a 0x7D is encounter the MSB of the next byte
    is checked to determine if the compressed stuffing operation
    occured. If so the escape character is deleted and the first
    compressed character is output and a counter is loaded with the
    distance value. If the counter is zero, the next byte to be output is
    the second compressed control character. Otherwise, the bytes following
    the encoded stuff byte are output, and the counter is decremented for
    each byte. Once the counter reaches zero the second compressed character
    is output.
    Compression does not extend across frame boundaries. Therefore the
    transmitter/receiver resets the compression/decompression state
    whenever the end of frame is found.
    Assume a large packet that starts with a control character and
    then has another control character every 33 characters. The
    first 33 characters will be transmitted as 34 characters. This
    repeats until the end of packet. The efficiency is therefore 34/33
    or 1.030303. The degenerate case is when all packets are 34 bytes
    long with a control character at the begining and end. In this case
    the transmitted packet is 36 bytes long and the efficiency is therefore
    36/34 or 1.058824.
 4. Recommendations
    It is recommended that this be considered an optional feature for
    Packet Over Sonet links as defined by RFC1619. An implementation
    done by one of the authors at 622mbits/second leads us to believe
    that this can be scaled to 10gigabits/second. An RFC1619
    implementation with the modification described above limits the
    maximum payload expansion to less than 6% thereby removing any
    concerns regarding the actual contents of the data.
 5. Security Considerations
    RFC1619 as currently proposed does have what may be considered a
    weakness in that the available bandwidth of a given link is a
    function the data to be transported across that link.
    Given that POS links currently are aggregated from many smaller links
    it is considered highly unlikely that a malicous user could effect
    any serious harm on a link. Although the likelyhood of a steady
    stream of control characters passing across the link is extremely
    small the above algorithm is offered as way to bound the expansion
    to less than 6%.
 6. References
    [1] W. Simpson, "PPP over SONET/SDH," RFC 1619, May 1994.
    [2] W. Simpson, "PPP in HDLC-like Framing," RFC 1549, December 1993.
 7. Author Addresses
    M. Takefman
    Cisco Systems
    146 Colonnade Road
    Suite 201
    Nepean, Ontario
    Canada K2E7Y1
    Email: tak@cisco.com
    R. Broberg
    Cisco Systems
    170 West Tasman Drive
    San Jose, CA 94513
    Email: rbroberg@cisco.com
    Peter Lothberg
    12502 Sunrise Valley Drive
    Reston VA, 20196
    Email: roll@stupi.se