INTERNET-DRAFT                                                  J. Heath
September 13, 2002                                             J. Border
Expires: March 13, 2003                           Hughes Network Systems


                   PPP V.44 Compression Protocol

                       draft-heath-ppp-v44-02.txt

   This document is an Internet-Draft and is subject to all provisions
   of Section 10 of RFC2026.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and it 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."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt.

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

Status of this Memo

   This memo is an Internet-Draft that provides information for the
   Internet community.  Distribution of this memo is unlimited.

   Comments are invited and should be addressed to the authors whose
   contact information is in Section 9.

   This Internet-Draft expires on March 13, 2003.

Abstract

   The Point-to-Point Protocol (PPP) provides a standard means for
   transporting multi-protocol datagrams over point-to-point links.

   The PPP Compression Control Protocol (CCP) provides a means to
   negotiate and utilize compression protocols over PPP encapsulated
   links.

   This memo describes a means for compressing PPP encapsulated
   datagrams by utilizing the data compression algorithm that is
   described in International Telecommunication Union (ITU-T)
   Recommendation V.44.  Recommendation V.44 is a modem standard
   but Annex B of the recommendation describes the implementation of
   V.44 in packet networks.  This memo defines the application of V.44,
   with single or multiple compression dictionaries, to the PPP
   Compression Control Protocol (RFC 1962).


Heath                        Internet-Draft                     [Page 1]


PPP V.44 Compression Protocol                             September 2002


Table of Contents

1   Introduction...................................................    2
   1.1   General...................................................    3
   1.2   Background of V.44 Data Compression.......................    3
   1.3   Intellectual Property Rights..............................    4
   1.4   Specification of Requirements.............................    4
2   V.44 Compression Operation.....................................    4
   2.1   Datagram Mode.............................................    5
      2.1.1   Attributes...........................................    5
      2.1.2   Transmit Operation...................................    6
      2.1.3   Receive Operation....................................    6
      2.1.4   Dictionary Synchronization...........................    6
      2.1.5   V.44 Compressed Datagram Format......................    6
      2.1.6   Data Expansion.......................................    7
      2.1.7   Configuration........................................    7
   2.2   Multi-Datagram Mode.......................................    7
      2.2.1   Attributes...........................................    7
      2.2.2   Transmit Operation...................................    7
      2.2.3   Receive Operation....................................    8
      2.2.4   Dictionary Synchronization...........................    8
      2.2.5   V.44 Compressed Datagram Format......................    8
      2.2.6   Data Expansion.......................................    9
      2.2.7   Configuration........................................    9
   2.3   Individual Link Mode......................................    9
      2.3.1   Attributes...........................................    9
      2.3.2   Transmit Operation...................................    9
      2.3.3   Receive Operation....................................   10
      2.3.4   Dictionary Synchronization...........................   10
      2.3.5   Individual Link Compressed Datagram Format...........   11
         2.3.5.1   Number of Dictionaries is 128 or Less...........   11
         2.3.5.2   Number of Dictionaries is More Than 128.........   12
      2.3.6   Data Expansion.......................................   12
      2.3.7   Configuration........................................   13
3   V.44 Configuration Option......................................   13
   3.1   Negotiation Rules.........................................   14
4   V.44 Compressed Data...........................................   15
   4.1   Padding...................................................   15
5   Datagram Integrity.............................................   15
6   Reliable and In-order Delivery of Datagrams....................   15
7   Security Considerations........................................   16
8   IANA Considerations............................................   16
9   References.....................................................   16
10   Authors' Addresses............................................   17
11   Full Copyright Statement......................................   17

1   Introduction

   ITU-T Recommendation V.44 [V44] is based upon the
   Limpel-Zev-Jeff-Heath (LZjH) data compression algorithm.  Throughout
   the remainder of this memo, the terms V.44 and LZjH are synonymous.


Heath                        Internet-Draft                     [Page 2]


PPP V.44 Compression Protocol                             September 2002


1.1   General

   This memo specifies the application of V.44 data compression, a
   lossless data compression algorithm, to PPP datagrams.  V.44 data
   compression is to be used in conjunction with the Point-to-Point
   Protocol (PPP) [PPP] and the PPP Compression Control Protocol (CCP)
   [CCP].  This memo is written with the assumption that the reader has
   an understanding of the PPP and CCP protocols.

   For the PPP application, V.44 can operate using one of three
   compression modes defined as follows:

   1. Datagram Mode: independent datagram compression using V.44 Packet
      Method where a single dictionary is utilized for all virtual links
      and the dictionary is re-initialized between each datagram.  This
      mode uses a minimum amount of memory and does not require the
      reliable, in-order delivery of datagrams.  However the compression
      obtained may be less than with the other modes.  V.44 Packet
      Method is described in Annex B.1 of [V44].

   2. Multi-Datagram Mode: datagram compression using V.44 Multi-Packet
      Method where a single dictionary is utilized for all virtual links
      and several datagrams, from potentially different links, are
      processed as a continuation using a single history buffer.  This
      mode requires the reliable, in-order delivery of datagrams.
      Multi-Datagram Mode generally requires somewhat more memory than
      Datagram Mode but should obtain better compression.  V.44
      Multi-Packet Method is described in Annex B.2 of [V44].

   3. Individual Link Mode: datagram compression using V.44 Multi-Packet
      Method where a separate dictionary is utilized for each virtual
      link and several datagrams on a link are processed as a
      continuation using a separate history buffer for each link.  This
      mode requires dictionary and history buffer memory for each
      virtual link and requires the reliable, in-order delivery of
      datagrams on each link.  However, this mode should obtain the best
      compression of the 3 modes.  V.44 Multi-Packet Method is described
      in Annex B.2 of [V44].

1.2   Background of V.44 Data Compression

   Pre-standardization, V.44 was known as LZjH.  LZjH is similar to the
   algorithm described in [LZ78] although it also has aspects that
   are similar to the algorithm described in [LZ77].  As such, it
   provides the execution speed and low memory requirements of [LZ78]
   with compression ratios that are better than [LZ77].  Originally
   developed for the satellite industry to compress IP datagrams
   independently, it is ideal for the PPP data compression application.

   The LZjH algorithm was modified to compress a continuous stream of
   data for a modem environment and this modified version is the basis


Heath                        Internet-Draft                     [Page 3]


PPP V.44 Compression Protocol                             September 2002


   for Recommendation V.44.  LZjH is an adaptive, general purpose,
   lossless data compression algorithm.  It was selected by the ITU as
   the basis for Recommendation V.44 based on its performance across a
   wide variety of data types, particularly web HTML's, and its per MIP
   and memory utilized compression ratio characteristics (as
   compared to other candidate algorithms).  Its encoder is extremely
   efficient and can encode a redundant string using just a few
   additional bits the second time that string is encountered in the
   data stream.

   To encode a datagram, unmatched characters are encoded as
   ordinals and matched redundant strings of characters are encoded as
   codewords or string-extension lengths that represent the redundant
   strings.  To decode a compressed datagram, the ordinals,
   codewords, and string-extension lengths are interpreted to re-create
   exactly the original datagram.

   For V.44 Packet Method, where each datagram is processed
   independently and dictionaries are re-initialized between datagrams,
   the V.44 algorithm defaults to a dictionary of 1525 entries.  This
   requires a total of only 16K of dictionary memory for the encoder
   and decoder.

   For V.44 Multi-Packet Method, where several datagrams are processed
   separately but as a continuation (i.e. no re-initialization between
   each datagram), the V.44 algorithm defaults to a dictionary of 2048
   entries and a history of 10K bytes.  This requires a total of about
   40K of dictionary and history memory for the encoder and decoder.

   The details of V.44 data compression can be found in [V44].

1.3   Intellectual Property Rights

   The IETF has been notified of intellectual property rights claimed in
   regard to some or all of the specifications contained in this memo.
   For more information, consult the online list of claimed rights.

1.4   Specification of Requirements

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   memo are to be interpreted as described in [KEY].

2   V.44 Compression Operation

   Before any V.44 compressed datagrams may be communicated:

   1. PPP MUST reach the Network-Layer Protocol phase.
   2. V.44 MUST be negotiated as the primary compression algorithm.
   3. The Compression Control Protocol (CCP) MUST reach the Opened
      state.


Heath                        Internet-Draft                     [Page 4]


PPP V.44 Compression Protocol                             September 2002


   Only datagrams with PPP Protocol field numbers in the range 0x0000 to
   0x3FFF, except 0x00FD and 0x00FB, SHALL be passed to the V.44 encoder
   to be compressed.  Datagrams with PPP Protocol field numbers of
   0x00FD or 0x00FB MUST be discarded and not compressed or sent.
   Datagrams with PPP Protocol field numbers outside this range MUST NOT
   be passed to the V.44 encoder and MUST always be sent uncompressed.

   V.44 datagrams are created by the encoding/transmitting processes and
   are identified by either an 0x00FD or 0x00FB in the PPP Protocol ID
   Field (PPP Protocol field).

   The receiving peer of V.44 datagrams SHALL ensure that the data has
   not been corrupted and that packetized segments of the V.44 datagram
   have not been lost prior to passing the compressed information field
   to the V.44 decoder.  Data integrity, reliable in-order delivery, and
   segmentation/re-assembly methods are beyond the scope of this memo.

   The maximum length of the V.44 datagram transmitted over a PPP link
   is the same as the maximum length of the Information field of a PPP
   encapsulated datagram.

   Prior to compression, the uncompressed data begins with the PPP
   Protocol ID Field.  Protocol-Field-Compression MAY be used on this
   value, if it has been successfully negotiated for the link.

   The PPP Protocol ID Field is followed by the original Information
   field.  The length of the uncompressed data field is limited only by
   the allowed size of the compressed data field and the higher protocol
   layers.

   PPP Link Control Protocol packets MUST NOT be sent within V.44
   datagrams.  PPP Network Control Protocol packets MUST NOT be sent
   within V.44 datagrams.

   The following sub-sections describe the operation of the three V.44
   operating modes for compressing datagrams in the PPP application.

2.1   Datagram Mode

   Datagram mode is used when each datagram is to be compressed
   independently of other datagrams, i.e. dictionaries are
   re-initialized between each datagram, regardless of whether the
   stream of datagrams are from a single link or a multi-link bundle.

2.1.1   Attributes

   1. Each datagram is compressed and transmitted separately within a
      single V.44 Compressed Datagram.
   2. Conforms to V.44 Packet Method as described in [V44] section B.1.
   3. Each peer requires just a single dictionary for each direction.
   4. Does not require a history buffer.


Heath                        Internet-Draft                     [Page 5]


PPP V.44 Compression Protocol                             September 2002


   5. Does not require the reliable, in-order delivery of datagrams
      between the compression peers.
   6. Encoder and decoder dictionaries are re-initialized after
      processing each datagram.

2.1.2    Transmit Operation

   Datagrams with a PPP Protocol field value in the range 0x0000 to
   0x3FFF MAY be passed to the V.44 encoder to be compressed.  If
   compression is successful, the entire compressed datagram is placed
   into the PPP information field and the PPP Protocol field value is
   set to 0x00FD to indicate a V.44 compressed datagram.  If compression
   is not successful, the original datagram is transmitted with its
   original value in the PPP Protocol field (uncompressed datagram).

   The V.44 algorithm, initialized for Packet Method, will re-initialize
   the encoder dictionary after processing each datagram.

2.1.3    Receive Operation

   The information field of all valid datagrams with a PPP Protocol
   field value of 0x00FD MUST be passed to the V.44 decoder to be
   decompressed. The decompression process will yield a datagram with
   the original PPP Protocol field and information field.  Datagrams
   with a PPP Protocol field value in the range 0x0000 to 0x3FFF, but
   not 0x00FD, MUST NOT be passed to the decoder since they have not
   been compressed.

   The V.44 algorithm, initialized for Packet Method, will re-initialize
   the decoder dictionary after processing each V.44 datagram.

2.1.4    Dictionary Synchronization

   Both encoder and decoder re-initialize the dictionary between each
   datagram, ensuring dictionary synchronization under all
   circumstances, including out of order delivery and lost datagrams.

2.1.5    V.44 Compressed Datagram Format

   Datagrams that are not successfully compressed are sent in their
   original form.  Refer to [PPP] for possible formats.

   The format of V.44 compressed datagrams of type 0x00FD is shown
   below.  The fields are transmitted from left to right.

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     PPP Protocol  (0x00FD)    |       Compressed Data ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+



Heath                        Internet-Draft                     [Page 6]


PPP V.44 Compression Protocol                             September 2002


   The PPP Protocol field is a 2 octet field, described in [PPP],
   that is set to 0x00FD to indicate a V.44 Compressed datagram.  This
   value MAY be compressed when Protocol-Field-Compression is
   negotiated.

   The Compressed Data is contained in the PPP Information field and
   consists of the compressed original datagram.

2.1.6    Data Expansion

   Data expansion is not possible since those datagrams where
   compression does not result in a smaller datagram are transmitted in
   their original form.

2.1.7    Configuration

   Refer to section 3 for the negotiation of V.44 compression on a link
   and the configuration of Datagram Mode.

2.2   Multi-Datagram Mode

   Multi-datagram mode is used when several datagrams are compressed as
   a continuation, using information in earlier datagrams to compress
   later datagrams, regardless of whether the stream of datagrams are
   from a single link or a multi-link bundle.

2.2.1   Attributes

   1. Each datagram is compressed and transmitted separately within a
      single V.44 Compressed Datagram even though two or more datagrams
      may be compressed before the dictionary is re-initialized.
   2. Conforms to V.44 Multi-Packet Method as described in [V44] section
      B.2.
   3. Each peer requires just a single dictionary and history for each
      direction.
   4. Requires the reliable, in-order delivery of all original
      uncompressed and V.44 compressed datagrams.

2.2.2   Transmit Operation

   Datagrams with a PPP Protocol field value in the range 0x0000 to
   0x3FFF MUST be passed to the V.44 encoder to be compressed.

   If compression is successful, the entire compressed datagram is
   placed into the PPP information field and the PPP Protocol field
   value is set to 0x00FD to indicate a V.44 compressed datagram.

   If compression is not successful, the original datagram is sent with
   its original value in the PPP Protocol field (uncompressed datagram).
   The encoder also MUST re-initialize its dictionary when compression
   is not successful.


Heath                        Internet-Draft                     [Page 7]


PPP V.44 Compression Protocol                             September 2002


2.2.3   Receive Operation

   The information field of all datagrams with a PPP Protocol field
   value of 0x00FD MUST be passed to the V.44 decoder to be
   decompressed.  The decompression process will yield a datagram with
   the original PPP Protocol field and information field.

   Datagrams with a PPP Protocol field value in the range 0x0000 to
   0x3FFF, but not 0x00FD, MUST NOT be passed to the decoder since they
   have not been compressed.  The receiver MUST also re-initialize the
   V.44 decoder dictionary when an uncompressed datagram is received.

2.2.4   Dictionary Synchronization

   When either the encoder dictionary or history becomes filled, the
   V.44 algorithm re-initializes the encoder dictionary (and
   history), and inserts a REINIT control code into the compressed data
   to indicate to the peer decoder that it MUST re-initialize its
   dictionary and history.

   When the encoder is unsuccessful in compressing a datagram, the
   transmitting entity MUST transmit the original datagram and MUST
   re-initialize the encoder dictionary and history.

   When the peer receiving entity receives a datagram that does not
   have a 0x00FD value in its PPP Protocol field, i.e. it is an original
   uncompressed datagram, it MUST NOT pass that datagram to the V.44
   decoder and it MUST re-initializes the decoder dictionary and
   history.

2.2.5   V.44 Compressed Datagram Format

   Datagrams that are not successfully compressed are sent in their
   original form.  Refer to [PPP] for possible formats.

   The format of V.44 compressed datagrams of type 0x00FD is shown
   below.  The fields are transmitted from left to right.

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     PPP Protocol  (0x00FD)    |       Compressed Data ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   The PPP Protocol field is a 2 octet field, described in [PPP],
   that is set to 0x00FD to indicate a V.44 compressed datagram.  This
   value MAY be compressed when Protocol-Field-Compression is
   negotiated.

   The Compressed Data is contained in the PPP Information field that
   consists of the compressed original datagram.


Heath                        Internet-Draft                     [Page 8]


PPP V.44 Compression Protocol                             September 2002


2.2.6   Data Expansion

   Data expansion is not possible since those datagrams where
   compression does not result in a smaller datagram are transmitted in
   their original form.

2.2.7   Configuration

   Refer to section 3 for the negotiation of V.44 compression on a link
   and the configuration of Multi-Datagram Mode.

2.3   Individual Link Mode

   Individual link mode is used when each individual link of a
   multi-link bundle has a separate compression context for some or all
   links and several datagrams on a link are compressed as a
   continuation, using information in earlier datagrams to compress
   later datagrams.

2.3.1   Attributes

   1. Each datagram is compressed and transmitted separately within a
      single V.44 Compressed Datagram even though two or more datagrams
      on a link may be compressed before the dictionary is
      re-initialized.
   2. Conforms to V.44 Multi-Packet Method as described in [V44] section
      B.2.
   3. Each peer requires a separate dictionary and history for each
      separate link for each direction.
   4. Requires the reliable, in-order delivery on each link of all V.44
      individual link compressed datagrams.

2.3.2   Transmit Operation

   All datagrams, for links where V.44 compression is active, with a PPP
   Protocol field value in the range 0x0000 to 0x3FFF MUST be passed to
   the V.44 encoder to be compressed.  The transmitting entity MUST
   ensure that the dictionary used by the encoder to compress the
   datagram corresponds to the correct link.

   An 0x00FB is placed into the PPP Protocol field to indicate a V.44
   individual link compressed datagram.  The dictionary number is placed
   into the Dictionary ID sub-field of the V.44 Control field.

   If compression is successful, the entire compressed datagram is
   placed into the PPP information field and the Compressed Bit in the
   V.44 Control field is set to a 1.

   If compression is not successful, the original datagram, including
   the PPP Protocol field, is placed into the PPP information field and
   the Compressed Bit in V.44 Control field is set to a 0.  The


Heath                        Internet-Draft                     [Page 9]


PPP V.44 Compression Protocol                             September 2002


   transmitting entity MUST also re-initialize the encoder dictionary
   and history corresponding to that datagram's link when compression is
   not successful.

2.3.3   Receive Operation

   Datagrams with a PPP Protocol field value of 0x00FD are invalid and
   MUST be discarded.

   Datagrams with a PPP Protocol field value in the range 0x0000 to
   0x3FFF, but not 0x00FB, are assumed to correspond to links where V.44
   compression is not active and MUST NOT be passed to the V.44 decoder
   by the receiving entity.

   Datagrams with a PPP Protocol field value of 0x00FB are processed by
   the receiving entity, depending upon the value of the Compressed Bit
   in the V.44 Control field, as follows:

   - if the Compressed Bit is a 1, the receiving entity uses the
     Dictionary ID sub-field to access the corresponding dictionary and
     passes the PPP information field to the V.44 decoder for
     decompression.

   - if the Compressed Bit is a 0, the receiving entity forwards the
     datagram located in the PPP Information field without passing it to
     V.44 decoder.  The receiver also MUST use the Dictionary ID
     sub-field to access and re-initialize the corresponding decoder
     dictionary and history.

2.3.4   Dictionary Synchronization

   When either the encoder dictionary or history, corresponding to the
   datagrams link, becomes filled, the V.44 algorithm re-initializes
   that encoder dictionary (and history), and inserts a REINIT control
   code within the compressed data to indicate to the peer decoder that
   it MUST re-initialize the dictionary and history corresponding to the
   dictionary number in the Dictionary ID sub-field of the V.44 Control
   field.

   When the encoder is unsuccessful in compressing a datagram, the
   original datagram is placed into the PPP Information field of the
   V.44 Individual Link Compressed Datagram (PPP Protocol field of
   0x00FB) and the dictionary and history corresponding to the
   uncompressed datagrams link are re-initialized.  Also a 0 value is
   placed into the Compressed Bit in the V.44 Control field.

   When the peer receiving entity receives a V.44 Individual Link
   Compressed Datagram (i.e. an 0x00FB value in its PPP Protocol field)
   with a 0 bit in the Compressed Bit in the V.44 Control field it MUST
   NOT pass that datagram to the V.44 decoder.  It MUST re-initializes
   the decoder dictionary and history corresponding to the value in the


Heath                        Internet-Draft                    [Page 10]


PPP V.44 Compression Protocol                             September 2002


   Dictionary ID sub-field.

2.3.5   Individual Link Compressed Datagram Format

   Datagrams for links where V.44 compression not is active are
   transmitted in their original form.  Refer to [PPP] for possible
   formats.

   When using Individual Link Compression, all datagrams for a link
   where V.44 compression is active MUST be transmitted using the format
   of the Individual Link Compressed Datagram regardless of whether the
   PPP Information field contains a V.44 compressed datagram or an
   original datagram.

   The format of V.44 Individual Link Compressed Datagrams of type
   0x00FB depends upon the number of separate links, i.e. dictionaries,
   that are negotiated between the V.44 compression peers.

2.3.5.1   Number of Dictionaries is 128 or Less

   If the number of negotiated dictionaries is 128 or less then the V.44
   Control field is one byte and the format is as shown below.  The
   fields are transmitted from left to right.

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          PPP Protocol         |      V.44     |      PPP
   |            (0x00FB)           |     Control   |  Information..
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   The PPP Protocol field is a 2 octet field, described in [PPP],
   that is set to 0x00FB to indicate a V.44 Individual Link Compressed
   Datagram.  This value MAY be compressed when
   Protocol-Field-Compression is negotiated.

   The format of the 8 bit V.44 Control field is:

        0   1   2   3   4   5   6   7
      +---+---+---+---+---+---+---+---+
      |        Dictionary ID      | C |
      +---+---+---+---+---+---+---+---+

      where:
        - Dictionary ID (0 - 127) corresponds to a specific link and is
            used to ensure the V.44 encoder and decoder are using the same
            dictionary.

        - C is the Compressed Bit indicating whether the PPP Information
          contains a compressed datagram (C = 1) or an original datagram
          (C = 0).


Heath                        Internet-Draft                    [Page 11]


PPP V.44 Compression Protocol                             September 2002


   The PPP Information field contains either a compressed datagram or an
   original datagram, depending upon the setting of the Compressed Bit
   in the V.44 Control field.

2.3.5.2   Number of Dictionaries is More Than 128

   If the number of negotiated dictionaries is 129 through 32K then the
   V.44 Control field is two bytes and the format is as shown below.
   The fields are transmitted from left to right.

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     PPP Protocol  (0x00FB)    |          V.44 Control         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     PPP Information ..............
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   The PPP Protocol field is a 2 octet field, described in [PPP],
   that is set to 0x00FB to indicate an V.44 Individual Link Compressed
   Datagram.  This value MAY be compressed when
   Protocol-Field-Compression is negotiated.

   The format of the two octet V.44 Control field is:

        0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15
      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
      |                      Dictionary ID                        | C |
      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

      where:
        - Dictionary ID corresponds to a specific link and is used to
            ensure the V.44 encoder and decoder are using the same
            dictionary.

        - C is the Compressed Bit indicating whether the PPP Information
          contains a compressed datagram (C = 1) or an original datagram
          (C = 0).

   The PPP Information field contains either a compressed datagram or an
   original datagram, depending upon the setting of the Compressed Bit
   in the V.44 Control field.

2.3.6   Data Expansion

   The total length of datagrams that do not compress is expanded by up
   to 4 bytes by the addition of a PPP Protocol field and the V.44
   Control field.  In addition, the PPP Information field is expanded by
   up to 2 bytes by including both the original PPP Protocol field and
   the original PPP Information field.



Heath                        Internet-Draft                    [Page 12]


PPP V.44 Compression Protocol                             September 2002


   Thus, when using Individual Link Mode, both peers MUST negotiate a
   Maximum Receive Unit, on all links where V.44 compression is used,
   that is sufficiently larger than a normal maximum length datagram to
   account for this expansion.

2.3.7   Configuration

   Refer to Section 3 for the negotiation of V.44 compression on a link
   and the configuration of V.44 Individual Link Mode.

