rfc-3544

IP Header Compression over PPP

T. Koren, S. Casner, C. Bormann
date2003-07 streamIETF wgnon working group statusPROPOSED STANDARD pages14 canonicalhttps://www.rfc-editor.org/rfc/rfc3544 doi10.17487/RFC3544
This document describes an option for negotiating the use of header compression on IP datagrams transmitted over the Point-to-Point Protocol (RFC 1661). It defines extensions to the PPP Control Protocols for IPv4 and IPv6 (RFC 1332, RFC 2472). Header compression may be applied to IPv4 and IPv6 datagrams in combination with TCP, UDP and RTP transport protocols as specified in RFC 2507, RFC 2508 and RFC 3545. [STANDARDS-TRACK]

obsoletes

Extracted elements (21)

design-rationale §3.1

Context identifier spaces are shared between IPv4 and IPv6 compression but are not shared between TCP and non-TCP/UDP/RTP. Sharing TCP and non-TCP context spaces would require additional mechanisms to prevent errors when switching a context identifier from TCP to non-TCP use.

ip

design-rationale §2.4

Suboption 3 was added because a value of 0 in TCP_SPACE or NON_TCP_SPACE in RFC 2509 actually meant one context rather than zero, making it impossible to negotiate disabling TCP-only or non-TCP-only compression.

ip

interoperability-note §1

IPHC methods for handling packet reordering are disabled by default over PPP because PPP does not reorder packets. When using reordering mechanisms such as multiclass multilink PPP (RFC 2686), care must be taken so that packets sharing the same compression context are not reordered.

ip, tcp

interoperability-note §2

RFC 3241 updates RFC 1332 to explicitly allow multiple instances of the IP-Compression-Protocol configuration option, each with a different IP-Compression-Protocol value. Each compression protocol type independently establishes its own parameters.

ip

interoperability-note §2

The option describes the capabilities of the decompressor (receiving side) of the peer that sends the Config-Req, in keeping with current PPP practice, even though RFC 1332 is not explicit on this point.

ip

normative-requirement §2.1 MUST

TCP_SPACE MUST be at least 0 and at most 255. NON_TCP_SPACE MUST be at least 0 and at most 65535. A value of 0 in either field implies one context (not zero contexts, absent suboption 3).

ip, tcp

protocol-element §4

CONTEXT_STATE (0x2065) is a link-level message sent from the decompressor to the compressor as specified in RFC 2508 Section 3.3.5, used to signal decompression errors or context state.

ip

protocol-element §2.3

Enhanced RTP-Compression Suboption (Type=2, Length=2) enables RFC 3545 compliant compression, including COMPRESSED_UDP with additional flags and the C flag with FULL_HEADER to indicate HDRCKSUM usage. Sub-option 2 is negotiated instead of, not in addition to, sub-option 1.

rtp, ip

protocol-element §2.1

F_MAX_PERIOD is a 2-octet field specifying the maximum number of COMPRESSED_NON_TCP headers that may be sent between FULL_HEADER headers. Suggested value is 256; a value of zero means no limit.

ip

protocol-element §2.1

F_MAX_TIME is a 2-octet field specifying the maximum time interval in seconds between FULL_HEADER transmissions for non-TCP streams. Suggested value is 5 seconds; a value of zero means no limit.

ip

protocol-element §2.1

MAX_HEADER is a 2-octet field indicating the largest header size in octets that may be compressed. Suggested value is 168 octets; should be large enough to cover common combinations of network and transport layer headers.

ip

protocol-element §2.1

NON_TCP_SPACE is a 2-octet field indicating the maximum context identifier value for non-TCP compression contexts (used in COMPRESSED_NON_TCP, COMPRESSED_UDP, COMPRESSED_RTP). Suggested value is 15; must be at least 0 and at most 65535.

ip, udp, rtp

protocol-element §2.2

RTP-Compression Suboption (Type=1, Length=2) enables the use of Protocol Identifiers COMPRESSED_RTP, COMPRESSED_UDP, and CONTEXT_STATE as specified in RFC 2508. No parameters beyond type and length.

rtp, ip

protocol-element §2.4

TCP/Non-TCP Selective Compression Suboption (Type=3, Length=3, Parameter=1 octet) allows disabling TCP compression (Parameter=1) or non-TCP compression (Parameter=2). Including it twice with both values disables all compression. Overrides TCP_SPACE and NON_TCP_SPACE field values.

ip, tcp

protocol-element §2.1

TCP_SPACE is a 2-octet field indicating the maximum context identifier value for TCP compression contexts. Suggested value is 15; must be at least 0 and at most 255 (value 0 means one context).

ip, tcp

registry §7

Three IANA registries were created for PPP header compression: (1) IP-Compression-Protocol Configuration Option type values (per RFC 1332 Section 3.2), (2) IPv6-Compression-Protocol Configuration Option type values (per RFC 2472 Section 4.2), and (3) IP Header Compression Configuration Option Suboption Types. New suboption types require a revision of this document via the IETF standards process.

registry, ip

security-consideration §8

IP-layer encryption (e.g., IPsec) precludes compression of encrypted headers, though outer IP and security headers can still be compressed per RFC 2507. For RTP, full header compression is possible if only the RTP payload is encrypted, leaving UDP/RTP headers unencrypted, as described in RFC 3550.

security, ipsec, rtp, ip

security-consideration §8

Negotiation of the IPHC option imposes no additional security considerations beyond those applicable to PPP (RFC 1661). Header compression can in rare cases cause misdelivery of packets; if necessary, packet confidentiality should be ensured by encryption.

security, ip

wire-format §2.1

Each suboption consists of a Type (1 octet), Length (1 octet, covering the entire suboption including type and length fields), and zero or more Parameter octets. The suboption structure is TLV-encoded.

ip

wire-format §4

Nine PPP Data Link Layer Protocol Field values are defined: FULL_HEADER (0x0061), COMPRESSED_TCP (0x0063), COMPRESSED_TCP_NODELTA (0x2063), COMPRESSED_NON_TCP (0x0065), COMPRESSED_RTP_8 (0x0069), COMPRESSED_RTP_16 (0x2069), COMPRESSED_UDP_8 (0x0067), COMPRESSED_UDP_16 (0x2067), CONTEXT_STATE (0x2065).

ip, rtp, udp, tcp

wire-format §2.1

The IP-Compression-Protocol configuration option carries Type (1 octet, value 2), Length (1 octet, >= 14), IP-Compression-Protocol (2 octets, 0x0061), TCP_SPACE (2 octets), NON_TCP_SPACE (2 octets), F_MAX_PERIOD (2 octets), F_MAX_TIME (2 octets), MAX_HEADER (2 octets), and zero or more suboptions.

ip, crypto