summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc9279.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc9279.txt')
-rw-r--r--doc/rfc/rfc9279.txt537
1 files changed, 537 insertions, 0 deletions
diff --git a/doc/rfc/rfc9279.txt b/doc/rfc/rfc9279.txt
new file mode 100644
index 0000000..f6646f0
--- /dev/null
+++ b/doc/rfc/rfc9279.txt
@@ -0,0 +1,537 @@
+
+
+
+
+Internet Engineering Task Force (IETF) M. Sivakumar
+Request for Comments: 9279 Juniper Networks
+Category: Standards Track S. Venaas
+ISSN: 2070-1721 Cisco Systems, Inc.
+ Z. Zhang
+ ZTE Corporation
+ H. Asaeda
+ NICT
+ August 2022
+
+
+ Internet Group Management Protocol Version 3 (IGMPv3) and Multicast
+ Listener Discovery Version 2 (MLDv2) Message Extension
+
+Abstract
+
+ This document specifies a generic mechanism to extend IGMPv3 and
+ Multicast Listener Discovery Version 2 (MLDv2) by using a list of
+ TLVs (Type, Length, and Value).
+
+Status of This Memo
+
+ This is an Internet Standards Track document.
+
+ This document is a product of the Internet Engineering Task Force
+ (IETF). It represents the consensus of the IETF community. It has
+ received public review and has been approved for publication by the
+ Internet Engineering Steering Group (IESG). Further information on
+ Internet Standards is available in Section 2 of RFC 7841.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ https://www.rfc-editor.org/info/rfc9279.
+
+Copyright Notice
+
+ Copyright (c) 2022 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
+ (https://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document. Code Components extracted from this document must
+ include Revised BSD License text as described in Section 4.e of the
+ Trust Legal Provisions and are provided without warranty as described
+ in the Revised BSD License.
+
+Table of Contents
+
+ 1. Introduction
+ 2. Conventions Used in This Document
+ 3. Extension Format
+ 3.1. Multicast Listener Query Extension
+ 3.2. Version 2 Multicast Listener Report Extension
+ 3.3. IGMP Membership Query Extension
+ 3.4. IGMP Version 3 Membership Report Extension
+ 4. No-op TLV
+ 5. Processing the Extension
+ 6. Applicability and Backwards Compatibility
+ 7. Security Considerations
+ 8. IANA Considerations
+ 9. References
+ 9.1. Normative References
+ 9.2. Informative References
+ Acknowledgements
+ Authors' Addresses
+
+1. Introduction
+
+ This document defines a generic method to extend IGMPv3 [RFC3376] and
+ MLDv2 [RFC3810] messages to accommodate information other than what
+ is contained in the current message formats. This is done by
+ allowing a list of TLVs to be used in the Additional Data section of
+ IGMPv3 and MLDv2 messages. This document defines a registry for such
+ TLVs. Other documents will define their specific types, and their
+ values and semantics. The extension would only be used when at least
+ one TLV is to be added to the message. This extension also applies
+ to the lightweight versions of IGMPv3 and MLDv2 as defined in
+ [RFC5790].
+
+ When this extension mechanism is used, it replaces the Additional
+ Data section defined in IGMPv3/MLDv2 with TLVs.
+
+ Additional Data is defined for Query messages in IGMPv3
+ (Section 4.1.10 of [RFC3376]) and MLDv2 (Section 5.1.12 of
+ [RFC3810]), and for Report messages in IGMPv3 (Section 4.2.11 of
+ [RFC3376]) and MLDv2 (Section 5.2.11 of [RFC3810]).
+
+2. Conventions Used in This Document
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
+ "OPTIONAL" in this document are to be interpreted as described in
+ BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
+ capitals, as shown here.
+
+3. Extension Format
+
+ For each of the IGMPv3 and MLDv2 headers, a previously reserved bit
+ is used to indicate the presence of this extension. When this
+ extension is used, the Additional Data of IGMPv3 and MLDv2 messages
+ is formatted as follows. Note that this format contains a variable
+ number of TLVs. It MUST contain at least one TLV.
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Extension Type 1 | Extension Length 1 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Extension Value 1 |
+ . . .
+ . . .
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Extension Type 2 | Extension Length 2 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Extension Value 2 |
+ . . .
+ . . .
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Extension Type n | Extension Length n |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Extension Value n |
+ . . .
+ . . .
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 1: Extension Format
+
+ Extension Type: 2 octets. This identifies a particular Extension
+ Type as defined in the "IGMP/MLD Extension Types" registry. If
+ this is not the first TLV, it will follow immediately after the
+ end of the previous one. There is no alignment or padding.
+
+ Extension Length: 2 octets. This specifies the length in octets of
+ the following Extension Value field. The length may be zero if no
+ value is needed.
+
+ Extension Value: This field contains the value. The specification
+ defining the Extension Type describes the length and contents of
+ this field.
+
+ IGMPv3 and MLDv2 messages are defined so they can fit within the
+ network MTU in order to avoid fragmentation. An IGMPv3/MLDv2 Report
+ message contains a number of records. The records are called Group
+ Records for IGMPv3 and Address Records for MLDv2. When this
+ extension mechanism is used, the number of records in each Report
+ message SHOULD be kept small enough so that the entire message,
+ including any extension TLVs, can fit within the network MTU.
+
+3.1. Multicast Listener Query Extension
+
+ The MLDv2 Query message format [RFC3810] with extension is shown
+ below. The E-bit MUST be set to 1 to indicate that the extension is
+ present. Otherwise, it MUST be 0.
+
+
+ 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 = 130 | Code | Checksum |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Maximum Response Code | Reserved |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ * *
+ | |
+ * Multicast Address *
+ | |
+ * *
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |E| Resv|S| QRV | QQIC | Number of Sources (N) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ * *
+ | |
+ * Source Address [1] *
+ | |
+ * *
+ | |
+ +- -+
+ | |
+ * *
+ | |
+ * Source Address [2] *
+ | |
+ * *
+ | |
+ +- . -+
+ . . .
+ . . .
+ +- -+
+ | |
+ * *
+ | |
+ * Source Address [N] *
+ | |
+ * *
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Extension |
+ ~ ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 2: MLD Query Extension
+
+3.2. Version 2 Multicast Listener Report Extension
+
+ The MLDv2 Report message format [RFC3810] with extension is shown
+ below. The E-bit MUST be set to 1 to indicate that the extension is
+ present. Otherwise, it MUST be 0.
+
+ 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 = 143 | Reserved | Checksum |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |E| Reserved |Nr of Mcast Address Records (M)|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ . .
+ . Multicast Address Record [1] .
+ . .
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ . .
+ . Multicast Address Record [2] .
+ . .
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | . |
+ . . .
+ | . |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ . .
+ . Multicast Address Record [M] .
+ . .
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Extension |
+ ~ ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 3: MLD Report Extension
+
+3.3. IGMP Membership Query Extension
+
+ The IGMPv3 Query message format [RFC3376] with the extension is shown
+ below. The E-bit MUST be set to 1 to indicate that the extension is
+ present. Otherwise, it MUST be 0.
+
+
+ 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 = 0x11 | Max Resp Code | Checksum |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Group Address |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |E| Resv|S| QRV | QQIC | Number of Sources (N) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Source Address [1] |
+ +- -+
+ | Source Address [2] |
+ +- . -+
+ . . .
+ . . .
+ +- -+
+ | Source Address [N] |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Extension |
+ ~ ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 4: IGMP Query Extension
+
+3.4. IGMP Version 3 Membership Report Extension
+
+ The IGMPv3 Report message format [RFC3376] with the extension is
+ shown below. The E-bit MUST be set to 1 to indicate that the
+ extension is present. Otherwise, it MUST be 0.
+
+ 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 = 0x22 | Reserved | Checksum |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |E| Reserved | Number of Group Records (M) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ . .
+ . Group Record [1] .
+ . .
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ . .
+ . Group Record [2] .
+ . .
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | . |
+ . . .
+ | . |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ . .
+ . Group Record [M] .
+ . .
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Extension |
+ ~ ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 5: IGMP Report Extension
+
+4. No-op TLV
+
+ The No-op TLV is a No-Operation TLV that MUST be ignored during
+ processing. This TLV may be used to verify that the extension
+ mechanism has been implemented correctly. Note that there is no
+ alignment requirement, so there is no need to use this Extension Type
+ to provide alignment.
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | No-op Type = 0 | No-op Length |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Value |
+ . . .
+ . . .
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 6: No-op TLV Format
+
+ No-op Type: 2 octets. The type of the No-op TLV extension is 0.
+
+ Extension Length: 2 octets. This specifies the length in octets of
+ the following Value field. The length may be zero if no value is
+ needed.
+
+ Value: This field contains the value. As this Extension Type is
+ always ignored, the value can be arbitrary data. The number of
+ octets used MUST match the specified length.
+
+5. Processing the Extension
+
+ The procedure specified in this document only applies when the E-bit
+ is set.
+
+ If the validation of the TLVs fails, the entire Additional Data field
+ MUST be ignored as specified in IGMPv3 [RFC3376] and MLDv2 [RFC3810].
+ The following checks must pass for the validation of the TLVs not to
+ fail:
+
+ * At least one TLV MUST be present.
+
+ * There MUST NOT be any data in the IP payload after the last TLV.
+ To check this, the parser needs to walk through each of the TLVs
+ until there are less than four octets left in the IP payload. If
+ there are any octets left, validation fails.
+
+ * The total length of the Extension MUST NOT exceed the remainder of
+ the IP payload length. For this validation, only the content of
+ the Extension Length fields is examined.
+
+ Future documents defining a new Extension Type MUST specify any
+ additional processing and validation. These rules, if any, will be
+ examined only after the general validation succeeds.
+
+ TLVs with unsupported Extension Types MUST be ignored.
+
+6. Applicability and Backwards Compatibility
+
+ IGMP and MLD implementations, particularly implementations on hosts,
+ rarely change. The adoption process of this extension mechanism is
+ expected to be slow. As new extension TLVs are defined, it may take
+ a long time for them to be supported. Due to this, defining new
+ extension TLVs should not be taken lightly, and it is crucial to
+ consider backwards compatibility.
+
+ Implementations that do not support this extension mechanism will
+ ignore it, as specified in [RFC3376] and [RFC3810]. As mentioned in
+ the previous section, unsupported extension TLVs are ignored.
+
+ It is possible that a new extension TLV will only apply to queries or
+ only to reports, or that there may be other specific conditions for
+ when it is to be used. A document defining a new Extension Type MUST
+ specify the conditions under which the new Extension Type should be
+ used, including which message types. It MUST also be specified what
+ the behavior should be if a message is not used in the defined
+ manner, e.g., if it is present in a Query message, when it was only
+ expected to be used in reports.
+
+ When defining new Extension Types, the effect of partial support for
+ the new TLV, by either the hosts or routers, on the same link should
+ be carefully considered. Further, whether there are any dependencies
+ or restrictions on combinations between the new Extension Types and
+ any preexisting Extension Types must be considered.
+
+ This document defines an extension mechanism only for IGMPv3 and
+ MLDv2. Hence, this mechanism does not apply if hosts or routers send
+ older version messages.
+
+7. Security Considerations
+
+ The Security Considerations of [RFC3376] and [RFC3810] also apply
+ here.
+
+ This document extends the IGMP and MLD message formats, allowing for
+ a variable number of TLVs. Implementations must take care not to
+ exceed the packet boundary when parsing the TLVs, because an attacker
+ could intentionally specify a TLV with a length exceeding the
+ boundary.
+
+ An implementation could add a large number of minimal TLVs in a
+ message to increase the cost of processing the message. This would
+ magnify a denial-of-service attack.
+
+8. IANA Considerations
+
+ IANA has created a new registry called "IGMP/MLD Extension Types" in
+ the "Internet Group Management Protocol (IGMP) Type Numbers" section
+ and lists this document as the reference. The registration procedure
+ is "IETF Review" [RFC8126]. The registry is common for IGMP and MLD.
+
+ Two Extension Types (65534 and 65535) are provided for "Experimental
+ Use" [RFC8126]. Any experiments should be confined to closed
+ environments where it is unlikely that they may conflict with other
+ experiments; see [RFC3692].
+
+ IANA has initially populated the registry as shown in Table 1
+
+ +================+==========+==================+===========+
+ | Extension Type | Length | Name | Reference |
+ +================+==========+==================+===========+
+ | 0 | variable | No-op | RFC 9279 |
+ +----------------+----------+------------------+-----------+
+ | 1-65533 | | Unassigned | |
+ +----------------+----------+------------------+-----------+
+ | 65534-65535 | variable | Reserved for | |
+ | | | Experimental Use | |
+ +----------------+----------+------------------+-----------+
+
+ Table 1: IGMP/MLD Extension Types
+
+9. References
+
+9.1. Normative References
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119,
+ DOI 10.17487/RFC2119, March 1997,
+ <https://www.rfc-editor.org/info/rfc2119>.
+
+ [RFC3376] Cain, B., Deering, S., Kouvelas, I., Fenner, B., and A.
+ Thyagarajan, "Internet Group Management Protocol, Version
+ 3", RFC 3376, DOI 10.17487/RFC3376, October 2002,
+ <https://www.rfc-editor.org/info/rfc3376>.
+
+ [RFC3810] Vida, R., Ed. and L. Costa, Ed., "Multicast Listener
+ Discovery Version 2 (MLDv2) for IPv6", RFC 3810,
+ DOI 10.17487/RFC3810, June 2004,
+ <https://www.rfc-editor.org/info/rfc3810>.
+
+ [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for
+ Writing an IANA Considerations Section in RFCs", BCP 26,
+ RFC 8126, DOI 10.17487/RFC8126, June 2017,
+ <https://www.rfc-editor.org/info/rfc8126>.
+
+ [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
+ 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
+ May 2017, <https://www.rfc-editor.org/info/rfc8174>.
+
+9.2. Informative References
+
+ [RFC3692] Narten, T., "Assigning Experimental and Testing Numbers
+ Considered Useful", BCP 82, RFC 3692,
+ DOI 10.17487/RFC3692, January 2004,
+ <https://www.rfc-editor.org/info/rfc3692>.
+
+ [RFC5790] Liu, H., Cao, W., and H. Asaeda, "Lightweight Internet
+ Group Management Protocol Version 3 (IGMPv3) and Multicast
+ Listener Discovery Version 2 (MLDv2) Protocols", RFC 5790,
+ DOI 10.17487/RFC5790, February 2010,
+ <https://www.rfc-editor.org/info/rfc5790>.
+
+Acknowledgements
+
+ The authors thank Ron Bonica, Ian Duncan, Wesley Eddy, Leonard
+ Giuliano, Jake Holland, Tommy Pauly, Pete Resnick, Alvaro Retana, and
+ Zhaohui Zhang for reviewing the document and providing valuable
+ feedback.
+
+Authors' Addresses
+
+ Mahesh Sivakumar
+ Juniper Networks
+ 64 Butler St
+ Milpitas, CA 95035
+ United States of America
+ Email: sivakumar.mahesh@gmail.com
+
+
+ Stig Venaas
+ Cisco Systems, Inc.
+ Tasman Drive
+ San Jose, CA 95134
+ United States of America
+ Email: stig@cisco.com
+
+
+ Zheng(Sandy) Zhang
+ ZTE Corporation
+ No. 50 Software Ave, Yuhuatai District
+ Nanjing
+ 210000
+ China
+ Email: zhang.zheng@zte.com.cn
+
+
+ Hitoshi Asaeda
+ National Institute of Information and Communications Technology
+ 4-2-1 Nukui-Kitamachi, Koganei, Tokyo
+ 184-8795
+ Japan
+ Email: asaeda@nict.go.jp