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