RFC 5172

Negotiation for IPv6 Datagram Compression Using IPv6 Control Protocol

πŸ“… published March 2008, from ietf

RFC 5172 πŸ’– Negotiation for IPv6 Datagram Compression Using IPv6 Control Protocol

Okay bestie, let's get into this! πŸŽ€ Here's the title block tea:

  • Network Working Group 🌸
  • Request for Comments: 5172
  • Editor: S. Varada, Ed. (Transwitch) πŸ’…
  • Date: March 2008
  • Category: Standards Track ✨
  • Obsoletes: 2472

Status of This Memo

Okay so this part is basically the fine print πŸ™ˆ It says this is an Internet standards track protocol for the Internet community, and it's asking everyone to talk about it and suggest improvements. If you want to know where it stands officially, go check the current edition of "Internet Official Protocol Standards" (STD 1). And the memo can be distributed freely, no cap 🌈

Abstract

Okay, the Point-to-Point Protocol (PPP) is the thing that wraps network-layer info up so it can travel over point-to-point links πŸ¦‹ PPP also has an extensible Link Control Protocol, plus a whole family of Network Control Protocols (NCPs) that set up and configure different network-layer protocols. Iconic behaviour ✨

The IPv6 Control Protocol (IPV6CP) is one of those NCPs for PPP links. It lets you negotiate the parameters you want for an IPv6 interface over PPP, which is so useful πŸ’œ

This document defines the IPv6 datagram compression option that a node on the link can negotiate through IPV6CP. Main character energy πŸ‘‘

Table of Contents

   1. Introduction ....................................................2
      1.1. Specification of Requirements ..............................2
   2. IPV6CP Configuration Options ....................................3
      2.1. IPv6-Compression-Protocol ..................................3
   3. Security Considerations .........................................4
   4. IANA Considerations .............................................5
   5. Management Considerations .......................................5
   6. Acknowledgments .................................................5
   7. References ......................................................5
      7.1. Normative References .......................................5
      7.2. Informative References .....................................6

1. Introduction 🧚

Okay so PPP has three main components, and this is the lineup πŸ’…

  1. A method for encapsulating datagrams over serial links.
  2. A Link Control Protocol (LCP) for establishing, configuring, and testing the data-link connection.
  3. A family of Network Control Protocols (NCPs) for establishing and configuring different network-layer protocols.

Here's how the setup goes πŸ“ Each end of the PPP link has to send LCP packets first to configure and test the data link. Once the link is up and the optional facilities have been negotiated as the LCP needs, PPP has to send NCP packets to choose and configure one or more network-layer protocols. After each chosen protocol is configured, its datagrams can flow over the link. The link stays configured until explicit LCP or NCP packets shut it down, or until some outside event happens, like a power failure on the other end, a carrier drop, and so on. It's giving reliability 😭

The IPv6 over PPP specification [2] is where the NCP for IPv6 over PPP gets defined, and that's IPV6CP for establishing and configuring IPv6 over PPP. The same specification also defines the Interface Identifier parameter, which can be negotiated and used to generate link-local and globally unique IPv6 addresses 🌸

This specification is the one that defines the compression parameter for IPv6 datagram compression. Together with RFC 5072 [2], this document obsoletes RFC 2472 [13]. BUT no protocol changes were introduced over RFC 2472, so nothing new to relearn here, bestie 🫢

1.1. Specification of Requirements

In this document, a few words are used to signal the requirements of the specification πŸ”₯

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 [3]. Those are the official rules, so read them carefully ✨

2. IPV6CP Configuration Options πŸŽ€

IPV6CP Configuration Options are how you negotiate the IPv6 parameters you want πŸ’– IPV6CP uses the same Configuration Option format that LCP [1] uses, but it has its own separate set of Options. If a Configuration Option isn't included in a Configure-Request packet, the default value for that option is assumed. Simple, iconic πŸ’…

The only IPV6CP option defined in this document is the IPv6-Compression-Protocol. The Type field for this option looks like this:

            2 IPv6-Compression-Protocol

Note that the up-to-date values of the IPV6CP Option Type field are specified in the on-line database of "Assigned Numbers" maintained by IANA [7]. Always check the latest version, periodt 🌈

2.1. IPv6-Compression-Protocol

This Configuration Option lets you negotiate the use of a specific IPv6 packet compression protocol πŸ¦‹ It's how you say "I'm able to receive compressed packets." Each end of the link MUST separately request this option if bidirectional compression is desired. And by default, compression is not enabled, so you have to ask for it πŸ™ˆ

Heads up, this compression is specific to IPv6 datagrams. Don't mix it up with compression from a method negotiated via the PPP Compression Control Protocol (CCP) [12], which can potentially affect all datagrams. Different vibes entirely ⭐

Here's the summary of the IPv6-Compression-Protocol Configuration Option format. 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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |   IPv6-Compression-Protocol   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    Data ...
   +-+-+-+-+

Here's the breakdown, bestie πŸ’œ

  • Type: 2
  • Length: >= 4
  • IPv6-Compression-Protocol: This field is two octets and tells you which compression protocol is wanted. Its values are always the same as the PPP Data Link Layer Protocol field values for that same compression protocol. Values have been assigned in [4, 5] for IP Header Compression (0061), and in [6] for Robust Header Compression (ROHC) (0003). Other assignments can be made in documents that define specific compression algorithms. ✨
  • Data: This field is zero or more octets and holds extra data, depending on the particular compression protocol. 🌸

