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. |