RFC 4247

Requirements for Header Compression over MPLS

πŸ“… published November 2005, from ietf

RFC 4247: Requirements for Header Compression over MPLS πŸŽ€

Part 1 of 2 ✨

Title block (the important bits): This is RFC 4247, titled Requirements for Header Compression over MPLS, from the Network Working Group. It's written by J. Ash, B. Goode, and J. Hand (all AT&T) and R. Zhang (BT Infonet) πŸ‘©β€πŸ’». It's Informational and dated November 2005. It doesn't list anything it obsoletes or updates, so it's not replacing or changing any older RFCs 🧚.

Status of This Memo πŸ“œ

This memo is informational, which means it's just sharing info with the internet community. It does not specify an Internet standard of any kind πŸ™…. Distribution of this memo is unlimited, so it's free to share with anyone 🌈.

Copyright (C) The Internet Society (2005) πŸ’œ.

Abstract πŸ¦‹

Okay so VoIP usually rides in a voice/RTP/UDP/IP encapsulation 🎧. Once MPLS labels get added, it turns into voice/RTP/UDP/IP/MPLS-labels 😭. On an MPLS VPN the packet header is typically 48 bytes, but the voice payload is often no more than 30 bytes, for example πŸ’€. Header compression can seriously cut down that overhead with mechanisms like enhanced compressed RTP (ECRTP) and robust header compression (ROHC) ✨. The big idea is to use MPLS to route compressed packets over an MPLS Label Switched Path (LSP) without doing compression and decompression at every router πŸ”₯. This can boost bandwidth efficiency, plus the processing scalability of how many simultaneous flows use header compression at each router πŸ‘‘. This document gives a problem statement, goals and requirements, and an example scenario πŸŽ€.

Table of Contents πŸ—‚οΈ

   1. Introduction ....................................................2
   2. Problem Statement ...............................................3
      2.1. Specification of Requirements ..............................4
   3. Goals and Requirements ..........................................5
   4. Candidate Solution Methods and Needs ............................6
   5. Example Scenario ................................................7
   6. Security Considerations .........................................8
   7. Normative References ............................................8
   8. Informative References ..........................................9
   9. Acknowledgements ...............................................10

1. Introduction 🧚

Same VoIP story here: it usually goes voice/RTP/UDP/IP 🎧. When MPLS labels [MPLS-ARCH] get added, it becomes voice/RTP/UDP/IP/MPLS-labels πŸ’…. For an MPLS Virtual Private Network (VPN) (e.g., [MPLS-VPN]), the packet header is at least 48 bytes, while the voice payload is often no more than 30 bytes, for example πŸ™ˆ. People are obsessed with header compression (HC) because it can shrink that overhead a ton using things like enhanced compressed RTP [ECRTP] or robust header compression [ROHC], and it also helps HC scale better πŸ“ˆ. We're looking at routing compressed packets over an MPLS Label Switched Path (LSP) without compression/decompression cycles at each router πŸ¦‹. That kind of HC over MPLS capability can boost bandwidth efficiency, plus the processing scalability of how many simultaneous flows use HC at each router 🌸.

To make HC over MPLS happen, the ingress router/gateway has to apply the HC algorithm to the IP packet πŸŽ€. The compressed packet then rides an MPLS LSP using MPLS labels, and the compressed header gets decompressed at the egress router/gateway where the HC session ends πŸ’–. Figure 1 shows an HC over MPLS session on an LSP that crosses several routers, going from R1/HC --> R2 --> R3 --> R4/HD. R1/HC is the ingress router where HC is performed, and R4/HD is the egress router where header decompression (HD) is done πŸ‘‘. HC of the RTP/UDP/IP header happens at R1/HC, and the compressed packets get routed with MPLS labels from R1/HC to R2, to R3, and finally to R4/HD, with no extra decompression/recompression cycles along the way πŸ”₯. The RTP/UDP/IP header gets decompressed at R4/HD and can then be forwarded to other routers as needed ✨.

                    _____
                   |     |
                   |R1/HC| Header Compression (HC) Performed
                   |_____|
                      |
                      | voice/compressed-header/MPLS-labels
                      V
                    _____
                   |     |
                   | R2  |
                   |_____|
                      |
                      | voice/compressed-header/MPLS-labels
                      V
                    _____
                   |     |
                   | R3  |
                   |_____|
                      |
                      | voice/compressed-header/MPLS-labels
                      V
                    _____
                   |     |
                   |R4/HD| Header Decompression (HD) Performed
                   |_____|

            Figure 1.  Example of Header Compression over MPLS
                           over Routers R1-->R4

So in this example, HC happens between R1 and R4, and the MPLS path carries voice/compressed-header/MPLS-labels instead of voice/RTP/UDP/IP/MPLS-labels. That typically saves 30 octets or more per packet 🀩. The MPLS label stack and link-layer headers are not compressed, though πŸ™ƒ. A signaling method is needed to set up a correspondence between the ingress and egress routers of the HC over MPLS session 🫢.

In Section 2 we give a problem statement, in Section 3 we give goals and requirements, and in Section 5 we give an example scenario πŸ“š.

2. Problem Statement πŸ’…

As we covered in the intro, HC over MPLS can seriously reduce header overhead through HC mechanisms πŸ™Œ. HC matters most on low-speed links where bandwidth is scarce, but it's also a big deal on backbone facilities, especially where costs are high (e.g., some global cross-sections) 🌍. VoIP usually uses voice compression mechanisms (e.g., G.729) on low-speed and international routes to conserve bandwidth 🎧. With HC, even more bandwidth could be saved 🀯. For example, carrying uncompressed headers for the entire voice load of a large domestic network with 300 million or more calls per day could eat up on the order of about 20-40 gigabits per second on the backbone network, just for headers 😭. That overhead could add up to a considerable amount of bandwidth capacity πŸ’Έ.

People love to say that once fiber is in place, more bandwidth is basically cheap, or nearly "free" πŸ™„. That might be true in some cases, but on certain international cross-sections, facility/transport costs are very high, so saving backbone bandwidth there is super worth it πŸ’°. Decreasing backbone bandwidth is needed in some parts of the world where bandwidth is really expensive, and it's important in almost all locations to cut bandwidth consumption on low-speed links 🐒. So even though bandwidth keeps getting cheaper, the value of compression doesn't go away 🫢. Also, IPv6 will increase the size of headers, which makes HC even more important for RTP flows πŸ“ˆ.

Hop-by-hop HC could also be applied to decrease bandwidth requirements, but that means compression-decompression cycles at every router hop 😩. That doesn't scale well for large voice traffic loads. The maximum number of compressed RTP (cRTP) flows is about 30-50 for a typical customer premise router, depending on its uplink speed and processing power, while the need may go past 300-500 for a high-end case πŸ“‰. So HC over MPLS seems like a viable alternative for getting the compression benefits without costly processing demands on the intermediate nodes 🧠. With HC over MPLS, routers just forward compressed packets without a decompression/recompression cycle, which increases the maximum number of simultaneous compressed flows that routers can handle πŸš€.

So the proposal is to use existing HC techniques, together with MPLS labels, to make transporting RTP/UDP/IP headers more efficient over an MPLS network πŸ’œ. However, right now there are no standards for HC over MPLS, and vendors haven't implemented such techniques 😬.

2.1. Specification of Requirements πŸ“œ

Here's the fine print for the big requirement words 🧐. 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 [KEY] πŸ”‘.

3. Goals and Requirements 🎯

The goals of HC over MPLS are as follows 🌟:

a. provide more efficient voice transport over MPLS networks, b. increase the scalability of HC to a large number of flows, c. not significantly increase packet delay, delay variation, or loss probability, and d. leverage existing work through use of standard protocols as much as possible.

So the requirements for HC over MPLS are as follows πŸ’–:

a. MUST use existing protocols (e.g., [ECRTP], [ROHC]) to compress RTP/UDP/IP headers, so you get efficient transport, tolerance to packet loss, and resistance to loss of session context πŸ›‘οΈ. b. MUST allow HC over an MPLS LSP, which avoids hop-by-hop compression/decompression cycles (e.g., [HC-MPLS-PROTO]) πŸ¦‹. c. MUST minimize incremental performance degradation due to increased delay, packet loss, and jitter πŸŽ€. d. MUST use standard protocols to signal context identification and control information (e.g., [RSVP], [RSVP-TE], [LDP]) πŸ“‘. e. Packet reordering MUST NOT cause incorrectly decompressed packets to be forwarded from the decompressor πŸ™…β€β™€οΈ.

It's necessary that the HC method be able to handle out-of-sequence packets πŸ‘€. MPLS [MPLS-ARCH] lets 4-byte labels get appended to IP packets, so traffic can switch from the ingress Label Switching Router (LSR) to the egress LSP on an LSP through an MPLS network πŸ”. But MPLS doesn't guarantee packets will arrive in order at the egress LSR, since a bunch of things could cause them to come out of sequence 😡. For example, a link failure could make the LSP routing change, maybe because an MPLS fast reroute kicked in, or because the Interior Gateway Protocol (IGP) and Label Distribution Protocol (LDP) converged on another route, among other possible reasons πŸ—ΊοΈ. Other causes could include IGP reroutes due to 'loose hops' in the LSP, or BGP route changes reflecting back into IGP reroutes πŸŒ€. HC algorithms may be able to handle reordering magnitudes on the order of about 10 packets, which may make the time needed for IGP reconvergence (typically on the order of seconds) too much for the HC algorithm πŸ₯². On the other hand, MPLS fast reroute may be fast enough (on the order of 50 ms or less) for the HC algorithm to handle packet reordering ⚑. The issue of reordering needs to be further considered in the development of the HC over MPLS solution 🧩.

Resynchronization and performance also need to be considered, since HC over MPLS can sometimes have multiple routers in the LSP πŸ”„. Tunneling an HC session over an MPLS LSP with multiple routers in the path will increase the round-trip delay and the chance of packet loss, and HC contexts may get invalidated due to packet loss πŸ“‰. The HC error recovery mechanism can make the problem worse when long round-trip delays are involved 😩.

4. Candidate Solution Methods and Needs ✨

okay so, cRTP is at its absolute best when the packet error rate is super low on every hop of the path 🫢. When the cRTP decompressor's context state gets out of sync with the compressor, it starts dropping every packet tied to that context until the two sides are back in sync 😭. To fix that, the decompressor sends a CONTEXT_STATE packet to the compressor, and the compressor replies with a FULL_HEADER packet to the decompressor πŸ”.

[ECRTP] has mechanisms that make cRTP way more tolerant of packet loss πŸ’…, so it helps cut down on how often the feedback-based error recovery (CONTEXT_STATE packets) has to kick in. That makes ECRTP a candidate method for making HC over MPLS more tolerant of loss and for protecting against constant resynchronizations 🧚. ECRTP might need some implementation adaptations to deal with the reordering requirement in Section 3 (requirement e), because a default implementation will probably not meet it πŸ’€. ECRTP protocol extensions may also be needed to identify the FULL_HEADER, CONTEXT_STATE, and compressed packet types πŸŽ€. [cRTP-ENCAP] defines a separate link-layer packet type for HC, which means you don't have to squeeze extra bits into the compression header to tell the packet types apart 🌸. The catch is that this approach doesn't scale nicely with MPLS encapsulation conventions [MPLS-ENCAP], because there a separate link-layer packet type turns into a separate LSP for each packet type 😩. So to extend ECRTP to HC over MPLS, each packet type defined in [ECRTP] would need to be identified in an appended packet type field in the ECRTP header πŸ’œ.

[ROHC] is also very tolerant of packet loss, which makes it another candidate method for guarding against frequent resynchronizations πŸ¦‹. It also gets a somewhat better level of compression than ECRTP πŸ“. ROHC might need some implementation adaptations to address the reordering requirement in Section 3 (requirement e), since a default implementation will probably not meet it (see [ROHC-REORD]) πŸ™ˆ. The good news is that ROHC can already identify the packet type in the compression header, so no further extension is needed for that πŸ‘‘.

Extensions to MPLS signaling may be needed to do a few important things πŸ“£: identify the LSP from the HC to the HD egress point, negotiate the HC algorithm and protocol parameters, and negotiate the Session Context IDs (SCIDs) space between the ingress and egress routers on the MPLS LSP 🧩. For example, new objects may need to be defined for [RSVP-TE] to signal the SCID spaces between the ingress and egress routers, plus the HC algorithm used to determine the context. Then those HC packets carry the SCID identified through the RSVP-TE objects ✨. It's also desirable to signal HC over MPLS tunnels with the Label Distribution Protocol [LDP], since lots of RFC 2547 VPN [MPLS-VPN] implementations use LDP as their underlying LSP signaling mechanism, and LDP is very scalable 🌈. Still, extensions to LDP may be needed to signal SCIDs between ingress and egress routers on HC over MPLS LSPs 🫠. For example, 'targeted LDP sessions' might be set up to signal SCIDs, or the methods in [LDP-PWE3] for signaling pseudo-wires and multipoint-to-point LSPs might be extended to support SCID signaling for HC over MPLS LSPs πŸ’–. The specific MPLS signaling protocol extensions that support these approved requirements need to be developed in a well-coordinated separate document in the appropriate IETF working groups πŸŽ€. The IETF also needs a coordinated process for the two solution documents, even though they live in separate areas 🫢.


5. Example Scenario 🌸

okay picture this, as Figure 2 shows πŸ“Έ: a bunch of VoIP flows start at customer sites served by routers R1, R2, and R3, and they all end up at several big customer call centers served by R5, R6, and R7 πŸ“ž. R4 is a service-provider router, and every single VoIP flow goes through it πŸ›£οΈ. It is essential that the R4-R5, R4-R6, and R4-R7 low-speed links all use HC so you can fit the maximum number of simultaneous VoIP flows πŸ”₯. To help R4 keep up with all those flows, it's desired to use HC over MPLS for them πŸ’ͺ. With HC over MPLS, R4 doesn't have to do HC/HD for the flows going to the call centers, which means way more scalability for the number of simultaneous VoIP flows with HC at R4 πŸ‘‘.

     voice/C-HDR/MPLS-labels ______ voice/C-HDR/MPLS-labels
R1/HC---------------------->|      |-----------------------> R5/HD
                            |      |
     voice/C-HDR/MPLS-labels|      |voice/C-HDR/MPLS-labels
R2/HC---------------------->|  R4  |-----------------------> R6/HD
                            |      |
     voice/C-HDR/MPLS-labels|      |voice/C-HDR/MPLS-labels
R3/HC---------------------->|______|-----------------------> R7/HD

                 Note: HC    = header compression
                       C-HDR = compressed header
                       HD    = header decompression

     Figure 2.  Example Scenario for Application of HC over MPLS

6. Security Considerations 🚨

πŸ’€ Heads up, this one's serious. HC is a juicy target for denial-of-service attacks, because its processing load is high πŸ’€.

Here's the scary part 😱: an attacker could send a high-bandwidth data stream through a network, with the headers in that stream marked appropriately so HC gets applied. That would burn through big chunks of processing resources on the routers doing the compression and decompression, and those resources might then be unavailable for other important jobs on the router πŸ₯Ί. This threat isn't new for HC, but HC over MPLS addresses and mitigates it πŸ›‘οΈ. By cutting down on the need for compression and decompression cycles, as proposed in this document, the risk of this type of denial-of-service attack is reduced 🫢.


7. Normative References πŸ“š

[cRTP]          Casner, S. and V. Jacobson, "Compressing IP/UDP/RTP
                Headers for Low-Speed Serial Links", RFC 2508,
                February 1999.

[cRTP-ENCAP]    Engan, M., Casner, S., Bormann, C., and T. Koren, "IP
                Header Compression over PPP", RFC 3544, July 2003.

[ECRTP]         Koren, T., Casner, S., Geevarghese, J., Thompson, B.,
                and P. Ruddy, "Enhanced Compressed RTP (CRTP) for
                Links with High Delay, Packet Loss and Reordering",
                RFC 3545, July 2003.

