RFC 1962
The PPP Compression Control Protocol (CCP)
RFC 1962: The PPP Compression Control Protocol (CCP) π
Okay bestie, this is RFC 1962, The PPP Compression Control Protocol (CCP) π. It was written by D. Rand of Novell for the Network Working Group, it's a Standards Track doc, and it's dated June 1996. Its header doesn't list anything it obsoletes or updates, so it's just vibing on its own β¨.
Status of this Memo π
So this doc specifies an Internet standards track protocol for the whole Internet community π, and it's literally asking for discussion and suggestions for improvements π¬. For the standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1). Distribution of this memo is unlimited π¦.
Abstract πΈ
The Point-to-Point Protocol (PPP) [1] is a standard way to transport multi-protocol datagrams over point-to-point links π. PPP also defines an extensible Link Control Protocol.
This document defines a method for negotiating data compression over PPP links ποΈ.
Table of Contents π
1. Introduction .......................................... 1
2. Compression Control Protocol (CCP) .................... 2
2.1 Sending Compressed Datagrams .................... 3
3. Additional Packets .................................... 4
3.1 Reset-Request and Reset-Ack ..................... 4
4. CCP Configuration Options ............................. 5
4.1 Proprietary Compression OUI ..................... 7
4.2 Other Compression Types ......................... 8
SECURITY CONSIDERATIONS ...................................... 9
REFERENCES ................................................... 9
ACKNOWLEDGEMENTS ............................................. 9
CHAIR'S ADDRESS .............................................. 9
AUTHOR'S ADDRESS ............................................. 9
1. Introduction β¨
Before two ends can talk over a PPP link, each end has to send LCP packets to configure and test the data link during the Link Establishment phase π§. Once the link is established, optional facilities can be negotiated as needed.
One such facility is data compression ποΈ. A whole bunch of compression methods may be negotiated, though usually only one method is used in each direction of the link.
A different compression algorithm may be negotiated for each direction, depending on speed, cost, memory, or other considerations. Or only one direction may be compressed at all π .
2. Compression Control Protocol (CCP) π
CCP is the boss of data compression on a point-to-point link π. It configures, enables, and disables data compression algorithms on both ends of the link. It's also how a failure of the compression/decompression mechanism gets signaled in a reliable manner.
CCP uses the same packet exchange mechanism as the Link Control Protocol (LCP). CCP packets may not be exchanged until PPP has reached the Network-Layer Protocol phase π¦. CCP packets received before this phase is reached should be silently discarded.
CCP is basically a copy of LCP [1], with a few exceptions:
Frame Modifications
The packet may use any modifications to the basic frame format that were negotiated during the Link Establishment phase.
Data Link Layer Protocol Field
Exactly one CCP packet rides inside the PPP Information field, and the PPP Protocol field says type hex 80FD (Compression Control Protocol) π.
When individual link data compression is used in a multiple link connection to a single destination, the PPP Protocol field says type hex 80FB (Individual link Compression Control Protocol).
Code field
On top of Codes 1 through 7 (Configure-Request, Configure-Ack, Configure-Nak, Configure-Reject, Terminate-Request, Terminate-Ack and Code-Reject), CCP defines two new Codes, 14 and 15 (Reset-Request and Reset-Ack) π. Other Codes should be treated as unrecognized and should result in Code-Rejects.
Timeouts
CCP packets may not be exchanged until PPP has reached the Network-Layer Protocol phase β°. An implementation should be prepared to wait for Authentication and Link Quality Determination to finish before it times out waiting for a Configure-Ack or other response. It is suggested that an implementation give up only after user intervention or a configurable amount of time π.
Configuration Option Types
CCP has its own distinct set of Configuration Options β¨.
2.1. Sending Compressed Datagrams π¦
Before any compressed packets can be communicated, PPP needs to reach the Network-Layer Protocol phase, and CCP has to reach the Opened state π.
One or more compressed packets ride in the PPP Information field, and the PPP Protocol field says type hex 00FD (Compressed datagram). Each compression algorithm may use its own mechanism to show that more than one uncompressed packet is packed into a single Data Link Layer frame π§.
When using multiple PPP links to a single destination, there are two ways to do data compression π. The first way is to compress the data before it goes out through the multiple links. The second way is to treat each link as a separate connection, which may or may not have compression enabled. In that second case, the PPP Protocol field MUST be type hex 00FB (Individual link compressed datagram) π¨.
Only one primary algorithm in each direction is in use at a time, and it gets negotiated before the first compressed frame is sent π€. The PPP Protocol field of the compressed datagram says the frame is compressed, but it doesn't say which algorithm was used π€·ββοΈ.
The maximum length of a compressed packet sent over a PPP link is the same as the maximum length of the Information field of a PPP encapsulated packet π. Larger datagrams (presumably because the compression algorithm made the message bigger in some cases) may be sent uncompressed in their standard form. They may also be sent in multiple datagrams, if the compression algorithm supports it πͺ.
Each of the compression algorithms must supply a way of determining if it's passing data reliably. Otherwise, it must require the use of a reliable transport such as LAPB [3] π‘οΈ. Vendors are strongly encouraged to add a way of validating the compressed data, or of recognizing out-of-sync compressor/decompressor pairs π«Ά.
3. Additional Packets π§
The Packet format and basic facilities are already defined for LCP [1].
Up-to-date values of the CCP Code field are listed in the most recent "Assigned Numbers" RFC [2]. This specification concerns the following values:
14 Reset-Request
15 Reset-Ack
3.1. Reset-Request and Reset-Ack π¦
Description
CCP includes Reset-Request and Reset-Ack Codes so it can flag a decompression failure in one direction of a compressed link, without messing with traffic in the other direction π
ββοΈ. A decompression failure may be detected by periodically passing a hash value, doing a CRC check on the decompressed data, or using some other mechanism. It is strongly suggested that all compression algorithms have some mechanism for validating the decompressed data before passing it on to the rest of the system π.
A CCP implementation that wants to indicate a decompression failure SHOULD transmit a CCP packet with the Code field set to 14 (Reset-Request), and the Data field filled with any desired data. Once a Reset-Request has been sent, any Compressed packets received are discarded, and another Reset-Request is sent with the same Identifier, until a valid Reset-Ack is received π.
When a Reset-Request comes in, the transmitting compressor is reset to an initial state. This may include clearing a dictionary, resetting hash codes, or other mechanisms π§Ή. A CCP packet MUST be transmitted with the Code field set to 15 (Reset-Ack), the Identifier field copied from the Reset-Request packet, and the Data field filled with any desired data π.
When a Reset-Ack is received, the receiving decompressor is reset to an initial state. This may include clearing a dictionary, resetting hash codes, or other mechanisms. Since there may be several Reset-Acks floating in the pipe, the decompressor MUST be reset for each Reset-Ack that matches the currently expected identifier π―.
A summary of the Reset-Request and Reset-Ack packet formats is shown below. The fields are sent 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Code | Identifier | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data ...
+-+-+-+-+
Code
14 for Reset-Request; 15 for Reset-Ack.
Identifier
When transmitting, the Identifier field MUST be changed whenever the content of the Data field changes, and whenever a valid reply has been received for a previous request. For retransmissions, the Identifier MAY remain unchanged π.
When receiving, the Identifier field of the Reset-Request is copied into the Identifier field of the Reset-Ack packet πͺ.
Data
The Data field is zero or more octets and holds uninterpreted data for the sender to use π. The data can be any binary value, and its length can be anything from zero up to the peer's established MRU minus four π.
Part 2 is next, bestie, and that's where Section 4 and the CCP Configuration Options live ππ
4. CCP Configuration Options β¨
okay bestie, so CCP Configuration Options are how the two sides negotiate which compression algorithms they're gonna use, plus their parameters π«Ά CCP uses the same Configuration Option format that LCP [1] uses, just with its own separate set of Options π
Configuration Options in this protocol say which algorithms the receiver is willing or able to use to decompress the data the sender sends π so it's totally expected that systems will offer to accept several algorithms and then negotiate ONE to actually use π
Sometimes they just can't agree on a compression algorithm π no cap, in that case no compression gets used and the link keeps running without it. If link reliability was negotiated separately, it keeps being used until LCP gets re-negotiated π¦
We expect that many vendors will want proprietary compression algorithms, and there's a mechanism for negotiating those so the Internet Assigned Number Authority doesn't have to deal with proprietary number requests π
The LCP option negotiation techniques are used π§ If an option is unrecognized, a Configure-Reject MUST be sent. If all protocols the sender implements get Configure-Rejected by the receiver, then no compression is enabled in that direction of the link.
If an option is recognized but not acceptable (because of the values in the request, or optional parameters that aren't in the request), a Configure-NAK MUST be sent with the option modified appropriately. The Configure-NAK MUST contain only those options that will be acceptable. A new Configure-Request SHOULD be sent with only the single preferred option, adjusted as specified in the Configure-Nak. β
Up-to-date values of the CCP Option Type field are specified in the most recent "Assigned Numbers" RFC [2]. Current values are assigned as follows:
CCP Option Compression type
0 OUI
1 Predictor type 1
2 Predictor type 2
3 Puddle Jumper
4-15 unassigned
16 Hewlett-Packard PPC
17 Stac Electronics LZS
18 Microsoft PPC
19 Gandalf FZA
20 V.42bis compression
21 BSD LZW Compress
255 Reserved
The unassigned values 4-15 are intended to be assigned to other freely available compression algorithms that have no license fees. that's so generous of them πΈ
4.1. Proprietary Compression OUI
Description
This Configuration Option gives you a way to negotiate a proprietary compression protocol π₯
Since the first matching compression will be used, it is recommended that any known OUI compression options be transmitted first, before the common options are used. so basically put your fancy vendor stuff at the front of the line π
Before accepting this option, the implementation must verify that the Organization Unique Identifier identifies a proprietary algorithm that the implementation can decompress, and that any vendor specific negotiation values are fully understood. π
A summary of the Proprietary Compression OUI 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 | OUI ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
OUI | Subtype | Values...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Type
The value is 0 π
Length
The value is >= 6 π
IEEE OUI
This is the vendor's IEEE Organization Unique Identifier (OUI), which is the most significant three octets of an Ethernet Physical Address, assigned to the vendor by IEEE 802. It's how the option says "this belongs to this vendor" π¦ The bits within the octet are in canonical order, and the most significant octet is transmitted first.
Subtype
This field is specific to each OUI, and it shows the compression type for that OUI. There's no standardization for this field, so each OUI implements its own values. vendors really said "our rules, our vibes" π
Values
This field is zero or more octets, and it holds extra data as determined by the vendor's compression protocol. β¨
4.2. Other Compression Types
Description
These Configuration Options give you a way to negotiate a publicly defined compression algorithm π Lots of compression algorithms are specified, but no particular compression technique has arisen as an Internet Standard. it's giving options, not a single winner π«§
These protocols will be made available to all interested parties, but they may have certain licensing restrictions attached. For more info, check the compression protocol documents that define each of the compression types. π
A summary of the Compression Type 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 | Values...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Type
The value is 1 to 254 π§
Length
The value is >= 2 π«Ά
Values
This field is zero or more octets, and it holds extra data as determined by the compression protocol. π
Security Considerations
Security issues are not discussed in this memo. no cap, that's a whole big gap, bestie ππ go read the security stuff somewhere else before you ship anything
References
[1] Simpson, W., Editor, "The Point-to-Point Protocol (PPP)", STD 51, RFC 1661, July 1994.
[2] Reynolds, J., and Postel, J., "Assigned Numbers", STD 2, RFC 1700, USC/Information Sciences Institute, October 1994.
[3] Rand, D., "PPP Reliable Transmission", RFC 1663, July 1994.
Acknowledgments
Bill Simpson helped with the document formatting. π«Ά thank you Bill, you're iconic π
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
Author's Address
Questions about this memo can also be directed to:
Dave Rand
Novell, Inc.
2180 Fortune Drive
San Jose, CA 95131
+1 408 321-1259
EMail: dlr@daver.bungi.com
π¦ where this page comes from
- ietf: rfc1962 1996-06
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms