One document matched: draft-ietf-pppext-lzs-dcp-00.txt
Network Working Group Kevin Schneider
Internet Draft ADTRAN, Inc.
expires May 1995
PPP LZS-DCP Compression Protocol (LZS-DCP)
draft-ietf-pppext-lzs-dcp-00.txt
Status of this Memo
This document is a submission to the Point-to-Point Protocol Working
Group of the Internet Engineering Task Force (IETF). Comments should
be submitted to the ietf-ppp@merit.edu mailing list.
Distribution of this memo is unlimited.
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. Internet Drafts may be updated, replaced, or obsoleted by
other documents at any time. It is not appropriate to use Internet
Drafts as reference material, or to cite them other than as a
``working draft'' or ``work in progress.''
Please check the 1id-abstracts.txt listing contained in the
internet-drafts Shadow Directories on nic.ddn.mil, ds.internic.net,
vernera.isi.edu, nic.nordu.net, or munnari.oz.au to learn the current
status of any Internet Draft.
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 Stacker LZS data compression
algorithm for compressing PPP encapsulated packets, using a DCP
header [6]. To distinguish this protocol from the Standard PPP
Stacker LZS compression protocol [5], it will be referred to as the
LZS-DCP Compression Protocol.
Schneider expires May 1995 [Page i]
DRAFT LZS-DCP November 1994
1. Introduction
Starting with a sliding window compression history, similar to LZ1
[3], Stac Electronics developed a compression algorithm identified as
Stacker LZS. Motorola has proposed a packet format for a portable
data compression protocol known as DCP [6]. This document specifies
a technique for using both the Stacker-LZS algorithm and the DCP
within the context of PPP.
A TR30.1 ad hoc committee is currently working on a standard for data
compression for DSUs. The ad hoc committee has decided to use PPP
for this purpose, but along with a compression protocol that
incorporates the compressor synchronization mechanism proposed in
[6]. This document is a result of that effort. It defines a new
compression protocol, LZS-DCP, to be used under CCP. This
compression protocol defines a DCP compatible data format for the
Stacker-LZS data compression algorithm. A notable difference between
LZS-DCP and other non-DCP compression protocols is that LZS-DCP uses
the Reset-Request and Reset-Ack bits in the DCP header instead of the
CCP Reset-Request and Reset-Ack packets to keep the compressor and
decompressor synchronized.
The Stacker LZS-DCP compression algorithm supports both single
compression history communication and multiple compression history
communication.
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
link. Each virtual link will transmit data that is independent of
other virtual links. 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 for further information.
1.2. Specification of Requirements
In this document, several words are used to signify the requirements
Schneider expires May 1995 [Page 1]
DRAFT LZS-DCP November 1994
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.
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
Schneider expires May 1995 [Page 2]
DRAFT LZS-DCP November 1994
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).
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 sucessfully 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 LZS-DCP
packets. PPP Network Control Protocol packets MUST NOT be sent
within LZS-DCP packets.
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 <End Marker> (see Section
2.1.1). This is referred to as LZS Padding. The LCB, if present,
is always the octet preceding the frame CRC.
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 resetting the history on a per packet basis
include:
Schneider expires May 1995 [Page 3]
DRAFT LZS-DCP November 1994
- 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 Compression Histories are negotiated, the packet sequence
MUST be preserved within specific History Numbers. There is no
sequence requirement between different History Numbers.
To enable this feature, the implementation MUST rely on the Reset-
Request and Reset-Ack bits of this protocol. These signalling
bits apply to the history number of the packet containing them.
This requires that the history number field be the same size in
both directions of a link. Any data in the packet is processed
after the signalling bits are processed.
The transmitter MAY reset a Compression History at any time.
Because the Stacker-LZS algorithm is a sliding window algorithm,
the decompressor does not require an explicit notification of the
reset event.
The transmitter MUST reset a history after a Reset-Request for a
given History Number.
Data Expansion
The maximum expansion of Stacker LZS-DCP 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.
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
Schneider expires May 1995 [Page 4]
DRAFT LZS-DCP November 1994
compressor history must be reset. (Reset is not required if the
compressor history can be restored to its previous state.)
2.1. 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) |
+-+-+-+-+-+-+-+-+
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
hex. This value MAY be compressed when Protocol-Field-
Compression is negotiated.
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
Schneider expires May 1995 [Page 5]
DRAFT LZS-DCP November 1994
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 R-R - Reset-Request
The DCP-Header includes Reset-Request and Reset-Ack Bits in
order to provide a mechanism for indicating a decompression
failure in one direction of a compressed link without affecting
traffic in the other direction. A decompression failure MAY be
determined using the sequence number and/or LCB mechanism.
To indicate a decompression failure, an implementation MUST
transmit a packet with the Reset-Request Bit set to 1. The
Data field MAY be filled with data, compressed or uncompressed,
or be left empty. Once a Reset-Request has been sent, the data
in any compressed packets received is 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.
Upon reception of a packet containing a Reset-Request, the
transmitting compressor MUST be reset to an initial state,
which includes resetting or 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.
On receipt of a Reset-Ack, the receiving decompressor MAY be
reset to an initial state. (A reset is not required since the
incoming data packets will not reference the old history
buffer). After reset, any compressed or uncompressed data
contained in the packet is processed.
Reset-Requests and Reset-Acks are specific to the history
number of the packet containing them.
Schneider expires May 1995 [Page 6]
DRAFT LZS-DCP November 1994
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. 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.)
History Number
The number of the compression history which was used, ranging from
1 to the negotiated History Count.
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.
Sequence Number
A one octet Sequence Number MAY be used, after successful
negotiation of the Sequence Number option. The Sequence Number
begins with one (1), and wraps to zero (0). This number is
relative to the History Number used.
On receipt, if Sequence Number one (1) follows any other number
than zero (0), or is otherwise out of sequence, a Reset-Request is
sent, in a packet containing the same History Number as that which
detected a packet out of sequence.
Future valid compressed packets are ignored, for that history
only, until a packet containing a Reset-Ack is received.
Schneider expires May 1995 [Page 7]
DRAFT LZS-DCP November 1994
The Sequence Number is not reset by the transmitter when a packet
containing a Reset-Ack is sent. The decompressor should
resynchronize (reset) its local sequence number counter when a
packet containing a Reset-Ack is received.
Sequence numbers are used on all packets, compressed or
uncompressed. Therefore, the receiver increments its counter upon
receiving an LZS-DCP packet, whether it contains compressed or
uncompressed data.
Data
This field contains uncompressed or compressed data, depending on
the state of the C/U bit in the Header. This length of this field
is always an integer number of octets.
For compressed packets, the data field MUST begin with a complete
codeword and end with the <End Marker> (see Section 2.1.1), which
may be followed with additional octets containing only zeros.
There MUST be only one <End Marker> per packet. To save on
bandwidth, any trailing zero octets may be removed prior to
transmission. A single trailing zero octet is appended upon
receipt, after removal of any framing FCS and the LCB, if present.
Longitudinal Check Byte
A simple one octet Longitudinal Check Byte (LCB) MAY be used,
after successful negotiation of the LCB option. The LCB MUST be
initialized to FF(hex) at the beginning of each packet, and is the
Exclusive-OR of each octet of the original uncompressed data.
The LCB is only included on compressed packets, and is always
located in the octet immediately prior to the frame CRC.
On receipt, if the LCB is invalid, a Reset-Request is sent, in a
packet containing the same History Number as that which was
detected with the invalid LCB.
Schneider expires May 1995 [Page 8]
DRAFT LZS-DCP November 1994
2.1.1. Compressed Data
The Stacker-LZS compression algorithm is Defined in ANSI X3.241 [7].
The format of the compressed data is repeated here for informational
purposes.
<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. 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.
The default values listed below were chosen by the TR30.1 ad hoc
committee on compression of synchronous data. 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
Schneider expires May 1995 [Page 9]
DRAFT LZS-DCP November 1994
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | History Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Check Mode | Process Mode |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type
23
Length
6
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
reset the Compression History at the beginning of every packet.
If this value is seleted, 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.
Check Mode
The Check Mode indicates support of LCB and/or Sequence checking.
The use of check mode None (0) is discouraged 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
Schneider expires May 1995 [Page 10]
DRAFT LZS-DCP November 1994
(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.
Acknowledgements
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)", work
in progress.
[3] Lempel, A. and Ziv, J., "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] Lutz, B., Simpson, B. "PPP Stacker LZS Compression Protocol",
work in progress.
[6] Motorola Information Systems Group, "Data Compression Protocol
(DCP) Proposal", TR-30.1 ad hoc contribution (email
reflector), September 21, 1994.
[7] ANSI X3.241, "American National Standard Data Compression
Method, Adaptive Coding with Sliding Window fo Information
Interchange", currently unpublished.
Schneider expires May 1995 [Page 11]
DRAFT LZS-DCP November 1994
Chair's Address
The working group can be contacted via the current chair:
Fred Baker
Senior Software Engineer
Cisco Systems
519 Lado Drive
Santa Barbara, California 93111
(805) 681-0115
EMail: fred@cisco.com
Author's Address
Questions about this memo can also be directed to:
Kevin Schneider
Adtran, Inc.
901 Explorer Blvd.
Huntsville, AL 25806
(205) 971-8024
Email: kevin@adtran.com
Schneider expires May 1995 [Page 12]
DRAFT LZS-DCP November 1994
Table of Contents
1. Introduction .......................................... 1
1.1 Licensing ....................................... 1
1.2 Specification of Requirements ................... 1
1.3 Terminology ..................................... 2
2. LZS-DCP Packets ....................................... 3
2.1 Packet Format ................................... 5
2.1.1 Compressed Data ................................. 9
3. Configuration Option Format ........................... 9
SECURITY CONSIDERATIONS ...................................... 11
REFERENCES ................................................... 11
CHAIR'S ADDRESS ........................................... 12
AUTHOR'S ADDRESS ............................................. 12
| PAFTECH AB 2003-2026 | 2026-04-22 15:17:26 |