3   V.44 Configuration Option

   The V.44 Configuration Option of the CCP negotiates the use of V.44
   compression between two peers.  If a common compression algorithm can
   not be negotiated then no compression is used.

   All implementations MUST support the default values.

   A summary of the V.44 Configuration Option format is shown below.
   The fields are transmitted from left to right.

    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      |    Length     |     Mode/Dictionary Count     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        *Dictionary Size       |       *History Length         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


   Type

      27   (i.e. V.44 Compression)

   Length

      4, 6, or 8

   Mode/Dictionary Count

      The Mode/Dictionary Count field is two octets, most significant
      octet first, and specifies the V.44 Compression Mode and the
      number of individual link dictionaries proposed (Individual Link
      Mode only).  Mode selection values are:

      0 = Datagram Mode (one dictionary and no history)
      1 = Multi-Datagram Mode (one dictionary with history)
      2 or more = Individual Link Mode and proposed number of
                  dictionaries each with a corresponding history




Heath                        Internet-Draft                    [Page 13]


PPP V.44 Compression Protocol                             September 2002


   Dictionary Size

      The Dictionary Size field is optional.  If it is not present then
      the History Length field MUST NOT be present either.  If present,
      the Dictionary Size field is two octets and contains the number of
      proposed entries in the dictionary.  The range is from 256 to
      16,384 and the default depends upon the mode proposed as follows:

      - if Datagram Mode is proposed the default is 1525.
      - otherwise the default is 1024.

      A peer is not required to propose as large a dictionary size as an
      implementation indicates that it can accept.  However, it should
      be noted that resources MUST be allocated in a peer to support the
      number of dictionary entries proposed by that peer in this field.

   History Length

       The History Length field is optional and, if present, MUST be
       ignored if Datagram Mode is proposed in the Mode/Dictionary Count
       field.  The History Length field is two octets and contains the
       proposed length of the history.  The range is from 512 to 65,535.
       The default is 3 times the Dictionary Size to be consistent with
       [V44] Annex B.2.  However, for best compression it should be 4 or
       more times the Dictionary Size.  The History Length MUST NOT be
       less than twice the Dictionary Size.

3.1   Negotiation Rules

      1. If either peer proposes Datagram Mode, then Datagram Mode is
         used.
      2. If neither peer proposes Datagram Mode, and either peer
         proposes Multi-Datagram Mode, then Multi-Datagram Mode is used.
      3. If both peers propose Individual Link Mode, then Individual
         Link Mode is used.  The number of dictionaries selected is the
           lower of the two numbers proposed by the peers.
      4. If the Dictionary Size field is not present from either peer,
         then the default dictionary size is selected.
      5. If the Dictionary Size field is present from both peers, then
         the dictionary size selected is the lower of the two numbers
           proposed by the peers.
      6. If the History Length field is not present from either peer,
         then the default history length is selected (i.e. 3 times the
           dictionary size).
      7. If the History Length field is present from both peers, then
         the history length selected is the lower of the two numbers
           proposed by the peers (but not less than 2 times the dictionary
           size).





Heath                        Internet-Draft                    [Page 14]


PPP V.44 Compression Protocol                             September 2002


4   V.44 Compressed Data

   The PPP information field MUST contain only one datagram in
   compressed form.  The length of this field is always an integer
   number of octets.  There MUST BE only one FLUSH control code per
   block of compressed data.

   The format of the PPP information field is one block of compressed
   data as defined in ITU-T Recommendation V.44 and its Annex B.  ITU-T
   Recommendation V.44 defines the implementation of the core elements
   of the V.44 algorithm, its encoder and decoder.  Annex B of the
   recommendation defines the implementation of the V.44 algorithm in
   packet networks or applications such as PPP.

4.1   Padding

   The PPP Information field of a V.44 compressed datagram always ends
   with a FLUSH control code that is inserted by the V.44 encoder and is
   used to signal the end of compressed data.  The V.44 encoder also
   adds 1 to 7 additional bits to obtain octet alignment, if necessary.
   Thus, any full octets beyond the octet containing the remaining bits
   of the FLUSH control code are considered padding that is not created
   or used by the V.44 algorithm.

5   Datagram Integrity

   Due to the very nature of data compression, the V.44 decoder is not
   capable of determining that a datagram it has received for
   decompression is corrupt or has otherwise been changed since it was
   generated by its peer encoder.  Thus, it is highly recommended that a
   mechanism, or mechanisms, be implemented at the PPP link layer to
   ensure the integrity of datagrams that are received by a PPP peer.
   Mechanisms such as a two octet Cyclic Redundancy Check are commonly
   used for this purpose.  However, the choice of mechanisms and their
   definition are beyond the scope of this memo.

   A PPP peer that detects that the integrity of a received datagram has
   been compromised MUST NOT pass the datagram (if a V.44 Compressed or
   Individual Link Compressed Datagram) to the V.44 decoder.  Further,
   if either Multi-Datagram or Individual Link mode is being used, the
   peer SHALL assume that dictionary synchronization has been or will be
   lost and SHOULD terminate the link or use the mechanisms defined in
   [CCP] to indicate the loss of dictionary synchronization.

6   Reliable and In-order Delivery of Datagrams

   The Multi-Datagram and Individual Link modes of using V.44
   compression in PPP require the reliable and in-order delivery of both
   original (uncompressed) and V.44 compressed datagrams.  The
   mechanisms utilized by the PPP peers to ensure the reliable and
   in-order delivery of datagrams are beyond the scope of this memo.


Heath                        Internet-Draft                    [Page 15]


PPP V.44 Compression Protocol                             September 2002


   However, a reliable transport, such as LAPB [PRT], MUST be used.

   A PPP peer that detects a lost or out-of-order datagram, while using
   Multi-Datagram or Individual Link mode, MUST NOT pass this or
   subsequent compressed datagrams to the V.44 decoder.  Further, the
   peer SHALL assume that dictionary synchronization has been or will be
   lost and SHOULD terminate the link or use the mechanisms defined in
   [CCP] to indicate the loss of dictionary synchronization.

7   Security Considerations

   Security issues are not discussed in this memo.  The use of the V.44
   compression algorithm with PPP is not believed to have any different
   security implications than the use of other compression algorithms.

   Note that, even though a compression algorithm obscures data on the
   wire, it does not do so in a secure fashion!  Any eavesdropper can
   remove the obscurity with a relatively trivial amount of effort.

8   IANA Considerations

   This memo introduces no new name or numbering spaces to be managed
   by IANA.  Any numbers from existing IANA numbering spaces required
   by this memo have already been allocated.

9   References

   [PPP]     Simpson, W., Editor, "The Point-to-Point Protocol (PPP)",
             STD 51, RFC 1661, Daydreamer, July 1994.

   [CCP]     Rand, D., "The PPP Compression Control Protocol (CCP)", RFC
             1962, July 1996.

   [V44]     ITU Telecommunication Standardization Sector (ITU-T)
             Recommendation V.44 "Data Compression Procedures", November
             2000.

   [LZ77]    Lempel, A., and Ziv, J., "A Universal Algorithm for
             Sequential Data Compression", IEEE Transactions On
             Information Theory, Vol. IT-23, No. 3, May 1977.

   [LZ78]    Lempel, A., and Ziv, J., "Compression of Individual
             Sequences via Variable Rate Coding", IEEE Transactions On
             Information Theory, Vol. IT-24, No. 5, Sep 1978.

   [KEY]     Bradner, S., "Key words for use in RFCs to Indicate
             Requirement Levels", BCP 14, RFC 2119, March 1997.

   [PRT]     Rand, D., "PPP Reliable Transmission", RFC 1663, Novell,
             July 1994.



Heath                        Internet-Draft                    [Page 16]


PPP V.44 Compression Protocol                             September 2002


10   Authors' Addresses

   Jeff Heath
   Hughes Network Systems
   10450 Pacific Center Court
   San Diego, CA  92121

   Phone: 858-452-4826
   Fax:   858-597-8979
   EMail: jheath@hns.com

   John Border
   Hughes Network Systems
   11717 Exploration Lane
   Germantown, MD  20876

   Phone: 301-548-6819
   Fax:   301-548-1196
   EMail: border@hns.com

11   Full Copyright Statement

   Copyright (C) The Internet Society (2002).  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.

   This Internet-Draft expires on March 13, 2003.




Heath                        Internet-Draft                    [Page 17]