Internet Draft Network Working Group Lou Berger Internet Draft LabN Consulting, LLC Expiration Date: September 2000 Jason Jeffords Integral Access Inc. March 2000 MPLS/IP Header Compression over PPP draft-berger-mpls-hdr-comp-over-ppp-00.txt Status of this Memo This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. 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 and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. Abstract This document describes an option for negotiating the use of MPLS and IP header compression over the Point-to-Point Protocol [STD51]. It defines extensions to the PPP Control Protocol for MPLS [LABELS]. It is based on, and borrows heavily from, IP Header Compression over PPP [RFC2509]. MPLS/IP header compression is defined in [CMPLS] and may be applied to MPLS datagrams transporting IPv4 and IPv6 datagrams in combination with TCP, UDP and RTP transport protocols. Berger & Jeffords [Page 1] Internet Draft draft-berger-mpls-hdr-comp-over-ppp-00.txt March 2000 1. Introduction This document defines the operation of MPLS/IP header compression over PPP. MPLS/IP header compression is defined in [CMPLS] and is based on [RFC2507] and [RFC2508]. The compression of MPLS headers with IP, IP/TCP and IP/UDP/RTP headers is supported. This document will define the negotiation of MPLS/IP Header Compression related options and the PPP data link layer protocol field values to be used for datagrams with compressed headers. This document is essentially a reversion of [RFC2509] that has been adapted to the support of MPLS header compression. To support MPLS/IP header compression over PPP, each end of the link must agree on the use of compression and on the associated set of configuration options. PPP supports the negotiation of link parameters for network layer protocols via a family of network control protocols, or NCPS. This document defines a configuration option to be used with the PPP network control protocol for MPLS defined in Section 4 of [LABELS]. The defined option is the first option supported by the MPLS NCP. MPLS/IP header compression [CMPLS] relies on the link layer indicating the type of datagram carried in a link layer frame. This document defines ten new types for the PPP data link layer protocol field. Eight of these types have corresponding values defined in [RFC2509] that support IP header compression. [CMPLS] allows these values to be reused when supporting MPLS/IP header compression. The values are not reused so that there is no ambiguity as to which types of headers are being compressed. If the perceived cost of the additional types is higher than the value, particularly in debugging, of uniquely identifying the compressed header types then the values defined in [RFC2509] will be reused. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119. Berger & Jeffords [Page 2] Internet Draft draft-berger-mpls-hdr-comp-over-ppp-00.txt March 2000 2. Configuration Option This document specifies the MPLS-Compression-Protocol configuration option. It is the first MPLS LCP configuration option. The format of the MPLS-Compression-Protocol option and the RTP-Compression suboption are the same as defined in [RFC2209]. A new suboption is defined to support the negotiation of one MPLS specific compression parameter. 2.1. Configuration Option Format Only one MPLS-Compression-Protocol configuration option may be negotiated. The negotiate option describes the capabilities of the decompressor (receiving side) of the peer that sends the Config-Req. Description This NCP configuration option is used to negotiate parameters for MPLS/IP Header Compression. The option format is summarized 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 | MPLS/IP-Compression-Protocol | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TCP_SPACE | NON_TCP_SPACE | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | F_MAX_PERIOD | F_MAX_TIME | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | MAX_HEADER | suboptions... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Type TBD Length >= 14 The length may be increased if the presence of additional parameters is indicated by additional suboptions. MPLS/IP-Compression-Protocol The MPLS/IP-Compression-Protocol field is two octets and indicates the compression protocol desired. Values for this field are Berger & Jeffords [Page 3] Internet Draft draft-berger-mpls-hdr-comp-over-ppp-00.txt March 2000 always the same as the PPP Data Link Layer Protocol field values for that same compression protocol. Current values are assigned as follows: Value (in hex) Protocol TBD MPLS/IP Header Compression TCP_SPACE The TCP_SPACE field is two octets and indicates the maximum value of a context identifier in the space of context identifiers allocated for TCP. Suggested value: as specified in [RFC2509] (15) TCP_SPACE must be at least 0 and at most 255 (The value 0 implies having one context). NON_TCP_SPACE The NON_TCP_SPACE field is two octets and indicates the maximum value of a context identifier in the space of context identifiers allocated for non-TCP. These context identifiers are carried in COMPRESSED_NON_TCP, COMPRESSED_UDP and COMPRESSED_RTP packet headers. Suggested value: as specified in [RFC2509] (15) NON_TCP_SPACE must be at least 0 and at most 65535 (The value 0 implies having one context). F_MAX_PERIOD Maximum interval between full headers. No more than F_MAX_PERIOD COMPRESSED_NON_TCP headers may be sent between FULL_HEADER headers. Suggested value: as specified in [RFC2509] (256) A value of zero implies infinity, i.e. there is no limit to the number of consecutive COMPRESSED_NON_TCP headers. F_MAX_TIME Maximum time interval between full headers. COMPRESSED_NON_TCP headers may not be sent more than F_MAX_TIME seconds after sending the last FULL_HEADER header. Suggested value: as specified in [RFC2509] (5 seconds) Berger & Jeffords [Page 4] Internet Draft draft-berger-mpls-hdr-comp-over-ppp-00.txt March 2000 A value of zero implies infinity. MAX_HEADER The largest header size, excluding MPLS headers, in octets that may be compressed. Suggested value: as specified in [RFC2509] (168 octets) The value of MAX_HEADER should be large enough so that at least the outer network layer header can be compressed. To increase compression efficiency MAX_HEADER should be set to a value large enough to cover common combinations of network and transport layer headers. Note that this parameter doesn't include the MPLS headers. To get the total bytes that may be compressed, the value from this parameter must be combined with the value of MAX_LABELS, defined in Section 2.3, multiplied by the size of an MPLS label entry (4 octets.) suboptions The suboptions field consists of zero or more suboptions. Each suboption consists of a type field, a length field and zero or more parameter octets, as defined by the suboption type. The value of the length field indicates the length of the suboption in its entirety, including the lengths of the type and length fields. 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | Parameters... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2.2. RTP-Compression Suboption The RTP-Compression suboption is included in the NCP MPLS- Compression-Protocol option if MPLS/IP/UDP/RTP compression is to be enabled. This suboption is identical to the RTP-Compression suboption in [RFC2209]. After successful negotiation of parameters for MPLS/IP Header Compression the use of Protocol Identifiers FULL_MPLS_HEADER, COMPRESSED_MPLS, COMPRESSED_TCP, COMPRESSED_TCP_NODELTA and COMPRESSED_NON_TCP is enabled, regardless of the presence of an RTP- Compression suboption. Berger & Jeffords [Page 5] Internet Draft draft-berger-mpls-hdr-comp-over-ppp-00.txt March 2000 Description Enable use of Protocol Identifiers COMPRESSED_RTP, COMPRESSED_UDP and CONTEXT_STATE as specified in [CMPLS] and [RFC2508]. 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Type 1 Length 2 2.3. Stack-Depth Suboption The stack-depth suboption is included in the MPLS-Compression- Protocol option to negotiate the maximum number of MPLS label stack entries that can be processed by the decompressor. If the suboptions is not present, the default specified in [CMPLS] must be used. (Currently 1.) Description Used to negotiate the maximum number of MPLS label stack entries that may be compressed. 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | MAX_LABELS | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Type 2 Length 3 Berger & Jeffords [Page 6] Internet Draft draft-berger-mpls-hdr-comp-over-ppp-00.txt March 2000 MAX_LABELS Indicates the maximum number of label stack entries (MPLS headers) that may be compressed. 3. Demultiplexing of Datagrams A total of ten header format values are defined to support MPLS/IP header compression over PPP. Two of these are defined to support the new formats defined in MPLS/IP header compression [CMPLS]. The remaining ten were previously defined in [RFC2209] to support IP and IP/UDP/RTP compression. While these ten header format values could be reused used to support MPLS/IP header compression, they are not. They are not reused so that there is no ambiguity as to which types of headers are being compressed. Note that the FULL_HEADER type define in [RFC2209] is not used by [CMPLS]. The term "M_" is prepended to the defined values to distinguish them from [RFC2209] values. The "M_" should be ignored when mapping the types to the types used in [CMPLS]. M_FULL_MPLS_HEADER The frame contains a datagram with a compressed header with the format specified in [CMPLS]. Value: TBD M_COMPRESSED_MPLS_8 The frame contains a datagram with a compressed header with the format specified in [CMPLS], using 8-bit CIDs. Value: TBD M_COMPRESSED_MPLS_16 The frame contains a datagram with a compressed header with the format specified in [CMPLS], using 16-bit CIDs. Value: TBD M_COMPRESSED_TCP The frame contains a datagram with a compressed header with the format specified in [RFC2507] and as modified by [CMPLS]. Value: TBD M_COMPRESSED_TCP_NODELTA The frame contains a datagram with a compressed header with the format specified in [RFC2507] and as modified by [CMPLS]. Value: TBD Berger & Jeffords [Page 7] Internet Draft draft-berger-mpls-hdr-comp-over-ppp-00.txt March 2000 M_COMPRESSED_NON_TCP The frame contains a datagram with a compressed header with the format specified in [RFC2507] and as modified by [CMPLS]. Value: TBD M_COMPRESSED_RTP_8 The frame contains a datagram with a compressed header with the format specified in [RFC2508] and as modified by [CMPLS], using 8-bit CIDs. Value: TBD M_COMPRESSED_RTP_16 The frame contains a datagram with a compressed header with the format specified in [RFC2508] and as modified by [CMPLS], using 16-bit CIDs. Value: TBD M_COMPRESSED_UDP_8 The frame contains a datagram with a compressed header with the format specified in [RFC2508] and as modified by [CMPLS], using 8-bit CIDs. Value: TBD M_COMPRESSED_UDP_16 The frame contains a datagram with a compressed header with the format specified in [RFC2508] and as modified by [CMPLS], using 16-bit CIDs. Value: TBD The value for CONTEXT_STATE defined in [RFC2509], 2065 (hex), is reused to support MPLS/IP header compression. 4. Security Considerations No new security issues are raised by this document. Please see [RFC2509] for a discussion of existing considerations associated with the negotiation of header compression. See [RFC2507] and [RFC2508] for a detailed discussion of existing considerations associated with header compression. Berger & Jeffords [Page 8] Internet Draft draft-berger-mpls-hdr-comp-over-ppp-00.txt March 2000 5. IANA Considerations TBD 6. Acknowledgments This document steals heavily from the text and ideas of [RFC2509]. 7. References [CMPLS] Berger, L., Jeffords, J., "MPLS/IP Header Compression", draft-berger-mpls-hdr-comp-00.txt, January 2000. [LABELS] Rosen, Rekhter, Tappan, Farinacci, Fedorkow, Li, Conta, "MPLS Label Stack Encoding", draft-ietf-mpls-label-encaps-07.txt, September 1999. [RFC1144] Jacobson, V., "TCP/IP Compression for Low-Speed Serial Links", RFC 1144, February 1990. [RFC2507] Degermark, M., Nordgren, B. and S. Pink, "IP Header Compression", RFC 2507, February 1999. [RFC2508] Casner, S., Jacobson, V., "Compressing IP/UDP/RTP Headers for Low-Speed Serial Link", RFC 2508, February 1999 [RFC2509] Engan, M., Casner, S., Bormann, C., "IP Header Compression over PPP", RFC 2509, February 1999 [STD51] Simpson, W., "The Point-to-Point Protocol (PPP)", STD 51, RFC 1661, July 1994. 8. Authors' Addresses Lou Berger Jason Jeffords LabN Consulting, LLC Integral Access Inc. Voice: +1 301 468 9228 321 Billerica Rd. Email: lberger@labn.net Chelmsford, MA 01824 Voice: +1 978 256 8833 Email: jjeffords@integralaccess.com Berger & Jeffords [Page 9]