| rfc9466xml2.original.xml | rfc9466.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> | ||||
| <!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.9 (Ruby 3.1 | ||||
| .2) --> | ||||
| <!DOCTYPE rfc [ | <!DOCTYPE rfc [ | |||
| <!ENTITY nbsp " "> | <!ENTITY nbsp " "> | |||
| <!ENTITY zwsp "​"> | <!ENTITY zwsp "​"> | |||
| <!ENTITY nbhy "‑"> | <!ENTITY nbhy "‑"> | |||
| <!ENTITY wj "⁠"> | <!ENTITY wj "⁠"> | |||
| ]> | ]> | |||
| <?rfc comments="yes"?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft -ietf-pim-assert-packing-12" number="9466" submissionType="IETF" category="std" consensus="true" tocDepth="5" tocInclude="true" sortRefs="true" symRefs="true" u pdates="" obsoletes="" xml:lang="en" version="3"> | |||
| <rfc ipr="trust200902" docName="draft-ietf-pim-assert-packing-12" category="std" consensus="true" submissionType="IETF" tocDepth="5" tocInclude="true" sortRefs= "true" symRefs="true"> | ||||
| <front> | <front> | |||
| <title abbrev="assert-packing">PIM Assert Message Packing</title> | <title abbrev="PIM Assert Packing">PIM Assert Message Packing</title> | |||
| <seriesInfo name="RFC" value="9466"/> | ||||
| <author initials="Y." surname="Liu" fullname="Yisong Liu" role="editor"> | <author initials="Y." surname="Liu" fullname="Yisong Liu" role="editor"> | |||
| <organization>China Mobile</organization> | <organization>China Mobile</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <country>China</country> | <country>China</country> | |||
| </postal> | </postal> | |||
| <email>liuyisong@chinamobile.com</email> | <email>liuyisong@chinamobile.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="T." surname="Eckert" fullname="Toerless Eckert" role="edit or"> | <author initials="T." surname="Eckert" fullname="Toerless Eckert" role="edit or"> | |||
| <organization>Futurewei</organization> | <organization>Futurewei</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <country>USA</country> | <country>United States of America</country> | |||
| </postal> | </postal> | |||
| <email>tte@cs.fau.de</email> | <email>tte@cs.fau.de</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="M." surname="McBride" fullname="Mike McBride"> | <author initials="M." surname="McBride" fullname="Mike McBride"> | |||
| <organization>Futurewei</organization> | <organization>Futurewei</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <country>USA</country> | <country>United States of America</country> | |||
| </postal> | </postal> | |||
| <email>michael.mcbride@futurewei.com</email> | <email>michael.mcbride@futurewei.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="Z." surname="Zhang" fullname="Zheng(Sandy) Zhang"> | <author initials="Z." surname="Zhang" fullname="Zheng (Sandy) Zhang"> | |||
| <organization>ZTE Corporation</organization> | <organization>ZTE Corporation</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <country>China</country> | <country>China</country> | |||
| </postal> | </postal> | |||
| <email>zhang.zheng@zte.com.cn</email> | <email>zhang.zheng@zte.com.cn</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date year="2023" month="October"/> | ||||
| <date year="2023" month="April" day="19"/> | <area>rtg</area> | |||
| <workgroup>pim</workgroup> | ||||
| <workgroup>PIM</workgroup> | <workgroup>ip</workgroup> | |||
| <workgroup>ipv6</workgroup> | ||||
| <workgroup>multicast</workgroup> | ||||
| <workgroup>performance</workgroup> | ||||
| <workgroup>scalability</workgroup> | ||||
| <workgroup>subnet</workgroup> | ||||
| <workgroup>lan</workgroup> | ||||
| <workgroup>sparse-mode</workgroup> | ||||
| <workgroup>ASM</workgroup> | ||||
| <workgroup>SSM</workgroup> | ||||
| <abstract> | <abstract> | |||
| <t>In PIM-SM shared LAN networks, there is often more than one upstream router. | <t>When PIM Sparse Mode (PIM-SM), including PIM Source-Specific | |||
| When PIM Sparse Mode (PIM-SM), including PIM Source Specific-Specific Multicast | Multicast (PIM-SSM), is used in shared LAN networks, there is often more | |||
| (PIM-SSM), is used, this | than one upstream router. This can lead to duplicate IP multicast packets | |||
| can lead to duplicate IP multicast packets being forwarded by these | being forwarded by these PIM routers. PIM Assert messages | |||
| PIM routers. PIM Assert messages are used to elect a single forwarder for | are used to elect a single forwarder for each IP multicast traffic | |||
| each IP multicast traffic flow between these routers.</t> | flow between these routers.</t> | |||
| <t>This document defines a mechanism to send | ||||
| and receive information for multiple IP multicast flows | ||||
| in a single PackedAssert message. This optimization reduces the | ||||
| total number of PIM packets on the LAN and can therefore speed up | ||||
| the election of the single forwarder, reducing the number of duplicate IP | ||||
| multicast packets incurred.</t> | ||||
| <t>This document defines a mechanism to send and receive information for | ||||
| multiple IP multicast flows in a single PackedAssert message. This | ||||
| optimization reduces the total number of PIM packets on the LAN and can | ||||
| therefore speed up the election of the single forwarder, reducing the | ||||
| number of duplicate IP multicast packets incurred.</t> | ||||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section anchor="introduction"> | ||||
| <name>Introduction</name> | ||||
| <t>When PIM-SM is used in shared LAN networks, there is typically more than | ||||
| one upstream router. When duplicate data packets appear on the LAN from | ||||
| different upstream routers, assert packets are sent from these routers to | ||||
| elect a single forwarder according to <xref target="RFC7761"/>. The PIM | ||||
| Assert messages are sent periodically to keep the Assert state. The PIM | ||||
| Assert message carries information about a single multicast source and | ||||
| group, along with the corresponding Metric and Metric Preference of the | ||||
| route towards the source or PIM Rendezvous Point (RP).</t> | ||||
| <t>This document defines a mechanism to encode the information of | ||||
| multiple PIM Assert messages into a single PackedAssert message. This | ||||
| allows sending and receiving information for multiple IP multicast flows | ||||
| in a single PackedAssert message without changing the PIM Assert state | ||||
| machinery. It reduces the total number of PIM packets on the LAN and can | ||||
| therefore speed up the election of the single forwarder, reducing the | ||||
| number of duplicate IP multicast packets. This can be particularly | ||||
| helpful when there is traffic for a large number of multicast groups or | ||||
| SSM channels and PIM packet processing performance of the routers is | ||||
| slow.</t> | ||||
| <section anchor="requirements-language"> | ||||
| <name>Requirements Language</name> | ||||
| <t> | ||||
| The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | ||||
| IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | ||||
| NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14> | ||||
| RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
| "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | ||||
| be interpreted as | ||||
| described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | ||||
| when, and only when, they appear in all capitals, as shown here. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="terminology"> | ||||
| <section anchor="introduction"><name>Introduction</name> | <name>Terminology</name> | |||
| <t>The reader is expected to be familiar with the terminology of <xref t | ||||
| <t>In PIM-SM shared LAN networks, there is typically more than one | arget="RFC7761"/>. The following lists the abbreviations repeated in this docume | |||
| upstream router. When duplicate data packets appear on the LAN, from | nt.</t> | |||
| different upstream routers, assert packets are sent from these | <dl newline="false" spacing="normal" indent="6"> | |||
| routers to elect a single forwarder according to <xref target="RFC7761"/>. The P | <dt>AT:</dt> | |||
| IM | <dd>Assert Timer</dd> | |||
| assert messages are sent periodically to keep the assert state. The | <dt>DR:</dt> | |||
| PIM assert message carries information about a single multicast | <dd>Designated Router</dd> | |||
| source and group, along with the corresponding metric-preference and | <dt>RP:</dt> | |||
| metric of the route towards the source or PIM Rendezvous Point (RP).</t> | <dd>Rendezvous Point</dd> | |||
| <dt>RPF:</dt> | ||||
| <t>This document defines a mechanism to encode the information of | <dd>Reverse Path Forwarding</dd> | |||
| multiple PIM Assert messages into a single PackedAssert message. | <dt>RPT:</dt> | |||
| This allows to send and receive information for multiple IP multicast flows | <dd>RP Tree</dd> | |||
| in a single PackedAssert message without changing the PIM Assert state | <dt>SPT:</dt> | |||
| machinery. It reduces the total number of PIM packets on the LAN and can | <dd>Shortest Path Tree</dd> | |||
| therefore speed up the election of the single forwarder, reducing the number | </dl> | |||
| of duplicate IP multicast packets. This can particularly be helpful when | </section> | |||
| there is traffic for a large number of multicast groups or SSM channels and | </section> | |||
| PIM packet processing performance of the routers is slow.</t> | <section anchor="problem-statement"> | |||
| <name>Problem Statement</name> | ||||
| <section anchor="requirements-language"><name>Requirements Language</name> | <t>PIM Asserts occur in many deployments. See <xref target="use-case-examp | |||
| les"/> | ||||
| <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | ||||
| "OPTIONAL" in this document are to be interpreted as described in | ||||
| BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, th | ||||
| ey appear in all | ||||
| capitals, as shown here.</t> | ||||
| </section> | ||||
| <section anchor="terminology"><name>Terminology</name> | ||||
| <t>The reader is expected to be familiar with the terminology of <xref target="R | ||||
| FC7761"/>. The following lists the abbreviations repeated in this document.</t> | ||||
| <t>AT: Assert Timer</t> | ||||
| <t>RP: Rendezvous Point</t> | ||||
| <t>RPF: Reverse Path Forwarding</t> | ||||
| <t>SPT: Shortest Path Tree</t> | ||||
| <t>RPT: RP Tree</t> | ||||
| <t>DR: Designated Router</t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="problem-statement"><name>Problem Statement</name> | ||||
| <t>PIM Asserts occur in many deployments. See <xref target="use-case-examples"/> | ||||
| for explicit examples and explanations of why it is often not possible to avoid. </t> | for explicit examples and explanations of why it is often not possible to avoid. </t> | |||
| <t>PIM assert state depends mainly on the network topology. | <t>PIM Assert state depends mainly on the network topology. | |||
| As long as there is a layer 2 network with more than 2 PIM routers, | As long as there is a Layer 2 (L2) network with more than two PIM routers, | |||
| there may be multiple upstream routers, which can cause duplicate | there may be multiple upstream routers, which can cause duplicate | |||
| multicast traffic to be forwarded and assert process to occur.</t> | multicast traffic to be forwarded and assert processing to occur.</t> | |||
| <t>As the multicast services become widely deployed, the | <t>As the multicast services become widely deployed, the | |||
| number of multicast entries increases, and a large number of assert | number of multicast entries increases, and a large number of Assert | |||
| messages may be sent in a very short period when multicast data | messages may be sent in a very short period when multicast data | |||
| packets trigger PIM assert processing in the shared LAN networks. | packets trigger PIM assert processing in the shared LAN networks. | |||
| The PIM routers need to process a large number of PIM assert small | The PIM 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 | packets in a very short time. As a result, the device load is very | |||
| large. The assert packet may not be processed in time or even | large. The assert packet may not be processed in time or even | |||
| discarded, thus extending the time of traffic duplication in the | discarded, thus extending the time of traffic duplication in the | |||
| network.</t> | network.</t> | |||
| <t>The PIM Assert mechanism can only be avoided by designing the network | ||||
| <t>The PIM Assert mechanism can only be avoided by designing the network | to be without transit subnets with multiple upstream routers. For example, | |||
| to be without transit subnets with multiple upstream routers. For | an L2 ring between routers can sometimes be reconfigured to be a ring of | |||
| example, an L2 ring between routers can sometimes be reconfigured to be a ring | point-to-point subnets connected by the routers. However, these Layer 2 | |||
| of point-to-point subnets connected by the routers. These L2/L3 topology | (L2) and Layer 3 (L3) topology changes are undesirable when they are only | |||
| changes are undesirable though, when they are only done to enable IP multicast | done to enable IP multicast with PIM because they increase the cost of | |||
| with PIM because they increase the cost of introducing IP multicast with PIM.</t | introducing IP multicast with PIM.</t> | |||
| > | <t>These designs are also not feasible when specific L2 technologies are | |||
| needed. For example, various L2 technologies for rings provide sub-50 | ||||
| <t>These designs are also not feasible when specific L2 technologies are needed. | msec failover mechanisms, something not possible equally with a ring | |||
| For example various L2 technologies for rings provide sub 50 msec failover | composed from L3 subnets. Likewise, IEEE Time-Sensitive Networking | |||
| mechanisms, something not possible equally with an L3 subnet based ring. | mechanisms would require an L2 topology that cannot simply be replaced by | |||
| Likewise, IEEE Time Sensitive Networking mechanisms would require an | an L3 topology. L2 sub-topologies can also significantly reduce the cost | |||
| L2 topology that can not simply be replaced by an L3 topology. | of deployment.</t> | |||
| L2 sub-topologies can also significantly reduce the cost of deployment.</t> | </section> | |||
| <section anchor="specification"> | ||||
| </section> | <name>Specification</name> | |||
| <section anchor="specification"><name>Specification</name> | <t>This document defines three elements in support of PIM assert packing:< | |||
| /t> | ||||
| <t>This document defines three elements in support of PIM assert packing:</t> | <ol spacing="normal" type="1"> | |||
| <li>The PIM Packed Assert Capability Hello Option</li> | ||||
| <t><list style="numbers"> | <li>The encoding of PackedAssert messages</li> | |||
| <t>The PIM Assert Packing Hello Option.</t> | <li>How to send and receive PackedAssert messages</li> | |||
| <t>The encoding of PackedAssert messages.</t> | </ol> | |||
| <t>How to send and receive PackedAssert messages.</t> | <section anchor="pim-assert-packing-hello-option"> | |||
| </list></t> | <name>PIM Packed Assert Capability Hello Option</name> | |||
| <t>The PIM Packed Assert Capability Hello Option (<xref target="assert-p | ||||
| <section anchor="pim-assert-packing-hello-option"><name>PIM Assert Packing Hello | acking-option"/>) is used to announce support | |||
| Option</name> | ||||
| <t>The PIM Assert Packing Hello Option (<xref target="assert-packing-option"/>) | ||||
| is used to announce support | ||||
| for the assert packing mechanisms specified in this document. | for the assert packing mechanisms specified in this document. | |||
| PackedAssert messages (<xref target="assert-packing-formats"/>) | PackedAssert messages (<xref target="assert-packing-formats"/>) | |||
| MUST NOT be used unless all PIM routers in the same subnet announce this option. | <bcp14>MUST NOT</bcp14> be used unless all PIM routers in the same subnet announ | |||
| </t> | ce this option.</t> | |||
| </section> | ||||
| </section> | <section anchor="assert-packing-formats"> | |||
| <section anchor="assert-packing-formats"><name>Assert Packing Message Formats</n | <name>Assert Packing Message Formats</name> | |||
| ame> | <t>The PIM Assert message, as defined in <xref target="RFC7761" | |||
| sectionFormat="of" section="4.9.6"/>, describes the parameters of a | ||||
| <t>The PIM Assert message, as defined in Section 4.9.6 of <xref target="RFC7761" | (*,G) or (S,G) assert using the following information elements: | |||
| />, | Rendezvous Point Tree flag (R), Source Address, Group Address, Metric, | |||
| describes the parameters of a (*,G) or (S,G) assert through the | and Metric Preference. This document calls this information an "assert | |||
| following information elements: Rendezvous Point Tree flag (R), Source Address, | record".</t> | |||
| Group | <t>This document introduces two new PIM Assert message encodings | |||
| Address, Metric and Metric Preference. This document calls this | through the allocation and use of two flags in the PIM Assert message | |||
| information an assert record.</t> | header <xref target="RFC9436"/>: the Packed (P) and the Aggregated (A) | |||
| flags.</t> | ||||
| <t>Assert packing introduces two new PIM Assert message encodings | <t>If P=0, the message is a (non-packed) PIM Assert | |||
| through the allocation and use of two flags in the PIM Assert | message as specified in <xref target="RFC7761"/>. See <xref | |||
| message header <xref target="I-D.ietf-pim-rfc8736bis"/>, the Packed (P) and the | target="rfc7761-assert-message"/>. In this case, the A flag | |||
| Aggregated (A) | <bcp14>MUST</bcp14> be set to 0 and <bcp14>MUST</bcp14> be ignored on | |||
| flags.</t> | receipt.</t> | |||
| <t>If P=1, then the message is called a "PackedAssert | ||||
| <t>If the (P)acked flag is 0, the message is a (non-packed) PIM Assert message | message", and the type and hence encoding format of the payload are | |||
| as specified in <xref target="RFC7761"/>. See <xref target="rfc7761-assert-messa | determined by the A flag.</t> | |||
| ge"/>. In this case, | <t>If A=0, then the message body is a sequence of assert records. This | |||
| the (A) flag MUST be set to 0, and MUST be ignored on receipt.</t> | is called a "Simple PackedAssert message". See <xref | |||
| target="simple-packedassert-message"/>.</t> | ||||
| <t>If the (P) flag is 1, then the message is | <t>If A=1, then the message body is a sequence of aggregated assert | |||
| called a PackedAssert message and the type and hence | records. This is called an "Aggregated PackedAssert message". See <xref | |||
| encoding format of the payload is determined by the (A) flag.</t> | target="aggregated-packedassert-message"/>.</t> | |||
| <t>Two aggregated assert record types are specified.</t> | ||||
| <t>If A=0, then the message body is a sequence of assert records. This is called | <t>The "Source Aggregated Assert Record" (see <xref | |||
| a "Simple PackedAssert" message. See <xref target="simple-packedassert-message" | target="s-assert-record"/>) encodes one (common) Source Address, | |||
| />.</t> | Metric, and Metric Preference as well as a list of one or more Group | |||
| Addresses. Source Aggregated Assert Records provide a more compact | ||||
| <t>If A=1, then the message body is a sequence of aggregated assert records. Thi | encoding than the Simple PackedAssert message format when multiple | |||
| s is called an "Aggregated PackedAssert". See <xref target="aggregated-packedass | (S,G) flows share the same source S. A single Source Aggregated | |||
| ert-message"/>.</t> | Assert Record with n Group Addresses represents the information of | |||
| assert records for (S,G1)...(S,Gn).</t> | ||||
| <t>Two aggregated assert record types are specified.</t> | <t>The "RP Aggregated Assert Record" (see <xref | |||
| target="rp-assert-record"/>) encodes one common Metric and Metric | ||||
| <t>The "Source Aggregated Assert Record", see <xref target="s-assert-record"/>, | Preference as well as a list of "Group Records", each of which encodes | |||
| encodes one (common) Source Address, Metric and Metric Preference as well as a l | a Group Address and a list of zero or more Source Addresses with a | |||
| ist | count. This is called an "RP Aggregated Assert Record", because with | |||
| of one or more Group Addresses. Source Aggregated Assert Records provide | standard RPF according to <xref target="RFC7761"/>, all the Group | |||
| a more compact encoding than the Simple PackedAssert message format when multipl | Addresses that use the same RP will have the same Metric and Metric | |||
| e (S,G) flows share the same source S. | Preference.</t> | |||
| A single Source Aggregated Assert Record with n Group Addresses represents the i | <t>RP Aggregation Assert Records provide a more compact encoding than | |||
| nformation of | the Simple PackedAssert message format for (*,G) flows. The Source | |||
| assert records for (S,G1)...(S,Gn).</t> | Address is optionally used in the assert procedures in <xref | |||
| target="RFC7761"/> to indicate the source(s) that triggered the | ||||
| <t>The "RP Aggregated Assert Record", see <xref target="rp-assert-record"/>, | assert; otherwise, the Source Address is set to 0 in the assert | |||
| encodes one common Metric and Metric Preference as | record.</t> | |||
| well as a list of "Group Records", each of which encodes a Group Address | <t>Both Source Aggregated Assert Records and RP Aggregated Assert | |||
| and a list of zero or more Source Addresses with a count. This is called an | Records also include the R flag, which maintains its semantics from | |||
| "RP Aggregated Assert Record", because with standard RPF according to (<xref tar | <xref target="RFC7761"/> but also distinguishes the encodings. Source | |||
| get="RFC7761"/>), | Aggregated Assert Records have R=0, as (S,G) assert records do in | |||
| all the Group Addresses that use the same RP will have the same Metric and Metri | <xref target="RFC7761"/>. RP Aggregated Assert Records have R=1, as | |||
| c Preference.</t> | (*,G) assert records do in <xref target="RFC7761"/>.</t> | |||
| </section> | ||||
| <t>RP Aggregation Records provide a more compact encoding than the Simple Packed | <section anchor="packedassert-mechanism"> | |||
| Assert message format | <name>PackedAssert Mechanism</name> | |||
| for (*,G) flows. The Source Address is optionally used by <xref target="RFC7761 | <t>PackedAsserts do not change the PIM Assert state machine | |||
| "/> assert procedures | specification <xref target="RFC7761"/>. Instead, sending and | |||
| to indicate the source(s) that triggered the assert, otherwise the Source Addres | receiving of PackedAssert messages, as specified in the following | |||
| s is set to 0 in the | subsections, are logically new packetization options for assert records | |||
| assert record.</t> | in addition to the (non-packed) Assert message <xref | |||
| target="RFC7761"/>. There is no change to the assert record | ||||
| <t>Both Source Aggregated Assert Records and RP Aggregated Assert Records also i | information elements transmitted or their semantics. They are just | |||
| nclude the | transmitted in fewer but larger packets, and a fewer total number of | |||
| R flag which maintains its semantic from <xref target="RFC7761"/> but also disti | bytes is used to encode the information elements. As a result, PIM | |||
| nguishes | routers should be able to send and receive assert records faster | |||
| the encodings. Source Aggregated Assert Records have R=0, as (S,G) assert record | and/or with less processing overhead.</t> | |||
| s do in <xref target="RFC7761"/>. | <section anchor="sending-packedassert-messages"> | |||
| RP Aggregated Assert Records have R=1, as (*,G) assert records do in <xref targe | <name>Sending PackedAssert Messages</name> | |||
| t="RFC7761"/>.</t> | <t>When using assert packing, the regular Assert message encoding | |||
| <xref target="RFC7761"/> with A=0 and P=0 is still allowed to be | ||||
| </section> | sent. Routers are free to choose which PackedAssert message format | |||
| <section anchor="packedassert-mechanism"><name>PackedAssert Mechanism</name> | they send -- simple (<xref target="simple-packedassert-message"/>) | |||
| and/or aggregated (<xref | ||||
| <t>PackedAsserts do not change the <xref target="RFC7761"/> PIM assert state mac | target="aggregated-packedassert-message"/>).</t> | |||
| hine specification. Instead, | <ul spacing="normal"> | |||
| sending and receiving of PackedAssert messages as specified in the following sub | <li>When any PIM routers on the LAN have not signaled support for | |||
| sections are logically | assert packing, implementations <bcp14>MUST</bcp14> only send | |||
| new packetization options for assert records in addition to the (not packed) <xr | Asserts and <bcp14>MUST NOT</bcp14> send PackedAsserts under any | |||
| ef target="RFC7761"/> Assert Message. | condition.</li> | |||
| There is no change to the assert record information elements transmitted or | <li>The protocol or system conditions for which an implementation | |||
| their semantic. They are just transmitted in fewer but larger packets and fewer | sends PackedAsserts instead of Asserts are out of scope | |||
| total number of bytes used to encode the information elements. In result, PIM ro | for this specification. Protocol conditions include protocol | |||
| uters should be able to send/receive assert records faster and/or with less proc | triggers such as data-triggered asserts or Assert Timer (AT) | |||
| essing overhead.</t> | expiry-triggered asserts, and system conditions include high or | |||
| low load or control plane packet reception rates.</li> | ||||
| <section anchor="sending-packedassert-messages"><name>Sending PackedAssert messa | <li>Implementations are expected to specify in documentation | |||
| ges</name> | and/or management interfaces (such as a YANG data model) which | |||
| PackedAssert message formats they can send and under which | ||||
| <t>When using assert packing, the regular <xref target="RFC7761"/> Assert messag | conditions they will send them.</li> | |||
| e encoding with A=0 and P=0 is | <li>Implementations <bcp14>SHOULD</bcp14> be able to indicate to | |||
| still allowed to be sent. Routers are free to choose which PackedAssert message | the operator (such as through a YANG data model) how many Assert | |||
| format they send | and PackedAssert messages were sent/received and how many assert | |||
| - simple (<xref target="simple-packedassert-message"/>) and/or aggregated (<xref | records were sent/received.</li> | |||
| target="aggregated-packedassert-message"/>).</t> | <li>A configuration option <bcp14>SHOULD</bcp14> be available to | |||
| disable PackedAssert operations. PIM-SM implementations <xref | ||||
| <t><list style="symbols"> | target="RFC7761"/> that introduce support for assert packing from day | |||
| <t>When any PIM routers on the LAN have not signaled support for Assert Packin | one <bcp14>MAY</bcp14> omit this configuration option.</li> | |||
| g, | </ul> | |||
| implementations MUST send only Asserts and MUST NOT send PackedAsserts under | <t>When a PIM router has an assert record ready to send according to | |||
| any condition.</t> | <xref target="RFC7761"/>, it calls one of the following | |||
| <t>Implementations SHOULD support sending of PackedAssert messages. | functions:</t> | |||
| It is out of scope of this specification for which conditions, such as data-trig | ||||
| gered asserts or | ||||
| Assert Timer (AT) expiry-triggered asserts, or under which conditions (such as h | ||||
| igh load) an implementation | ||||
| will send PackedAsserts instead of Asserts.</t> | ||||
| <t>Implementations are expected to specify in documentation and/or management | ||||
| interfaces (such as a YANG model), | ||||
| which PackedAssert message formats they can send and under which conditions they | ||||
| will send them.</t> | ||||
| <t>Implementations SHOULD be able to indicate to the operator (such as through | ||||
| a YANG model) | ||||
| how many Assert and PackedAssert messages were sent/received and how many assert | ||||
| records were sent/received.</t> | ||||
| <t>A configuration option SHOULD be available to disable PackedAssert operatio | ||||
| ns. | ||||
| Implementations that introduce support for assert packing from day one of | ||||
| their <xref target="RFC7761"/> implementation MAY omit this configuration option | ||||
| .</t> | ||||
| </list></t> | ||||
| <t>When a PIM router has an assert record ready to send according to | ||||
| <xref target="RFC7761"/>, it calls one of the following functions:</t> | ||||
| <t><list style="symbols"> | ||||
| <t>send Assert(S,G) / send Assert(*,G) (<xref target="RFC7761"/>, Section 4.2) | ||||
| ,</t> | ||||
| <t>Send Assert(S,G) / SendAssertCancel(S,G) (<xref target="RFC7761"/>, Section | ||||
| 4.6.1),</t> | ||||
| <t>Send Assert(*,G) / Send AssertCancel(*,G) (<xref target="RFC7761"/>, Sectio | ||||
| n 4.6.2)</t> | ||||
| <t>send Assert(S,G) (<xref target="RFC7761"/>, Section 4.8.2).</t> | ||||
| </list></t> | ||||
| <t>If sending of PackedAsserts is possible on the network, | ||||
| instead of sending an Assert message with an assert record, any of these | ||||
| calls MAY instead result in the PIM implementation remembering the assert record | ||||
| , | ||||
| and continuing with further processing for other flows which may result in addit | ||||
| ional assert records.</t> | ||||
| <t>PIM MUST then create PackedAssert messages from the remembered assert records | ||||
| and schedule them for sending according to the considerations of the following | ||||
| subsections.</t> | ||||
| <section anchor="handling-of-reception-triggered-assert-records"><name>Handling | ||||
| of reception-triggered assert records.</name> | ||||
| <t>Avoiding additional delay because of assert packing compared to immediate sch | ||||
| eduling of | ||||
| Assert messages is most critical for assert records that are triggered by | ||||
| reception of data or reception of asserts against which the router | ||||
| is in the "I am Assert Winner" state. In these cases the router | ||||
| SHOULD send out an Assert or PackedAssert message containing this assert record | ||||
| as soon as possible to minimize the time in which duplicate IP multicast packets | ||||
| can occur.</t> | ||||
| <t>To avoid additional delay in this case, the router should employ appropriate | ||||
| assert packing and scheduling mechanisms, as explained here.</t> | ||||
| <t>Asserts/PackedAsserts created from reception-triggered assert records should | ||||
| be scheduled | ||||
| for serialization with a higher priority than those created from other reasons. | ||||
| They | ||||
| should also bypass other PIM messages that can create significant bursts, such a | ||||
| s PIM join/prune messages.</t> | ||||
| <t>When there is no reception-triggered Assert/PackedAssert messages currently b | ||||
| eing serialized | ||||
| on the interface or scheduled to be sent, the router should immediately generate | ||||
| and schedule an Assert or PackedAssert message without further assert packing.</ | ||||
| t> | ||||
| <t>If there are one or more reception-triggered Assert/PackedAssert messages alr | ||||
| eady serializing | ||||
| and/or scheduled to be serialized on the outgoing interface, then the router can | ||||
| use the time | ||||
| until the last of those messages will have finished serializing for PIM processi | ||||
| ng of further | ||||
| conditions that may result in additional reception-triggered assert records as w | ||||
| ell as packing of these assert | ||||
| records without introducing additional delay.</t> | ||||
| </section> | ||||
| <section anchor="handling-of-timer-expiry-triggered-assert-records"><name>Handli | ||||
| ng of timer expiry-triggered assert records.</name> | ||||
| <t>Asserts triggered by expiry of the AT on an assert winner are not time-critic | ||||
| al because | ||||
| they can be scheduled in advance and because the Assert_Override_Interval parame | ||||
| ter of <xref target="RFC7761"/> already | ||||
| creates a 3 second window in which such assert records can be sent, received, an | ||||
| d processed before | ||||
| an assert loser's state would expire and duplicate IP multicast packets could oc | ||||
| cur.</t> | ||||
| <t>An example mechanism to allow packing of AT expiry-triggered assert records o | ||||
| n assert winners is | ||||
| to round the AT to an appropriate granularity such as 100 msec. This will cause | ||||
| AT for multiple | ||||
| (S,G) and/or (*,G) states to expire at the same time, thus allowing them to be e | ||||
| asily packed | ||||
| without changes to the assert state machinery.</t> | ||||
| <t>AssertCancel messages have assert records with an infinite metric and can use | ||||
| assert packing | ||||
| as any other Assert. They are sent on Override Timer (OT) expiry and can be pack | ||||
| ed for example | ||||
| with the same considerations as AT expiry-triggered assert records.</t> | ||||
| </section> | ||||
| <section anchor="beneficial"><name>Beneficial delay in sending PackedAssert mess | ||||
| ages</name> | ||||
| <t>Delay in sending PackedAsserts beyond what was discussed in prior subsections | ||||
| can still be beneficial when | ||||
| it causes the overall amount of (possible) duplicate IP multicast packets to dec | ||||
| rease in a condition with | ||||
| large number of (S,G) and/or (*,G), compared to the situation in which an implem | ||||
| entation only | ||||
| sends Assert messages.</t> | ||||
| <t>This delay can simply be used in implementations because it can not support t | ||||
| he (more advanced) | ||||
| mechanisms described above, and this longer delay can be achieved by some simple | ||||
| r mechanism | ||||
| (such as only periodic generation of PackedAsserts) and still achieves an overal | ||||
| l reduction | ||||
| in duplicate IP multicast packets compared to sending only Asserts.</t> | ||||
| </section> | ||||
| <section anchor="handling-assertpackedassert-message-loss"><name>Handling Assert | ||||
| /PackedAssert message loss</name> | ||||
| <t>When Asserts are sent, a single packet loss will result only in continued or | ||||
| new | ||||
| duplicates from a single IP multicast flow. Loss of (non AssertCancel) PackedAs | ||||
| sert impacts | ||||
| duplicates for all flows packed into the PackedAssert and may result in the need | ||||
| for re-sending more than one Assert/PackedAssert, because of the possible inabil | ||||
| ity to pack the assert records in this condition. Therefore, routers SHOULD sup | ||||
| port mechanisms allowing for PackedAsserts and Asserts to | ||||
| be sent with an appropriate Differentiated Services Code Point (DSCP, <xref targ | ||||
| et="RFC2475"/>), such as Expedited Forwarding (EF), to minimize their loss, esp | ||||
| ecially | ||||
| when duplicate IP multicast packets could cause congestion and loss.</t> | ||||
| <t>Routers MAY support a configurable option for sending PackedAssert messages t | ||||
| wice in short order | ||||
| (such as 50 msec apart), to overcome possible loss, but only when the following | ||||
| two conditions | ||||
| are met.</t> | ||||
| <t><list style="numbers"> | ||||
| <t>The total size of the two PackedAsserts is less than the total size of equi | ||||
| valent Assert messages,</t> | ||||
| <t>The condition of the assert records flows in the PackedAssert is such that | ||||
| the router | ||||
| can expect that their reception by PIM routers will not trigger Assert/PackedAss | ||||
| erts replies. | ||||
| This condition is true for example when sending an assert record while becoming | ||||
| or being Assert Winner (Action A1/A3 in <xref target="RFC7761"/>).</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section anchor="optimal-degree-of-assert-record-packing"><name>Optimal degree o | ||||
| f assert record packing</name> | ||||
| <t>The optimal target packing size will vary depending on factors | ||||
| including implementation characteristics and the required operating | ||||
| 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 | ||||
| expected to be found where the router can achieve the required | ||||
| operating scale of (S,G) and (*,G) flows with minimum duplicates. | ||||
| Beyond this size, a further increase in the target packing size would | ||||
| not produce further benefits, but might introduce possible negative | ||||
| effects such as the incurrence of more duplicates on loss.</t> | ||||
| <t>For example, in some router implementations, the total number of | ||||
| 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 data across these packets. As soon as the packet size is large | ||||
| enough for the maximum possible payload throughput, increasing the | ||||
| packet size any further may still reduce the processing overhead | ||||
| of the router, but may increase latency incurred in creating the | ||||
| packet in a way that may increase duplicates compared to smaller | ||||
| packets.</t> | ||||
| </section> | <ul spacing="normal"> | |||
| </section> | <li>send Assert(S,G) / send Assert(*,G) (<xref target="RFC7761" | |||
| <section anchor="receiving-packedassert-messages"><name>Receiving PackedAssert m | sectionFormat="comma" section="4.2"/>)</li> | |||
| essages</name> | <li>send Assert(S,G) / send AssertCancel(S,G) (<xref | |||
| target="RFC7761" sectionFormat="comma" section="4.6.1"/>)</li> | ||||
| <li>send Assert(*,G) / send AssertCancel(*,G) (<xref | ||||
| target="RFC7761" sectionFormat="comma" section="4.6.2"/>)</li> | ||||
| <li>send Assert(S,G) (<xref target="RFC7761" sectionFormat="comma" | ||||
| section="4.8.2"/>)</li> | ||||
| </ul> | ||||
| <t>If sending of PackedAsserts is possible on the network, instead of | ||||
| sending an Assert message with an assert record, any of these calls | ||||
| <bcp14>MAY</bcp14> instead result in the PIM implementation | ||||
| remembering the assert record and continuing with further | ||||
| processing for other flows, which may result in additional assert | ||||
| records.</t> | ||||
| <t>PIM <bcp14>MUST</bcp14> then create PackedAssert messages from | ||||
| the remembered assert records and schedule them for sending | ||||
| according to the considerations in the following subsections.</t> | ||||
| <section anchor="handling-of-reception-triggered-assert-records"> | ||||
| <name>Handling of Reception-Triggered Assert Records</name> | ||||
| <t>Avoiding additional delay because of assert packing compared to | ||||
| immediately scheduling Assert messages is most critical for | ||||
| assert records that are triggered by reception of data or | ||||
| reception of asserts against which the router is in the "I am | ||||
| Assert Winner" state. In these cases, the router | ||||
| <bcp14>SHOULD</bcp14> send out an Assert or PackedAssert message | ||||
| containing this assert record as soon as possible to minimize the | ||||
| time in which duplicate IP multicast packets can occur.</t> | ||||
| <t>To avoid additional delay in this case, the router should | ||||
| employ appropriate assert packing and scheduling mechanisms, as | ||||
| explained here.</t> | ||||
| <t>Asserts/PackedAsserts created from reception-triggered assert | ||||
| records should be scheduled for serialization with a higher | ||||
| priority than those created because of other protocol or system | ||||
| conditions. They should also bypass other PIM messages that can | ||||
| create significant bursts, such as PIM join/prune messages.</t> | ||||
| <t>When there are no reception-triggered Assert/PackedAssert | ||||
| messages currently being serialized on the interface or scheduled | ||||
| to be sent, the router should immediately generate and schedule an | ||||
| Assert or PackedAssert message without further assert packing.</t> | ||||
| <t>If one or more reception-triggered Assert/PackedAssert messages | ||||
| are already serializing or are scheduled to be serialized on the | ||||
| outgoing interface, then the router can use the time until the | ||||
| last of those messages has finished serializing for PIM processing | ||||
| of further conditions. This may result in additional | ||||
| reception-triggered assert records and the packing of these assert | ||||
| records without introducing additional delay.</t> | ||||
| </section> | ||||
| <section anchor="handling-of-timer-expiry-triggered-assert-records"> | ||||
| <name>Handling of Timer Expiry-Triggered Assert Records</name> | ||||
| <t>Asserts triggered by expiry of the AT on an assert winner are | ||||
| not time-critical because they can be scheduled in advance and | ||||
| because the Assert_Override_Interval parameter <xref | ||||
| target="RFC7761"/> already creates a 3-second window in which such | ||||
| assert records can be sent, received, and processed before an | ||||
| assert loser's state expires and duplicate IP multicast | ||||
| packets could occur.</t> | ||||
| <t>An example mechanism to allow packing of AT expiry-triggered | ||||
| assert records on assert winners is to round the AT to an | ||||
| appropriate granularity such as 100 msec. This will cause the AT fo | ||||
| r | ||||
| multiple (S,G) and/or (*,G) states to expire at the same time, | ||||
| thus allowing them to be easily packed without changes to the | ||||
| Assert state machinery.</t> | ||||
| <t>Upon reception of a PackedAssert message, the PIM router logically | <t>AssertCancel messages have assert records with an infinite | |||
| metric and can use assert packing like any other Assert. They are | ||||
| sent on Override Timer (OT) expiry and can be packed, for example, | ||||
| with the same considerations as AT expiry-triggered assert | ||||
| records.</t> | ||||
| </section> | ||||
| <section anchor="beneficial"> | ||||
| <name>Beneficial Delay in Sending PackedAssert Messages</name> | ||||
| <t>Delay in sending PackedAsserts beyond what was discussed in | ||||
| prior subsections can still be beneficial when it causes the | ||||
| overall number of possible duplicate IP multicast packets to | ||||
| decrease in a situation with a large number of (S,G) and/or (*,G), | ||||
| compared to the situation where an implementation only sends | ||||
| Assert messages.</t> | ||||
| <t>This delay can be used in implementations because it cannot | ||||
| support the more advanced mechanisms described above, and this | ||||
| longer delay can be achieved by some simpler mechanisms (such as | ||||
| only periodic generation of PackedAsserts) and still achieves an | ||||
| overall reduction in duplicate IP multicast packets compared to | ||||
| sending only Asserts.</t> | ||||
| </section> | ||||
| <section anchor="handling-assertpackedassert-message-loss"> | ||||
| <name>Handling Assert/PackedAssert Message Loss</name> | ||||
| <t>When Asserts are sent, a single packet loss will result only in | ||||
| continued or new duplicates from a single IP multicast flow. Loss | ||||
| of a (non-AssertCancel) PackedAssert impacts duplicates for all | ||||
| flows packed into the PackedAssert and may result in the need for | ||||
| resending more than one Assert/PackedAssert, because of the | ||||
| possible inability to pack the assert records in this condition. | ||||
| Therefore, routers <bcp14>SHOULD</bcp14> support mechanisms | ||||
| that allow PackedAsserts and Asserts to be sent with an | ||||
| appropriate Differentiated Services Code Point (DSCP) <xref | ||||
| target="RFC2475"/> such as Expedited Forwarding (EF) to | ||||
| minimize their loss, especially when duplicate IP multicast | ||||
| packets could cause congestion and loss.</t> | ||||
| <t>Routers <bcp14>MAY</bcp14> support a configurable option for | ||||
| sending PackedAssert messages twice in short order (such as 50 | ||||
| msec apart) to overcome possible loss, but only when the following | ||||
| two conditions are met.</t> | ||||
| <ol spacing="normal" type="1"> | ||||
| <li>The total size of the two PackedAsserts is less than the | ||||
| total size of equivalent Assert messages.</li> | ||||
| <li>The condition of the assert record flows in the | ||||
| PackedAssert is such that the router can expect that their | ||||
| reception by PIM routers will not trigger Assert/PackedAsserts | ||||
| replies. This condition is true, for example, when sending an | ||||
| assert record while becoming or being assert winner (Action | ||||
| A1/A3 in <xref target="RFC7761"/>).</li> | ||||
| </ol> | ||||
| </section> | ||||
| <section anchor="optimal-degree-of-assert-record-packing"> | ||||
| <name>Optimal Degree of Assert Record Packing</name> | ||||
| <t>The optimal target packing size will vary depending on factors | ||||
| including implementation characteristics and the required | ||||
| operating 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 expected to be found where the router can | ||||
| achieve the required operating scale of (S,G) and (*,G) flows with | ||||
| minimum duplicates. Beyond this size, a further increase in the | ||||
| target packing size would not produce further benefits but might | ||||
| introduce possible negative effects such as the incurrence of more | ||||
| duplicates on loss.</t> | ||||
| <t>For example, in some router implementations, the total number | ||||
| of 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 data across these packets. As soon as the packet | ||||
| size is large enough for the maximum possible payload throughput, | ||||
| increasing the packet size any further may still reduce the | ||||
| processing overhead of the router but may increase latency | ||||
| incurred in creating the packet in a way that may increase | ||||
| duplicates compared to smaller packets.</t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="receiving-packedassert-messages"> | ||||
| <name>Receiving PackedAssert Messages</name> | ||||
| <t>Upon reception of a PackedAssert message, the PIM router logically | ||||
| converts its payload into a sequence of assert records that are then processed | converts its payload into a sequence of assert records that are then processed | |||
| as if an equivalent sequence of Assert messages were received according to <xref target="RFC7761"/>.</t> | as if an equivalent sequence of Assert messages were received according to <xref target="RFC7761"/>.</t> | |||
| </section> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | <section anchor="packet-formats"> | |||
| <section anchor="packet-formats"><name>Packet Formats</name> | <name>Packet Formats</name> | |||
| <t>This section describes the format of new PIM extensions introduced by | ||||
| <t>This section describes the format of new PIM extensions introduced by | ||||
| this document.</t> | this document.</t> | |||
| <section anchor="assert-packing-option"> | ||||
| <section anchor="assert-packing-option"><name>PIM Assert Packing Hello Option</n | <name>PIM Packed Assert Capability Hello Option</name> | |||
| ame> | <t>The PIM Packed Assert Capability Hello Option is a new option for PIM | |||
| Hello | ||||
| <figure title="PIM Assert Packing Hello Option" anchor="FIG-HELLO-OPTION"><artwo | messages according to <xref target="RFC7761" sectionFormat="of" | |||
| rk><![CDATA[ | section="4.9.2"/>.</t> | |||
| <figure | ||||
| anchor="FIG-HELLO-OPTION"> <name>PIM Packed Assert Capability Hello | ||||
| Option</name> | ||||
| <artwork><![CDATA[ | ||||
| 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 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| </figure> | ||||
| <t>The PIM Assert Packing Hello Option is a new option for PIM Hello Messages ac | ||||
| cording to Section 4.9.2 of <xref target="RFC7761"/>.</t> | ||||
| <t><list style="symbols"> | ||||
| <t>OptionType TBD: | ||||
| PIM Packed Assert Capability Hello Option</t> | ||||
| </list></t> | ||||
| <t>Including the PIM OptionType TBD indicates support for the ability to | ||||
| receive and process all the PackedAssert encodings defined in this document.</t> | ||||
| </section> | ||||
| <section anchor="rfc7761-assert-message"><name>Assert Message Format</name> | ||||
| <figure title="Assert Message Format" anchor="FIG-MESSAGE-ASSERT"><artwork><![CD | <dl spacing="normal" newline="true"> | |||
| ATA[ | <dt>OptionType 40 (Packed Assert Capability):</dt> | |||
| <dd>Indicates support for the ability to receive and process all the | ||||
| PackedAssert encodings defined in this document.</dd> | ||||
| <dt>OptionLength 0:</dt> | ||||
| <dd>The Packet Assert Capability has no OptionValue.</dd> | ||||
| </dl> | ||||
| </section> | ||||
| <section anchor="rfc7761-assert-message"> | ||||
| <name>Assert Message Format</name> | ||||
| <t><xref target="FIG-MESSAGE-ASSERT"/> shows a PIM Assert message as | ||||
| specified in <xref target="RFC7761" sectionFormat="of" | ||||
| section="4.9.6"/>. The Encoded-Group and Encoded-Unicast address | ||||
| formats are specified in <xref target="RFC7761" sectionFormat="of" | ||||
| section="4.9.1"/> for IPv4 and IPv6.</t> | ||||
| <figure anchor="FIG-MESSAGE-ASSERT"> | ||||
| <name>Assert Message Format</name> | ||||
| <artwork><![CDATA[ | ||||
| 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 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| </figure> | ||||
| <t><xref target="FIG-MESSAGE-ASSERT"/> shows a PIM Assert message as specified i | ||||
| n Section 4.9.6 of | ||||
| <xref target="RFC7761"/>. The Encoded-Group and Encoded-Unicast address formats | ||||
| are specified in Section 4.9.1 of | ||||
| <xref target="RFC7761"/> for IP and IPv6.</t> | ||||
| <t>This common header is showing the "7 6 5 4 3 2" Flag Bits as defined | ||||
| in Section 4 of <xref target="I-D.ietf-pim-rfc8736bis"/> and the location of the | ||||
| P and A flags, | ||||
| as described in <xref target="IANA"/>. As specified in <xref target="assert-pa | ||||
| cking-formats"/>, both | ||||
| flags in a (non-packed) PIM Assert message are required to be set to 0.</t> | ||||
| </section> | <t>This common header shows the "7 6 5 4 3 2" flag bits (as defined in | |||
| <section anchor="simple-packedassert-message"><name>Simple PackedAssert Message | <xref target="RFC9436" sectionFormat="of" section="4"/>) and the | |||
| Format</name> | location of the P and A flags (as described in <xref target="IANA"/>). | |||
| As specified in <xref target="assert-packing-formats"/>, both flags in | ||||
| a (non-packed) PIM Assert message are required to be set to 0.</t> | ||||
| </section> | ||||
| <figure title="Simple PackedAssert Message Format" anchor="FIG-MESSAGE-SIMPLE">< | <section anchor="simple-packedassert-message"> | |||
| artwork><![CDATA[ | <name>Simple PackedAssert Message Format</name> | |||
| <figure anchor="FIG-MESSAGE-SIMPLE"> | ||||
| <name>Simple PackedAssert Message Format</name> | ||||
| <artwork><![CDATA[ | ||||
| 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 line 481 ¶ | skipping to change at line 528 ¶ | |||
| | . | | | . | | |||
| . . . | . . . | |||
| | . | | | . | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| . . | . . | |||
| . Assert Record [M] . | . Assert Record [M] . | |||
| . . | . . | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| </figure> | ||||
| <t><list style="symbols"> | <dl spacing="normal" newline="true"> | |||
| <t>PIM Version, Type, Checksum: <vspace blankLines='1'/> | <dt>PIM Version, Type, Checksum:</dt> | |||
| As specified in Section 4.9.6 of <xref target="RFC7761"/>.</t> | <dd>As specified in <xref target="RFC7761" sectionFormat="of" | |||
| <t>"7 6 5 4 3 2": IANA registry handled bits according to Section 4 of <xref t | section="4.9.6"/>.</dd> | |||
| arget="I-D.ietf-pim-rfc8736bis"/>.</t> | <dt>"7 6 5 4 3 2":</dt> | |||
| <t>Zero: | <dd>Flag bits per <xref | |||
| Set to zero on transmission. Serves to make non assert packing capable PIM ro | target="RFC9436" sectionFormat="of" section="4"/>.</dd> | |||
| uters fail in parsing the message instead of possible mis-parsing if this field | <dt>P:</dt> | |||
| was used.</t> | <dd>Packed flag. <bcp14>MUST</bcp14> be 1.</dd> | |||
| <t>Reserved: | <dt>A:</dt> | |||
| Set to zero on transmission. Ignored upon receipt.</t> | <dd>Aggregated flag. <bcp14>MUST</bcp14> be 0.</dd> | |||
| <t>P: packed flag. MUST be 1.</t> | <dt>Zero:</dt> | |||
| <t>A: aggregated flag. MUST be 0.</t> | <dd>Set to zero on transmission. Serves to make PIM routers that are | |||
| <t>M: The number of Assert Records in the message. Derived from the length of | not capable of assert packing to fail in parsing the message instead | |||
| the packet carrying the message.</t> | possible mis-parsing of the message as an Assert message <xref | |||
| <t>Assert Record: formatted according to {FIG-MESSAGE-SIMPLE}}, which is the s | target="RFC7761" format="default"/> if this field was not | |||
| ame | zero-filled.</dd> | |||
| as the PIM assert message body as specified in Section 4.9.6 of <xref target="RF | <dt>Reserved:</dt> | |||
| C7761"/>. | <dd>Set to zero on transmission. Ignored upon receipt.</dd> | |||
| The number M of Assert Records is determined from the packet size.</t> | <dt>M:</dt> | |||
| </list></t> | <dd>The number of Assert Records in the message. Derived from the | |||
| length of the packet carrying the message.</dd> | ||||
| <t>The format of each Assert Record is the same as the PIM assert message body a | <dt>Assert Record:</dt> | |||
| s specified in Section 4.9.6 of <xref target="RFC7761"/>.</t> | <dd>Formatted according to <xref target="FIG-MESSAGE-SIMPLE"/>, | |||
| which is the same as the PIM Assert message body as specified in | ||||
| <figure title="Assert Record" anchor="FIG-ASSERT-RECORD-FORMAT"><artwork><![CDAT | <xref target="RFC7761" sectionFormat="of" section="4.9.6"/>.</dd> | |||
| A[ | </dl> | |||
| <t>The format of each Assert Record is the same as the PIM Assert | ||||
| message body as specified in <xref target="RFC7761" sectionFormat="of" | ||||
| section="4.9.6"/>.</t> | ||||
| <figure anchor="FIG-ASSERT-RECORD-FORMAT"> | ||||
| <name>Assert Record</name> | ||||
| <artwork><![CDATA[ | ||||
| 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 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Metric | | | Metric | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| </figure> | ||||
| </section> | </section> | |||
| <section anchor="aggregated-packedassert-message"><name>Aggregated PackedAssert | <section anchor="aggregated-packedassert-message"> | |||
| Message Format</name> | <name>Aggregated PackedAssert Message Format</name> | |||
| <figure anchor="FIG-PACKET-FORMAT-SG"> | ||||
| <figure title="Aggregated PackedAssert Message Format" anchor="FIG-PACKET-FORMAT | <name>Aggregated PackedAssert Message Format</name> | |||
| -SG"><artwork><![CDATA[ | <artwork><![CDATA[ | |||
| 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 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| . . | . . | |||
| . Aggregated Assert Record [1] . | . Aggregated Assert Record [1] . | |||
| skipping to change at line 548 ¶ | skipping to change at line 611 ¶ | |||
| | . | | | . | | |||
| . . . | . . . | |||
| | . | | | . | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| . . | . . | |||
| . Aggregated Assert Record [M] . | . Aggregated Assert Record [M] . | |||
| . . | . . | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| </figure> | ||||
| <t><list style="symbols"> | <dl spacing="normal" newline="true"> | |||
| <t>PIM Version, Type, Reserved, Checksum: <vspace blankLines='1'/> | <dt>PIM Version, Type, Reserved, Checksum:</dt> | |||
| As specified in Section 4.9.6 of <xref target="RFC7761"/>.</t> | <dd>As specified in <xref target="RFC7761" sectionFormat="of" | |||
| <t>"7 6 5 4 3 2": IANA registry handled bits according to Section 4 of <xref t | section="4.9.6"/>.</dd> | |||
| arget="I-D.ietf-pim-rfc8736bis"/>.</t> | <dt>"7 6 5 4 3 2":</dt> | |||
| <t>P: packed flag. MUST be 1.</t> | <dd>Flag bits per <xref | |||
| <t>A: aggregated flag. MUST be 1.</t> | target="RFC9436" sectionFormat="of" section="4"/>.</dd> | |||
| <t>Zero: | <dt>P:</dt> | |||
| Set to zero on transmission. Serves to make non assert packing capable PIM ro | <dd>Packed flag. <bcp14>MUST</bcp14> be 1.</dd> | |||
| uters fail in parsing the message instead of possible mis-parsing if this field | <dt>A:</dt> | |||
| was used.</t> | <dd>Aggregated flag. <bcp14>MUST</bcp14> be 1.</dd> | |||
| <t>Aggregated Assert Record: formatted according to <xref target="FIG-PACKET-F | <dt>Zero:</dt> | |||
| ORMAT-SG"/>. | <dd>Set to zero on transmission. Serves to make PIM routers that are | |||
| The number M of Aggregated Assert Records is determined from the packet size.</t | not capable of assert packing to fail in parsing the message instead | |||
| > | possible mis-parsing of the message as an Assert message <xref | |||
| </list></t> | target="RFC7761" format="default"/> if this field was not | |||
| zero-filled.</dd> | ||||
| <section anchor="s-assert-record"><name>Source Aggregated Assert Record</name> | <dt>Aggregated Assert Record:</dt> | |||
| <dd>Formatted according to <xref target="FIG-PACKET-FORMAT-SG"/>. | ||||
| <figure title="Source Aggregated Assert Record" anchor="FIG-RECORD-FORMAT-SG"><a | The number M of Aggregated Assert Records is determined from the | |||
| rtwork><![CDATA[ | packet size.</dd> | |||
| </dl> | ||||
| <section anchor="s-assert-record"> | ||||
| <name>Source Aggregated Assert Record</name> | ||||
| <figure anchor="FIG-RECORD-FORMAT-SG"> | ||||
| <name>Source Aggregated Assert Record</name> | ||||
| <artwork><![CDATA[ | ||||
| 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 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Source Address (Encoded-Unicast format) | | | Source Address (Encoded-Unicast format) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Number of Groups (N) | Reserved | | | Number of Groups (N) | Reserved | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Group Address 1 (Encoded-Group format) | | | Group Address 1 (Encoded-Group format) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Group Address 2 (Encoded-Group format) | | | Group Address 2 (Encoded-Group format) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | . | | | . | | |||
| | . | | | . | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Group Address N (Encoded-Group format) | | | Group Address N (Encoded-Group format) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| </figure> | ||||
| <t><list style="symbols"> | ||||
| <t>Reserved: | ||||
| Set to zero on transmission. Ignored upon receipt.</t> | ||||
| <t>R: MUST be 0. <vspace blankLines='1'/> | ||||
| R indicates both that the encoding format of the record is that of a Source Aggr | ||||
| egated Assert Record, | ||||
| but also that all assert records represented by the Source Aggregated Assert R | ||||
| ecord have R=0 and are therefore | ||||
| (S,G) assert records according to the definition of R in <xref target="RFC7761 | ||||
| "/>, Section 4.9.6.</t> | ||||
| <t>Source Address, Metric Preference, Metric: <vspace blankLines='1'/> | ||||
| As specified in Section 4.9.6 of <xref target="RFC7761"/>. Source Address MUST | ||||
| NOT be zero.</t> | ||||
| <t>Number of Groups: <vspace blankLines='1'/> | ||||
| The number of Group Address fields.</t> | ||||
| <t>Group Address: <vspace blankLines='1'/> | ||||
| As specified in Section 4.9.6 of <xref target="RFC7761"/>.</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section anchor="rp-assert-record"><name>RP Aggregated Assert Record</name> | ||||
| <t>An RP Aggregation Assert record aggregates (*,G) assert records with | ||||
| 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 only (*,G) using the same RP because the RP address is not | ||||
| encoded as it is also not present in <xref target="RFC7761"/> assert records.</t | ||||
| > | ||||
| <figure title="RP Aggregated Assert Record" anchor="FIG-RECORD-FORMAT-RP"><artwo | <dl spacing="normal" newline="true"> | |||
| rk><![CDATA[ | <dt>R:</dt> | |||
| <dd><t><bcp14>MUST</bcp14> be 0.</t> | ||||
| <t>R indicates both that the encoding format of the record is that | ||||
| of a Source Aggregated Assert Record and that all assert | ||||
| records represented by the Source Aggregated Assert Record have | ||||
| R=0 and are therefore (S,G) assert records according to the | ||||
| definition of R in <xref target="RFC7761" sectionFormat="comma" | ||||
| section="4.9.6"/>.</t> | ||||
| </dd> | ||||
| <dt>Metric Preference, Metric, Source Address:</dt> | ||||
| <dd>As specified in <xref target="RFC7761" sectionFormat="of" | ||||
| section="4.9.6"/>. Source Address <bcp14>MUST NOT</bcp14> be | ||||
| zero.</dd> | ||||
| <dt>Number of Groups:</dt> | ||||
| <dd>The number of Group Address fields.</dd> | ||||
| <dt>Reserved:</dt> | ||||
| <dd> Set to zero on transmission. Ignored upon receipt.</dd> | ||||
| <dt>Group Address:</dt> | ||||
| <dd>As specified in <xref target="RFC7761" sectionFormat="of" | ||||
| section="4.9.6"/>.</dd> | ||||
| </dl> | ||||
| </section> | ||||
| <section anchor="rp-assert-record"> | ||||
| <name>RP Aggregated Assert Record</name> | ||||
| <t>An RP Aggregation Assert Record aggregates (*,G) assert records | ||||
| with 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 only (*,G) using the same RP because the RP address is | ||||
| not encoded as it is also not present in assert records <xref | ||||
| target="RFC7761"/>.</t> | ||||
| <figure anchor="FIG-RECORD-FORMAT-RP"> | ||||
| <name>RP Aggregated Assert Record</name> | ||||
| <artwork><![CDATA[ | ||||
| 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 line 643 ¶ | skipping to change at line 728 ¶ | |||
| | . | | | . | | |||
| . . . | . . . | |||
| | . | | | . | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| . . | . . | |||
| . Group Record [K] . | . Group Record [K] . | |||
| . . | . . | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| </figure> | ||||
| <t><list style="symbols"> | <dl spacing="normal" newline="true"> | |||
| <t>R: MUST be 1. <vspace blankLines='1'/> | <dt>R:</dt> | |||
| R indicates both that the encoding format of the record is that of an RP Aggrega | <dd><t><bcp14>MUST</bcp14> be 1.</t> | |||
| ted Assert Record, | <t>R indicates both that the encoding format of the record is | |||
| and that all assert records represented by the RP Aggregated Assert Record hav | that of an RP Aggregated Assert Record and that all assert | |||
| e R=1 and are therefore | records represented by the RP Aggregated Assert Record have R=1 | |||
| (*,G) assert records according to the definition of R in <xref target="RFC7761 | and are therefore (*,G) assert records according to the | |||
| "/>, Section 4.9.6.</t> | definition of R in <xref target="RFC7761" sectionFormat="comma" | |||
| <t>Metric Preference, Metric: <vspace blankLines='1'/> | section="4.9.6"/>.</t> | |||
| As specified in Section 4.9.6 of <xref target="RFC7761"/>.</t> | </dd> | |||
| <t>Reserved: | <dt>Metric Preference, Metric:</dt> | |||
| Set to zero on transmission. Ignored upon receipt.</t> | <dd>As specified in <xref target="RFC7761" sectionFormat="of" | |||
| <t>Number of Group Records (K): <vspace blankLines='1'/> | section="4.9.6"/>.</dd> | |||
| The number of packed Group Records. A record consists of a Group | <dt>Number of Group Records (K):</dt> | |||
| Address and a Source Address list with a number of sources.</t> | <dd>The number of packed Group Records. A record consists of a | |||
| </list></t> | Group Address and a Source Address list with a number of | |||
| sources.</dd> | ||||
| <t>The format of each Group Record is:</t> | <dt>Reserved:</dt> | |||
| <dd>Set to zero on transmission. Ignored upon receipt.</dd> | ||||
| <figure title="Group Record" anchor="FIG-GROUP-RECORD"><artwork><![CDATA[ | </dl> | |||
| <t>The format of each Group Record is:</t> | ||||
| <figure anchor="FIG-GROUP-RECORD"> | ||||
| <name>Group Record</name> | ||||
| <artwork><![CDATA[ | ||||
| 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) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Source Address 2 (Encoded-Unicast format) | | | Source Address 2 (Encoded-Unicast format) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | . | | | . | | |||
| | . | | | . | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Source Address P (Encoded-Unicast format) | | | Source Address P (Encoded-Unicast format) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| </figure> | ||||
| <t><list style="symbols"> | <dl spacing="normal" newline="true"> | |||
| <t>Group Address and Reserved: <vspace blankLines='1'/> | <dt>Group Address:</dt> | |||
| As specified in Section 4.9.6 of <xref target="RFC7761"/>.</t> | <dd>As specified in <xref target="RFC7761" sectionFormat="of" | |||
| <t>Reserved: | section="4.9.6"/>.</dd> | |||
| Set to zero on transmission. Ignored upon receipt.</t> | <dt>Reserved:</dt> | |||
| <t>Number of Sources (P): <vspace blankLines='1'/> | <dd>Set to zero on transmission. Ignored upon receipt.</dd> | |||
| The Number of Sources is corresponding to the number of Source Address fields in | <dt>Number of Sources (P):</dt> | |||
| the Group Record. | <dd>The Number of Sources corresponds to the number of Source | |||
| If this number is 0, the Group Record indicates one assert record with a Sourc | Address fields in the Group Record. If this number is not 0 and | |||
| e Address of 0. | one of the (*,G) assert records to be encoded has Source Address | |||
| If this number is not 0 and one of the (*,G) assert records to be encoded shou | 0, then 0 needs to be encoded as one of the Source Address | |||
| ld have | fields.</dd> | |||
| the Source Address 0, then 0 needs to be encoded as one of the Source Address | <dt>Reserved:</dt> | |||
| fields.</t> | <dd> Set to zero on transmission. Ignored upon receipt.</dd> | |||
| <t>Source Address: <vspace blankLines='1'/> | <dt>Source Address:</dt> | |||
| As specified in Section 4.9.6 of <xref target="RFC7761"/>. | <dd>As specified in <xref target="RFC7761" sectionFormat="of" | |||
| But there can be multiple Source Address fields in the Group Record.</t> | section="4.9.6"/>. But there can be multiple Source Address | |||
| </list></t> | fields in the Group Record.</dd> | |||
| </dl> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="IANA"><name>IANA Considerations</name> | <section anchor="IANA"> | |||
| <name>IANA Considerations</name> | ||||
| <t>IANA has assigned the following code point value to the "PIM-Hello | <t>IANA has updated the "PIM Message Types" registry as follows to | |||
| Options" registry for the Packed Assert Capability.</t> | include the Packed and Aggregated flag bits for the Assert message | |||
| type.</t> | ||||
| <figure title="IANA PIM-Hello Options" anchor="FIG-IANA"><artwork><![CDATA[ | ||||
| +=======+========+=========================+================+ | ||||
| | Value | Length | Name | Reference | | ||||
| +=======+========+=========================+================+ | ||||
| | 40 | 0 | Packed Assert Capability| [This Document]| | ||||
| +=======+========+=========================+================+ | ||||
| ]]></artwork></figure> | ||||
| <t>IANA has assigned the following two Flag Bits for PIM Assert messages | ||||
| to the "PIM Message Types" registry.</t> | ||||
| <figure title="IANA PIM Message Types" anchor="FIG-IANA2"><artwork><![CDATA[ | ||||
| +======+========+=================+====================+ | ||||
| | Type | Name | Flag Bits | Reference | | ||||
| +======+========+=================+====================+ | ||||
| | 5 | Assert | 0: Packed | [This Document] | | ||||
| | | | 1: Aggregated | [This Document] | | ||||
| | | | 2-7: Unassigned | [RFC3973][RFC7761] | | ||||
| +======+========+=================+====================+ | ||||
| ]]></artwork></figure> | ||||
| </section> | ||||
| <section anchor="security-considerations"><name>Security Considerations</name> | ||||
| <t>The security considerations of <xref target="RFC7761"/> apply to the extensio | ||||
| ns | ||||
| defined in this document.</t> | ||||
| <t>This document packs multiple assert records in a single message. As | ||||
| described in Section 6.1 of <xref target="RFC7761"/>, a forged Assert message co | ||||
| uld | ||||
| cause the legitimate designated forwarder to stop forwarding traffic | ||||
| to the LAN. The effect may be amplified when using a PackedAssert message.</t> | ||||
| <t>Like other optional extensions of <xref target="RFC7761"/> that are active | ||||
| only when all routers indicate support for them, a single misconfigured or malic | ||||
| ious | ||||
| router emitting forged PIM Hello messages can inhibit operations of this extensi | ||||
| on.</t> | ||||
| <t>Authentication of PIM messages such as explained in <xref target="RFC7761"/>, | ||||
| Sections 6.2 and 6.3 can | ||||
| protect against the forged message attacks attacks.</t> | ||||
| </section> | ||||
| <section anchor="acknowledgments"><name>Acknowledgments</name> | ||||
| <t>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.</t> | ||||
| </section> | ||||
| <section anchor="working-group-considerations"><name>Working Group consideration | ||||
| s</name> | ||||
| <t>[RFC-Editor: please remove this section].</t> | ||||
| <section anchor="open-issues"><name>Open Issues</name> | ||||
| </section> | ||||
| <section anchor="changelog"><name>Changelog</name> | ||||
| <t>This document is hosted starting with -06 on https://github.com/toerless/pim- | ||||
| assert-packing.</t> | ||||
| <section anchor="draft-ietf-pim-assert-packing-12"><name>draft-ietf-pim-assert-p | ||||
| acking-12</name> | ||||
| <t>Changed text of IANA considerations from request to assigned after IANA has a | ||||
| ssigned the code points.</t> | ||||
| <t>Fixed leftover nits from John Scudders review that where not done right in -1 | ||||
| 1.</t> | ||||
| </section> | ||||
| <section anchor="draft-ietf-pim-assert-packing-11"><name>draft-ietf-pim-assert-p | ||||
| acking-11</name> | ||||
| <t>Comprehensive 2 round AD review by John Scudder.</t> | ||||
| <t>Functional enhancement: add requirement for existing implementation to be abl | ||||
| e to disable assert packing so that any possible compatibility issues introduced | ||||
| (which we think will not happen) can be avoided when upgrading to a packedasser | ||||
| t version of the software. Also to allow performance comparison. No making a req | ||||
| uirement for day 0 implementations because they may want to save the work of hav | ||||
| ing a non-packed-assert code path.</t> | ||||
| <t>Some rewrite to increase readibility, subdivided 3.3.1 into multiple subsecti | ||||
| ons to better structure it.</t> | ||||
| <t>3.3.1 improved core requirements - added requirement for counters to show ass | ||||
| ert/packedassert operations, documentation (e.g.: YANG) for what/how it can send | ||||
| , config option to disable packedasserts. Refined text: Bulletized cases of asse | ||||
| rts in rfc7761,</t> | ||||
| <t>Subdivided 3.3.1 into multiple subsections for readability improved text base | ||||
| d on review. Added reference for DSCP.</t> | ||||
| <t>3.3.1.5 Added explicit example of improvement because of packet size/throughp | ||||
| ut limits of router.</t> | ||||
| <t>Added notion of attacks by wrong hellos to security section.</t> | ||||
| <t>Eric Vyncke review:</t> | ||||
| <t>Appendix A: Better elaboration of L2 ring vs L3 ring benefits. Nits.</t> | ||||
| <t>Paul Wouter review:</t> | ||||
| <t>Changed explanation of number "M" of records to be inline with formatting of | ||||
| other data (sections 4.3 and 4.4).</t> | ||||
| <t>Some nits.</t> | ||||
| </section> | ||||
| <section anchor="draft-ietf-pim-assert-packing-10"><name>draft-ietf-pim-assert-p | ||||
| acking-10</name> | ||||
| <t>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.</t> | ||||
| </section> | ||||
| <section anchor="draft-ietf-pim-assert-packing-09"><name>draft-ietf-pim-assert-p | ||||
| acking-09</name> | ||||
| <t>For details of review discussion/replies, see review reply emails in (https:/ | ||||
| /github.com/toerless/pim-assert-packing/tree/main/emails)j</t> | ||||
| <t>review Alvaro Retana: | ||||
| Reintroduced ref to PIM-DM, fixed typos, downgraded MAY->may for "sufficient" | ||||
| .</t> | ||||
| <t>IANA Expert Review / Stig Venaas:</t> | ||||
| <t>Removed Count field from message headers as it complicates parsing and is unn | ||||
| ecessary. Added "Zero" field to make packed asserts received by a non-packed-ass | ||||
| ert-capable-router guaranteed to fail ("Reserved" address family type).</t> | ||||
| <t>Changed from RFC8736 to RFC8736bis so that we can use the word "Unassigned" i | ||||
| n the IANA table.</t> | ||||
| <t>Review Shuping Peng</t> | ||||
| <t>Changed explanation of how assert packing works from "layer" to "alternative | ||||
| to | ||||
| packetization via PIM Assert Message. | ||||
| Fixed various typos, expanded term etc..</t> | ||||
| <t>Review Robert Sparks:</t> | ||||
| <t>Moved Intro explanations of how one could avoid asserts (but how its problema | ||||
| tic) to appendix. | ||||
| Applied textual nits found. Removed quotes around term "sufficient" for easier r | ||||
| eadbility.</t> | ||||
| <t>Review Tommy Paul:</t> | ||||
| <t>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.</t> | ||||
| </section> | ||||
| <section anchor="draft-ietf-pim-assert-packing-08"><name>draft-ietf-pim-assert-p | ||||
| acking-08</name> | ||||
| <t>Included changes from review of Alvaro Retana (https://mailarchive.ietf.org/a | ||||
| rch/msg/pim/GsKq9bB2a6yDdM9DvAUGCWthdEI)</t> | ||||
| <t>Please see the following emails discussing the changes:</t> | ||||
| <t>https://raw.githubusercontent.com/toerless/pim-assert-packing/main/emails/07- | ||||
| alvaro-review-reply.txt</t> | ||||
| </section> | ||||
| <section anchor="draft-ietf-pim-assert-packing-07"><name>draft-ietf-pim-assert-p | ||||
| acking-07</name> | ||||
| <t>Included changes from review of Alvaro Retana (https://mailarchive.ietf.org/a | ||||
| rch/msg/pim/Cp4o5glUFge2b84X9CQMwCWZjAk/)</t> | ||||
| <t>Please see the following emails discussing the changes:</t> | ||||
| <t>https://raw.githubusercontent.com/toerless/pim-assert-packing/main/emails/05- | ||||
| alvaro-review-reply.txt</t> | ||||
| <t>https://raw.githubusercontent.com/toerless/pim-assert-packing/main/emails/07- | ||||
| pim-wg-announce.txt</t> | ||||
| </section> | <table anchor="FIG-IANA" align="left"> | |||
| <section anchor="draft-ietf-pim-assert-packing-06"><name>draft-ietf-pim-assert-p | <name>PIM-Hello Options</name> | |||
| acking-06</name> | <thead> | |||
| <tr> | ||||
| <th>Value</th> | ||||
| <th>Length</th> | ||||
| <th>Name</th> | ||||
| <th>Reference</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td align="center">40</td> | ||||
| <td align="center">0</td> | ||||
| <td>Packed Assert Capability</td> | ||||
| <td>RFC 9466</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| <t>This version was converted from txt format into markdown for better editing l | <t>IANA has assigned the following two flag bits for PIM Assert messages | |||
| ater, but is otherwise text identical to -05. It was posted to DataTracker to ma | in the "PIM Message Types" registry.</t> | |||
| ke diffs easier.</t> | ||||
| <t>Functional changes:</t> | <table anchor="FIG-IANA2" align="left"> | |||
| <name>PIM Message Types</name> | ||||
| <thead> | ||||
| <tr> | ||||
| <th>Type</th> | ||||
| <th>Name</th> | ||||
| <th>Flag Bits</th> | ||||
| <th>Reference</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td align="center" rowspan="3">5</td> | ||||
| <td rowspan="3">Assert</td> | ||||
| <td>0: Packed</td> | ||||
| <td>RFC 9466</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>1: Aggregated</td> | ||||
| <td>RFC 9466</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>2-7: Unassigned</td> | ||||
| <td><xref target="RFC3973" | ||||
| format="default"/> <xref target="RFC7761" format="default"/></td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| </section> | </section> | |||
| </section> | <section anchor="security-considerations"> | |||
| </section> | <name>Security Considerations</name> | |||
| <t>The security considerations of <xref target="RFC7761"/> apply to the | ||||
| extensions defined in this document.</t> | ||||
| <t>This document packs multiple assert records in a single message. As | ||||
| described in <xref target="RFC7761" sectionFormat="of" section="6.1"/>, | ||||
| a forged Assert message could cause the legitimate designated forwarder | ||||
| to stop forwarding traffic to the LAN. The effect may be amplified when | ||||
| using a PackedAssert message.</t> | ||||
| <t>Like other optional extensions of <xref target="RFC7761"/> that are | ||||
| active only when all routers indicate support for them, a single | ||||
| misconfigured or malicious router emitting forged PIM Hello messages can | ||||
| inhibit operations of this extension.</t> | ||||
| <t>Authentication of PIM messages, such as that explained in Sections | ||||
| <xref target="RFC7761" section="6.2" sectionFormat="bare"/> and <xref | ||||
| target="RFC7761" section="6.3" sectionFormat="bare"/> of <xref | ||||
| target="RFC7761"/>, can protect against forged message attacks | ||||
| attacks.</t> | ||||
| </section> | ||||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <references> | ||||
| <name>References</name> | ||||
| <references> | ||||
| <name>Normative References</name> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | ||||
| 119.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
| 761.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
| 174.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
| 436.xml"/> | ||||
| <references title='Normative References'> | </references> | |||
| <references> | ||||
| <reference anchor='RFC2119' target='https://www.rfc-editor.org/info/rfc2119'> | <name>Informative References</name> | |||
| <front> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | |||
| <title>Key words for use in RFCs to Indicate Requirement Levels</title> | 475.xml"/> | |||
| <author fullname='S. Bradner' initials='S.' surname='Bradner'><organization/></a | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 | |||
| uthor> | 973.xml"/> | |||
| <date month='March' year='1997'/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | |||
| <abstract><t>In many standards track documents several words are used to signify | 037.xml"/> | |||
| the requirements in the specification. These words are often capitalized. This | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | |||
| document defines these words as they should be interpreted in IETF documents. | 431.xml"/> | |||
| This document specifies an Internet Best Current Practices for the Internet Comm | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | |||
| unity, and requests discussion and suggestions for improvements.</t></abstract> | 490.xml"/> | |||
| </front> | </references> | |||
| <seriesInfo name='BCP' value='14'/> | ||||
| <seriesInfo name='RFC' value='2119'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC2119'/> | ||||
| </reference> | ||||
| <reference anchor='RFC7761' target='https://www.rfc-editor.org/info/rfc7761'> | ||||
| <front> | ||||
| <title>Protocol Independent Multicast - Sparse Mode (PIM-SM): Protocol Specifica | ||||
| tion (Revised)</title> | ||||
| <author fullname='B. Fenner' initials='B.' surname='Fenner'><organization/></aut | ||||
| hor> | ||||
| <author fullname='M. Handley' initials='M.' surname='Handley'><organization/></a | ||||
| uthor> | ||||
| <author fullname='H. Holbrook' initials='H.' surname='Holbrook'><organization/>< | ||||
| /author> | ||||
| <author fullname='I. Kouvelas' initials='I.' surname='Kouvelas'><organization/>< | ||||
| /author> | ||||
| <author fullname='R. Parekh' initials='R.' surname='Parekh'><organization/></aut | ||||
| hor> | ||||
| <author fullname='Z. Zhang' initials='Z.' surname='Zhang'><organization/></autho | ||||
| r> | ||||
| <author fullname='L. Zheng' initials='L.' surname='Zheng'><organization/></autho | ||||
| r> | ||||
| <date month='March' year='2016'/> | ||||
| <abstract><t>This document specifies Protocol Independent Multicast - Sparse Mod | ||||
| e (PIM-SM). PIM-SM is a multicast routing protocol that can use the underlying | ||||
| unicast routing information base or a separate multicast-capable routing informa | ||||
| tion base. It builds unidirectional shared trees rooted at a Rendezvous Point ( | ||||
| RP) per group, and it optionally creates shortest-path trees per source.</t><t>T | ||||
| his document obsoletes RFC 4601 by replacing it, addresses the errata filed agai | ||||
| nst it, removes the optional (*,*,RP), PIM Multicast Border Router features and | ||||
| authentication using IPsec that lack sufficient deployment experience (see Appen | ||||
| dix A), and moves the PIM specification to Internet Standard.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='STD' value='83'/> | ||||
| <seriesInfo name='RFC' value='7761'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC7761'/> | ||||
| </reference> | ||||
| <reference anchor='RFC8174' target='https://www.rfc-editor.org/info/rfc8174'> | ||||
| <front> | ||||
| <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title> | ||||
| <author fullname='B. Leiba' initials='B.' surname='Leiba'><organization/></autho | ||||
| r> | ||||
| <date month='May' year='2017'/> | ||||
| <abstract><t>RFC 2119 specifies common key words that may be used in protocol s | ||||
| pecifications. This document aims to reduce the ambiguity by clarifying that on | ||||
| ly UPPERCASE usage of the key words have the defined special meanings.</t></abs | ||||
| tract> | ||||
| </front> | ||||
| <seriesInfo name='BCP' value='14'/> | ||||
| <seriesInfo name='RFC' value='8174'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC8174'/> | ||||
| </reference> | ||||
| <reference anchor='I-D.ietf-pim-rfc8736bis' target='https://datatracker.ietf.org | ||||
| /doc/html/draft-ietf-pim-rfc8736bis-00'> | ||||
| <front> | ||||
| <title>PIM Message Type Space Extension and Reserved Bits</title> | ||||
| <author fullname='Stig Venaas' initials='S.' surname='Venaas'> | ||||
| <organization>Cisco Systems, Inc.</organization> | ||||
| </author> | ||||
| <author fullname='Alvaro Retana' initials='A.' surname='Retana'> | ||||
| <organization>Futurewei Technologies, Inc.</organization> | ||||
| </author> | ||||
| <date day='2' month='March' year='2023'/> | ||||
| <abstract> | ||||
| <t> The PIM version 2 messages share a common message header format. | ||||
| The | ||||
| common header definition contains eight reserved bits. This document | ||||
| specifies how these bits may be used by individual message types and | ||||
| creates a registry containing the per-message-type usage. This | ||||
| document also extends the PIM type space by defining three new | ||||
| message types. For each of the new types, four of the previously | ||||
| reserved bits are used to form an extended type range. | ||||
| This document updates RFCs 7761 and 3973 by defining the use of the | ||||
| currently Reserved field in the PIM common header. This document | ||||
| further updates RFCs 7761 and 3973, along with RFCs 5015, 5059, 6754, | ||||
| and 8364, by specifying the use of the currently reserved bits for | ||||
| each PIM message. | ||||
| This document obsoletes RFC 8736. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name='Internet-Draft' value='draft-ietf-pim-rfc8736bis-00'/> | ||||
| </reference> | ||||
| </references> | ||||
| <references title='Informative References'> | ||||
| <reference anchor='RFC2475' target='https://www.rfc-editor.org/info/rfc2475'> | ||||
| <front> | ||||
| <title>An Architecture for Differentiated Services</title> | ||||
| <author fullname='S. Blake' initials='S.' surname='Blake'><organization/></autho | ||||
| r> | ||||
| <author fullname='D. Black' initials='D.' surname='Black'><organization/></autho | ||||
| r> | ||||
| <author fullname='M. Carlson' initials='M.' surname='Carlson'><organization/></a | ||||
| uthor> | ||||
| <author fullname='E. Davies' initials='E.' surname='Davies'><organization/></aut | ||||
| hor> | ||||
| <author fullname='Z. Wang' initials='Z.' surname='Wang'><organization/></author> | ||||
| <author fullname='W. Weiss' initials='W.' surname='Weiss'><organization/></autho | ||||
| r> | ||||
| <date month='December' year='1998'/> | ||||
| <abstract><t>This document defines an architecture for implementing scalable ser | ||||
| vice differentiation in the Internet. This memo provides information for the In | ||||
| ternet community.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='2475'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC2475'/> | ||||
| </reference> | ||||
| <reference anchor='RFC3973' target='https://www.rfc-editor.org/info/rfc3973'> | ||||
| <front> | ||||
| <title>Protocol Independent Multicast - Dense Mode (PIM-DM): Protocol Specificat | ||||
| ion (Revised)</title> | ||||
| <author fullname='A. Adams' initials='A.' surname='Adams'><organization/></autho | ||||
| r> | ||||
| <author fullname='J. Nicholas' initials='J.' surname='Nicholas'><organization/>< | ||||
| /author> | ||||
| <author fullname='W. Siadak' initials='W.' surname='Siadak'><organization/></aut | ||||
| hor> | ||||
| <date month='January' year='2005'/> | ||||
| <abstract><t>This document specifies Protocol Independent Multicast - Dense Mode | ||||
| (PIM-DM). PIM-DM is a multicast routing protocol that uses the underlying unic | ||||
| ast routing information base to flood multicast datagrams to all multicast route | ||||
| rs. Prune messages are used to prevent future messages from propagating to rout | ||||
| ers without group membership information. This memo defines an Experimental Pro | ||||
| tocol for the Internet community.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='3973'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC3973'/> | ||||
| </reference> | ||||
| <reference anchor='RFC6037' target='https://www.rfc-editor.org/info/rfc6037'> | ||||
| <front> | ||||
| <title>Cisco Systems' Solution for Multicast in BGP/MPLS IP VPNs</title> | ||||
| <author fullname='E. Rosen' initials='E.' role='editor' surname='Rosen'><organiz | ||||
| ation/></author> | ||||
| <author fullname='Y. Cai' initials='Y.' role='editor' surname='Cai'><organizatio | ||||
| n/></author> | ||||
| <author fullname='IJ. Wijnands' initials='IJ.' surname='Wijnands'><organization/ | ||||
| ></author> | ||||
| <date month='October' year='2010'/> | ||||
| <abstract><t>This document describes the MVPN (Multicast in BGP/MPLS IP VPNs) so | ||||
| lution designed and deployed by Cisco Systems. The procedures specified in this | ||||
| document are largely a subset of the generalized MVPN framework recently standa | ||||
| rdized by the IETF. However, as the deployment of the procedures specified here | ||||
| in predates the publication of IETF standards (in some cases by over five years) | ||||
| , an implementation based on these procedures differs in some respects from a fu | ||||
| lly standards-compliant implementation. These differences are pointed out in th | ||||
| e document. This document defines a Historic Document for the Internet communi | ||||
| ty.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='6037'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC6037'/> | ||||
| </reference> | ||||
| <reference anchor='RFC7431' target='https://www.rfc-editor.org/info/rfc7431'> | ||||
| <front> | ||||
| <title>Multicast-Only Fast Reroute</title> | ||||
| <author fullname='A. Karan' initials='A.' surname='Karan'><organization/></autho | ||||
| r> | ||||
| <author fullname='C. Filsfils' initials='C.' surname='Filsfils'><organization/>< | ||||
| /author> | ||||
| <author fullname='IJ. Wijnands' initials='IJ.' role='editor' surname='Wijnands'> | ||||
| <organization/></author> | ||||
| <author fullname='B. Decraene' initials='B.' surname='Decraene'><organization/>< | ||||
| /author> | ||||
| <date month='August' year='2015'/> | ||||
| <abstract><t>As IPTV deployments grow in number and size, service providers are | ||||
| looking for solutions that minimize the service disruption due to faults in the | ||||
| IP network carrying the packets for these services. This document describes a m | ||||
| echanism for minimizing packet loss in a network when node or link failures occu | ||||
| r. Multicast-only Fast Reroute (MoFRR) works by making simple enhancements to mu | ||||
| lticast routing protocols such as Protocol Independent Multicast (PIM) and Multi | ||||
| point LDP (mLDP).</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='7431'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC7431'/> | ||||
| </reference> | ||||
| <reference anchor='RFC7490' target='https://www.rfc-editor.org/info/rfc7490'> | ||||
| <front> | ||||
| <title>Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)</title> | ||||
| <author fullname='S. Bryant' initials='S.' surname='Bryant'><organization/></aut | ||||
| hor> | ||||
| <author fullname='C. Filsfils' initials='C.' surname='Filsfils'><organization/>< | ||||
| /author> | ||||
| <author fullname='S. Previdi' initials='S.' surname='Previdi'><organization/></a | ||||
| uthor> | ||||
| <author fullname='M. Shand' initials='M.' surname='Shand'><organization/></autho | ||||
| r> | ||||
| <author fullname='N. So' initials='N.' surname='So'><organization/></author> | ||||
| <date month='April' year='2015'/> | ||||
| <abstract><t>This document describes an extension to the basic IP fast reroute m | ||||
| echanism, described in RFC 5286, that provides additional backup connectivity fo | ||||
| r point-to-point link failures when none can be provided by the basic mechanisms | ||||
| .</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='7490'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC7490'/> | ||||
| </reference> | ||||
| </references> | </references> | |||
| <section anchor="use-case-examples"> | ||||
| <name>Use Case Examples</name> | ||||
| <t>The PIM Assert mechanism can only be avoided by designing the network | ||||
| to be without transit subnets with multiple upstream routers. For | ||||
| example, an L2 ring between routers can sometimes be reconfigured to be | ||||
| a ring of point-to-point subnets connected by the routers. However, these | ||||
| L2/L3 | ||||
| topology changes are undesirable when they are only done to | ||||
| enable IP multicast with PIM because they increase the cost of | ||||
| introducing IP multicast with PIM.</t> | ||||
| <t>These L3 ring designs are specifically undesirable when particular L2 | ||||
| technologies are needed. For example, various L2 technologies for rings | ||||
| provide sub-50 msec failover mechanisms that will benefit IP unicast and | ||||
| multicast alike without any added complexity to the IP 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 need for a complex | ||||
| choice of a sub-50 msec IP unicast failover solution (such as <xref | ||||
| target="RFC7490" format="default"/> with IP repair tunnels) as well as a | ||||
| separate sub-50 msec IP multicast failover solution, (such as <xref | ||||
| target="RFC7431" format="default"/> with dedicated ring support). The | ||||
| mere fact that, by running at the IP layer, different solutions for IP | ||||
| unicast and multicast are required makes them more difficult to operate, | ||||
| and they typically require more expensive hardware. This often leads to | ||||
| non-support of the IP multicast part.</t> | ||||
| <t>Likewise, IEEE Time-Sensitive Networking mechanisms would require an | ||||
| L2 topology that cannot simply be replaced by an L3 topology. L2 | ||||
| sub-topologies can also significantly reduce the cost of deployment.</t> | ||||
| <t>The following subsections give examples of the type of network and | ||||
| use cases in which subnets with asserts have been observed or are | ||||
| expected to require scaling as provided by this specification.</t> | ||||
| <section anchor="enterprise-network"> | ||||
| <name>Enterprise Network</name> | ||||
| <t>When an enterprise network is connected through an L2 network, | ||||
| the intra-enterprise runs L3 PIM multicast. The different sites | ||||
| of the enterprise are equivalent to the PIM connection through the | ||||
| shared LAN network. Depending upon the locations and number of groups, | ||||
| there could be many asserts on the first-hop routers.</t> | ||||
| </section> | ||||
| <section anchor="video-surveillance"> | ||||
| <name>Video Surveillance</name> | ||||
| <t>Video surveillance deployments have migrated from analog-based | ||||
| systems to IP-based systems oftentimes using multicast. In the shared | ||||
| LAN network deployments, when there are many cameras streaming to many | ||||
| groups, there may be issues with many asserts on first-hop routers.</t> | ||||
| </section> | ||||
| <section anchor="financial-services"> | ||||
| <name>Financial Services</name> | ||||
| <t>Financial services extensively rely on IP Multicast to deliver | ||||
| stock market data and its derivatives, and the current multicast | ||||
| solution PIM is usually deployed. As the number of multicast flows | ||||
| grow, many stock data with many groups may result in many PIM asserts | ||||
| on a shared LAN network from the publisher to the subscribers.</t> | ||||
| </section> | ||||
| <section anchor="iptv-broadcast-video"> | ||||
| <name>IPTV Broadcast Video</name> | ||||
| <t>PIM DR deployments are often used in host-side network for IPTV | ||||
| broadcast video services. Host-side access network failure scenarios | ||||
| may benefit from assert packing when many groups are being | ||||
| used. According to <xref target="RFC7761"/>, the DR will be elected to | ||||
| forward multicast traffic in the shared access network. When the DR | ||||
| recovers from a failure, the original DR starts to send traffic, and | ||||
| the current DR is still forwarding traffic. In this situation, multicast | ||||
| traffic duplication maybe happen in the shared access network and can | ||||
| trigger the assert progress.</t> | ||||
| </section> | ||||
| <section anchor="mvpn-mdt"> | ||||
| <name>MVPN MDT</name> | ||||
| <t>As described in <xref target="RFC6037"/>, Multicast Distribution | ||||
| Tree (MDT) is used as tunnels for Multicast VPN (MVPN). The | ||||
| configuration of multicast-enabled VPN Routing and Forwarding (VRF) or | ||||
| changes to an interface that is in a VRF may cause many assert packets | ||||
| to be sent at the same time.</t> | ||||
| </section> | ||||
| <section anchor="special-l2-services"> | ||||
| <name>Special L2 Services</name> | ||||
| <t>Additionally, future backhaul, or fronthaul, networks may want to | ||||
| connect L3 across an L2 underlay supporting Time-Sensitive Networks | ||||
| (TSNs). The infrastructure may run Deterministic Networking (DetNet) | ||||
| over TSN. These transit L2 LANs would have multiple upstreams and | ||||
| downstreams. This document takes a proactive approach to | ||||
| prevention of possible future assert issues in these types of | ||||
| environments.</t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="use-case-examples"><name>Use case examples</name> | <section anchor="acknowledgments" numbered="false" toc="default"> | |||
| <name>Acknowledgments</name> | ||||
| <t>The PIM Assert mechanism can only be avoided by designing the network | <t>The authors would like to thank the following individuals: <contact ful | |||
| to be without transit subnets with multiple upstream routers. For | lname="Stig Venaas"/> | |||
| example, an L2 ring between routers can sometimes be reconfigured to be a ring | for the valuable contributions of this document, <contact | |||
| of point-to-point subnets connected by the routers. These L2/L3 topology | fullname="Alvaro Retana"/> for his thorough and constructive RTG AD | |||
| changes are undesirable though, when they are only done to enable IP multicast | review, <contact fullname="Ines Robles"/> for her Gen-ART review, | |||
| with PIM because they increase the cost of introducing IP multicast with PIM.</t | <contact fullname="Tommy Pauly"/> for his Transport Area review, | |||
| > | <contact fullname="Robert Sparks"/> for his SecDir review, <contact | |||
| fullname="Shuping Peng"/> for her RtgDir review, <contact fullname="John | ||||
| <t>These L3 ring designs are specifically undesirable, when particular L2 techno | Scudder"/> for his RTG AD review, <contact fullname="Éric Vyncke"/> for | |||
| logies are needed. | his INT AD review, <contact fullname="Eric Kline"/> for his INT AD | |||
| For example various L2 technologies for rings provide sub 50 msec failover | review, <contact fullname="Paul Wouter"/> for his SEC AD review, | |||
| mechanisms that will benefit IP unicast and multicast alike without any | <contact fullname="Zaheduzzaman Sarker"/> for his TSV AD review, | |||
| added complexity to the IP layer (forwarding or routing). If such L2 rings where | <contact fullname="Robert Wilton"/> for his OPS AD review, and <contact | |||
| to be replaced | fullname="Martin Duke"/> for his TSV AD review.</t> | |||
| by L3 rings just to avoid PIM asserts, then this would result in the need for | </section> | |||
| a complex choice of of a sub 50 msec IP unicast failover solutions as well | ||||
| as a sub 50 msec IP multicast failover solution. The mere fact that by | ||||
| operating at the IP layer, different solutions for IP unicast and multicast | ||||
| are required makes them more difficult to operate, they typically require more | ||||
| expensive hardware and therefore most often, they are not even available | ||||
| on the target equipment, such as <xref target="RFC7490"/> with IP repair tunnels | ||||
| for IP unicast or | ||||
| <xref target="RFC7431"/> for IP multicast.</t> | ||||
| <t>Likewise, IEEE Time Sensitive Networking mechanisms would require an | ||||
| L2 topology that can not simply be replaced by an L3 topology. | ||||
| L2 sub-topologies can also significantly reduce the cost of deployment.</t> | ||||
| <t>The following subsections give examples of the type of network and use-cases | ||||
| in which subnets with asserts have been observerd or are expected to require | ||||
| scaling as provided by this specification.</t> | ||||
| <section anchor="enterprise-network"><name>Enterprise network</name> | ||||
| <t>When an Enterprise network is connected through a layer-2 network, | ||||
| the intra-enterprise runs layer-3 PIM multicast. The different sites | ||||
| of the enterprise are equivalent to the PIM connection through the | ||||
| shared LAN network. Depending upon the locations and amount of | ||||
| groups there could be many asserts on the first-hop routers.</t> | ||||
| </section> | ||||
| <section anchor="video-surveillance"><name>Video surveillance</name> | ||||
| <t>Video surveillance deployments have migrated from analog based | ||||
| systems to IP-based systems oftentimes using multicast. In the | ||||
| shared LAN network deployments, when there are many cameras | ||||
| streaming to many groups there may be issues with many asserts on | ||||
| first-hop routers.</t> | ||||
| </section> | ||||
| <section anchor="financial-services"><name>Financial Services</name> | ||||
| <t>Financial services extensively rely on IP Multicast to deliver stock | ||||
| market data and its derivatives, and current multicast solution PIM | ||||
| is usually deployed. As the number of multicast flows grow, there | ||||
| are many stock data with many groups may result in many PIM asserts | ||||
| on a shared LAN network from publisher to the subscribers.</t> | ||||
| </section> | ||||
| <section anchor="iptv-broadcast-video"><name>IPTV broadcast Video</name> | ||||
| <t>PIM DR deployments are often used in host-side network for | ||||
| IPTV broadcast video services. Host-side access network failure | ||||
| scenario may be benefitted by assert packing when many groups are | ||||
| being used. According to <xref target="RFC7761"/> the DR will be elected to forw | ||||
| ard | ||||
| multicast traffic in the shared access network. When the DR recovers | ||||
| from a failure, the original DR starts to send traffic, and the | ||||
| current DR is still forwarding traffic. In the situation multicast | ||||
| traffic duplication maybe happen in the shared access network and | ||||
| can trigger the assert progress.</t> | ||||
| </section> | ||||
| <section anchor="mvpn-mdt"><name>MVPN MDT</name> | ||||
| <t>As described in <xref target="RFC6037"/>, MDT (Multicast Distribution Tree) i | ||||
| s used | ||||
| as tunnels for MVPN. The configuration of multicast-enabled VRF (VPN | ||||
| routing and forwarding) or interface that is in a VRF changing may | ||||
| cause many assert packets to be sent in a same time.</t> | ||||
| </section> | ||||
| <section anchor="special-l2-services"><name>Special L2 services</name> | ||||
| <t>Additionally, future backhaul, or fronthaul, networks may want to | ||||
| connect L3 across an L2 underlay supporting Time Sensitive Networks | ||||
| (TSN). The infrastructure may run DetNet over TSN. These transit L2 | ||||
| LANs would have multiple upstreams and downstreams. This document is | ||||
| taking a proactive approach to prevention of possible future assert | ||||
| issues in these types of environments.</t> | ||||
| </section> | ||||
| </section> | ||||
| </back> | </back> | |||
| <!-- ##markdown-source: | ||||
| H4sIAAAAAAAAA+1963LjRpLuf0XoHSrkHyudJalbX9yK8MbQLXVba6lbK6nt | ||||
| tWcnJkCySGIaBDgAKJp9eZd5lnmyk19mVqEAkmLbI9u7tntjxxQJVGVlZuWt | ||||
| sjLb7fb2Vj8bxOnoxMzKYfvz7a3trTIuE3tirs4vTbcobF6aS1sU0ciaq6j/ | ||||
| lp7d3op6vdzenZiIf29P3feDrJ9GE3p5kEfDsh1bGnMaT9r159qHRzRtVNpR | ||||
| li9OTFEOtreKMrfR5MScn92+2N6aj3j+7a14mp+YMp8V5dHBwbODI8BXlFE6 | ||||
| +GuUZClNtLDF9tY0PjHbW8aUWV+/4c8DOy3HJ+Yx/iyynGYYFv73YjGp/d3P | ||||
| JhOblu4LWuOsHGf5CX5r43+MkaV9FxdZOjIX8Uy+zTNgyw7iMsvlmywn8J+P | ||||
| 4zQyl1kvTuy6B/vZLC2BAn5YvrOTKE5OTBLPFjzRn/r4bcLjdAjIJXhuM5sn | ||||
| RCBz1n9LSA5AeDErZ7md23jj/G9uurXZy9L+qV90htGsM7BLM17Gb6257H+Z | ||||
| xwO7frq1g0/i/jiySWfS72GEPw3deyuX9/3YpqPdGyL5Yo/+iMBmfsrvb8/M | ||||
| 8yyfZnlUxlm6Eavv8H7nHYb807uS8dnpp6B2muUTGuPOMsGvXzw/Ojx85j4/ | ||||
| ffrk0H3+/PDpI/583j7teAbPh/3Pnx4/6cXFCUaL0+HSeI+ePnafj589PXaf | ||||
| nxwcP/XzPDo+rD4/O+Cx2u22iXq0P6J+ib/PU2yN9s2lKcZRbgfmovvKpLac | ||||
| Z/nbomXKsc2tiQuTDUubmklGf5W0bEPbxcymss+IF2alzTvbW98SLnir30yj | ||||
| vCCyZgNrdmWCvZaJ034yg3yQZ7JZ3rf0qO3Hw7jfdh/M5Swp435UlPqqvFuY | ||||
| WWEHACkusOFTk9hoQDvTDGbTJIYEMOdXZuJfhnywZWF6FjMSCudRPqAV9hZY | ||||
| VkHMBigE9qJjQhE1ERFVGEIJT4tpbGL7pYlMQcMl1g+Y49P2lo364/r8hOMh | ||||
| ljNMsjkBUc4tIYdn9pOCAre0HkOibgaBYQZ2GKeYmGAgxk7jYoK5C5uSWCO2 | ||||
| NbntW2IE45kiSwGAzDtNGjjA3IUBC1WAQ+7aQX2lHcNgZNMynsTvZFTihlmf | ||||
| QCGQSYxnZZSYdDbp0YKzISPLITjjZTHnAEKQhvlmCG4pppbQN5vSEPQM4xCD | ||||
| 0xD4u4nLlswKguHnar6Qxttby0Qm1prl9G7HMfkkHgwgK7e3PjPntIMzGlZ2 | ||||
| 9aczfbmY0ixJsqgz/vZWk/MNM34F4yAqIw9aNJ3aKA+w1DLDHLJpEA+HNBNR | ||||
| vTEewSA6rhoDmMSTeNOxrz58L29G/X6W85ajp96/V/Hz8SMIbkUrRit4nuea | ||||
| 2jwmdS4YoNffWjvlNegbpDpL5hzdSvWBiA/yPLZFjVOjHsFcwenpSHpYpAEY | ||||
| aEQLmxIKEmjGeVyOeVJaR26LaZbyaia2zElmTInLgEJ5kxiDv3bcxQgiyIGL | ||||
| QvhNZqH9AoCvaVfZd3fZrDBXWUwr3r2+2vv0TUnTQr5h3HCNNLlyKLbjKqlC | ||||
| U2Ub9qOCQKjHBlYJYH4+AcB4Bm2wvpHbfwHwTGxaVwQLwuaLjjkvQxFhfpyE | ||||
| YHHQEBHmJ0uI7a2GiFhWAyTgGaOQTqSc6MdZEuXE2D1rxjaZDmeJmdMuVsB4 | ||||
| +zsBTtiNDD09CiVSNQPzawGmIlXFCExtUghDVlgw0zwjXGE92FlMPPBtyKu0 | ||||
| mWnegmjGXPjZZ8Sif5/FuWVj0lwQaWZELOFQSxtyYUhmEW/vXL65ud1pyX/N | ||||
| q9f8+frsv96cX5+d4vPNV92LC/9Bntjeor9ev7nQB/CpevX568vLs1en8jZ9 | ||||
| axpfXXa/o//wGndeX92ev37VvdghpmT9XG0dCBPi3h74ldZH+7UkWkf0hC36 | ||||
| edyjP2LC+ZfPr8zhIxFQsJU+fpTPsI/oMwjDkxEnEcnkT8LawglXsHeSwCyY | ||||
| xsSGLEBJuGfz1ICaDpu3Np/EaZZko4XDIYldyEmC2f5ABkgpup7gHUaTOIlp | ||||
| bC+ByuptUG1Jmg4z7FbQN4mLUnaF+DYxb9OCJiNoS15zHU8MYPf2xO2223gC | ||||
| rt7eur46WRJT8v0L/HBnYWZdRQThC9kh7Dltb91c0WA35HKUljiUH7jNrZVX | ||||
| 6afrK//36fWJObVFPEoZtGtmRFGcV3nWS+zE3GDzMz3xfSUViOn7pHexHGLm | ||||
| BRF1mmQLZtaOubGWcETWU5t2iW3bH6IJiafi48ftLewoQjdt17g07gemL76N | ||||
| UkUXIXk+Xhh6xlugaUYbKaNdRHCBUNFdFovSDzQQyyoAQ4grCLIYTKMySNU8 | ||||
| vTtlStK73cKwqomKSvVjvy+IL478C8wGlR1wZALrseWkxiRigeJl8bJin4/J | ||||
| YWEp1I8IN5XUCq0aJ3mUE73pCgw5y0CkCR5hGggHCdNVA9GjdzEkdM+SdwIp | ||||
| P7CJo5NY0zTxKqFGNFTt3acFFLaQ/bcsBwUeqF7VbooDNiFY7RCTLrAZc2dS | ||||
| 8AYO5oK5RH63KguadzSyoqHri8XWioWMKwy3jmzogCz0k2xnh6xl6EOumbAI | ||||
| qSzKOuhkGZOx08UgZIcQ7Iw8QiUQTAxEvgjxDV7Y3uJZRCjUDDnGDViY8KMw | ||||
| qTCgwaFAaEOnMAyLPhMcU8wgmYj1B07lybNDzySOg6A0BTtEUcFJx0m5mhXi | ||||
| TJg+m7OiAnkfiXM0YFngFayMBA8AzzkzgSZPC9qYxayXAluyO9axfQfSiXwk | ||||
| 2engJHNxZHLM4RwjRzIAVRCrYpVgW9g7WTqMR7Pci+aIX2WlP4VAbJdZmz94 | ||||
| cOiVVIS5eHsVILfsgF0c7V8cexlAegNWj/P3UmAgj1jC0GJH45YwrCgceoKR | ||||
| NoALzFYgPxnaHNtbjA4gnfYdb3N+1+0ltWeJ82kFsTonQEbNcHFjOCJCWDBp | ||||
| BEzSchnz0pCGZHHIQBbOiyYEl0Rq1lexLg37gX2kFyyAmRrmLqI9SVzWfAFC | ||||
| GnguwKp3xB3Arnl8YCaFJaMoipPsDorCMxSJCKbcGEupCWoyYtiJ4CWB+MdK | ||||
| KdOLsAMwTYd0y0X81s7jgjjk/OzsjLUgqREwGizeV8KKYv67OckAmiWwitlO | ||||
| MrAssRClLGR1yTwFeIqYFrwQpiI10xf2EHgCfUDvE3Rt/QaowACMb94ZhN0o | ||||
| LWkgMX9r1Kw0oNgcPrwROedztWtRjkkbw/gVS4/2cTGbTiF36kJKg54cyzn0 | ||||
| Tpzb2xpSNV9ZskTM6ynmJDiO5EH2V/AzhlzhAxTy6FfZfKXDse4Vtqw2ALFC | ||||
| Dq16zOy+f9+I7mb8w8ePey4CxFo/TbMZjGdFklgUZV3cNvhEN8Zq42vl2lZA | ||||
| Iy5XAXC2t5ytDYZiyGYph06J1f/5j1ANOZ0VTazje7+C0sVdmFKMywaCXLz8 | ||||
| hcxt3n+2BqiVwp7fbYnFDVbj5d+oj/Wo86zzpGHLki3jbHOxJshbIsB5IVD3 | ||||
| Zvd//l/r5R601e4NPijKiYMhK0X/VKZw6KY69l42adkYJWc1GpEPvtdyscHu | ||||
| YEC6luTKS7hYZN+4vy/Fzwd76scrHwnQWJbfYohfFBo2rMUiUgc6VEw+UAuq | ||||
| xj9OOAMVcxK3dr4Cu35jFTADPRbYee+7uQZgEVbbNA4W6tmiGtAbUeS0sFfy | ||||
| /v2auDCRSd5lvjW7V3s8Bb7qjka5HbEpv9vdI1JgLl7buXia9LC8xegmTB3I | ||||
| WG5utn530yxlBrODvRVLRtSovqNq3pCY/gQuvnDnNfoqfj/XHQjHQGxnwCoA | ||||
| 8a5i+7HEVj8Qu9N9S/I3gyHA8UmSS9OysTS/qkNeVdpYGlzEJIEpvToM4rBY | ||||
| LqbyxxgsRaaLk53CP85rn0YLZ/kNrPiHlc3hluQg7H5xsAKmXjZYCM4L0mFW | ||||
| QwI1ziyUpRljCv3OTczaO1zFThXOFQqwwrNKxyUyeLBWoWoNWBVzbYIwNTsB | ||||
| K9bAdOBVo90H4i1tmHXzMp00ZOm4kV8SSbjj5Ej1utL7ml/fIYtFEOWYVIZl | ||||
| KSjhvYKPOnZxoJele0uC6T5BBKE7J+2G/0YcE2CTFeMhXgdXkuWaG80iSLUB | ||||
| Ym+M0Q6UIQgyQl5ZaXd2T0HKFRziyatsXDlieFLkuYQM2cEK1JYe1sBK67qg | ||||
| 3AZYxdxLm4uE8UWf2M5Zjp36eLQyFpuhAOxwr9Pp4EO61zGewNdXm4mbTzdQ | ||||
| V4i7iZZk1deIif2wI2tT2tCMfAzEcQu4+W6SqI4DOcmpRnln88yzRJ3DrLpW | ||||
| kRxErthm21sbkOBcEB6Hj7vJtzTXVy/qhwO7gQTfIwTR+EyeJvXYolaXRniD | ||||
| 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 | ||||
| A4xDeMs3tQAA | ||||
| </rfc> | </rfc> | |||
| End of changes. 49 change blocks. | ||||
| 1417 lines changed or deleted | 780 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||