RFC 6564

A Uniform Format for IPv6 Extension Headers

πŸ“… published April 2012, from ietf

A Uniform Format for IPv6 Extension Headers πŸŽ€

RFC 6564 is a Standards Track document from April 2012 (ISSN 2070-1721) written by S. Krishnan (Ericsson), J. Woodyatt (Apple), E. Kline (Google), J. Hoagland (Symantec), and M. Bhatia (Alcatel-Lucent). It updates RFC 2460, and there's no Obsoletes line in its header πŸ’…

Abstract ✨

okay so IPv6 lets optional internet-layer info hang out in separate headers that sit between the IPv6 header and the transport-layer header. only a small number of these extension headers are defined right now 🌸 this doc talks about the issues that can pop up when someone wants to define a new extension header, and it looks at the other extension mechanisms IPv6 already has. it also gives a common format for defining any new IPv6 extension headers, if they end up being needed πŸ’œ

Status of This Memo πŸ¦‹

this is an Internet Standards Track document πŸ’–

it's a product of the Internet Engineering Task Force (IETF). it represents the consensus of the IETF community, got public review, and was approved for publication by the Internet Engineering Steering Group (IESG). if you want more info on Internet Standards, check out Section 2 of RFC 5741 🧚

info about the current status of this doc, any errata, and how to send feedback can be found at http://www.rfc-editor.org/info/rfc6564 ⭐

Copyright (c) 2012 IETF Trust and the persons identified as the document authors. All rights reserved. 🫢

this document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as in effect on the date of publication. please read these carefully, because they explain your rights and restrictions for this document πŸ™ˆ Code Components pulled out of this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions, and they come without warranty as described in the Simplified BSD License πŸ’€

Table of Contents πŸ“

1. Introduction ....................................................2
2. Conventions Used in This Document ...............................3
3. Applicability ...................................................3
4. Proposed IPv6 Extension Header Format ...........................4
5. Backward Compatibility ..........................................4
6. Future Work .....................................................5
7. Security Considerations .........................................5
8. Acknowledgements ................................................5
9. Normative References ............................................5

1. Introduction ✨

the base IPv6 standard [RFC2460] defines extension headers as an expansion mechanism for carrying optional internet-layer info 🌸 extension headers (except for the Hop-by-Hop Options header) usually aren't processed on intermediate nodes. BUT, several deployed IPv6 routers and several deployed IPv6 firewalls are, against [RFC2460], able to parse past or ignore all the currently defined IPv6 extension headers. they can do this at wire speed, for example with custom Application-specific Integrated Circuits (ASICs) for packet processing, so they can look at transport-layer header fields πŸ‘€ so, bestie, any new IPv6 extension header could break IPv6 deployments that rely on these existing capabilities 😭

any IPv6 header or option that has hop-by-hop behavior and is meant for general use on the public IPv6 Internet could get subverted to attack IPv6 routers that process packets carrying it πŸ’€ reports from the field say some IP routers in the global Internet are set up either to ignore headers with hop-by-hop behavior or to drop packets that contain them πŸ”₯

2. Conventions Used in This Document πŸ’œ

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 [RFC2119] πŸ“œ

3. Applicability πŸŽ€

the base IPv6 standard [RFC2460] lets you use both extension headers and destination options to encode optional destination info in an IPv6 packet πŸ¦‹ using destination options for this info gives more flexible handling and better backward compatibility than extension headers do, so it's giving "use the good option first" πŸ‘‘ because of this, implementations SHOULD use destination options as the preferred mechanism for encoding optional destination information, and only use a new extension header if destination options don't satisfy their needs. the request to create a new IPv6 extension header MUST be accompanied by a specific explanation of why destination options couldn't be used to convey this information πŸ™ˆ

the base IPv6 standard [RFC2460] defines 3 extension headers (Routing header, Destination Options header, Hop-by-Hop Options header) that are meant for any new IPv6 options 🧚 the same standard only allows creating new extension headers in limited circumstances ([RFC2460], Section 4.6) 🌈

as mentioned above, using any option with hop-by-hop behavior can be a problem on the global public Internet 😬 New IPv6 extension header(s) having hop-by-hop behavior MUST NOT be created or specified. New options for the existing Hop-by-Hop Header SHOULD NOT be created or specified unless no alternative solution is feasible. any proposal to create a new option for the existing Hop-by-Hop Header MUST include a detailed explanation of why the hop-by-hop behavior is absolutely essential in the document proposing the new option with hop-by-hop behavior πŸ”₯

the hop-by-hop part is the big red flag here, bestie 🚩 don't go near it unless there is literally no other way

the Destination Options header gives more flexible handling and better backward compatibility than a new extension header does, so it's giving "use what's already there" ✨ because of this, new optional info to be sent SHOULD be encoded in a new option for the existing IPv6 Destination Options header 🫢

being mindful of compatibility with existing IPv6 deployments, new IPv6 extension headers MUST NOT be created or specified, unless no existing IPv6 extension header can be used by specifying a new option for that existing IPv6 extension header. any proposal to create or specify a new IPv6 extension header MUST include a detailed technical explanation of why no existing IPv6 extension header can be used, in the document proposing the new IPv6 extension header πŸ’…

4. Proposed IPv6 Extension Header Format 🧚

any IPv6 extension headers defined in the future, keeping in mind the restrictions in Section 3 and the restrictions in [RFC2460], MUST use the consistent format defined in Figure 1. this minimizes breakage in intermediate nodes that examine these extension headers πŸ’–

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Next Header  |  Hdr Ext Len  |                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
   |                                                               |
   .                                                               .
   .                  Header Specific Data                         .
   .                                                               .
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Next Header          8-bit selector.  Identifies the type of header
                        immediately following the extension header.
                        Uses the same values as the IPv4 Protocol field
                        [IANA_IP_PARAM].

   Hdr Ext Len          8-bit unsigned integer.  Length of the extension
                        header in 8-octet units, not including the first
                        8 octets.

   Header Specific      Variable length.  Fields specific to the
   Data                 extension header.

                     Figure 1: Extension Header Layout

(there's more to come, bestie, part 2 is next πŸ¦‹πŸ’œ)

Authors' Addresses ✨

okay bestie, here are the five legends who wrote this thing 🫢 their contact info is below so you can slide into their inboxes if you have questions πŸ’Œ

Suresh Krishnan πŸ’–

Suresh Krishnan
Ericsson
8400 Decarie Blvd.
Town of Mount Royal, QC
Canada
Phone: +1 514 345 7900 x42871
EMail: suresh.krishnan@ericsson.com

James Woodyatt πŸ“

James Woodyatt
Apple Inc.
1 Infinite Loop
Cupertino, CA 95014
US
EMail: jhw@apple.com

Erik Kline πŸ¦‹

Erik Kline
Google
Mori Tower 26F
Roppongi 6-10-1
Minato ku
Tokyo 106-6126
Japan
Phone: +81 3-6384-9635
EMail: ek@google.com

James Hoagland πŸ’œ

James Hoagland
Symantec Corporation
350 Ellis St.
Mountain View, CA 94043
US
EMail: Jim_Hoagland@symantec.com
URI:   http://symantec.com/

Manav Bhatia 🌸

Manav Bhatia
Alcatel-Lucent
Bangalore
India
EMail: manav.bhatia@alcatel-lucent.com

that's the whole squad, periodt πŸŒˆπŸ‘‘

πŸ“¦ where this page comes from