RFC 7371

Updates to the IPv6 Multicast Addressing Architecture

πŸ“… published September 2014, from ietf

RFC 7371: Updates to the IPv6 Multicast Addressing Architecture ✨

Okay bestie, this is RFC 7371 πŸ¦‹, filed as ISSN 2070-1721. It's called Updates to the IPv6 Multicast Addressing Architecture, and it was written by M. Boucadair (France Telecom) and S. Venaas (Cisco) in September 2014. It's a Standards Track doc, so it's the real deal πŸ’…. It updates RFCs 3306, 3956, and 4291, and no obsoleted documents are listed. The whole point is to rework the IPv6 multicast addressing architecture, so it's giving major upgrade energy πŸ”₯.


Abstract

Okay so the big idea here is that the reserved bits in IPv6 multicast addresses get redefined as generic flag bits 🌈. The doc also clears up some confusion about how those flag bits should be used 🫢.

This document updates RFCs 3956, 3306, and 4291 πŸ’œ.

Status of This Memo

This is an Internet Standards Track document ✨.

It's a product of the Internet Engineering Task Force (IETF), so it represents IETF community consensus. It went through public review and got approved for publication by the Internet Engineering Steering Group (IESG) πŸŽ€. If you want more on Internet Standards, check Section 2 of RFC 5741 🧚.

For the current status, any errata, or to send feedback, head to http://www.rfc-editor.org/info/rfc7371 πŸ’–.

Copyright (c) 2014 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 they stood on the publication date. Please read them carefully, because they spell out your rights and restrictions. Code Components pulled out of this doc must include Simplified BSD License text, as described in Section 4.e of the Trust Legal Provisions, and they come with no warranty, as described in the Simplified BSD License πŸ™ˆ.

This document may contain material from IETF Documents or IETF Contributions that were published or made publicly available before November 10, 2008. Some of that material's copyright holders may not have given the IETF Trust permission to allow modifications outside the IETF Standards Process. Unless you get an adequate license from those copyright holders, this document may not be modified outside the IETF Standards Process, and derivative works of it may not be created outside the IETF Standards Process. The one exceptions are formatting it for publication as an RFC or translating it into languages other than English πŸ’….

Table of Contents

   1. Introduction ....................................................3
      1.1. Requirements Language ......................................3
   2. Addressing Architecture Update ..................................3
   3. Flag Bits: New Processing Rules .................................4
   4. RFC Updates .....................................................4
      4.1. Updates to RFC 3306 ........................................4
           4.1.1. Update #1 ...........................................4
           4.1.2. Update #2 ...........................................6
      4.2. Updates to RFC 3956 ........................................6
           4.2.1. Update #1 ...........................................6
           4.2.2. Update #2 ...........................................7
           4.2.3. Update #3 ...........................................8
           4.2.4. Update #4 ...........................................9
   5. Security Considerations .........................................9
   6. Acknowledgements ................................................9
   7. References ......................................................9
      7.1. Normative References .......................................9
      7.2. Informative References ....................................10

1. Introduction 🌷

This doc updates the IPv6 addressing architecture [RFC4291] by turning reserved bits into generic flag bits (see Section 2). It also explains how those flag bits are supposed to get used (see Section 3) πŸ’….

This document updates [RFC3956], [RFC3306], and [RFC4291]. These updates are the logical consequences of the new processing rules in Section 3 πŸ¦‹.

Any textual representation of IPv6 addresses in the RFC updates follows the recommendation in [RFC5952] πŸŽ€.

1.1. Requirements Language

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 [RFC2119]. This is the rulebook for the capital-letter words, so pay attention to them πŸ‘‘.

2. Addressing Architecture Update 🧚

Okay so bits 17-20 of a multicast address, counting bit 1 as the most significant bit, were defined as reserved bits in [RFC3956] and [RFC3306]. This document flips that: those bits become generic flag bits that apply to any multicast address ✨. They're called "ff2" (flag field 2), and the "flgs" bits from [RFC4291] [RFC3956] get renamed to "ff1" (flag field 1) 🌈.

In this document, "flag bits" means both ff1 and ff2 πŸ’–.

Making bits 17-20 flags for all IPv6 multicast addresses means addresses can be treated in a more uniform, generic way. It also leaves room to define these bits later for different purposes, no matter what kind of multicast address you're looking at 🫢. Real talk, this design choice started with the proposal in [ADDR-FORMAT], which wanted to attach a meaning to one of the reserved bits. [ADDR-FORMAT] also looked at using the last remaining flag in ff1, but they dropped that idea because it wasn't clear yet whether the flag had other usage scenarios πŸ™ˆ.

Section 4 spells out the updated structure of the addressing architecture πŸ’œ.

Other specification documents may define a meaning for these flag bits 🧚.

3. Flag Bits: New Processing Rules πŸ’…

Some implementations and specification documents don't treat the flag bits as separate bits. They tend to use the combined value as a 4-bit integer instead, and that's a real hurdle when you want to give a meaning to the remaining flag bits 😭. Here are a couple of examples, just to illustrate:

  • The reading of [RFC3306] may lead one to conclude that ff3x::/32 is the only allowed Source-Specific Multicast (SSM) IPv6 prefix block.
  • [RFC3956] states that only ff70::/12 applies to Embedded-RP. Particularly, implementations should not treat the fff0::/12 range as Embedded-RP.

To avoid this confusion and to unambiguously link a meaning to each remaining flag, the following requirement is made πŸ‘‘:

Implementations MUST treat flag bits as separate bits. πŸ”₯

4. RFC Updates πŸŽ€

4.1. Updates to RFC 3306 🌸

4.1.1. Update #1 ✨

This document changes Section 4 of [RFC3306] as follows πŸ’….

OLD:

      |   8    |  4 |  4 |   8    |    8   |       64       |    32    |
      +--------+----+----+--------+--------+----------------+----------+
      |11111111|flgs|scop|reserved|  plen  | network prefix | group ID |
      +--------+----+----+--------+--------+----------------+----------+

                                   +-+-+-+-+
   flgs is a set of 4 flags:       |0|0|P|T|
                                   +-+-+-+-+
  • P = 0 indicates a multicast address that is not assigned based on the network prefix. This indicates a multicast address as defined in [ADDRARCH].
  • P = 1 indicates a multicast address that is assigned based on the network prefix.
  • If P = 1, T MUST be set to 1; otherwise, the setting of the T bit is defined in Section 2.7 of [ADDRARCH].

The reserved field MUST be zero.

Note: [ADDRARCH] is a reference listed in [RFC3306]. [ADDRARCH] has since been obsoleted by [RFC4291] πŸ™ˆ.

NEW:

     |   8    |  4 |  4 |  4 |  4 |    8   |       64       |    32    |
     +--------+----+----+----+----+--------+----------------+----------+
     |11111111|ff1 |scop|ff2 |rsvd|  plen  | network prefix | group ID |
     +--------+----+----+----+----+--------+----------------+----------+

                                                  +-+-+-+-+
   ff1 (flag field 1) is a set of 4 flags:        |X|Y|P|T|
                                                  +-+-+-+-+

X and Y may each be set to 0 or 1. Note that X is for future assignment, while a meaning is associated with Y in RFC 3956 🌈.

  • P = 0 indicates a multicast address that is not assigned based on the network prefix. This indicates a multicast address as defined in [RFC4291].
  • P = 1 indicates a multicast address that is assigned based on the network prefix.
  • If P = 1, T MUST be set to 1; otherwise, the setting of the T bit is defined in Section 2.7 of [RFC4291].
                                                  +-+-+-+-+
   ff2 (flag field 2) is a set of 4 flags:        |r|r|r|r|
                                                  +-+-+-+-+

Here, "rrrr" is reserved for future assignment as additional flag bits. r bits MUST each be sent as zero and MUST be ignored on receipt πŸ’–.

Flag bits denote both ff1 and ff2 πŸ¦‹.

4.1.2. Update #2 πŸ’œ

This document changes Section 6 of [RFC3306] as follows 🫢.

OLD:

   These settings create an SSM range of FF3x::/32 (where 'x' is any
   valid scope value).  The source address field in the IPv6 header
   identifies the owner of the multicast address.

NEW:

   If the flag bits in ff1 are set to 0011, these settings create an
   SSM range of ff3x::/32 (where 'x' is any valid scope value).  The
   source address field in the IPv6 header identifies the owner of
   the multicast address.  ff3x::/32 is not the only allowed SSM
   prefix range.  For example, if the most significant flag bit in
   ff1 is set, then we would get the SSM range ffbx::/32.

4.2. Updates to RFC 3956 🧚

4.2.1. Update #1 🌈

This document changes Section 2 of [RFC3956] as follows ✨.

OLD:

   As described in [RFC3306], the multicast address format is
   as follows:

      |   8    |  4 |  4 |   8    | 8  |       64       |    32    |
      +--------+----+----+--------+----+----------------+----------+
      |11111111|flgs|scop|reserved|plen| network prefix | group ID |
      +--------+----+----+--------+----+----------------+----------+

   Where flgs are "0011".  (The first two bits are as yet undefined,
   sent as zero and ignored on receipt.)

NEW:

The multicast address format is as follows πŸ’…:

      |   8    |  4 |  4 |  4 |  4 | 8  |       64       |    32    |
      +--------+----+----+----+----+----+----------------+----------+
      |11111111|ff1 |scop|ff2 |rsvd|plen| network prefix | group ID |
      +--------+----+----+----+----+----+----------------+----------+

                                                        +-+-+-+-+
      ff1 (flag field 1) is a set of four flags:        |X|R|P|T|
                                                        +-+-+-+-+

Where X is for future assignment as an additional flag bit. X may be set to 0 or 1 πŸ¦‹.

                                                        +-+-+-+-+
      ff2 (flag field 2) is a set of 4 flags:           |r|r|r|r|
                                                        +-+-+-+-+

Where "rrrr" is for future assignment as additional flag bits. r bits MUST each be sent as zero and MUST be ignored on receipt πŸ”₯.

Flag bits denote both ff1 and ff2 πŸ‘‘.


Part 1 of 2 is done, bestie! πŸ’– Part 2 is coming up next with Sections 4.2.2 through the end, so stay tuned 🫢✨

4.2.2. Update #2 πŸ’–

okay so this one changes Section 3 of [RFC3956] πŸŽ€ here's the OLD layout first:

       |   8    |  4 |  4 |  4 |  4 | 8  |       64       |    32    |
       +--------+----+----+----+----+----+----------------+----------+
       |11111111|flgs|scop|rsvd|RIID|plen| network prefix | group ID |
       +--------+----+----+----+----+----+----------------+----------+
                                       +-+-+-+-+
       flgs is a set of four flags:    |0|R|P|T|
                                       +-+-+-+-+

so when the highest-order bit is 0, R = 1 means the multicast address embeds the address of the RP πŸ¦‹ then P MUST be set to 1, and T MUST be set to 1 too, as [RFC3306] says. that basically locks it to the prefix FF70::/12 ✨ the last 4 bits of the old reserved field are used to embed the RP interface ID 🌸

if P or T isn't 1, the behavior is unspecified, because then the prefix wouldn't be FF70::/12 πŸ™ˆ and the FFF0::/12 range (flgs starting with 11) is intentionally left unspecified until the highest-order bit gets defined. without more IETF specs, implementations SHOULD NOT treat FFF0::/12 as Embedded-RP. bestie, that's a no-go zone for now πŸ’€

here's the NEW layout:

         |   8    |  4 |  4 |  4 |  4 | 8  |       64       |    32    |
         +--------+----+----+----+----+----+----------------+----------+
         |11111111|ff1 |scop|ff2 |RIID|plen| network prefix | group ID |
         +--------+----+----+----+----+----+----------------+----------+
                                         +-+-+-+-+
         ff1 is a set of four flags:     |X|R|P|T|
                                         +-+-+-+-+

X is for future assignment as an additional flag bit 🧚 X may be set to 0 or 1.

R = 1 means the multicast address embeds the address of the RP 🌈 again P MUST be set to 1, and consequently T MUST be set to 1, according to [RFC3306], because this is a special case of unicast-prefix-based addresses. so now prefixes ff70::/12 and fff0::/12 both count as embedded RP prefixes ✨ when the R-bit is set, the last 4 bits of the field that [RFC3306] reserved are read as the embedded RP interface ID, as this memo specifies. main character energy πŸ‘‘


4.2.3. Update #3 πŸ¦‹

This document changes Section 4 of [RFC3956] as follows:

OLD:

  • It MUST be a multicast address with "flgs" set to 0111, that is, to be of the prefix FF70::/12,

NEW:

  • It MUST be a multicast address with the R-bit set to 1.
  • It MUST have the P-bit and T-bit both set to 1 when using the embedding in this document as it is a prefix-based address.

4.2.4. Update #4 πŸ’…

This document changes Section 7.1 of [RFC3956] as follows:

OLD:

   To avoid loops and inconsistencies, for addresses in the range
   FF70::/12, the Embedded-RP mapping MUST be considered the longest
   possible match and higher priority than any other mechanism.

NEW:

   To avoid loops and inconsistencies, for addresses with the R-bit
   set to 1, the Embedded-RP mapping MUST be considered the longest
   possible match and higher priority than any other mechanism.

5. Security Considerations πŸ”₯

okay bestie, this part is serious 😭 the same security considerations as those discussed in [RFC3956], [RFC3306], and [RFC4291] are to be taken into account. no skipping these, periodt πŸ’œ

6. Acknowledgements 🫢

special thanks to Brian Haberman for the discussions before this document got published πŸ“ and many thanks to Jouni Korhonen, Tatuya Jinmei, Charlie Kaufman, and Ben Campbell for reviewing it. the squad really showed up ✨

7. References πŸ“š

7.1. Normative References

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

[RFC3306]  Haberman, B. and D. Thaler, "Unicast-Prefix-based IPv6
           Multicast Addresses", RFC 3306, August 2002.

[RFC3956]  Savola, P. and B. Haberman, "Embedding the Rendezvous
           Point (RP) Address in an IPv6 Multicast Address",
           RFC 3956, November 2004.

[RFC4291]  Hinden, R. and S. Deering, "IP Version 6 Addressing
           Architecture", RFC 4291, February 2006.

[RFC5952]  Kawamura, S. and M. Kawashima, "A Recommendation for IPv6
           Address Text Representation", RFC 5952, August 2010.

7.2. Informative References

[ADDR-FORMAT]
           Boucadair, M., Qin, J., Lee, Y., Venaas, S., Li, X., and
           M. Xu, "IPv6 Multicast Address With Embedded IPv4
           Multicast Address", Work in Progress, April 2013.

Authors' Addresses ✨

Mohamed Boucadair
France Telecom
Rennes  35000
France

EMail: mohamed.boucadair@orange.com


Stig Venaas
Cisco
USA

EMail: stig@cisco.com
πŸ“¦ where this page comes from