summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc1967.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc1967.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc1967.txt')
-rw-r--r--doc/rfc/rfc1967.txt1011
1 files changed, 1011 insertions, 0 deletions
diff --git a/doc/rfc/rfc1967.txt b/doc/rfc/rfc1967.txt
new file mode 100644
index 0000000..5d50c22
--- /dev/null
+++ b/doc/rfc/rfc1967.txt
@@ -0,0 +1,1011 @@
+
+
+
+
+
+
+Network Working Group K. Schneider
+Request for Comments: 1967 ADTRAN, Inc.
+Category: Informational R. Friend
+ Stac Technology
+ August 1996
+
+
+ PPP LZS-DCP Compression Protocol (LZS-DCP)
+
+Status of This Memo
+
+ 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.
+
+Abstract
+
+ The Point-to-Point Protocol (PPP) [1] provides a standard method for
+ transporting multi-protocol datagrams over point-to-point links.
+
+ The PPP Compression Control Protocol [2] provides a method to
+ negotiate and utilize compression protocols over PPP encapsulated
+ links.
+
+ This document describes the use of the Stac LZS data compression
+ algorithm for compressing PPP encapsulated packets, using a DCP
+ header [6]. This protocol is an enhanced version of the non-DCP
+ (Option 17) PPP Stac LZS compression protocol [5], and will be
+ referred to as the LZS-DCP Compression Protocol.
+
+Table of Contents
+
+ 1. Introduction .......................................... 2
+ 1.1 Licensing ....................................... 3
+ 1.2 Specification of Requirements ................... 3
+ 1.3 Terminology ..................................... 3
+ 2. LZS-DCP Packets ....................................... 4
+ 2.1 Example LZS-DCP Packets ......................... 5
+ 2.2 Padding ......................................... 6
+ 2.3 Reliabliity and Squencing ....................... 6
+ 2.4 Data Expansion .................................. 6
+ 2.5 Packet Format ................................... 7
+ 2.5.1 PPP Protocol .................................... 7
+ 2.5.2 DCP-Header ...................................... 8
+ 2.5.3 History Number .................................. 9
+ 2.5.4 Sequence Number ................................. 9
+ 2.5.5 Data ............................................ 10
+ 2.5.6 Longitudinal Check Byte ......................... 10
+
+
+
+Schneider & Friend Informational [Page 1]
+
+RFC 1967 LZS-DCP August 1996
+
+
+ 2.5.7 Compressed Data ................................. 11
+ 3. Sending Compressed Datagrams ..................... 11
+ 3.1 Transmitter Process ............................. 11
+ 3.2 Receiver Process ................................ 12
+ 3.3 History Maintenance ............................. 13
+ 3.4 Anti-Expansion Mechanism ........................ 14
+ 3.5 History Resynchronization Mechanism ............. 14
+ 4. Configuration Option Format ........................... 15
+ SECURITY CONSIDERATIONS ...................................... 16
+ REFERENCES ................................................... 17
+ CHAIR'S ADDRESS .............................................. 17
+ AUTHORS' ADDRESSES ........................................... 18
+
+1. Introduction
+
+ Starting with a sliding window compression history, similar to LZ1
+ [3], Stac Electronics developed a compression algorithm identified as
+ Stac LZS. A PPP Compression Protocol for this compression algorithm
+ was developed and published [5]. That protocol was taken as a basis
+ for data compression work done in TIA for DSU/CSUs. As a part of
+ that standardization process, the concept of a portable Data
+ Compression Protocol (DCP) was introduced [6]. The resulting
+ (pending) TIA/EIA-655 standard uses this LZS-DCP protocol, which
+ ncorporates DCP into a PPP compression protocol for Stac LZS. A very
+ similar protocol is currently out for ballot in the Frame Relay
+ Forum. (It is identical except for the size of the history number
+ field.)
+
+ This publication of the LZS-DCP compression protocol is in the
+ interest of providing a common compression protocol for Stac-LZS, and
+ to provide features that are not available with the LZS compression
+ protocol [5]. Some of the differences between the LZS-DCP and LZS
+ (compression type 17) protocols are as follows:
+
+ 1) LZS-DCP provides an option which allows packets containing
+ uncompressible data to be transferred without requiring the
+ compression history to be cleared, potentially allowing a
+ higher compression ratio. A bit is included in the DCP
+ header to indicate whether the packet contains compressed or
+ uncompressed data.
+
+ 2) LZS-DCP uses reset request and acknowledgment bits in the DCP
+ header that is included on each packet rather than using
+ CCP's reset request and acknowledge packets, which may result
+ in fewer discarded data packets during the REQ/ACK handshake.
+
+ 3) LZS-DCP allows simultaneous use of both sequence numbers and
+ the LCB for compression error detection.
+
+
+
+Schneider & Friend Informational [Page 2]
+
+RFC 1967 LZS-DCP August 1996
+
+
+ The Stac LZS compression algorithm supports both single and multiple
+ compression histories. A single compression history will require the
+ minimum amount of memory to implement, but may not provide as much
+ compression as a multiple history implementation.
+
+ Often, many streams of information are interleaved over the same
+ physical link. Each virtual connection will transmit data that is
+ independent of other virtual connections. Using multiple compression
+ histories can improve the compression ratio of a communication link
+ by associating separate compression histories with separate virtual
+ links of communication.
+
+1.1. Licensing
+
+ Source and object licenses are available on a non-discriminatory
+ basis. Hardware implementations are also available. Contact Stac
+ Electronics (hardware.sales@stac.com) for further information.
+
+1.2. Specification of Requirements
+
+ In this document, several words are used to signify the requirements
+ of the specification. These words are often capitalized.
+
+ MUST This word, or the adjective "required", means that the
+ definition is an absolute requirement of the specification.
+
+ MUST NOT This phrase means that the definition is an absolute
+ prohibition of the specification.
+
+ SHOULD This word, or the adjective "recommended", means that there
+ may exist valid reasons in particular circumstances to
+ ignore this item, but the full implications MUST be
+ understood and carefully weighed before choosing a
+ different course.
+
+ MAY This word, or the adjective "optional", means that this
+ item is one of an allowed set of alternatives. An
+ implementation which does not include this option MUST be
+ prepared to interoperate with another implementation which
+ does include the option.
+
+1.3. Terminology
+
+ This document frequently uses the following terms:
+
+ datagram The unit of transmission in the network layer (such as IP).
+ A datagram may be encapsulated in one or more packets
+ passed to the data link layer.
+
+
+
+Schneider & Friend Informational [Page 3]
+
+RFC 1967 LZS-DCP August 1996
+
+
+ frame The unit of transmission at the data link layer. A frame
+ may include a header and/or a trailer, along with some
+ number of units of data.
+
+ packet The basic unit of encapsulation, which is passed across the
+ interface between the network layer and the data link
+ layer. A packet is usually mapped to a frame; the
+ exceptions are when data link layer fragmentation is being
+ performed, or when multiple packets are incorporated into a
+ single frame.
+
+ peer The other end of the point-to-point link.
+
+ silently discard
+
+ This means the implementation discards the packet without
+ further processing. The implementation SHOULD provide the
+ capability of logging the error, including the contents of
+ the silently discarded packet, and SHOULD record the event
+ in a statistics counter.
+
+2. LZS-DCP Packets
+
+ Before any LZS-DCP packets are communicated, PPP MUST reach the
+ Network-Layer Protocol phase, and the CCP Control Protocol MUST reach
+ the Opened state.
+
+ Exactly one LZS-DCP datagram is encapsulated in the PPP Information
+ field, where the PPP Protocol field indicates type hex 00FD
+ (compressed datagram) or type hex 00FB (Individual link compressed
+ datagram). Type hex 00FD is used when compression is negotiated over
+ a single physical link or when compression is negotiated over a
+ single bundle consisting of multiple physical links. Type hex 00FB
+ is used when compression is negotiated separately over individual
+ physical links to the same destination. For more information, please
+ refer to PPP Compression Control Protocol.
+
+ The maximum length of the LZS-DCP datagram transmitted over a PPP
+ link is the same as the maximum length of the Information field of a
+ PPP encapsulated packet.
+
+ Prior to compression, the uncompressed data begins with the PPP
+ Protocol ID Field. Protocol-Field-Compression MAY be used on this
+ value, if 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
+
+
+
+Schneider & Friend Informational [Page 4]
+
+RFC 1967 LZS-DCP August 1996
+
+
+ layers.
+
+ PPP Link Control Protocol packets MUST NOT be sent within LZS-DCP
+ packets. PPP Network Control Protocol packets MUST NOT be sent
+ within LZS-DCP packets.
+
+2.1. Example LZS-DCP packets (shown using PPP in HDLC-like framing,
+ using Address-and-Control-Field-Compression and Protocol-Field-
+ Compression. - RFC 1662 )
+
+ Compressed Packet:
+
+ PPP | | PPP
+ PID | HDR SEQ DATA LCB | FCS
+ +-----+-----+-----+---................---+-----+-----+
+ | F D | C 0 | n n | Compressed Data | y y | z z |
+ +-----+-----+-----+---................---+-----+-----+
+ / \
+ / Compression \
+ / Transformation \
+ / \
+ /PPP \
+ / PID PPP Information Field \
+ +-----+----....................----+
+ | x x | upper layer protocol data |
+ +-----+----....................----+
+
+
+ Uncompressed Packet
+
+ PPP | | PPP
+ PID | HDR SEQ DATA | FCS
+ +-----+-----+-----+---................---+-----+
+ | F D | 8 0 | n n | Un-compressed Data | z z |
+ +-----+-----+-----+---................---+-----+
+ / \
+ / \
+ / \
+ / \
+ /PPP \
+ / PID PPP Information Field \
+ +-----+----....................----+
+ | x x | upper layer protocol data |
+ +-----+----....................----+
+
+ where: C0 and 80 are representative LZS-DCP headers; nn, xx, yy,
+ and zz are values determined by the packet's context.
+
+
+
+
+Schneider & Friend Informational [Page 5]
+
+RFC 1967 LZS-DCP August 1996
+
+
+2.2. Padding
+
+ PPP padding is not allowed in a LZS-DCP packet. However, on
+ compressed packets, padding may be accomplished by extending the
+ data field with zeros following the last compressed data octet
+ (see Section 2.1.1). This is referred to as LZS Padding. The
+ LCB, if present, MUST be the octet preceding the frame CRC.
+
+2.3. Reliability and Sequencing
+
+ When no Compression History is kept, the algorithm does not depend
+ on a reliable link, and does not require that packets be delivered
+ in sequence. However, per packet compression results in a lower
+ compression ratio than it could be on a stream.
+
+ Some reasons for clearing the history on a per packet basis
+ include:
+
+ - The link has a high error rate.
+ - The resources of the transmitter or receiver limit the ability
+ to maintain a compression history between packets.
+
+ When one or more compression Histories are negotiated, the packet
+ sequence MUST be preserved within specific History Numbers. There
+ is no sequence requirement between different History Numbers.
+
+ When using one or more compression histories, the implementation
+ MUST rely on either a lower layer reliable link protocol (RFC
+ 1663), use a technique to keep the compressor and decompressor
+ histories in synchronization, or both. The LZS-DCP protocol
+ provides the Request-Req and Request-Ack bits in the DCP header
+ for this purpose. Since this synchronization is done on a per
+ history basis, the history number fields are required to be the
+ same size in both directions of the link. Any data contained in
+ the packet is processed after the signaling bits are processed.
+
+ The transmitter MAY clear a Compression History at any time.
+
+ The transmitter MUST clear a history after a receiving a Reset-
+ Request for a given History Number.
+
+2.4. Data Expansion
+
+ The maximum expansion of Stac LZS is 12.5%.
+
+ A Maximum Receive Unit (MRU) MAY be negotiated that is 12.5%
+ larger than the size of a normal packet. Then, packets can always
+ be sent compressed regardless of expansion.
+
+
+
+Schneider & Friend Informational [Page 6]
+
+RFC 1967 LZS-DCP August 1996
+
+
+ The transmitter MAY send an uncompressed LZS-DCP packet at any
+ time, although the typical use of uncompressed LZS-DCP packets is
+ as an anti-expansion mechanism.
+
+ When the expansion plus compression header exceeds the size of the
+ peer's MRU for the link, the data MUST be sent as an uncompressed
+ LZS-DCP packet.
+
+ An uncompressed LZS-DCP packet is transmitted according to the
+ format shown in Section 2.1, with the C/U bit set to 0
+ (Uncompressed-Data). If the Configuration Option Field 'Process
+ Mode', is set to a value of 1 (Process-Uncompressed), uncompressed
+ LZS-DCP packets are processed by both the compressor and the
+ decompressor, updating the histories of each. If the Process Mode
+ Field is set to a value of 0 (None), and the compressor has
+ modified its history before sending the uncompressed packet, the
+ compressor history MUST be clear.
+
+2.5. Packet Format
+
+ A summary of the LZS-DCP packet format is shown below. The fields
+ are transmitted from left to right.
+
+ 0 1 2
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | PPP Protocol | DCP-Header |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | (History Number) | (Seq Num) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Data ...
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | (LCB) |
+ +-+-+-+-+-+-+-+-+
+
+2.5.1. PPP Protocol
+
+ The PPP Protocol field is described in the Point-to-Point Protocol
+ Encapsulation [1].
+
+ When the LZS-DCP compression protocol is successfully negotiated
+ by the PPP Compression Control Protocol [2], the value is 00FD or
+ 00FB hex. This value MAY be compressed when Protocol-Field-
+ Compression is negotiated.
+
+
+
+
+
+
+
+Schneider & Friend Informational [Page 7]
+
+RFC 1967 LZS-DCP August 1996
+
+
+2.5.2. DCP-Header
+
+ The DCP-Header is nominally one octet in length, but may be
+ extended through the use of the extension bit.
+
+ The format of the DCP-Header is as follows:
+
+ 0 1 2 3 4 5 6 7
+ +-----+-----+-----+-----+-----+-----+-----+-----+
+ | E | C/U | R-A | R-R | Res | Res | Res | C/D |
+ +-----+-----+-----+-----+-----+-----+-----+-----+
+
+ E - Extension Bit
+
+ The E bit is the extension bit. If set to 0, it indicates that
+ another octet of the DCP-Header is present. Currently, this
+ bit is always set to 1, since the DCP-Header field is only one
+ octet long.
+
+ C/U - Compressed/Uncompressed Bit
+
+ The C/U indicates whether the data field contains compressed or
+ uncompressed data. A value of 1 indicates compressed data
+ (often referred to as a compressed packet), and a value of 0
+ indicates uncompressed data (or an uncompressed packet).
+
+ R-A - Reset-Ack
+
+ The R-A bit is used to inform the decompressing peer that
+ the history buffer specified by the history number in the
+ packet was in the cleared state just before the data contained
+ in the packet was processed by the compression transformation
+ (see section 3., Sending Compressed Datagrams). This bit MUST
+ be set to a value of "1" to indicate a Reset-Ack, and to
+ acknowledge a receive failure (R-R) (see section 3., Sending
+ Compressed Datagrams). This bit is specific to the history
+ number of the packet containing it.
+
+ R-R - Reset-Request
+
+ The R-R bit is used to request that the compressing peer
+ clear the history buffer specified by the history number in the
+ packet. This bit MUST be set to a value of "1" to indicate a
+ Reset-Request, and to respond to a receive failure (R-R) (see
+ section 3., Sending Compressed Datagrams). This bit is
+ specific to the history number of the packet containing it.
+
+
+
+
+
+Schneider & Friend Informational [Page 8]
+
+RFC 1967 LZS-DCP August 1996
+
+
+ Res - Reserved
+
+ These bits are reserved and MUST be set to 0
+
+ C/D - Control/Data
+
+ This bit is used by DCP to provide in-band negotiation in
+ applications where out-of-band negotiation methods are not
+ provided (i.e. Frame Relay). Since CCP provides an out of band
+ negotiating mechanism, this feature is not used in this
+ application. All packets MUST set this bit to a value of 0,
+ which signifies that the packet is a data packet. (Packets
+ containing only Reset- Requests are classified as data
+ packets.)
+
+2.5.3. History Number
+
+ The number of the compression history which was used, ranging from
+ 1 to the negotiated value in the History Count field.
+
+ If the negotiated History Count is less than 2, this field is
+ removed. If the negotiated History Count is 2 or more, but less
+ than 256, this field is 1 octet. If 256 or more histories are
+ negotiated, this field is 2 octets, most significant octet first.
+
+ If multiple histories are used in one direction on a link, the
+ history number field MUST be present on all packets in both
+ directions, and sized according to the largest number of histories
+ in either direction.
+
+ If multiple histories are used, this field MUST be present in
+ uncompressed as well as compressed packets.
+
+2.5.4. Sequence Number
+
+ The sequence number field is one octet in length. When the check
+ mode field is set to the "Sequence Number" or "Sequence Number +
+ LCB" options, the sequence number field MUST be present in all
+ data compression packets that contain a data field.
+
+ The value of the sequence number field (the sequence number of the
+ packet) MUST begin with "1" and increment modulo 256 on successive
+ packets that contain data fields. This number is relative to the
+ history number used.
+
+ On receipt of a packet with the R-A bit set to "0", if the
+ sequence number of the packet is any number other than (N+1) mod
+ 256, where N is the sequence number of the last packet received
+
+
+
+Schneider & Friend Informational [Page 9]
+
+RFC 1967 LZS-DCP August 1996
+
+
+ for the same history, or an initial value of "0", a receive
+ failure for that history has occurred. The receive failure MUST
+ be handled according to the synchronization procedure in section
+ 3.5.
+
+ The sequence number MUST NOT be reset by the transmitter when a
+ packet containing a Reset-Ack is sent. The decompressor MUST
+ resynchronize its sequence number reference for the indicated
+ history when a packet containing a Reset-Ack is received.
+
+2.5.5. Data
+
+ The data field MUST contain a single datagram in either compressed
+ or uncompressed form, depending on the state of the C/U bit in the
+ Header. This length of this field is always be an integer number
+ of octets. This field is required in all packets that do not have
+ the R-R bit set to "1".
+
+ If the C/U bit is set to "0", the data field contains the
+ uncompressed form of the datagram.
+
+ If the C/U bit is set to "1", the form of the data field is one
+ block of compressed data as defined in 3.2 of X3.241-1994, with
+ the following exceptions: 1) the end marker may be followed with
+ additional octets containing only zeros; 2) if the final octet in
+ the block of compressed data has a value of "0", then it MAY be
+ removed from the data field.
+
+ There is only one end marker per block of compressed data.
+
+2.5.6. Longitudinal Check Byte
+
+ The LCB field is one octet in length, and if present MUST be the
+ last octet in the data compression packet. When the check-mode
+ field is set to "LCB" or "Sequence Number + LCB", this field MUST
+ be present in all packets where the data field contains compressed
+ data. This field MUST NOT be present in data compression packets
+ where the data field contains uncompressed data. This field
+ contains the result of the LCB calculation, in accordance with the
+ following paragraph.
+
+ The LCB octet is the Exclusive-OR of FF(hex) and each octet of the
+ uncompressed datagram (prior to the compression transformation).
+ On receipt, the receiver computes the Exclusive-OR of FF(hex) and
+ each octet of the decompressed packet. If this value does not
+ match the received LCB, then a receive failure for that history
+ has occurred. The receive failure is handled according to the
+ history synchronization procedure in section 3.5.
+
+
+
+Schneider & Friend Informational [Page 10]
+
+RFC 1967 LZS-DCP August 1996
+
+
+2.5.7. Compressed Data
+
+ The Stac LZS compression algorithm is Defined in ANSI X3.241-1994
+ [7]. The format of the compressed data is repeated here for
+ informational purposes ONLY.
+
+ <Compressed Stream> := [<Compressed String>] <End Marker>
+ <Compressed String> := 0 <Raw Byte> | 1 <Compressed Bytes>
+
+ <Raw Byte> := <b><b><b><b><b><b><b><b> (8-bit byte)
+ <Compressed Bytes> := <Offset> <Length>
+
+ <Offset> := 1 <b><b><b><b><b><b><b> | (7-bit offset)
+ 0 <b><b><b><b><b><b><b><b><b><b><b> (11-bit offset)
+ <End Marker> := 110000000
+ <b> := 1 | 0
+
+ <Length> :=
+ 00 = 2 1111 0110 = 14
+ 01 = 3 1111 0111 = 15
+ 10 = 4 1111 1000 = 16
+ 1100 = 5 1111 1001 = 17
+ 1101 = 6 1111 1010 = 18
+ 1110 = 7 1111 1011 = 19
+ 1111 0000 = 8 1111 1100 = 20
+ 1111 0001 = 9 1111 1101 = 21
+ 1111 0010 = 10 1111 1110 = 22
+ 1111 0011 = 11 1111 1111 0000 = 23
+ 1111 0100 = 12 1111 1111 0001 = 24
+ 1111 0101 = 13 ...
+
+3. Sending Compressed Datagrams
+
+ The reliable and efficient transport of datagrams on the data link
+ depends on the following processes.
+
+3.1. Transmitter Process
+
+ The compression operation results in either compressed or
+ uncompressed data. When a network datagram is received, it is
+ assigned to a particular history buffer and processed according to
+ ANSI X3.241-1994 to form compressed data or used as is to form
+ uncompressed data. Prior to the compression operation, if a
+ Reset-Request is outstanding for the history buffer to be used,
+ the buffer is cleared. In performing the compression operation,
+ if the process mode field is set to the value None ("0"), the
+ history MUST only be updated if the result is compressed data. If
+ process mode field is set to the value Process-Uncompressed ("1"),
+
+
+
+Schneider & Friend Informational [Page 11]
+
+RFC 1967 LZS-DCP August 1996
+
+
+ the history MUST be updated when either compressed data or
+ uncompressed data is produced. Uncompressed data MAY be sent at
+ any time. Uncompressed data MUST be sent if compression causes
+ enough expansion to cause the data compression datagram size to
+ exceed the Information field's MRU.
+
+ If the Process Mode field is set to the value None ("0") and the
+ compressor has modified the history buffer before sending an
+ uncompressed datagram, the history buffer MUST be cleared before
+ the next datagram is processed.
+
+ The output of the compression operation is placed in the
+ information field of the datagram. The C/U bit is set according
+ to whether the data field contains compressed or uncompressed
+ data. If the sequence number field is present according the value
+ of the check mode field, the sequence number counter for the
+ applicable history number MUST be incremented and its value placed
+ in the sequence number field. If the data field contains
+ compressed data, and Check Mode field is set accordingly, the LCB
+ field is present and its value is computed as specified in section
+ 2.2.6.
+
+ Upon reception of a packet containing a Reset-Request, the
+ transmitting compressor MUST be cleared to an initial state, which
+ includes clearing the history buffer. If the data field of the
+ packet containing the Reset-Request contains data, it is delivered
+ to the local receiver as a normal data packet. In addition to the
+ reset of the compressor, a packet MUST be transmitted with Reset-
+ Ack bit set to 1. The data field of this packet MUST be filled
+ with data. If no data is ready for transmission, the transmitter
+ MUST wait until data is ready before sending the Reset-Ack.
+
+ If the history buffer is in the clear state (the history buffer
+ contains no data bytes) prior to performing the compression
+ operation, the resulting compressed or uncompressed packet MUST be
+ sent with the R-A bit set to "1".
+
+3.2. Receiver Process
+
+ When a data compression datagram is received from the peer, the
+ R-R and R-A bits MUST be checked. If the R-R bit is set, the
+ local compression engine MUST be signaled that a Reset-Request has
+ been received for the history specified by the history number
+ field. If the R-A bit is set, any outstanding receive failure for
+ the specified history MUST be cleared. If no receive failure is
+ outstanding, and the sequence number field is present, its value
+ checked. If a receive failure has occurred, it MUST be handled
+ according to the history resynchronization mechanism described
+
+
+
+Schneider & Friend Informational [Page 12]
+
+RFC 1967 LZS-DCP August 1996
+
+
+ below, and the remainder of the datagram is discarded. If no
+ receive failure is detected, the data is assigned to the indicated
+ decompression history buffer and processed according to process
+ mode field and C/U bit.
+
+ If the C/U bit is set to "1", a single octet containing the value
+ 0x00 MUST be appended to the data field and the resulting
+ compressed data block MUST be decompressed according to ANSI
+ X3.241-1994. If the LCB field is present on the received
+ datagram, an LCB for the uncompressed data MUST be computed and
+ checked against the received LCB according to section 2.1. If a
+ receive failure has occurred, it MUST be handled according to the
+ History Resynchronization Mechanism described below.
+
+ If the C/U bit is set to "0" and the process mode field is set to
+ the value Process-Uncompressed ("1"), the specified decompression
+ history buffer MUST be updated with the received uncompressed
+ data.
+
+ If the C/U bit is set to "0" and process mode field is set to the
+ value None ("0"), the specified decompression history buffer MUST
+ NOT be modified.
+
+ If the R-A bit is set to "1", the receiving decompressor MAY be
+ reset to an initial state. (However, due to the characteristics
+ of the Stac LZS algorithm, a decompressor reset is not required).
+ After reset, any compressed or uncompressed data contained in the
+ packet is processed.
+
+ On the occurrence of a receive failure, an implementation MUST
+ transmit a packet with the R-R bit set to "1" (a Reset-Request)
+ and with the history number matching the history that had the
+ failure. The data field may be present if data is waiting to be
+ transported for that history, or the R-R bit may be set in a
+ packet transmitted without sequence number, data, or LCB fields.
+ Once a receive failure has occurred, the data in any subsequent
+ packets received for that history MUST be discarded until a packet
+ containing a Reset-Ack is received. It is the responsibility of
+ the receiver to ensure the reliability of the reset request-
+ acknowledge mechanism. This may require the transmission of an
+ additional Reset-Request before a Reset-Ack will be received.
+
+3.3. History Maintenance
+
+ The History Count field determines the number of history buffers
+ to be maintained for the compression protocol. For example, each
+ history buffer could represent a separate logical connection
+ between the data compression peers. When maintaining a history,
+
+
+
+Schneider & Friend Informational [Page 13]
+
+RFC 1967 LZS-DCP August 1996
+
+
+ the peers MUST use link error detection and signaling to ensure
+ that both the compressor and decompressor copies of each history
+ buffer are always identical.
+
+ Setting the History Count field to the value "0" indicates that
+ the compression is to be on a connectionless basis. In this case,
+ a single history buffer is used and MUST be cleared at the
+ beginning of every datagram. The compressing entity MUST set the
+ R-A bit on all outgoing datagrams.
+
+ When the History Count field is set to the value "1", a single
+ history buffer is maintained by each of the data compression
+ peers. (A single logical connection.)
+
+ When the History Count field is set to a value greater than "1",
+ separate history buffers, error detection states, and signaling
+ states are maintained by the decompressing entity for each
+ history. The compressing peer may transmit data on any number of
+ separate histories, up to the value of the History Count field.
+
+3.4. Anti-Expansion Mechanism
+
+ When one or more histories are negotiated and the Process Mode
+ field is set to None ("0"), there are 2 options on how to handle
+ packets that expand:
+
+ 1) Send the expanded data and keep the history, thus allowing
+ loss of current bandwidth but preserving future bandwidth on
+ the link.
+ 2) Send the uncompressed data and clear the history, thus
+ conserving current bandwidth, but allowing possible loss of
+ future bandwidth on the link.
+
+ When 1 or more histories are negotiated and the Process Mode field
+ is set to Process-Uncompressed ("1"), there is an additional
+ option:
+
+ 3) Send the uncompressed data and do not clear the compression
+ history; the decompressor will update its history, thus
+ conserving the current bandwidth and future bandwidth on the
+ link.
+
+3.5. History Resynchronization Mechanism
+
+ The DCP-Header includes R-R (Reset-Request) and R-A (Reset-Ack)
+ bits in order to provide a mechanism for indicating a receiver
+ failure in one direction of a compressed link without affecting
+ traffic in the other direction. A receive failure is determined
+
+
+
+Schneider & Friend Informational [Page 14]
+
+RFC 1967 LZS-DCP August 1996
+
+
+ using the sequence number and/or LCB mechanism, according to the
+ value of the check mode field.
+
+ Reset-Requests and Reset-Acks are specific to the history number
+ of the packet containing them.
+
+ Reset-Request/Reset-Ack history synchronization signaling is
+ provided to recover from a loss of synchronization between peers,
+ especially in unreliable transport layers. As with all
+ compression algorithms, the decompressor can not recover from
+ dropped, erroneous, or mis-ordered datagrams, and will propagate
+ errors catastrophically until both peers are reset to an initial
+ state.
+
+ The LZS-DCP protocol provides a means to detect these error
+ conditions: LCB for erroneous datagrams, and sequence number for
+ dropped or mis-ordered datagrams. There is a means for correcting
+ a loss of synchronization: clear both the failing compression and
+ decompression histories, and follow the transmitter and receiver
+ processes in sections 3.1. and 3.2.
+
+4. Configuration Option Format
+
+ The LZS-DCP Configuration Option negotiates the use of LZS-DCP on the
+ link. By default or ultimate disagreement, no compression is used.
+ This Configuration Option is used in CCP, and can be used in other
+ negotiation mechanisms [2].
+
+ All implementations MUST support the default values.
+
+ A summary of the LZS-DCP 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 | History Count |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Check Mode | Process Mode |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Type
+
+ 23
+
+ Length
+
+ 6
+
+
+
+Schneider & Friend Informational [Page 15]
+
+RFC 1967 LZS-DCP August 1996
+
+
+ History Count
+
+ The History Count field is two octets, most significant octet
+ first, and specifies the maximum number of Compression Histories.
+
+ The value 0 indicates that the implementation expects the peer to
+ clear the Compression History at the beginning of every packet.
+ If this value is selected, the transmitter MUST set the Reset-Ack
+ bit of every packet that contains compressed data.
+
+ The value 1 is the default value and is used to indicate that only
+ one history is maintained.
+
+ Other valid values range from 2 to 65535. The peer is not
+ required to send as many histories as the implementation indicates
+ that it can accept. However, it should be noted that resources
+ are allocated in each peer to support the number of negotiated
+ histories in this field.
+
+Check Mode
+
+ The Check Mode indicates support of LCB and/or Sequence checking.
+ The use of check mode None (0) MUST NOT be used for history counts
+ greater than zero.
+
+ 0 None
+ 1 LCB
+ 2 Sequence Number
+ 3 Sequence Number + LCB (default)
+
+ Process Mode
+
+ The Process Mode specifies how uncompressed packets are handled.
+ A value of None (0) indicates that uncompressed packets are not
+ processed by the decompressor. A value of Process-Uncompressed
+
+ (1) indicates that uncompressed packets are processed by the
+ decompressor to update the history.
+
+ 0 None (default)
+ 1 Process-Uncompressed
+
+Security Considerations
+
+ Security issues are not discussed in this memo.
+
+
+
+
+
+
+Schneider & Friend Informational [Page 16]
+
+RFC 1967 LZS-DCP August 1996
+
+
+Acknowledgments
+
+ This document is based on, and uses much of the text of [5].
+
+References
+
+ [1] Simpson, W., Editor, "The Point-to-Point Protocol (PPP)", STD
+ 51, RFC 1661, Daydreamer, July 1994.
+
+ [2] Rand, D., "The PPP Compression Control Protocol (CCP)", RFC
+ 1962, June 1996.
+
+ [3] Lempel, A., and J. Ziv, "A Universal Algorithm for Sequential
+ Data Compression", IEEE Transactions On Information Theory,
+ Vol. IT-23, No. 3, May 1977.
+
+ [4] Rand, D., "PPP Reliable Transmission", RFC 1663, Novell, July
+ 1994.
+
+ [5] Friend, R., and W. Simpson, "PPP Stac LZS Compression
+ Protocol", RFC 1974, August 1996.
+
+ [6] Motorola Information Systems Group, "Data Compression Protocol
+ (DCP) Proposal", TR-30.1 ad hoc contribution (email
+ reflector), September 21, 1995.
+
+ [7] ANSI X3.241-1994, "American National Standard Data Compression
+ Method, Adaptive Coding with Sliding Window of Information
+ Interchange".
+
+Chair's Address
+
+ The working group can be contacted via the current chair:
+
+ Karl Fox
+ Ascend Communications
+ 3518 Riverside Drive, Suite 101
+ Columbus, Ohio 43221
+
+ EMail: karl@ascend.com
+
+
+
+
+
+
+
+
+
+
+
+Schneider & Friend Informational [Page 17]
+
+RFC 1967 LZS-DCP August 1996
+
+
+Authors' Addresses
+
+ Questions about this memo can also be directed to:
+
+ Kevin Schneider
+ Adtran, Inc.
+ 901 Explorer Blvd.
+ Huntsville, AL 25806
+
+ Phone: (205) 971-8024
+ EMail: kschneider@adtran.com
+
+
+ Robert Friend
+ Stac Technology
+ 12636 High Bluff Drive
+ San Diego, CA 92130-2093
+
+ Phone: (619) 794-4542
+ EMail: rfriend@stac.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Schneider & Friend Informational [Page 18]
+