[KEY]           Bradner, S., "Key words for use in RFCs to Indicate
                Requirement Levels", RFC 2119, March 1997.

[LDP]           Andersson, L., Doolan, P., Feldman, N., Fredette, A.,
                and B. Thomas, "LDP Specification", RFC 3036, January
                2001.

[MPLS-ARCH]     Rosen, E., Viswanathan, A., and R. Callon,
                "Multiprotocol Label Switching Architecture", RFC
                3031, January 2001.

[ROHC]          Bormann, C., et al., "RObust Header Compression
                (ROHC): Framework and four profiles: RTP, UDP, ESP,
                and uncompressed ", RFC 3095, July 2001.

[RSVP]          Braden, R., Zhang, L., Berson, S., Herzog, S., and S.
                Jamin, "Resource ReSerVation Protocol (RSVP) --
                Version 1 Functional Specification", RFC 2205,
                September 1997.

[RSVP-TE]       Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan,
                V., and G. Swallow, "RSVP-TE: Extensions to RSVP for
                LSP Tunnels", RFC 3209, December 2001.

8. Informative References 🧠

[HC-MPLS-PROTO] Ash, G., Goode, B., Hand, J., Jonsson, L-E., Malis,
                A., and R. Zhang, "Protocol Extensions for Header
                Compression over MPLS", work in progress.

[LDP-PWE3]      Martini, L., El-Aawar, N., Smith, T., and G. Heron,
                "Pseudowire Setup and Maintenance using the Label
                Distribution Protocol", work in progress.

[MPLS-ENCAP]    Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y.,
                Farinacci, D., Li, T., and A. Conta, "MPLS Label
                Stack Encoding", RFC 3032, January 2001.

[MPLS-VPN]      Rosen, E. and Y. Rekhter, "BGP/MPLS VPNs", RFC 2547,
                March 1999.

[ROHC-REORD]    Pelletier, G., Jonsson, L-E., and K. Sandlund,
                "RObust Header Compression (ROHC): ROHC over Channels
                that can Reorder Packets", work in progress.

9. Acknowledgements 🫢

The authors want to give a huge thank-you to these people (in alphabetical order) for their helpful comments and suggestions πŸ’–: Loa Andersson, Scott Brim, Thomas Eriksson, Victoria Fineberg, Lars-Erik Jonsson, Allison Mankin, Colin Perkins, Kristofer Sandlund, and Magnus Westerlund 🌟.


Authors' Addresses πŸ’Œ

Jerry Ash
AT&T
Room MT D5-2A01
200 Laurel Avenue
Middletown, NJ 07748, USA
Phone: +1 732-420-4578
EMail: gash@att.com


Bur Goode
AT&T
Phone: + 1 203-341-8705
EMail: bgoode@att.com


Jim Hand
AT&T
Room MT A2-1A03
200 Laurel Avenue
Middletown, NJ 07748, USA
Phone: +1 732-420-3017
EMail: jameshand@att.com


Raymond Zhang
BT Infonet
2160 E. Grand Ave.
El Segundo, CA 90025 USA
EMail: raymond.zhang@bt.infonet.com

Copyright (C) The Internet Society (2005) 🌈.

This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights πŸ“œ.

⚠️ Read this part carefully. This document and the information in it are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Intellectual Property πŸ¦‹

The IETF takes no position on the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document, or on whether any license under such rights might or might not be available 🀷. It also doesn't represent that it has made any independent effort to identify any such rights. Information on the procedures for rights in RFC documents can be found in BCP 78 and BCP 79 πŸ“–.

Copies of IPR disclosures made to the IETF Secretariat, any assurances of licenses to be made available, or the results of an attempt to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr πŸ”—.

The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard πŸ’…. Please send that information to the IETF at ietf-ipr@ietf.org πŸ’Œ.


Acknowledgement πŸ’œ

Funding for the RFC Editor function is currently provided by the Internet Society πŸŽ€βœ¨.

πŸ“¦ where this page comes from