The default, when this option isn't negotiated, is to have no IPv6 compression protocol enabled. Nothing sneaks on unless you ask 🫢

3. Security Considerations πŸ’€

Okay, this section is serious, so listen up 😭 Lack of proper link security, like authentication, before data transfers can enable man-in-the middle attacks, and those can lead to loss of data integrity and confidentiality. The mechanisms that are appropriate for ensuring PPP link security are addressed below, along with a reference to a generic threat model.

The mechanisms that fit for PPP link security are: 1) Access Control Lists that apply filters on traffic received over the link to enforce admission policy, 2) an authentication protocol that helps peers negotiate an authentication method (for example, MD5 [9]) to validate the peer, and 3) an encryption control protocol that helps peers negotiate encryption algorithms (or crypto-suites) to ensure data confidentiality [10]. πŸ”

There are still certain threats tied to peer interactions on a PPP link, even with one or more of those measures in place πŸ™ˆ For instance, using the MD5 authentication method [9] exposes you to replay attacks, where an attacker could intercept and replay a station's identity and password hash to get access to a network. Scary, I know πŸ’€ The user of this specification is advised to refer to [8], which presents a generic threat model, to understand the threats to a link's security. The reference [8] also gives a framework for specifying requirements for choosing an authentication method for a given application. Read it, bestie!! 🫢

4. IANA Considerations 🌈

No specific action is needed to assign a value for the Type field of the IPv6 datagram compression option specified here. The current assignment is up-to-date in the registry "PPP IPV6CP CONFIGURATION OPTIONS" for item IPv6-Compression-Protocol (2) at [7]. However, the RFC reference for that item has been changed to 5172 ✨

No action is needed for the assignment of IPV6-Compression-Protocol values either, because those values were already defined by other documents listed in Section 2.1. The values are always the same as the PPP Data Link Layer Protocol field values for that same compression protocol. So future allocation of these values is governed by RFC 3818 [11], which requires IETF Consensus. The current values are in the registry "IPv6-Compression-Protocol Types". However, the RFC reference for that registry has been changed to 5172 πŸ’…

5. Management Considerations πŸ‘‘

From an operational point of view, the status of the negotiation and the compression algorithm on the link should be observable by an operator managing a network πŸ¦‹ At the time this specification was written, there was no standard management interface covering this, so that's a gap to keep an eye on πŸ™ˆ

6. Acknowledgments 🫢

The editor is grateful to Jari Arkko for the direction on this document and to James Carlson for helpful suggestions πŸ’– Acknowledgments are also due to D. Haskin and E. Allen for the specification work done in RFC 2023 and RFC 2472. Thank you, legends 🌸

7. References πŸ“š

7.1. Normative References

  • [1] Simpson, W., Ed., "The Point-to-Point Protocol (PPP)", STD 51, RFC 1661, July 1994.
  • [2] Varada, S., Ed., Haskin, D., and E. Allen, "IP Version 6 over PPP", RFC 5072, September 2007.
  • [3] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
  • [4] Degermark, M., Nordgren, B., and S. Pink, "IP Header Compression", RFC 2507, February 1999.
  • [5] Koren, T., Casner, S., and C. Bormann, "IP Header Compression over PPP", RFC 3544, July 2003.
  • [6] Bormann, C., "Robust Header Compression (ROHC) over PPP", RFC 3241, April 2002.

7.2. Informative References

  • [7] IANA, http://www.iana.org.
  • [8] Aboba, B., Blunk, L., Vollbrecht, J., Carlson, J., and H. Levkowetz, Ed., "Extensible Authentication Protocol (EAP)", RFC 3748, June 2004.
  • [9] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, April 1992.
  • [10] Meyer, G., "The PPP Encryption Control Protocol (ECP)", RFC 1968, June 1996.
  • [11] Schryver, V., "IANA Considerations for the Point-to-Point Protocol (PPP)", BCP 88, RFC 3818, June 2004.
  • [12] Rand, D., "The PPP Compression Control Protocol(CCP)", RFC 1962, June 1996.
  • [13] Haskin, D. and E. Allen, "IP Version 6 over PPP", RFC 2472, December 1998.

Okay, legal stuff but make it cute πŸŽ€ Copyright (C) The IETF Trust (2008). This document is governed by the rights, licenses and restrictions in BCP 78, and the authors keep all their rights unless BCP 78 says otherwise. πŸ¦‹

This document and the information in it are provided "AS IS," and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST 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 ✨

Okay so the IETF is not taking a side on whether any patents or other IP rights that might apply to the tech in this doc are valid, or how far they reach, or whether you can even get a license for them. It also hasn't done any independent digging to find out what rights might be out there. πŸ•΅οΈβ€β™€οΈ If you want the nitty-gritty on how rights work for RFCs, check out BCP 78 and BCP 79. πŸ“š

Copies of IPR disclosures sent to the IETF Secretariat are available, along with any promises of licenses, plus the results of any attempt to get a general license or permission for implementers or users to use those proprietary rights. You can find all of that in the IETF's online IPR repository at http://www.ietf.org/ipr. 🌸

And if you spot any copyrights, patents, patent applications, or other proprietary rights that might cover technology you need to implement this standard, the IETF totally wants to hear about it! 🫢 Send that info to ietf-ipr@ietf.org. Bestie, speak up! πŸ“£ 🌈

πŸ“¦ where this page comes from