rfc9466.original | rfc9466.txt | |||
---|---|---|---|---|
PIM Y. Liu, Ed. | Internet Engineering Task Force (IETF) Y. Liu, Ed. | |||
Internet-Draft China Mobile | Request for Comments: 9466 China Mobile | |||
Intended status: Standards Track T. Eckert, Ed. | Category: Standards Track T. Eckert, Ed. | |||
Expires: 21 October 2023 M. McBride | ISSN: 2070-1721 M. McBride | |||
Futurewei | Futurewei | |||
Z. Zhang | Z. Zhang | |||
ZTE Corporation | ZTE Corporation | |||
19 April 2023 | October 2023 | |||
PIM Assert Message Packing | PIM Assert Message Packing | |||
draft-ietf-pim-assert-packing-12 | ||||
Abstract | Abstract | |||
In PIM-SM shared LAN networks, there is often more than one upstream | When PIM Sparse Mode (PIM-SM), including PIM Source-Specific | |||
router. When PIM Sparse Mode (PIM-SM), including PIM Source | Multicast (PIM-SSM), is used in shared LAN networks, there is often | |||
Specific-Specific Multicast (PIM-SSM), is used, this can lead to | more than one upstream router. This can lead to duplicate IP | |||
duplicate IP multicast packets being forwarded by these PIM routers. | multicast packets being forwarded by these PIM routers. PIM Assert | |||
PIM Assert messages are used to elect a single forwarder for each IP | messages are used to elect a single forwarder for each IP multicast | |||
multicast traffic flow between these routers. | traffic flow between these routers. | |||
This document defines a mechanism to send and receive information for | This document defines a mechanism to send and receive information for | |||
multiple IP multicast flows in a single PackedAssert message. This | multiple IP multicast flows in a single PackedAssert message. This | |||
optimization reduces the total number of PIM packets on the LAN and | optimization reduces the total number of PIM packets on the LAN and | |||
can therefore speed up the election of the single forwarder, reducing | can therefore speed up the election of the single forwarder, reducing | |||
the number of duplicate IP multicast packets incurred. | the number of duplicate IP multicast packets incurred. | |||
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 21 October 2023. | 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/rfc9466. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2023 IETF Trust and the persons identified as the | Copyright (c) 2023 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 . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 | 1.1. Requirements Language | |||
1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 | 1.2. Terminology | |||
2. Problem Statement . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Problem Statement | |||
3. Specification . . . . . . . . . . . . . . . . . . . . . . . . 5 | 3. Specification | |||
3.1. PIM Assert Packing Hello Option . . . . . . . . . . . . . 5 | 3.1. PIM Packed Assert Capability Hello Option | |||
3.2. Assert Packing Message Formats . . . . . . . . . . . . . 5 | 3.2. Assert Packing Message Formats | |||
3.3. PackedAssert Mechanism . . . . . . . . . . . . . . . . . 6 | 3.3. PackedAssert Mechanism | |||
3.3.1. Sending PackedAssert messages . . . . . . . . . . . . 7 | 3.3.1. Sending PackedAssert Messages | |||
3.3.1.1. Handling of reception-triggered assert | 3.3.1.1. Handling of Reception-Triggered Assert Records | |||
records. . . . . . . . . . . . . . . . . . . . . . 8 | 3.3.1.2. Handling of Timer Expiry-Triggered Assert Records | |||
3.3.1.2. Handling of timer expiry-triggered assert | 3.3.1.3. Beneficial Delay in Sending PackedAssert Messages | |||
records. . . . . . . . . . . . . . . . . . . . . . 9 | 3.3.1.4. Handling Assert/PackedAssert Message Loss | |||
3.3.1.3. Beneficial delay in sending PackedAssert | 3.3.1.5. Optimal Degree of Assert Record Packing | |||
messages . . . . . . . . . . . . . . . . . . . . . 9 | 3.3.2. Receiving PackedAssert Messages | |||
3.3.1.4. Handling Assert/PackedAssert message loss . . . . 9 | 4. Packet Formats | |||
3.3.1.5. Optimal degree of assert record packing . . . . . 10 | 4.1. PIM Packed Assert Capability Hello Option | |||
3.3.2. Receiving PackedAssert messages . . . . . . . . . . . 10 | 4.2. Assert Message Format | |||
4. Packet Formats . . . . . . . . . . . . . . . . . . . . . . . 10 | 4.3. Simple PackedAssert Message Format | |||
4.1. PIM Assert Packing Hello Option . . . . . . . . . . . . . 10 | 4.4. Aggregated PackedAssert Message Format | |||
4.2. Assert Message Format . . . . . . . . . . . . . . . . . . 11 | 4.4.1. Source Aggregated Assert Record | |||
4.3. Simple PackedAssert Message Format . . . . . . . . . . . 11 | 4.4.2. RP Aggregated Assert Record | |||
4.4. Aggregated PackedAssert Message Format . . . . . . . . . 13 | 5. IANA Considerations | |||
4.4.1. Source Aggregated Assert Record . . . . . . . . . . . 15 | 6. Security Considerations | |||
4.4.2. RP Aggregated Assert Record . . . . . . . . . . . . . 16 | 7. References | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18 | 7.1. Normative References | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 18 | 7.2. Informative References | |||
7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 19 | Appendix A. Use Case Examples | |||
8. Working Group considerations . . . . . . . . . . . . . . . . 19 | A.1. Enterprise Network | |||
8.1. Open Issues . . . . . . . . . . . . . . . . . . . . . . . 19 | A.2. Video Surveillance | |||
8.2. Changelog . . . . . . . . . . . . . . . . . . . . . . . . 19 | A.3. Financial Services | |||
8.2.1. draft-ietf-pim-assert-packing-12 . . . . . . . . . . 19 | A.4. IPTV Broadcast Video | |||
8.2.2. draft-ietf-pim-assert-packing-11 . . . . . . . . . . 19 | A.5. MVPN MDT | |||
8.2.3. draft-ietf-pim-assert-packing-10 . . . . . . . . . . 20 | A.6. Special L2 Services | |||
8.2.4. draft-ietf-pim-assert-packing-09 . . . . . . . . . . 20 | Acknowledgments | |||
8.2.5. draft-ietf-pim-assert-packing-08 . . . . . . . . . . 21 | Authors' Addresses | |||
8.2.6. draft-ietf-pim-assert-packing-07 . . . . . . . . . . 21 | ||||
8.2.7. draft-ietf-pim-assert-packing-06 . . . . . . . . . . 22 | ||||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 | ||||
9.1. Normative References . . . . . . . . . . . . . . . . . . 22 | ||||
9.2. Informative References . . . . . . . . . . . . . . . . . 22 | ||||
Appendix A. Use case examples . . . . . . . . . . . . . . . . . 23 | ||||
A.1. Enterprise network . . . . . . . . . . . . . . . . . . . 24 | ||||
A.2. Video surveillance . . . . . . . . . . . . . . . . . . . 24 | ||||
A.3. Financial Services . . . . . . . . . . . . . . . . . . . 24 | ||||
A.4. IPTV broadcast Video . . . . . . . . . . . . . . . . . . 24 | ||||
A.5. MVPN MDT . . . . . . . . . . . . . . . . . . . . . . . . 24 | ||||
A.6. Special L2 services . . . . . . . . . . . . . . . . . . . 25 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 25 | ||||
1. Introduction | 1. Introduction | |||
In PIM-SM shared LAN networks, there is typically more than one | When PIM-SM is used in shared LAN networks, there is typically more | |||
upstream router. When duplicate data packets appear on the LAN, from | than one upstream router. When duplicate data packets appear on the | |||
different upstream routers, assert packets are sent from these | LAN from different upstream routers, assert packets are sent from | |||
routers to elect a single forwarder according to [RFC7761]. The PIM | these routers to elect a single forwarder according to [RFC7761]. | |||
assert messages are sent periodically to keep the assert state. The | The PIM Assert messages are sent periodically to keep the Assert | |||
PIM assert message carries information about a single multicast | state. The PIM Assert message carries information about a single | |||
source and group, along with the corresponding metric-preference and | multicast source and group, along with the corresponding Metric and | |||
metric of the route towards the source or PIM Rendezvous Point (RP). | Metric Preference of the route towards the source or PIM Rendezvous | |||
Point (RP). | ||||
This document defines a mechanism to encode the information of | This document defines a mechanism to encode the information of | |||
multiple PIM Assert messages into a single PackedAssert message. | multiple PIM Assert messages into a single PackedAssert message. | |||
This allows to send and receive information for multiple IP multicast | This allows sending and receiving information for multiple IP | |||
flows in a single PackedAssert message without changing the PIM | multicast flows in a single PackedAssert message without changing the | |||
Assert state machinery. It reduces the total number of PIM packets | PIM Assert state machinery. It reduces the total number of PIM | |||
on the LAN and can therefore speed up the election of the single | packets on the LAN and can therefore speed up the election of the | |||
forwarder, reducing the number of duplicate IP multicast packets. | single forwarder, reducing the number of duplicate IP multicast | |||
This can particularly be helpful when there is traffic for a large | packets. This can be particularly helpful when there is traffic for | |||
number of multicast groups or SSM channels and PIM packet processing | a large number of multicast groups or SSM channels and PIM packet | |||
performance of the routers is slow. | processing performance of the routers is slow. | |||
1.1. Requirements Language | 1.1. Requirements Language | |||
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. | |||
1.2. Terminology | 1.2. Terminology | |||
The reader is expected to be familiar with the terminology of | The reader is expected to be familiar with the terminology of | |||
[RFC7761]. The following lists the abbreviations repeated in this | [RFC7761]. The following lists the abbreviations repeated in this | |||
document. | document. | |||
AT: Assert Timer | AT: Assert Timer | |||
RP: Rendezvous Point | DR: Designated Router | |||
RPF: Reverse Path Forwarding | RP: Rendezvous Point | |||
SPT: Shortest Path Tree | RPF: Reverse Path Forwarding | |||
RPT: RP Tree | RPT: RP Tree | |||
DR: Designated Router | SPT: Shortest Path Tree | |||
2. Problem Statement | 2. Problem Statement | |||
PIM Asserts occur in many deployments. See Appendix A for explicit | PIM Asserts occur in many deployments. See Appendix A for explicit | |||
examples and explanations of why it is often not possible to avoid. | examples and explanations of why it is often not possible to avoid. | |||
PIM assert state depends mainly on the network topology. As long as | PIM Assert state depends mainly on the network topology. As long as | |||
there is a layer 2 network with more than 2 PIM routers, there may be | there is a Layer 2 (L2) network with more than two PIM routers, there | |||
multiple upstream routers, which can cause duplicate multicast | may be multiple upstream routers, which can cause duplicate multicast | |||
traffic to be forwarded and assert process to occur. | traffic to be forwarded and assert processing to occur. | |||
As the multicast services become widely deployed, the number of | As the multicast services become widely deployed, the number of | |||
multicast entries increases, and a large number of assert messages | multicast entries increases, and a large number of Assert messages | |||
may be sent in a very short period when multicast data packets | may be sent in a very short period when multicast data packets | |||
trigger PIM assert processing in the shared LAN networks. The PIM | trigger PIM assert processing in the shared LAN networks. The PIM | |||
routers need to process a large number of PIM assert small packets in | routers need to process a large number of small PIM assert packets in | |||
a very short time. As a result, the device load is very large. The | a very short time. As a result, the device load is very large. The | |||
assert packet may not be processed in time or even discarded, thus | assert packet may not be processed in time or even discarded, thus | |||
extending the time of traffic duplication in the network. | extending the time of traffic duplication in the network. | |||
The PIM Assert mechanism can only be avoided by designing the network | The PIM Assert mechanism can only be avoided by designing the network | |||
to be without transit subnets with multiple upstream routers. For | to be without transit subnets with multiple upstream routers. For | |||
example, an L2 ring between routers can sometimes be reconfigured to | example, an L2 ring between routers can sometimes be reconfigured to | |||
be a ring of point-to-point subnets connected by the routers. These | be a ring of point-to-point subnets connected by the routers. | |||
L2/L3 topology changes are undesirable though, when they are only | However, these Layer 2 (L2) and Layer 3 (L3) topology changes are | |||
done to enable IP multicast with PIM because they increase the cost | undesirable when they are only done to enable IP multicast with PIM | |||
of introducing IP multicast with PIM. | because they increase the cost of introducing IP multicast with PIM. | |||
These designs are also not feasible when specific L2 technologies are | These designs are also not feasible when specific L2 technologies are | |||
needed. For example various L2 technologies for rings provide sub 50 | needed. For example, various L2 technologies for rings provide | |||
msec failover mechanisms, something not possible equally with an L3 | sub-50 msec failover mechanisms, something not possible equally with | |||
subnet based ring. Likewise, IEEE Time Sensitive Networking | a ring composed from L3 subnets. Likewise, IEEE Time-Sensitive | |||
mechanisms would require an L2 topology that can not simply be | Networking mechanisms would require an L2 topology that cannot simply | |||
replaced by an L3 topology. L2 sub-topologies can also significantly | be replaced by an L3 topology. L2 sub-topologies can also | |||
reduce the cost of deployment. | significantly reduce the cost of deployment. | |||
3. Specification | 3. Specification | |||
This document defines three elements in support of PIM assert | This document defines three elements in support of PIM assert | |||
packing: | packing: | |||
1. The PIM Assert Packing Hello Option. | 1. The PIM Packed Assert Capability Hello Option | |||
2. The encoding of PackedAssert messages. | 2. The encoding of PackedAssert messages | |||
3. How to send and receive PackedAssert messages. | 3. How to send and receive PackedAssert messages | |||
3.1. PIM Assert Packing Hello Option | 3.1. PIM Packed Assert Capability Hello Option | |||
The PIM Assert Packing Hello Option (Section 4.1) is used to announce | The PIM Packed Assert Capability Hello Option (Section 4.1) is used | |||
support for the assert packing mechanisms specified in this document. | to announce support for the assert packing mechanisms specified in | |||
PackedAssert messages (Section 3.2) MUST NOT be used unless all PIM | this document. PackedAssert messages (Section 3.2) MUST NOT be used | |||
routers in the same subnet announce this option. | unless all PIM routers in the same subnet announce this option. | |||
3.2. Assert Packing Message Formats | 3.2. Assert Packing Message Formats | |||
The PIM Assert message, as defined in Section 4.9.6 of [RFC7761], | The PIM Assert message, as defined in Section 4.9.6 of [RFC7761], | |||
describes the parameters of a (*,G) or (S,G) assert through the | describes the parameters of a (*,G) or (S,G) assert using the | |||
following information elements: Rendezvous Point Tree flag (R), | following information elements: Rendezvous Point Tree flag (R), | |||
Source Address, Group Address, Metric and Metric Preference. This | Source Address, Group Address, Metric, and Metric Preference. This | |||
document calls this information an assert record. | document calls this information an "assert record". | |||
Assert packing introduces two new PIM Assert message encodings | This document introduces two new PIM Assert message encodings through | |||
through the allocation and use of two flags in the PIM Assert message | the allocation and use of two flags in the PIM Assert message header | |||
header [I-D.ietf-pim-rfc8736bis], the Packed (P) and the Aggregated | [RFC9436]: the Packed (P) and the Aggregated (A) flags. | |||
(A) flags. | ||||
If the (P)acked flag is 0, the message is a (non-packed) PIM Assert | If P=0, the message is a (non-packed) PIM Assert message as specified | |||
message as specified in [RFC7761]. See Section 4.2. In this case, | in [RFC7761]. See Section 4.2. In this case, the A flag MUST be set | |||
the (A) flag MUST be set to 0, and MUST be ignored on receipt. | to 0 and MUST be ignored on receipt. | |||
If the (P) flag is 1, then the message is called a PackedAssert | If P=1, then the message is called a "PackedAssert message", and the | |||
message and the type and hence encoding format of the payload is | type and hence encoding format of the payload are determined by the A | |||
determined by the (A) flag. | flag. | |||
If A=0, then the message body is a sequence of assert records. This | If A=0, then the message body is a sequence of assert records. This | |||
is called a "Simple PackedAssert" message. See Section 4.3. | is called a "Simple PackedAssert message". See Section 4.3. | |||
If A=1, then the message body is a sequence of aggregated assert | If A=1, then the message body is a sequence of aggregated assert | |||
records. This is called an "Aggregated PackedAssert". See | records. This is called an "Aggregated PackedAssert message". See | |||
Section 4.4. | Section 4.4. | |||
Two aggregated assert record types are specified. | Two aggregated assert record types are specified. | |||
The "Source Aggregated Assert Record", see Section 4.4.1, encodes one | The "Source Aggregated Assert Record" (see Section 4.4.1) encodes one | |||
(common) Source Address, Metric and Metric Preference as well as a | (common) Source Address, Metric, and Metric Preference as well as a | |||
list of one or more Group Addresses. Source Aggregated Assert | list of one or more Group Addresses. Source Aggregated Assert | |||
Records provide a more compact encoding than the Simple PackedAssert | Records provide a more compact encoding than the Simple PackedAssert | |||
message format when multiple (S,G) flows share the same source S. A | message format when multiple (S,G) flows share the same source S. A | |||
single Source Aggregated Assert Record with n Group Addresses | single Source Aggregated Assert Record with n Group Addresses | |||
represents the information of assert records for (S,G1)...(S,Gn). | represents the information of assert records for (S,G1)...(S,Gn). | |||
The "RP Aggregated Assert Record", see Section 4.4.2, encodes one | The "RP Aggregated Assert Record" (see Section 4.4.2) encodes one | |||
common Metric and Metric Preference as well as a list of "Group | common Metric and Metric Preference as well as a list of "Group | |||
Records", each of which encodes a Group Address and a list of zero or | Records", each of which encodes a Group Address and a list of zero or | |||
more Source Addresses with a count. This is called an "RP Aggregated | more Source Addresses with a count. This is called an "RP Aggregated | |||
Assert Record", because with standard RPF according to ([RFC7761]), | Assert Record", because with standard RPF according to [RFC7761], all | |||
all the Group Addresses that use the same RP will have the same | the Group Addresses that use the same RP will have the same Metric | |||
Metric and Metric Preference. | and Metric Preference. | |||
RP Aggregation Records provide a more compact encoding than the | RP Aggregation Assert Records provide a more compact encoding than | |||
Simple PackedAssert message format for (*,G) flows. The Source | the Simple PackedAssert message format for (*,G) flows. The Source | |||
Address is optionally used by [RFC7761] assert procedures to indicate | Address is optionally used in the assert procedures in [RFC7761] to | |||
the source(s) that triggered the assert, otherwise the Source Address | indicate the source(s) that triggered the assert; otherwise, the | |||
is set to 0 in the assert record. | Source Address is set to 0 in the assert record. | |||
Both Source Aggregated Assert Records and RP Aggregated Assert | Both Source Aggregated Assert Records and RP Aggregated Assert | |||
Records also include the R flag which maintains its semantic from | Records also include the R flag, which maintains its semantics from | |||
[RFC7761] but also distinguishes the encodings. Source Aggregated | [RFC7761] but also distinguishes the encodings. Source Aggregated | |||
Assert Records have R=0, as (S,G) assert records do in [RFC7761]. RP | Assert Records have R=0, as (S,G) assert records do in [RFC7761]. RP | |||
Aggregated Assert Records have R=1, as (*,G) assert records do in | Aggregated Assert Records have R=1, as (*,G) assert records do in | |||
[RFC7761]. | [RFC7761]. | |||
3.3. PackedAssert Mechanism | 3.3. PackedAssert Mechanism | |||
PackedAsserts do not change the [RFC7761] PIM assert state machine | PackedAsserts do not change the PIM Assert state machine | |||
specification. Instead, sending and receiving of PackedAssert | specification [RFC7761]. Instead, sending and receiving of | |||
messages as specified in the following subsections are logically new | PackedAssert messages, as specified in the following subsections, are | |||
packetization options for assert records in addition to the (not | logically new packetization options for assert records in addition to | |||
packed) [RFC7761] Assert Message. There is no change to the assert | the (non-packed) Assert message [RFC7761]. There is no change to the | |||
record information elements transmitted or their semantic. They are | assert record information elements transmitted or their semantics. | |||
just transmitted in fewer but larger packets and fewer total number | They are just transmitted in fewer but larger packets, and a fewer | |||
of bytes used to encode the information elements. In result, PIM | total number of bytes is used to encode the information elements. As | |||
routers should be able to send/receive assert records faster and/or | a result, PIM routers should be able to send and receive assert | |||
with less processing overhead. | records faster and/or with less processing overhead. | |||
3.3.1. Sending PackedAssert messages | 3.3.1. Sending PackedAssert Messages | |||
When using assert packing, the regular [RFC7761] Assert message | When using assert packing, the regular Assert message encoding | |||
encoding with A=0 and P=0 is still allowed to be sent. Routers are | [RFC7761] with A=0 and P=0 is still allowed to be sent. Routers are | |||
free to choose which PackedAssert message format they send - simple | free to choose which PackedAssert message format they send -- simple | |||
(Section 4.3) and/or aggregated (Section 4.4). | (Section 4.3) and/or aggregated (Section 4.4). | |||
* When any PIM routers on the LAN have not signaled support for | * When any PIM routers on the LAN have not signaled support for | |||
Assert Packing, implementations MUST send only Asserts and MUST | assert packing, implementations MUST only send Asserts and MUST | |||
NOT send PackedAsserts under any condition. | NOT send PackedAsserts under any condition. | |||
* Implementations SHOULD support sending of PackedAssert messages. | * The protocol or system conditions for which an implementation | |||
It is out of scope of this specification for which conditions, | sends PackedAsserts instead of Asserts are out of scope for this | |||
such as data-triggered asserts or Assert Timer (AT) expiry- | specification. Protocol conditions include protocol triggers such | |||
triggered asserts, or under which conditions (such as high load) | as data-triggered asserts or Assert Timer (AT) expiry-triggered | |||
an implementation will send PackedAsserts instead of Asserts. | asserts, and system conditions include high or low load or control | |||
plane packet reception rates. | ||||
* Implementations are expected to specify in documentation and/or | * Implementations are expected to specify in documentation and/or | |||
management interfaces (such as a YANG model), which PackedAssert | management interfaces (such as a YANG data model) which | |||
message formats they can send and under which conditions they will | PackedAssert message formats they can send and under which | |||
send them. | conditions they will send them. | |||
* Implementations SHOULD be able to indicate to the operator (such | * Implementations SHOULD be able to indicate to the operator (such | |||
as through a YANG model) how many Assert and PackedAssert messages | as through a YANG data model) how many Assert and PackedAssert | |||
were sent/received and how many assert records were sent/received. | messages were sent/received and how many assert records were sent/ | |||
received. | ||||
* A configuration option SHOULD be available to disable PackedAssert | * A configuration option SHOULD be available to disable PackedAssert | |||
operations. Implementations that introduce support for assert | operations. PIM-SM implementations [RFC7761] that introduce | |||
packing from day one of their [RFC7761] implementation MAY omit | support for assert packing from day one MAY omit this | |||
this configuration option. | configuration option. | |||
When a PIM router has an assert record ready to send according to | When a PIM router has an assert record ready to send according to | |||
[RFC7761], it calls one of the following functions: | [RFC7761], it calls one of the following functions: | |||
* send Assert(S,G) / send Assert(*,G) ([RFC7761], Section 4.2), | * send Assert(S,G) / send Assert(*,G) ([RFC7761], Section 4.2) | |||
* Send Assert(S,G) / SendAssertCancel(S,G) ([RFC7761], | * send Assert(S,G) / send AssertCancel(S,G) ([RFC7761], | |||
Section 4.6.1), | Section 4.6.1) | |||
* Send Assert(*,G) / Send AssertCancel(*,G) ([RFC7761], | * send Assert(*,G) / send AssertCancel(*,G) ([RFC7761], | |||
Section 4.6.2) | Section 4.6.2) | |||
* send Assert(S,G) ([RFC7761], Section 4.8.2). | * send Assert(S,G) ([RFC7761], Section 4.8.2) | |||
If sending of PackedAsserts is possible on the network, instead of | If sending of PackedAsserts is possible on the network, instead of | |||
sending an Assert message with an assert record, any of these calls | sending an Assert message with an assert record, any of these calls | |||
MAY instead result in the PIM implementation remembering the assert | MAY instead result in the PIM implementation remembering the assert | |||
record, and continuing with further processing for other flows which | record and continuing with further processing for other flows, which | |||
may result in additional assert records. | may result in additional assert records. | |||
PIM MUST then create PackedAssert messages from the remembered assert | PIM MUST then create PackedAssert messages from the remembered assert | |||
records and schedule them for sending according to the considerations | records and schedule them for sending according to the considerations | |||
of the following subsections. | in the following subsections. | |||
3.3.1.1. Handling of reception-triggered assert records. | 3.3.1.1. Handling of Reception-Triggered Assert Records | |||
Avoiding additional delay because of assert packing compared to | Avoiding additional delay because of assert packing compared to | |||
immediate scheduling of Assert messages is most critical for assert | immediately scheduling Assert messages is most critical for assert | |||
records that are triggered by reception of data or reception of | records that are triggered by reception of data or reception of | |||
asserts against which the router is in the "I am Assert Winner" | asserts against which the router is in the "I am Assert Winner" | |||
state. In these cases the router SHOULD send out an Assert or | state. In these cases, the router SHOULD send out an Assert or | |||
PackedAssert message containing this assert record as soon as | PackedAssert message containing this assert record as soon as | |||
possible to minimize the time in which duplicate IP multicast packets | possible to minimize the time in which duplicate IP multicast packets | |||
can occur. | can occur. | |||
To avoid additional delay in this case, the router should employ | To avoid additional delay in this case, the router should employ | |||
appropriate assert packing and scheduling mechanisms, as explained | appropriate assert packing and scheduling mechanisms, as explained | |||
here. | here. | |||
Asserts/PackedAsserts created from reception-triggered assert records | Asserts/PackedAsserts created from reception-triggered assert records | |||
should be scheduled for serialization with a higher priority than | should be scheduled for serialization with a higher priority than | |||
those created from other reasons. They should also bypass other PIM | those created because of other protocol or system conditions. They | |||
messages that can create significant bursts, such as PIM join/prune | should also bypass other PIM messages that can create significant | |||
messages. | bursts, such as PIM join/prune messages. | |||
When there is no reception-triggered Assert/PackedAssert messages | When there are no reception-triggered Assert/PackedAssert messages | |||
currently being serialized on the interface or scheduled to be sent, | currently being serialized on the interface or scheduled to be sent, | |||
the router should immediately generate and schedule an Assert or | the router should immediately generate and schedule an Assert or | |||
PackedAssert message without further assert packing. | PackedAssert message without further assert packing. | |||
If there are one or more reception-triggered Assert/PackedAssert | If one or more reception-triggered Assert/PackedAssert messages are | |||
messages already serializing and/or scheduled to be serialized on the | already serializing or are scheduled to be serialized on the outgoing | |||
outgoing interface, then the router can use the time until the last | interface, then the router can use the time until the last of those | |||
of those messages will have finished serializing for PIM processing | messages has finished serializing for PIM processing of further | |||
of further conditions that may result in additional reception- | conditions. This may result in additional reception-triggered assert | |||
triggered assert records as well as packing of these assert records | records and the packing of these assert records without introducing | |||
without introducing additional delay. | additional delay. | |||
3.3.1.2. Handling of timer expiry-triggered assert records. | 3.3.1.2. Handling of Timer Expiry-Triggered Assert Records | |||
Asserts triggered by expiry of the AT on an assert winner are not | Asserts triggered by expiry of the AT on an assert winner are not | |||
time-critical because they can be scheduled in advance and because | time-critical because they can be scheduled in advance and because | |||
the Assert_Override_Interval parameter of [RFC7761] already creates a | the Assert_Override_Interval parameter [RFC7761] already creates a | |||
3 second window in which such assert records can be sent, received, | 3-second window in which such assert records can be sent, received, | |||
and processed before an assert loser's state would expire and | and processed before an assert loser's state expires and duplicate IP | |||
duplicate IP multicast packets could occur. | multicast packets could occur. | |||
An example mechanism to allow packing of AT expiry-triggered assert | An example mechanism to allow packing of AT expiry-triggered assert | |||
records on assert winners is to round the AT to an appropriate | records on assert winners is to round the AT to an appropriate | |||
granularity such as 100 msec. This will cause AT for multiple (S,G) | granularity such as 100 msec. This will cause the AT for multiple | |||
and/or (*,G) states to expire at the same time, thus allowing them to | (S,G) and/or (*,G) states to expire at the same time, thus allowing | |||
be easily packed without changes to the assert state machinery. | them to be easily packed without changes to the Assert state | |||
machinery. | ||||
AssertCancel messages have assert records with an infinite metric and | AssertCancel messages have assert records with an infinite metric and | |||
can use assert packing as any other Assert. They are sent on | can use assert packing like any other Assert. They are sent on | |||
Override Timer (OT) expiry and can be packed for example with the | Override Timer (OT) expiry and can be packed, for example, with the | |||
same considerations as AT expiry-triggered assert records. | same considerations as AT expiry-triggered assert records. | |||
3.3.1.3. Beneficial delay in sending PackedAssert messages | 3.3.1.3. Beneficial Delay in Sending PackedAssert Messages | |||
Delay in sending PackedAsserts beyond what was discussed in prior | Delay in sending PackedAsserts beyond what was discussed in prior | |||
subsections can still be beneficial when it causes the overall amount | subsections can still be beneficial when it causes the overall number | |||
of (possible) duplicate IP multicast packets to decrease in a | of possible duplicate IP multicast packets to decrease in a situation | |||
condition with large number of (S,G) and/or (*,G), compared to the | with a large number of (S,G) and/or (*,G), compared to the situation | |||
situation in which an implementation only sends Assert messages. | where an implementation only sends Assert messages. | |||
This delay can simply be used in implementations because it can not | This delay can be used in implementations because it cannot support | |||
support the (more advanced) mechanisms described above, and this | the more advanced mechanisms described above, and this longer delay | |||
longer delay can be achieved by some simpler mechanism (such as only | can be achieved by some simpler mechanisms (such as only periodic | |||
periodic generation of PackedAsserts) and still achieves an overall | generation of PackedAsserts) and still achieves an overall reduction | |||
reduction in duplicate IP multicast packets compared to sending only | in duplicate IP multicast packets compared to sending only Asserts. | |||
Asserts. | ||||
3.3.1.4. Handling Assert/PackedAssert message loss | 3.3.1.4. Handling Assert/PackedAssert Message Loss | |||
When Asserts are sent, a single packet loss will result only in | When Asserts are sent, a single packet loss will result only in | |||
continued or new duplicates from a single IP multicast flow. Loss of | continued or new duplicates from a single IP multicast flow. Loss of | |||
(non AssertCancel) PackedAssert impacts duplicates for all flows | a (non-AssertCancel) PackedAssert impacts duplicates for all flows | |||
packed into the PackedAssert and may result in the need for re- | packed into the PackedAssert and may result in the need for resending | |||
sending more than one Assert/PackedAssert, because of the possible | more than one Assert/PackedAssert, because of the possible inability | |||
inability to pack the assert records in this condition. Therefore, | to pack the assert records in this condition. Therefore, routers | |||
routers SHOULD support mechanisms allowing for PackedAsserts and | SHOULD support mechanisms that allow PackedAsserts and Asserts to be | |||
Asserts to be sent with an appropriate Differentiated Services Code | sent with an appropriate Differentiated Services Code Point (DSCP) | |||
Point (DSCP, [RFC2475]), such as Expedited Forwarding (EF), to | [RFC2475] such as Expedited Forwarding (EF) to minimize their loss, | |||
minimize their loss, especially when duplicate IP multicast packets | especially when duplicate IP multicast packets could cause congestion | |||
could cause congestion and loss. | and loss. | |||
Routers MAY support a configurable option for sending PackedAssert | Routers MAY support a configurable option for sending PackedAssert | |||
messages twice in short order (such as 50 msec apart), to overcome | messages twice in short order (such as 50 msec apart) to overcome | |||
possible loss, but only when the following two conditions are met. | possible loss, but only when the following two conditions are met. | |||
1. The total size of the two PackedAsserts is less than the total | 1. The total size of the two PackedAsserts is less than the total | |||
size of equivalent Assert messages, | size of equivalent Assert messages. | |||
2. The condition of the assert records flows in the PackedAssert is | 2. The condition of the assert record flows in the PackedAssert is | |||
such that the router can expect that their reception by PIM | such that the router can expect that their reception by PIM | |||
routers will not trigger Assert/PackedAsserts replies. This | routers will not trigger Assert/PackedAsserts replies. This | |||
condition is true for example when sending an assert record while | condition is true, for example, when sending an assert record | |||
becoming or being Assert Winner (Action A1/A3 in [RFC7761]). | while becoming or being assert winner (Action A1/A3 in | |||
[RFC7761]). | ||||
3.3.1.5. Optimal degree of assert record packing | 3.3.1.5. Optimal Degree of Assert Record Packing | |||
The optimal target packing size will vary depending on factors | The optimal target packing size will vary depending on factors | |||
including implementation characteristics and the required operating | including implementation characteristics and the required operating | |||
scale. At some point, as the target packing size is varied from the | scale. At some point, as the target packing size is varied from the | |||
size of a single non-packed Assert, to the MTU size, a size can be | size of a single non-packed Assert to the MTU size, a size can be | |||
expected to be found where the router can achieve the required | expected to be found where the router can achieve the required | |||
operating scale of (S,G) and (*,G) flows with minimum duplicates. | operating scale of (S,G) and (*,G) flows with minimum duplicates. | |||
Beyond this size, a further increase in the target packing size would | Beyond this size, a further increase in the target packing size would | |||
not produce further benefits, but might introduce possible negative | not produce further benefits but might introduce possible negative | |||
effects such as the incurrence of more duplicates on loss. | effects such as the incurrence of more duplicates on loss. | |||
For example, in some router implementations, the total number of | For example, in some router implementations, the total number of | |||
packets that a control plane function such as PIM can send/receive | packets that a control plane function such as PIM can send/receive | |||
per unit of time is a more limiting factor than the total amount of | per unit of time is a more limiting factor than the total amount of | |||
data across these packets. As soon as the packet size is large | data across these packets. As soon as the packet size is large | |||
enough for the maximum possible payload throughput, increasing the | enough for the maximum possible payload throughput, increasing the | |||
packet size any further may still reduce the processing overhead of | packet size any further may still reduce the processing overhead of | |||
the router, but may increase latency incurred in creating the packet | the router but may increase latency incurred in creating the packet | |||
in a way that may increase duplicates compared to smaller packets. | in a way that may increase duplicates compared to smaller packets. | |||
3.3.2. Receiving PackedAssert messages | 3.3.2. Receiving PackedAssert Messages | |||
Upon reception of a PackedAssert message, the PIM router logically | Upon reception of a PackedAssert message, the PIM router logically | |||
converts its payload into a sequence of assert records that are then | converts its payload into a sequence of assert records that are then | |||
processed as if an equivalent sequence of Assert messages were | processed as if an equivalent sequence of Assert messages were | |||
received according to [RFC7761]. | received according to [RFC7761]. | |||
4. Packet Formats | 4. Packet Formats | |||
This section describes the format of new PIM extensions introduced by | This section describes the format of new PIM extensions introduced by | |||
this document. | this document. | |||
4.1. PIM Assert Packing Hello Option | 4.1. PIM Packed Assert Capability Hello Option | |||
The PIM Packed Assert Capability Hello Option is a new option for PIM | ||||
Hello messages according to Section 4.9.2 of [RFC7761]. | ||||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| OptionType = TBD | OptionLength = 0 | | | OptionType = 40 | OptionLength = 0 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 1: PIM Assert Packing Hello Option | Figure 1: PIM Packed Assert Capability Hello Option | |||
The PIM Assert Packing Hello Option is a new option for PIM Hello | ||||
Messages according to Section 4.9.2 of [RFC7761]. | ||||
* OptionType TBD: PIM Packed Assert Capability Hello Option | OptionType 40 (Packed Assert Capability): | |||
Indicates support for the ability to receive and process all the | ||||
PackedAssert encodings defined in this document. | ||||
Including the PIM OptionType TBD indicates support for the ability to | OptionLength 0: | |||
receive and process all the PackedAssert encodings defined in this | The Packet Assert Capability has no OptionValue. | |||
document. | ||||
4.2. Assert Message Format | 4.2. Assert Message Format | |||
Figure 2 shows a PIM Assert message as specified in Section 4.9.6 of | ||||
[RFC7761]. The Encoded-Group and Encoded-Unicast address formats are | ||||
specified in Section 4.9.1 of [RFC7761] for IPv4 and IPv6. | ||||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|PIM Ver| Type |7 6 5 4 3 2|A|P| Checksum | | |PIM Ver| Type |7 6 5 4 3 2|A|P| Checksum | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Group Address (Encoded-Group format) | | | Group Address (Encoded-Group format) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Source Address (Encoded-Unicast format) | | | Source Address (Encoded-Unicast format) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|R| Metric Preference | | |R| Metric Preference | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Metric | | | Metric | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 2: Assert Message Format | Figure 2: Assert Message Format | |||
Figure 2 shows a PIM Assert message as specified in Section 4.9.6 of | This common header shows the "7 6 5 4 3 2" flag bits (as defined in | |||
[RFC7761]. The Encoded-Group and Encoded-Unicast address formats are | Section 4 of [RFC9436]) and the location of the P and A flags (as | |||
specified in Section 4.9.1 of [RFC7761] for IP and IPv6. | described in Section 5). As specified in Section 3.2, both flags in | |||
a (non-packed) PIM Assert message are required to be set to 0. | ||||
This common header is showing the "7 6 5 4 3 2" Flag Bits as defined | ||||
in Section 4 of [I-D.ietf-pim-rfc8736bis] and the location of the P | ||||
and A flags, as described in Section 5. As specified in | ||||
Section 3.2, both flags in a (non-packed) PIM Assert message are | ||||
required to be set to 0. | ||||
4.3. Simple PackedAssert Message Format | 4.3. Simple PackedAssert Message Format | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|PIM Ver| Type |7 6 5 4 3 2|A|P| Checksum | | |PIM Ver| Type |7 6 5 4 3 2|A|P| Checksum | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Zero | Reserved | | | Zero | Reserved | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
. . | . . | |||
. Assert Record [1] . | . Assert Record [1] . | |||
skipping to change at page 12, line 36 ¶ | skipping to change at line 536 ¶ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
. . | . . | |||
. Assert Record [M] . | . Assert Record [M] . | |||
. . | . . | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 3: Simple PackedAssert Message Format | Figure 3: Simple PackedAssert Message Format | |||
* PIM Version, Type, Checksum: | PIM Version, Type, Checksum: | |||
As specified in Section 4.9.6 of [RFC7761]. | As specified in Section 4.9.6 of [RFC7761]. | |||
* "7 6 5 4 3 2": IANA registry handled bits according to Section 4 | "7 6 5 4 3 2": | |||
of [I-D.ietf-pim-rfc8736bis]. | Flag bits per Section 4 of [RFC9436]. | |||
* Zero: Set to zero on transmission. Serves to make non assert | P: | |||
packing capable PIM routers fail in parsing the message instead of | Packed flag. MUST be 1. | |||
possible mis-parsing if this field was used. | ||||
* Reserved: Set to zero on transmission. Ignored upon receipt. | A: | |||
Aggregated flag. MUST be 0. | ||||
* P: packed flag. MUST be 1. | Zero: | |||
Set to zero on transmission. Serves to make PIM routers that are | ||||
not capable of assert packing to fail in parsing the message | ||||
instead possible mis-parsing of the message as an Assert message | ||||
[RFC7761] if this field was not zero-filled. | ||||
* A: aggregated flag. MUST be 0. | Reserved: | |||
Set to zero on transmission. Ignored upon receipt. | ||||
* M: The number of Assert Records in the message. Derived from the | M: | |||
The number of Assert Records in the message. Derived from the | ||||
length of the packet carrying the message. | length of the packet carrying the message. | |||
* Assert Record: formatted according to {FIG-MESSAGE-SIMPLE}}, which | Assert Record: | |||
is the same as the PIM assert message body as specified in | Formatted according to Figure 3, which is the same as the PIM | |||
Section 4.9.6 of [RFC7761]. The number M of Assert Records is | Assert message body as specified in Section 4.9.6 of [RFC7761]. | |||
determined from the packet size. | ||||
The format of each Assert Record is the same as the PIM assert | The format of each Assert Record is the same as the PIM Assert | |||
message body as specified in Section 4.9.6 of [RFC7761]. | message body as specified in Section 4.9.6 of [RFC7761]. | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Group Address (Encoded-Group format) | | | Group Address (Encoded-Group format) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Source Address (Encoded-Unicast format) | | | Source Address (Encoded-Unicast format) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|R| Metric Preference | | |R| Metric Preference | | |||
skipping to change at page 14, line 36 ¶ | skipping to change at line 616 ¶ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
. . | . . | |||
. Aggregated Assert Record [M] . | . Aggregated Assert Record [M] . | |||
. . | . . | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 5: Aggregated PackedAssert Message Format | Figure 5: Aggregated PackedAssert Message Format | |||
* PIM Version, Type, Reserved, Checksum: | PIM Version, Type, Reserved, Checksum: | |||
As specified in Section 4.9.6 of [RFC7761]. | As specified in Section 4.9.6 of [RFC7761]. | |||
* "7 6 5 4 3 2": IANA registry handled bits according to Section 4 | "7 6 5 4 3 2": | |||
of [I-D.ietf-pim-rfc8736bis]. | Flag bits per Section 4 of [RFC9436]. | |||
* P: packed flag. MUST be 1. | P: | |||
Packed flag. MUST be 1. | ||||
* A: aggregated flag. MUST be 1. | A: | |||
Aggregated flag. MUST be 1. | ||||
* Zero: Set to zero on transmission. Serves to make non assert | Zero: | |||
packing capable PIM routers fail in parsing the message instead of | Set to zero on transmission. Serves to make PIM routers that are | |||
possible mis-parsing if this field was used. | not capable of assert packing to fail in parsing the message | |||
instead possible mis-parsing of the message as an Assert message | ||||
[RFC7761] if this field was not zero-filled. | ||||
* Aggregated Assert Record: formatted according to Figure 5. The | Aggregated Assert Record: | |||
number M of Aggregated Assert Records is determined from the | Formatted according to Figure 5. The number M of Aggregated | |||
packet size. | Assert Records is determined from the packet size. | |||
4.4.1. Source Aggregated Assert Record | 4.4.1. Source Aggregated Assert Record | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|R| Metric Preference | | |R| Metric Preference | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Metric | | | Metric | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
skipping to change at page 15, line 34 ¶ | skipping to change at line 663 ¶ | |||
| Group Address 2 (Encoded-Group format) | | | Group Address 2 (Encoded-Group format) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| . | | | . | | |||
| . | | | . | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Group Address N (Encoded-Group format) | | | Group Address N (Encoded-Group format) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 6: Source Aggregated Assert Record | Figure 6: Source Aggregated Assert Record | |||
* Reserved: Set to zero on transmission. Ignored upon receipt. | R: | |||
MUST be 0. | ||||
* R: MUST be 0. | ||||
R indicates both that the encoding format of the record is that of | R indicates both that the encoding format of the record is that of | |||
a Source Aggregated Assert Record, but also that all assert | a Source Aggregated Assert Record and that all assert records | |||
records represented by the Source Aggregated Assert Record have | represented by the Source Aggregated Assert Record have R=0 and | |||
R=0 and are therefore (S,G) assert records according to the | are therefore (S,G) assert records according to the definition of | |||
definition of R in [RFC7761], Section 4.9.6. | R in [RFC7761], Section 4.9.6. | |||
* Source Address, Metric Preference, Metric: | ||||
Metric Preference, Metric, Source Address: | ||||
As specified in Section 4.9.6 of [RFC7761]. Source Address MUST | As specified in Section 4.9.6 of [RFC7761]. Source Address MUST | |||
NOT be zero. | NOT be zero. | |||
* Number of Groups: | Number of Groups: | |||
The number of Group Address fields. | The number of Group Address fields. | |||
* Group Address: | Reserved: | |||
Set to zero on transmission. Ignored upon receipt. | ||||
Group Address: | ||||
As specified in Section 4.9.6 of [RFC7761]. | As specified in Section 4.9.6 of [RFC7761]. | |||
4.4.2. RP Aggregated Assert Record | 4.4.2. RP Aggregated Assert Record | |||
An RP Aggregation Assert record aggregates (*,G) assert records with | An RP Aggregation Assert Record aggregates (*,G) assert records with | |||
the same Metric Preference and Metric. Typically this is the case | the same Metric Preference and Metric. Typically, this is the case | |||
for all (*,G) using the same RP, but the encoding is not limited to | for all (*,G) using the same RP, but the encoding is not limited to | |||
only (*,G) using the same RP because the RP address is not encoded as | only (*,G) using the same RP because the RP address is not encoded as | |||
it is also not present in [RFC7761] assert records. | it is also not present in assert records [RFC7761]. | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|R| Metric Preference | | |R| Metric Preference | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Metric | | | Metric | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Number of Group Records (K) | Reserved | | | Number of Group Records (K) | Reserved | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
skipping to change at page 16, line 51 ¶ | skipping to change at line 727 ¶ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
. . | . . | |||
. Group Record [K] . | . Group Record [K] . | |||
. . | . . | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 7: RP Aggregated Assert Record | Figure 7: RP Aggregated Assert Record | |||
* R: MUST be 1. | R: | |||
MUST be 1. | ||||
R indicates both that the encoding format of the record is that of | R indicates both that the encoding format of the record is that of | |||
an RP Aggregated Assert Record, and that all assert records | an RP Aggregated Assert Record and that all assert records | |||
represented by the RP Aggregated Assert Record have R=1 and are | represented by the RP Aggregated Assert Record have R=1 and are | |||
therefore (*,G) assert records according to the definition of R in | therefore (*,G) assert records according to the definition of R in | |||
[RFC7761], Section 4.9.6. | [RFC7761], Section 4.9.6. | |||
* Metric Preference, Metric: | Metric Preference, Metric: | |||
As specified in Section 4.9.6 of [RFC7761]. | As specified in Section 4.9.6 of [RFC7761]. | |||
* Reserved: Set to zero on transmission. Ignored upon receipt. | Number of Group Records (K): | |||
* Number of Group Records (K): | ||||
The number of packed Group Records. A record consists of a Group | The number of packed Group Records. A record consists of a Group | |||
Address and a Source Address list with a number of sources. | Address and a Source Address list with a number of sources. | |||
Reserved: | ||||
Set to zero on transmission. Ignored upon receipt. | ||||
The format of each Group Record is: | The format of each Group Record is: | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Group Address (Encoded-Group format) | | | Group Address (Encoded-Group format) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Number of Sources (P) | Reserved | | | Number of Sources (P) | Reserved | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Source Address 1 (Encoded-Unicast format) | | | Source Address 1 (Encoded-Unicast format) | | |||
skipping to change at page 17, line 43 ¶ | skipping to change at line 767 ¶ | |||
| Source Address 2 (Encoded-Unicast format) | | | Source Address 2 (Encoded-Unicast format) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| . | | | . | | |||
| . | | | . | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Source Address P (Encoded-Unicast format) | | | Source Address P (Encoded-Unicast format) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 8: Group Record | Figure 8: Group Record | |||
* Group Address and Reserved: | Group Address: | |||
As specified in Section 4.9.6 of [RFC7761]. | As specified in Section 4.9.6 of [RFC7761]. | |||
* Reserved: Set to zero on transmission. Ignored upon receipt. | Reserved: | |||
Set to zero on transmission. Ignored upon receipt. | ||||
* Number of Sources (P): | ||||
The Number of Sources is corresponding to the number of Source | Number of Sources (P): | |||
Address fields in the Group Record. If this number is 0, the | The Number of Sources corresponds to the number of Source Address | |||
Group Record indicates one assert record with a Source Address of | fields in the Group Record. If this number is not 0 and one of | |||
0. If this number is not 0 and one of the (*,G) assert records to | the (*,G) assert records to be encoded has Source Address 0, then | |||
be encoded should have the Source Address 0, then 0 needs to be | 0 needs to be encoded as one of the Source Address fields. | |||
encoded as one of the Source Address fields. | ||||
* Source Address: | Reserved: | |||
Set to zero on transmission. Ignored upon receipt. | ||||
Source Address: | ||||
As specified in Section 4.9.6 of [RFC7761]. But there can be | As specified in Section 4.9.6 of [RFC7761]. But there can be | |||
multiple Source Address fields in the Group Record. | multiple Source Address fields in the Group Record. | |||
5. IANA Considerations | 5. IANA Considerations | |||
IANA has assigned the following code point value to the "PIM-Hello | IANA has updated the "PIM Message Types" registry as follows to | |||
Options" registry for the Packed Assert Capability. | include the Packed and Aggregated flag bits for the Assert message | |||
type. | ||||
+=======+========+=========================+================+ | +=======+========+==========================+===========+ | |||
| Value | Length | Name | Reference | | | Value | Length | Name | Reference | | |||
+=======+========+=========================+================+ | +=======+========+==========================+===========+ | |||
| 40 | 0 | Packed Assert Capability| [This Document]| | | 40 | 0 | Packed Assert Capability | RFC 9466 | | |||
+=======+========+=========================+================+ | +-------+--------+--------------------------+-----------+ | |||
Figure 9: IANA PIM-Hello Options | Table 1: PIM-Hello Options | |||
IANA has assigned the following two Flag Bits for PIM Assert messages | IANA has assigned the following two flag bits for PIM Assert messages | |||
to the "PIM Message Types" registry. | in the "PIM Message Types" registry. | |||
+======+========+=================+====================+ | +======+========+=================+=====================+ | |||
| Type | Name | Flag Bits | Reference | | | Type | Name | Flag Bits | Reference | | |||
+======+========+=================+====================+ | +======+========+=================+=====================+ | |||
| 5 | Assert | 0: Packed | [This Document] | | | 5 | Assert | 0: Packed | RFC 9466 | | |||
| | | 1: Aggregated | [This Document] | | | | +-----------------+---------------------+ | |||
| | | 2-7: Unassigned | [RFC3973][RFC7761] | | | | | 1: Aggregated | RFC 9466 | | |||
+======+========+=================+====================+ | | | +-----------------+---------------------+ | |||
| | | 2-7: Unassigned | [RFC3973] [RFC7761] | | ||||
+------+--------+-----------------+---------------------+ | ||||
Figure 10: IANA PIM Message Types | Table 2: PIM Message Types | |||
6. Security Considerations | 6. Security Considerations | |||
The security considerations of [RFC7761] apply to the extensions | The security considerations of [RFC7761] apply to the extensions | |||
defined in this document. | defined in this document. | |||
This document packs multiple assert records in a single message. As | This document packs multiple assert records in a single message. As | |||
described in Section 6.1 of [RFC7761], a forged Assert message could | described in Section 6.1 of [RFC7761], a forged Assert message could | |||
cause the legitimate designated forwarder to stop forwarding traffic | cause the legitimate designated forwarder to stop forwarding traffic | |||
to the LAN. The effect may be amplified when using a PackedAssert | to the LAN. The effect may be amplified when using a PackedAssert | |||
message. | message. | |||
Like other optional extensions of [RFC7761] that are active only when | Like other optional extensions of [RFC7761] that are active only when | |||
all routers indicate support for them, a single misconfigured or | all routers indicate support for them, a single misconfigured or | |||
malicious router emitting forged PIM Hello messages can inhibit | malicious router emitting forged PIM Hello messages can inhibit | |||
operations of this extension. | operations of this extension. | |||
Authentication of PIM messages such as explained in [RFC7761], | Authentication of PIM messages, such as that explained in Sections | |||
Sections 6.2 and 6.3 can protect against the forged message attacks | 6.2 and 6.3 of [RFC7761], can protect against forged message attacks | |||
attacks. | attacks. | |||
7. Acknowledgments | 7. References | |||
The authors would like to thank: Stig Venaas for the valuable | ||||
contributions of this document, Alvaro Retana for his thorough and | ||||
constructive RTG AD review, Ines Robles for her Gen-ART review, Tommy | ||||
Pauly for his transport area review, Robert Sparks for his SecDir | ||||
review, Shuping Peng for her RtgDir review, John Scudder for his RTG | ||||
AD review, Eric Vyncke for his INT AD review, Eric Kline for his INT | ||||
AD review, Paul Wouter for his SEC AD review, Zaheduzzaman Sarker for | ||||
his TSV AD review, Robert Wilton for his OPS AD review and Martin | ||||
Duke for his TSV AD review. | ||||
8. Working Group considerations | ||||
[RFC-Editor: please remove this section]. | ||||
8.1. Open Issues | ||||
8.2. Changelog | ||||
This document is hosted starting with -06 on | ||||
https://github.com/toerless/pim-assert-packing. | ||||
8.2.1. draft-ietf-pim-assert-packing-12 | ||||
Changed text of IANA considerations from request to assigned after | ||||
IANA has assigned the code points. | ||||
Fixed leftover nits from John Scudders review that where not done | ||||
right in -11. | ||||
8.2.2. draft-ietf-pim-assert-packing-11 | ||||
Comprehensive 2 round AD review by John Scudder. | ||||
Functional enhancement: add requirement for existing implementation | ||||
to be able to disable assert packing so that any possible | ||||
compatibility issues introduced (which we think will not happen) can | ||||
be avoided when upgrading to a packedassert version of the software. | ||||
Also to allow performance comparison. No making a requirement for | ||||
day 0 implementations because they may want to save the work of | ||||
having a non-packed-assert code path. | ||||
Some rewrite to increase readibility, subdivided 3.3.1 into multiple | ||||
subsections to better structure it. | ||||
3.3.1 improved core requirements - added requirement for counters to | ||||
show assert/packedassert operations, documentation (e.g.: YANG) for | ||||
what/how it can send, config option to disable packedasserts. | ||||
Refined text: Bulletized cases of asserts in rfc7761, | ||||
Subdivided 3.3.1 into multiple subsections for readability improved | ||||
text based on review. Added reference for DSCP. | ||||
3.3.1.5 Added explicit example of improvement because of packet size/ | ||||
throughput limits of router. | ||||
Added notion of attacks by wrong hellos to security section. | ||||
Eric Vyncke review: | ||||
Appendix A: Better elaboration of L2 ring vs L3 ring benefits. Nits. | ||||
Paul Wouter review: | ||||
Changed explanation of number "M" of records to be inline with | ||||
formatting of other data (sections 4.3 and 4.4). | ||||
Some nits. | ||||
8.2.3. draft-ietf-pim-assert-packing-10 | ||||
Fixed up Reserved field of PackedAsserts to get back to 32 bit | ||||
alignment of the following fields (was down to 16 bits). Sorry, had | ||||
a misinterpretation reading rfc7761, though there ws something that | ||||
had only made it 16 bit aligned. Anyhow. Only this one change, 8 -> | ||||
24 bit for this field. | ||||
8.2.4. draft-ietf-pim-assert-packing-09 | ||||
For details of review discussion/replies, see review reply emails in | ||||
(https://github.com/toerless/pim-assert-packing/tree/main/emails)j | ||||
review Alvaro Retana: Reintroduced ref to PIM-DM, fixed typos, | ||||
downgraded MAY->may for "sufficient". | ||||
IANA Expert Review / Stig Venaas: | ||||
Removed Count field from message headers as it complicates parsing | ||||
and is unnecessary. Added "Zero" field to make packed asserts | ||||
received by a non-packed-assert-capable-router guaranteed to fail | ||||
("Reserved" address family type). | ||||
Changed from RFC8736 to RFC8736bis so that we can use the word | ||||
"Unassigned" in the IANA table. | ||||
Review Shuping Peng | ||||
Changed explanation of how assert packing works from "layer" to | ||||
"alternative to packetization via PIM Assert Message. Fixed various | ||||
typos, expanded term etc.. | ||||
Review Robert Sparks: | ||||
Moved Intro explanations of how one could avoid asserts (but how its | ||||
problematic) to appendix. Applied textual nits found. Removed | ||||
quotes around term "sufficient" for easier readbility. | ||||
Review Tommy Paul: | ||||
Transport related concern explained in reply, but no additional | ||||
explanations in text because the question referred to basic PIM | ||||
behavior expected to be understood by readers: No discovery of loss/ | ||||
trigger for retransmission, just restransmission of same message | ||||
element after discover of ongoing duplicates and/or expiry of timers. | ||||
8.2.5. draft-ietf-pim-assert-packing-08 | ||||
Included changes from review of Alvaro Retana | ||||
(https://mailarchive.ietf.org/arch/msg/pim/ | ||||
GsKq9bB2a6yDdM9DvAUGCWthdEI) | ||||
Please see the following emails discussing the changes: | ||||
https://raw.githubusercontent.com/toerless/pim-assert-packing/main/ | ||||
emails/07-alvaro-review-reply.txt | ||||
8.2.6. draft-ietf-pim-assert-packing-07 | ||||
Included changes from review of Alvaro Retana | ||||
(https://mailarchive.ietf.org/arch/msg/pim/ | ||||
Cp4o5glUFge2b84X9CQMwCWZjAk/) | ||||
Please see the following emails discussing the changes: | ||||
https://raw.githubusercontent.com/toerless/pim-assert-packing/main/ | ||||
emails/05-alvaro-review-reply.txt | ||||
https://raw.githubusercontent.com/toerless/pim-assert-packing/main/ | ||||
emails/07-pim-wg-announce.txt | ||||
8.2.7. draft-ietf-pim-assert-packing-06 | ||||
This version was converted from txt format into markdown for better | ||||
editing later, but is otherwise text identical to -05. It was posted | ||||
to DataTracker to make diffs easier. | ||||
Functional changes: | ||||
9. References | ||||
9.1. Normative References | ||||
[I-D.ietf-pim-rfc8736bis] | 7.1. Normative References | |||
Venaas, S. and A. Retana, "PIM Message Type Space | ||||
Extension and Reserved Bits", Work in Progress, Internet- | ||||
Draft, draft-ietf-pim-rfc8736bis-00, 2 March 2023, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-pim- | ||||
rfc8736bis-00>. | ||||
[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>. | |||
[RFC7761] Fenner, B., Handley, M., Holbrook, H., Kouvelas, I., | [RFC7761] Fenner, B., Handley, M., Holbrook, H., Kouvelas, I., | |||
Parekh, R., Zhang, Z., and L. Zheng, "Protocol Independent | Parekh, R., Zhang, Z., and L. Zheng, "Protocol Independent | |||
Multicast - Sparse Mode (PIM-SM): Protocol Specification | Multicast - Sparse Mode (PIM-SM): Protocol Specification | |||
(Revised)", STD 83, RFC 7761, DOI 10.17487/RFC7761, March | (Revised)", STD 83, RFC 7761, DOI 10.17487/RFC7761, March | |||
2016, <https://www.rfc-editor.org/info/rfc7761>. | 2016, <https://www.rfc-editor.org/info/rfc7761>. | |||
[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>. | |||
9.2. Informative References | [RFC9436] Venaas, S. and A. Retana, "PIM Message Type Space | |||
Extension and Reserved Bits", RFC 9436, | ||||
DOI 10.17487/RFC9436, August 2023, | ||||
<https://www.rfc-editor.org/info/rfc9436>. | ||||
7.2. Informative References | ||||
[RFC2475] Blake, S., Black, D., Carlson, M., Davies, E., Wang, Z., | [RFC2475] Blake, S., Black, D., Carlson, M., Davies, E., Wang, Z., | |||
and W. Weiss, "An Architecture for Differentiated | and W. Weiss, "An Architecture for Differentiated | |||
Services", RFC 2475, DOI 10.17487/RFC2475, December 1998, | Services", RFC 2475, DOI 10.17487/RFC2475, December 1998, | |||
<https://www.rfc-editor.org/info/rfc2475>. | <https://www.rfc-editor.org/info/rfc2475>. | |||
[RFC3973] Adams, A., Nicholas, J., and W. Siadak, "Protocol | [RFC3973] Adams, A., Nicholas, J., and W. Siadak, "Protocol | |||
Independent Multicast - Dense Mode (PIM-DM): Protocol | Independent Multicast - Dense Mode (PIM-DM): Protocol | |||
Specification (Revised)", RFC 3973, DOI 10.17487/RFC3973, | Specification (Revised)", RFC 3973, DOI 10.17487/RFC3973, | |||
January 2005, <https://www.rfc-editor.org/info/rfc3973>. | January 2005, <https://www.rfc-editor.org/info/rfc3973>. | |||
skipping to change at page 23, line 25 ¶ | skipping to change at line 886 ¶ | |||
[RFC7431] Karan, A., Filsfils, C., Wijnands, IJ., Ed., and B. | [RFC7431] Karan, A., Filsfils, C., Wijnands, IJ., Ed., and B. | |||
Decraene, "Multicast-Only Fast Reroute", RFC 7431, | Decraene, "Multicast-Only Fast Reroute", RFC 7431, | |||
DOI 10.17487/RFC7431, August 2015, | DOI 10.17487/RFC7431, August 2015, | |||
<https://www.rfc-editor.org/info/rfc7431>. | <https://www.rfc-editor.org/info/rfc7431>. | |||
[RFC7490] Bryant, S., Filsfils, C., Previdi, S., Shand, M., and N. | [RFC7490] Bryant, S., Filsfils, C., Previdi, S., Shand, M., and N. | |||
So, "Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)", | So, "Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)", | |||
RFC 7490, DOI 10.17487/RFC7490, April 2015, | RFC 7490, DOI 10.17487/RFC7490, April 2015, | |||
<https://www.rfc-editor.org/info/rfc7490>. | <https://www.rfc-editor.org/info/rfc7490>. | |||
Appendix A. Use case examples | Appendix A. Use Case Examples | |||
The PIM Assert mechanism can only be avoided by designing the network | The PIM Assert mechanism can only be avoided by designing the network | |||
to be without transit subnets with multiple upstream routers. For | to be without transit subnets with multiple upstream routers. For | |||
example, an L2 ring between routers can sometimes be reconfigured to | example, an L2 ring between routers can sometimes be reconfigured to | |||
be a ring of point-to-point subnets connected by the routers. These | be a ring of point-to-point subnets connected by the routers. | |||
L2/L3 topology changes are undesirable though, when they are only | However, these L2/L3 topology changes are undesirable when they are | |||
done to enable IP multicast with PIM because they increase the cost | only done to enable IP multicast with PIM because they increase the | |||
of introducing IP multicast with PIM. | cost of introducing IP multicast with PIM. | |||
These L3 ring designs are specifically undesirable, when particular | These L3 ring designs are specifically undesirable when particular L2 | |||
L2 technologies are needed. For example various L2 technologies for | technologies are needed. For example, various L2 technologies for | |||
rings provide sub 50 msec failover mechanisms that will benefit IP | rings provide sub-50 msec failover mechanisms that will benefit IP | |||
unicast and multicast alike without any added complexity to the IP | unicast and multicast alike without any added complexity to the IP | |||
layer (forwarding or routing). If such L2 rings where to be replaced | layer (forwarding or routing). If such L2 rings were to be replaced | |||
by L3 rings just to avoid PIM asserts, then this would result in the | by L3 rings just to avoid PIM asserts, then this would result in the | |||
need for a complex choice of of a sub 50 msec IP unicast failover | need for a complex choice of a sub-50 msec IP unicast failover | |||
solutions as well as a sub 50 msec IP multicast failover solution. | solution (such as [RFC7490] with IP repair tunnels) as well as a | |||
The mere fact that by operating at the IP layer, different solutions | separate sub-50 msec IP multicast failover solution, (such as | |||
for IP unicast and multicast are required makes them more difficult | [RFC7431] with dedicated ring support). The mere fact that, by | |||
to operate, they typically require more expensive hardware and | running at the IP layer, different solutions for IP unicast and | |||
therefore most often, they are not even available on the target | multicast are required makes them more difficult to operate, and they | |||
equipment, such as [RFC7490] with IP repair tunnels for IP unicast or | typically require more expensive hardware. This often leads to non- | |||
[RFC7431] for IP multicast. | support of the IP multicast part. | |||
Likewise, IEEE Time Sensitive Networking mechanisms would require an | Likewise, IEEE Time-Sensitive Networking mechanisms would require an | |||
L2 topology that can not simply be replaced by an L3 topology. L2 | L2 topology that cannot simply be replaced by an L3 topology. L2 | |||
sub-topologies can also significantly reduce the cost of deployment. | sub-topologies can also significantly reduce the cost of deployment. | |||
The following subsections give examples of the type of network and | The following subsections give examples of the type of network and | |||
use-cases in which subnets with asserts have been observerd or are | use cases in which subnets with asserts have been observed or are | |||
expected to require scaling as provided by this specification. | expected to require scaling as provided by this specification. | |||
A.1. Enterprise network | A.1. Enterprise Network | |||
When an Enterprise network is connected through a layer-2 network, | When an enterprise network is connected through an L2 network, the | |||
the intra-enterprise runs layer-3 PIM multicast. The different sites | intra-enterprise runs L3 PIM multicast. The different sites of the | |||
of the enterprise are equivalent to the PIM connection through the | enterprise are equivalent to the PIM connection through the shared | |||
shared LAN network. Depending upon the locations and amount of | LAN network. Depending upon the locations and number of groups, | |||
groups there could be many asserts on the first-hop routers. | there could be many asserts on the first-hop routers. | |||
A.2. Video surveillance | A.2. Video Surveillance | |||
Video surveillance deployments have migrated from analog based | Video surveillance deployments have migrated from analog-based | |||
systems to IP-based systems oftentimes using multicast. In the | systems to IP-based systems oftentimes using multicast. In the | |||
shared LAN network deployments, when there are many cameras streaming | shared LAN network deployments, when there are many cameras streaming | |||
to many groups there may be issues with many asserts on first-hop | to many groups, there may be issues with many asserts on first-hop | |||
routers. | routers. | |||
A.3. Financial Services | A.3. Financial Services | |||
Financial services extensively rely on IP Multicast to deliver stock | Financial services extensively rely on IP Multicast to deliver stock | |||
market data and its derivatives, and current multicast solution PIM | market data and its derivatives, and the current multicast solution | |||
is usually deployed. As the number of multicast flows grow, there | PIM is usually deployed. As the number of multicast flows grow, many | |||
are many stock data with many groups may result in many PIM asserts | stock data with many groups may result in many PIM asserts on a | |||
on a shared LAN network from publisher to the subscribers. | shared LAN network from the publisher to the subscribers. | |||
A.4. IPTV broadcast Video | A.4. IPTV Broadcast Video | |||
PIM DR deployments are often used in host-side network for IPTV | PIM DR deployments are often used in host-side network for IPTV | |||
broadcast video services. Host-side access network failure scenario | broadcast video services. Host-side access network failure scenarios | |||
may be benefitted by assert packing when many groups are being used. | may benefit from assert packing when many groups are being used. | |||
According to [RFC7761] the DR will be elected to forward multicast | According to [RFC7761], the DR will be elected to forward multicast | |||
traffic in the shared access network. When the DR recovers from a | traffic in the shared access network. When the DR recovers from a | |||
failure, the original DR starts to send traffic, and the current DR | failure, the original DR starts to send traffic, and the current DR | |||
is still forwarding traffic. In the situation multicast traffic | is still forwarding traffic. In this situation, multicast traffic | |||
duplication maybe happen in the shared access network and can trigger | duplication maybe happen in the shared access network and can trigger | |||
the assert progress. | the assert progress. | |||
A.5. MVPN MDT | A.5. MVPN MDT | |||
As described in [RFC6037], MDT (Multicast Distribution Tree) is used | As described in [RFC6037], Multicast Distribution Tree (MDT) is used | |||
as tunnels for MVPN. The configuration of multicast-enabled VRF (VPN | as tunnels for Multicast VPN (MVPN). The configuration of multicast- | |||
routing and forwarding) or interface that is in a VRF changing may | enabled VPN Routing and Forwarding (VRF) or changes to an interface | |||
cause many assert packets to be sent in a same time. | that is in a VRF may cause many assert packets to be sent at the same | |||
time. | ||||
A.6. Special L2 services | A.6. Special L2 Services | |||
Additionally, future backhaul, or fronthaul, networks may want to | Additionally, future backhaul, or fronthaul, networks may want to | |||
connect L3 across an L2 underlay supporting Time Sensitive Networks | connect L3 across an L2 underlay supporting Time-Sensitive Networks | |||
(TSN). The infrastructure may run DetNet over TSN. These transit L2 | (TSNs). The infrastructure may run Deterministic Networking (DetNet) | |||
LANs would have multiple upstreams and downstreams. This document is | over TSN. These transit L2 LANs would have multiple upstreams and | |||
taking a proactive approach to prevention of possible future assert | downstreams. This document takes a proactive approach to prevention | |||
issues in these types of environments. | of possible future assert issues in these types of environments. | |||
Acknowledgments | ||||
The authors would like to thank the following individuals: Stig | ||||
Venaas for the valuable contributions of this document, Alvaro Retana | ||||
for his thorough and constructive RTG AD review, Ines Robles for her | ||||
Gen-ART review, Tommy Pauly for his Transport Area review, Robert | ||||
Sparks for his SecDir review, Shuping Peng for her RtgDir review, | ||||
John Scudder for his RTG AD review, Éric Vyncke for his INT AD | ||||
review, Eric Kline for his INT AD review, Paul Wouter for his SEC AD | ||||
review, Zaheduzzaman Sarker for his TSV AD review, Robert Wilton for | ||||
his OPS AD review, and Martin Duke for his TSV AD review. | ||||
Authors' Addresses | Authors' Addresses | |||
Yisong Liu (editor) | Yisong Liu (editor) | |||
China Mobile | China Mobile | |||
China | China | |||
Email: liuyisong@chinamobile.com | Email: liuyisong@chinamobile.com | |||
Toerless Eckert (editor) | Toerless Eckert (editor) | |||
Futurewei | Futurewei | |||
United States of America | United States of America | |||
Email: tte@cs.fau.de | Email: tte@cs.fau.de | |||
Mike McBride | Mike McBride | |||
Futurewei | Futurewei | |||
United States of America | United States of America | |||
Email: michael.mcbride@futurewei.com | Email: michael.mcbride@futurewei.com | |||
Zheng(Sandy) Zhang | Zheng (Sandy) Zhang | |||
ZTE Corporation | ZTE Corporation | |||
China | China | |||
Email: zhang.zheng@zte.com.cn | Email: zhang.zheng@zte.com.cn | |||
End of changes. 149 change blocks. | ||||
556 lines changed or deleted | 414 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |