Protocol Extensions for Header Compression over MPLS
Extracted elements (25)
A single PW label MUST be used for many HC flows (hundreds or thousands) rather than assigning a different PW label per flow. This avoids the complex mechanism for PW label assignment and freeing after flow termination; CID assignment within HC protocols already handles per-flow demultiplexing.
HC configuration option formats from RFC 3241 (ROHC over PPP) and RFC 3544 (CRTP/ECRTP/IPHC over PPP) are reused as TLVs in LDP PW signaling rather than defining new formats, but the detailed PPP negotiation process is not reused. A single HC PW supports only one HC scheme, so the full PPP multi-protocol negotiation is unnecessary.
HC over MPLS uses MPLS pseudowires to provide emulation of a single point-to-point link between compressor and decompressor, allowing existing HC algorithms (designed for single link-layer hops) to operate without compression/decompression cycles at intermediate LSRs. This avoids per-router decompression overhead and increases both bandwidth efficiency and scalability.
The first nibble of the HC control parameter is set to 0000 to avoid being mistaken for an IP packet, consistent with the PW MPLS control word encoding in RFC 4385. Although ROHC provides its own packet type field, the HC control parameter MUST still be used to avoid ECMP misclassification problems.
CRTP was designed for reliable point-to-point links with short delays and does not perform well over links with high packet loss, reordering, and long delays. For such environments, ECRTP should be considered instead. IPHC should use TCP_NODELTA, ECRTP should send absolute values, and ROHC should be adapted as discussed in RFC 4224 for reordering scenarios.
An LDP session MUST be set up between PW endpoints using the extended discovery mechanism. PW label bindings are distributed using LDP downstream unsolicited mode. Any acceptable method of MPLS label distribution MAY be used for distributing the MPLS tunnel label (LDP, RSVP-TE, or configuration).
HC scheme parameters MAY be manually configured, but manual configuration MUST be done in both directions. If HC scheme parameters are signaled, the Interface Parameters Sub-TLV MUST be used on any unidirectional legs carrying HC traffic; for legs carrying only compression feedback, these Sub-TLV components MUST NOT be used.
Multiple PWs SHOULD be established in case different QoS requirements are needed for different compressed streams. The QoS received by the flow is determined by the EXP bit marking in the PW label.
PWs MUST be set up in advance for transport of media streams using RFC 4447 control messages exchanged by HC-HD endpoints. A PW type MUST be used to indicate the HC scheme being used on the PW.
Suboption 3 (TCP/non-TCP selection, Type 3, Length 3) MUST be included for IPHC PWs (0x001C) and MUST NOT be included for other PW types. Parameter value 1 sets TCP_SPACE contexts to 0; value 2 sets NON_TCP_SPACE contexts to 0. If included multiple times with both values, compression is disabled for all packets.
The Configuration Option Format from RFC 3241 (ROHC) MUST be included for ROHC PW types and MUST NOT be included for ECRTP, CRTP, and IPHC PW types. A decompressor MUST reject this option for non-ROHC PW types and send an explicit error message to the compressor. The PROFILES suboption MUST be supplied.
The Configuration Option Format from RFC 3544 MUST be included for ECRTP, CRTP, and IPHC PW types and MUST NOT be included for ROHC PW types. A decompressor MUST reject this option for ROHC PW types and send an explicit error message to the compressor.
The HC control parameter length field is ONLY used for short packets because Ethernet padding may be appended. If the packet length is >= 64 octets, the length field MUST be set to zero. If the MPLS payload is less than 64 bytes, the length field MUST be set to the length of the PW payload plus the length of the HC control parameter.
The HC control parameter MUST be used to identify packet types for the HC scheme in use. The PW label MUST be used as the demultiplexer field by the HD, appearing at the bottom of the MPLS label stack. The LSR performing decompression MUST ensure that the label it distributes for a channel is unique.
The HC PW MUST be used for compressed packets only. If a flow is not compressed, it MUST NOT be placed on the HC PW. HC PWs MUST be bi-directional, with a unidirectional leg set up in each direction using the same PW type for signaling in both directions.
The RTP-Compression Suboption (Type 1, Length 2) MUST be included for CRTP PWs (0x001C) and MUST NOT be included for other PW types. The Enhanced RTP-Compression Suboption (Type 2, Length 2) MUST be included for ECRTP PWs (0x001B) and MUST NOT be included for other PW types. These two suboptions MUST NOT occur together; if they do, the decompressor MUST reject the option.
The HC channel uses a tuple of <PW label, CID> to uniquely identify decompression contexts at the HD. This allows multiple compressors that independently assign the same CID to different flows to coexist at a single decompressor, since the PW label scopes the CID namespace.
The HC control parameter Packet Type field (4 bits) encodes: 0=ROHC Small-CIDs, 1=ROHC Large-CIDs, 2=FULL_HEADER, 3=COMPRESSED_TCP, 4=COMPRESSED_TCP_NODELTA, 5=COMPRESSED_NON_TCP, 6=COMPRESSED_RTP_8, 7=COMPRESSED_RTP_16, 8=COMPRESSED_UDP_8, 9=COMPRESSED_UDP_16, 10=CONTEXT_STATE, 11-15=unassigned.
IANA assigned four PW type values in the RFC 4446 registry to identify HC pseudowires: 0x001A (ROHC), 0x001B (ECRTP), 0x001C (IPHC), and 0x001D (CRTP) Transport Header-compressed Packets.
IANA assigned two Pseudowire Interface Parameter Sub-TLV type values: 0x0D (up to 256 bytes) for ROHC over MPLS configuration per RFC 3241, and 0x0F (up to 256 bytes) for CRTP/ECRTP/IPHC HC over MPLS configuration per RFC 3544.
IANA created a new registry 'Header Compression Over MPLS HC Control Parameter Packet Type' for the 4-bit packet type field. Packet Types 0-10 are defined by this document; Types 11-15 are assigned by IANA using the Expert Review policy defined in RFC 2434.
MPLS PW security considerations from RFC 3985 and RFC 4447 apply to this document. This document specifies an encapsulation only; security issues of the encapsulated protocols (IPHC, CRTP, ECRTP, ROHC per their respective RFCs) and the PSN transport protocols each apply independently and are not affected by the encapsulations specified herein.
The Configuration Option Format (RFC 3241) for ROHC contains: Type (1 octet, value 2), Length (>=10), IP-Compression-Protocol (0x0003), MAX_CID (2 octets, suggested 15, max 16383), MRRU (2 octets, suggested 0), MAX_HEADER (2 octets, suggested 168 octets), followed by suboptions. The PROFILES suboption (Type 1) carries n octet-pairs in ascending order specifying supported ROHC profiles.
The Configuration Option Format (RFC 3544) for IPHC/CRTP/ECRTP contains: Type (1 octet, value 2), Length (>=14), IP-Compression-Protocol (0x0061), TCP_SPACE (2 octets, max CID for TCP, suggested 15), NON_TCP_SPACE (2 octets, max CID for non-TCP, suggested 15), F_MAX_PERIOD (2 octets, suggested 256), F_MAX_TIME (2 octets, suggested 5 seconds), MAX_HEADER (2 octets, suggested 168 octets), followed by suboptions.
The HC control parameter is a 2-octet field with the format: 4 bits reserved (0000), 4-bit Packet Type field, 6-bit Length field, and 2 reserved bits. The first nibble is set to 0000 to avoid being mistaken for an IP packet. Packet Types 0-10 are defined; types 11-15 are reserved for IANA Expert Review assignment.