<?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.3) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>

<?rfc comments="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-pim-assert-packing-11" category="std" consensus="true" submissionType="IETF" tocDepth="5" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="assert-packing">PIM Assert Message Packing</title>

    <author initials="Y." surname="Liu" fullname="Yisong Liu" role="editor">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>liuyisong@chinamobile.com</email>
      </address>
    </author>
    <author initials="T." surname="Eckert" fullname="Toerless Eckert" role="editor">
      <organization>Futurewei</organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>tte@cs.fau.de</email>
      </address>
    </author>
    <author initials="M." surname="McBride" fullname="Mike McBride">
      <organization>Futurewei</organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>michael.mcbride@futurewei.com</email>
      </address>
    </author>
    <author initials="Z." surname="Zhang" fullname="Zheng(Sandy) Zhang">
      <organization>ZTE Corporation</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>zhang.zheng@zte.com.cn</email>
      </address>
    </author>

    <date year="2023" month="March" day="24"/>

    
    <workgroup>PIM</workgroup>
    

    <abstract>


<t>In PIM-SM shared LAN networks, there is often more than one upstream router.
When PIM Sparse Mode (PIM-SM), including PIM Source Specific-Specific Multicast (PIM-SSM), is used, this
can lead to duplicate IP multicast packets being forwarded by these
PIM routers.  PIM Assert messages are used to elect a single forwarder for
each IP multicast traffic 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>



    </abstract>



  </front>

  <middle>


<section anchor="introduction"><name>Introduction</name>

<t>In PIM-SM 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-preference and
metric 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 to send and receive 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 particularly be 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 "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, they 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="RFC7761"/>. 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>

<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,
there may be multiple upstream routers, which can cause duplicate
multicast traffic to be forwarded and assert process to occur.</t>

<t>As the multicast services become widely deployed, the
number of multicast entries increases, and a large number of assert
messages may be sent in a very short period when multicast data
packets trigger PIM assert processing in the shared LAN networks.
The PIM routers need to process a large number of PIM assert small
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
discarded, thus extending the time of traffic duplication in the
network.</t>

<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. These L2/L3 topology
changes are undesirable though, 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 designs are also not feasible when specific L2 technologies are needed.
For example various L2 technologies for rings provide sub 50 msec failover
mechanisms, something not possible equally with an L5 subnet based ring. 
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>

</section>
<section anchor="specification"><name>Specification</name>

<t>This document defines three elements in support of PIM assert packing:</t>

<t><list style="numbers">
  <t>The PIM Assert Packing Hello Option.</t>
  <t>The encoding of PackedAssert messages.</t>
  <t>How to send and receive PackedAssert messages.</t>
</list></t>

<section anchor="pim-assert-packing-hello-option"><name>PIM Assert Packing Hello 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.
PackedAssert messages (<xref target="assert-packing-formats"/>) 
MUST NOT be used unless all PIM routers in the same subnet announce this option.</t>

</section>
<section anchor="assert-packing-formats"><name>Assert Packing Message Formats</name>

<t>The PIM Assert message, as defined in Section 4.9.6 of <xref target="RFC7761"/>,
describes the parameters of a (*,G) or (S,G) assert through the
following information elements: Rendezvous Point Tree flag (R), Source Address, Group
Address, Metric and Metric Preference. This document calls this
information an assert record.</t>

<t>Assert packing introduces two new PIM Assert message encodings
through the allocation and use of two flags in the PIM Assert
message header <xref target="I-D.ietf-pim-rfc8736bis"/>, the Packed (P) and the Aggregated (A)
flags.</t>

<t>If the (P)acked flag is 0, the message is a (non-packed) PIM Assert message
as specified in <xref target="RFC7761"/>. See <xref target="rfc7761-assert-message"/>. In this case,
the (A) flag MUST be set to 0, and MUST be ignored on receipt.</t>

<t>If the (P) flag is 1, then the message is
called a PackedAssert message and the type and hence
encoding format of the payload is determined by the (A) flag.</t>

<t>If A=0, then the message body is a sequence of assert records. This is called a "Simple PackedAssert" message. See <xref target="simple-packedassert-message"/>.</t>

<t>If A=1, then the message body is a sequence of aggregated assert records. This is called an "Aggregated PackedAssert". See <xref target="aggregated-packedassert-message"/>.</t>

<t>Two aggregated assert record types are specified.</t>

<t>The "Source Aggregated Assert Record", see <xref target="s-assert-record"/>,
encodes one (common) Source Address, Metric and Metric Preference as well as a list
of one or more Group Addresses.  Source Aggregated Assert Records provide
a more compact encoding than the Simple PackedAssert message format when multiple (S,G) flows share the same source S. 
A single Source Aggregated Assert Record with n Group Addresses represents the information of
assert records for (S,G1)...(S,Gn).</t>

<t>The "RP Aggregated Assert Record", see <xref target="rp-assert-record"/>,
encodes one common Metric and Metric Preference as
well as a list of "Group Records", each of which encodes a Group Address
and a list of zero or more Source Addresses with a count. This is called an
"RP Aggregated Assert Record", because with standard RPF according to (<xref target="RFC7761"/>),
all the Group Addresses that use the same RP will have the same Metric and Metric Preference.</t>

<t>RP Aggregation Records provide a more compact encoding than the Simple PackedAssert message format
for (*,G) flows.  The Source Address is optionally used by <xref target="RFC7761"/> assert procedures
to indicate the source(s) that triggered the assert, otherwise the Source Address is set to 0 in the
assert record.</t>

<t>Both Source Aggregated Assert Records and RP Aggregated Assert Records also include the
R flag which maintains its semantic from <xref target="RFC7761"/> but also distinguishes
the encodings. Source Aggregated Assert Records have R=0, as (S,G) assert records do in <xref target="RFC7761"/>.
RP Aggregated Assert Records have R=1, as (*,G) assert records do in <xref target="RFC7761"/>.</t>

</section>
<section anchor="packedassert-mechanism"><name>PackedAssert Mechanism</name>

<t>PackedAsserts do not change the <xref target="RFC7761"/> PIM assert state machine specification. Instead,
sending and receiving of PackedAssert messages as specified in the following subsections are logically
new packetization options for assert records in addition to the (not packed) <xref target="RFC7761"/> Assert Message. 
There is no change to the assert record information elements transmitted or
their semantic. They are just transmitted in fewer but larger packets and fewer total number of bytes used to encode the information elements. In result, PIM routers should be able to send/receive assert records faster and/or with less processing overhead.</t>

<section anchor="sending-packedassert-messages"><name>Sending PackedAssert messages</name>

<t>When using assert packing, the regular <xref target="RFC7761"/> Assert message encoding with A=0 and P=0 is
still allowed to be sent.  Routers are free to choose which PackedAssert message format they send 
- simple (<xref target="simple-packedassert-message"/>) and/or aggregated (<xref target="aggregated-packedassert-message"/>).</t>

<t><list style="symbols">
  <t>When any PIM routers on the LAN have not signaled support for Assert Packing,
implementations MUST send only Asserts and MUST NOT send PackedAsserts under
any condition.</t>
  <t>Implementations SHOULD support sending of PackedAssert messages.
It is out of scope of this specification for which conditions, such as data-triggered asserts or 
Assert Timer (AT) expiry-triggered asserts, or under which conditions (such as high 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>Implementations that introduce support for PackedAsserts after support for Asserts SHOULD support configuration that disables PackedAssert operations.</t>
  <t>A configuration option SHOULD be available to disable PackedAssert operations.
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"/>, Section 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 continueing with further processing for other flows which may result in additional 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 scheduling 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 as PIM join/prune messages.</t>

<t>When there is 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 there are one or more reception-triggered Assert/PackedAssert messages already 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 processing of further
conditions that may result in additional reception-triggered assert records as well as 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 of <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 would expire 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 AT for 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>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 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 amount of (possible) duplicate IP multicast packets to decrease in a condition with
large number of (S,G) and/or (*,G), compared to the situation in which an implementation only
sends Assert messages.</t>

<t>This delay can simply be used in implementations because it can not support the (more advanced)
mechanisms described above, and this longer delay can be achieved by some simpler mechanism 
(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 (non AssertCancel) PackedAssert 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 inability to pack the assert records in this condition.  Therefore, routers SHOULD support mechanisms allowing for 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 MAY 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>

<t><list style="numbers">
  <t>The total size of the two PackedAsserts is less than the total size of equivalent 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/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"/>).</t>
</list></t>

</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
as if an equivalent sequence of Assert messages were received according to <xref target="RFC7761"/>.</t>

</section>
</section>
</section>
<section anchor="packet-formats"><name>Packet Formats</name>

<t>This section describes the format of new PIM extensions introduced by
this document.</t>

<section anchor="assert-packing-option"><name>PIM Assert Packing Hello Option</name>

<figure title="PIM Assert Packing Hello Option" anchor="FIG-HELLO-OPTION"><artwork><![CDATA[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      OptionType = TBD         |      OptionLength = 0         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>The PIM Assert Packing Hello Option is a new option for PIM Hello Messages according 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><![CDATA[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|PIM Ver| Type  |7 6 5 4 3 2|A|P|           Checksum            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Group Address (Encoded-Group format)             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Source Address (Encoded-Unicast format)            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|R|                      Metric Preference                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             Metric                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t><xref target="FIG-MESSAGE-ASSERT"/> shows a PIM Assert message as specified in 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-packing-formats"/>, both
flags in a (non-packed) PIM Assert message are required to be set to 0.</t>

</section>
<section anchor="simple-packedassert-message"><name>Simple PackedAssert Message Format</name>

<figure title="Simple PackedAssert Message Format" anchor="FIG-MESSAGE-SIMPLE"><artwork><![CDATA[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|PIM Ver| Type  |7 6 5 4 3 2|A|P|           Checksum            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Zero       |                     Reserved                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
.                                                               .
.                        Assert Record [1]                      .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
.                                                               .
.                        Assert Record [2]                      .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               .                               |
.                               .                               .
|                               .                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
.                                                               .
.                        Assert Record [M]                      .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t><list style="symbols">
  <t>PIM Version, Type, Checksum:  <vspace blankLines='1'/>
As specified in Section 4.9.6 of <xref target="RFC7761"/>.</t>
  <t>"7 6 5 4 3 2": IANA registry handled bits according to Section 4 of <xref target="I-D.ietf-pim-rfc8736bis"/>.</t>
  <t>Zero:
   Set to zero on transmission. Serves to make non assert packing capable PIM routers fail in parsing the message instead of possible mis-parsing if this field was used.</t>
  <t>Reserved:
   Set to zero on transmission.  Ignored upon receipt.</t>
  <t>P: packed flag. MUST be 1.</t>
  <t>A: aggregated flag. MUST be 0.</t>
  <t>M: The number of Assert Records in the message. Derived from the length of the packet carrying the message.</t>
  <t>Assert Record: formatted according to {FIG-MESSAGE-SIMPLE}}, wich is the same
as the PIM assert message body as specified in Section 4.9.6 of <xref target="RFC7761"/>.
The number M of Assert Records is determined from the packet size.</t>
</list></t>

<t>The format of each Assert Record is the same as the PIM assert message body as specified in Section 4.9.6 of <xref target="RFC7761"/>.</t>

<figure title="Assert Record" anchor="FIG-ASSERT-RECORD-FORMAT"><artwork><![CDATA[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Group Address (Encoded-Group format)             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Source Address (Encoded-Unicast format)            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|R|                      Metric Preference                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             Metric                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

</section>
<section anchor="aggregated-packedassert-message"><name>Aggregated PackedAssert Message Format</name>

<figure title="Aggregated PackedAssert Message Format" anchor="FIG-PACKET-FORMAT-SG"><artwork><![CDATA[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|PIM Ver| Type  |7 6 5 4 3 2|A|P|           Checksum            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Zero       |                     Reserved                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
.                                                               .
.                     Aggregated Assert Record [1]              .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
.                                                               .
.                     Aggregated Assert Record [2]              .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               .                               |
.                               .                               .
|                               .                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
.                                                               .
.                     Aggregated Assert Record [M]              .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t><list style="symbols">
  <t>PIM Version, Type, Reserved, Checksum:  <vspace blankLines='1'/>
As specified in Section 4.9.6 of <xref target="RFC7761"/>.</t>
  <t>"7 6 5 4 3 2": IANA registry handled bits according to Section 4 of <xref target="I-D.ietf-pim-rfc8736bis"/>.</t>
  <t>P: packed flag. MUST be 1.</t>
  <t>A: aggregated flag. MUST be 1.</t>
  <t>Zero:
   Set to zero on transmission. Serves to make non assert packing capable PIM routers fail in parsing the message instead of possible mis-parsing if this field was used.</t>
  <t>Aggregated Assert Record: formatted according to <xref target="FIG-PACKET-FORMAT-SG"/>.
The number M of Aggregated Assert Records is determined from the packet size.</t>
</list></t>

<section anchor="s-assert-record"><name>Source Aggregated Assert Record</name>

<figure title="Source Aggregated Assert Record" anchor="FIG-RECORD-FORMAT-SG"><artwork><![CDATA[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|R|                      Metric Preference                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             Metric                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Source Address (Encoded-Unicast format)            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Number of Groups (N)   |           Reserved            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                 Group Address 1 (Encoded-Group format)        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                 Group Address 2 (Encoded-Group format)        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             .                                 |
|                             .                                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                 Group Address N (Encoded-Group format)        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></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 Aggregated Assert Record,
  but also 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"/>, 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"><artwork><![CDATA[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|R|                      Metric Preference                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             Metric                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Number of Group Records (K) |           Reserved            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
.                                                               .
.                        Group Record [1]                       .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
.                                                               .
.                        Group Record [2]                       .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               .                               |
.                               .                               .
|                               .                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
.                                                               .
.                        Group Record [K]                       .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t><list style="symbols">
  <t>R: MUST be 1.  <vspace blankLines='1'/>
R indicates both that the encoding format of the record is that of an RP Aggregated Assert Record,
  and that all assert records represented by the RP Aggregated Assert Record have R=1 and are therefore
  (*,G) assert records according to the definition of R in <xref target="RFC7761"/>, Section 4.9.6.</t>
  <t>Metric Preference, Metric:  <vspace blankLines='1'/>
As specified in Section 4.9.6 of <xref target="RFC7761"/>.</t>
  <t>Reserved:
  Set to zero on transmission.  Ignored upon receipt.</t>
  <t>Number of Group Records (K):  <vspace blankLines='1'/>
The number of packed Group Records. A record consists of a Group
  Address and a Source Address list with a number of sources.</t>
</list></t>

<t>The format of each Group Record is:</t>

<figure title="Group Record" anchor="FIG-GROUP-RECORD"><artwork><![CDATA[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Group Address (Encoded-Group format)             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Number of Sources (P)  |           Reserved            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Source Address 1 (Encoded-Unicast format)        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Source Address 2 (Encoded-Unicast format)        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             .                                 |
|                             .                                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Source Address P (Encoded-Unicast format)        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t><list style="symbols">
  <t>Group Address and Reserved:  <vspace blankLines='1'/>
As specified in Section 4.9.6 of <xref target="RFC7761"/>.</t>
  <t>Reserved:
   Set to zero on transmission.  Ignored upon receipt.</t>
  <t>Number of Sources (P):  <vspace blankLines='1'/>
The Number of Sources is corresponding to the number of Source Address fields in the Group Record.
  If this number is 0, the Group Record indicates one assert record with a Source Address of 0.
  If this number is not 0 and one of the (*,G) assert records to be encoded should have
  the Source Address 0, then 0 needs to be encoded as one of the Source Address fields.</t>
  <t>Source Address:  <vspace blankLines='1'/>
As specified in Section 4.9.6 of <xref target="RFC7761"/>.
  But there can be multiple Source Address fields in the Group Record.</t>
</list></t>

</section>
</section>
</section>
<section anchor="IANA"><name>IANA Considerations</name>

<t>IANA is requested to assign a new code point from the "PIM-Hello
Options" registry for the Packed Assert Capability as follows:</t>

<figure title="IANA PIM-Hello Options ask" anchor="FIG-IANA-ASK"><artwork><![CDATA[
+=======+========+=========================+================+
| Value | Length |          Name           | Reference      |
+=======+========+=========================+================+
| TBD   |      0 | Packed Assert Capability| [This Document]|
+=======+========+=========================+================+
]]></artwork></figure>

<t>IANA is requested to assign two Flag Bits in the Assert message
from the "PIM Message Types" registry as follows:</t>

<figure title="IANA PIM Message Types ask" anchor="FIG-IANA-ASK2"><artwork><![CDATA[
+======+========+=================+====================+
| Type | Name   | Flag Bits       | Reference          |
+======+========+=================+====================+
|   5  | Assert | 2-7: Unassigned | [RFC3973][RFC7761] |
|      |        |   1: Aggregated | [This Document]    |
|      |        |   0: Packed     | [This Document]    |
+======+========+=================+====================+
]]></artwork></figure>

<t>[RFC-Editor note: If IANA can not assign the requested two bits 0 and 1, then the figures showing those two bits need to be fixed to show P and A in the actual locations IANA assigns - aka: the bits shown are "placeholders" according to the requested bits in this section.]</t>

</section>
<section anchor="security-considerations"><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 Section 6.1 of <xref target="RFC7761"/>, 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 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 considerations</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-11"><name>draft-ietf-pim-assert-packing-11</name>

<t>Comprehensive 2 round AD review by John Scudder.</t>

<t>Functional enhancement: add requirement for existing implementation to be able to disable assert packing so that any possible compatibility issues introduced (which we think will not happen) can be avoided when upgrading to a packedassert version of the software. Also to allow performance comparison. No making a requirement for day 0 implementations because they may want to save the work of having a non-packed-assert code path.</t>

<t>Some rewrite to increase readibility, subdivided 3.3.1 into multiple subsections to better structure it.</t>

<t>3.3.1 improved core requirements - added requirement for counters to show assert/packedassert operations, documentation (e.g.: YANG) for what/how it can send, config option to disable packedasserts. Refined text: Bulletized cases of asserts in rfc7761,</t>

<t>Subdivided 3.3.1 into multiple subsections for readability improved text based on review. Added reference for DSCP.</t>

<t>3.3.1.5 Added explicit example of improvement because of packet size/throughput 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-packing-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 -&gt; 24 bit for this field.</t>

</section>
<section anchor="draft-ietf-pim-assert-packing-09"><name>draft-ietf-pim-assert-packing-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-&gt;may for "sufficient".</t>

<t>IANA Expert Review / Stig Venaas:</t>

<t>Removed Count field from message headers as it complicates parsing and is unnecessary. Added "Zero" field to make packed asserts received by a non-packed-assert-capable-router guaranteed to fail ("Reserved" address family type).</t>

<t>Changed from RFC8736 to RFC8736bis so that we can use the word "Unassigned" in 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 problematic) to appendix.
Applied textual nits found. Removed quotes around term "sufficient" for easier readbility.</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-packing-08</name>

<t>Included changes from review of Alvaro Retana (https://mailarchive.ietf.org/arch/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-packing-07</name>

<t>Included changes from review of Alvaro Retana (https://mailarchive.ietf.org/arch/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>
<section anchor="draft-ietf-pim-assert-packing-06"><name>draft-ietf-pim-assert-packing-06</name>

<t>This version was converted from txt format into markdown for better editing later, but is otherwise text identical to -05. It was posted to DataTracker to make diffs easier.</t>

<t>Functional changes:</t>

</section>
</section>
</section>


  </middle>

  <back>


    <references title='Normative References'>





<reference anchor='RFC2119' target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author fullname='S. Bradner' initials='S.' surname='Bradner'><organization/></author>
<date month='March' year='1997'/>
<abstract><t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract>
</front>
<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 Specification (Revised)</title>
<author fullname='B. Fenner' initials='B.' surname='Fenner'><organization/></author>
<author fullname='M. Handley' initials='M.' surname='Handley'><organization/></author>
<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/></author>
<author fullname='Z. Zhang' initials='Z.' surname='Zhang'><organization/></author>
<author fullname='L. Zheng' initials='L.' surname='Zheng'><organization/></author>
<date month='March' year='2016'/>
<abstract><t>This document specifies Protocol Independent Multicast - Sparse Mode (PIM-SM).  PIM-SM is a multicast routing protocol that can use the underlying unicast routing information base or a separate multicast-capable routing information 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>This document obsoletes RFC 4601 by replacing it, addresses the errata filed against it, removes the optional (*,*,RP), PIM Multicast Border Router features and authentication using IPsec that lack sufficient deployment experience (see Appendix 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/></author>
<date month='May' year='2017'/>
<abstract><t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t></abstract>
</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/></author>
<author fullname='D. Black' initials='D.' surname='Black'><organization/></author>
<author fullname='M. Carlson' initials='M.' surname='Carlson'><organization/></author>
<author fullname='E. Davies' initials='E.' surname='Davies'><organization/></author>
<author fullname='Z. Wang' initials='Z.' surname='Wang'><organization/></author>
<author fullname='W. Weiss' initials='W.' surname='Weiss'><organization/></author>
<date month='December' year='1998'/>
<abstract><t>This document defines an architecture for implementing scalable service differentiation in the Internet.  This memo provides information for the Internet 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 Specification (Revised)</title>
<author fullname='A. Adams' initials='A.' surname='Adams'><organization/></author>
<author fullname='J. Nicholas' initials='J.' surname='Nicholas'><organization/></author>
<author fullname='W. Siadak' initials='W.' surname='Siadak'><organization/></author>
<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 unicast routing information base to flood multicast datagrams to all multicast routers.  Prune messages are used to prevent future messages from propagating to routers without group membership information.  This memo defines an Experimental Protocol 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'><organization/></author>
<author fullname='Y. Cai' initials='Y.' role='editor' surname='Cai'><organization/></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) solution designed and deployed by Cisco Systems.  The procedures specified in this document are largely a subset of the generalized MVPN framework recently standardized by the IETF.  However, as the deployment of the procedures specified herein 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 fully standards-compliant implementation.  These differences are pointed out in the document.  This document defines a Historic  Document for the Internet community.</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/></author>
<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 mechanism for minimizing packet loss in a network when node or link failures occur. Multicast-only Fast Reroute (MoFRR) works by making simple enhancements to multicast routing protocols such as Protocol Independent Multicast (PIM) and Multipoint 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/></author>
<author fullname='C. Filsfils' initials='C.' surname='Filsfils'><organization/></author>
<author fullname='S. Previdi' initials='S.' surname='Previdi'><organization/></author>
<author fullname='M. Shand' initials='M.' surname='Shand'><organization/></author>
<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 mechanism, described in RFC 5286, that provides additional backup connectivity for 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>


<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. These L2/L3 topology
changes are undesirable though, 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 where to be replaced
by L3 rings just to avoid PIM asserts, then this would result in the need for
a complex choice of of a sub 50 msec IP unicast failover 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 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 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) is 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>

<!-- ##markdown-source:
H4sIAAAAAAAAA+19fXPbRpL3/6rSd5hS/jjpOZJ680usqlwtY8mOLpKtk+Tk
kr3UFkgOSaxBgAuAYhjb32U/y36yp3/dPYMBSIqO1+vcOdHWxhIJzPR09/Tb
9HS32+3trX42iNPRiZmVw/aX21vbW2VcJvbEXJ1fmm5R2Lw0l7YoopE1V1H/
NT27vRX1erm9OzERf9+eus8HWT+NJvTyII+GZTu2NOY0nrTrz7UPD2naqLSj
LF+cmKIcbG8VZW6jyYk5P7t9tr01H/H821vxND8xZT4ryqODgycHR4CvKKN0
8JcoyVKaaGGL7a1pfGK2t4wps75+wr8P7LQcn5iH+LPIcpphWPjvi8Wk9nc/
m0xsWroPaI2zcpzlJ/iujf8YI0v7IS6ydGQu4pl8mmfAlh3EZZbLJ1lO4D8d
x2lkLrNenNh1D/azWVoCBfywfGYnUZycmCSeLXiiP/Xx3YTH6RCQS/DcZjZP
iEDmrP+akByA8GxWznI7t/HG+V/ddGuzl6X9U7/oDKNZZ2CXZryMX1tz2f86
jwd2/XRrB5/E/XFkk86k38MIfxq691Yu78exTUe7N0TyxR79EYHN/JQ/3p6Z
p1k+zfKojLN0I1Z/wfudXzDkn34pGZ+dfgpqp1k+oTHuLBP8+tnTo8PDJ+73
x48fHbrfvzx8/IB/P2+fdjyD58P+l4+PH/Xi4gSjxelwabwHjx+634+fPD52
vz86OH7s53lwfFj9/uSAx2q32ybq0f6I+iX+Pk+xNdo3l6YYR7kdmIvuC5Pa
cp7lr4uWKcc2tyYuTDYsbWomGf1V0rINbRczm8o+I16YlTbvbG99T7jgrX4z
jfKCyJoNrNmVCfZaJk77yQzyQZ7JZnnf0qO2Hw/jftv9Yi5nSRn3o6LUV+Xd
wswKOwBIcYENn5rERgPamWYwmyYxJIA5vzIT/zLkgy0L07OYkVA4j/IBrbC3
wLIKYjZAIbAXHROKqImIqMIQSnhaTGMT2y9NZAoaLrF+wBy/bW/ZqD+uz084
HmI5wySbExDl3BJyeGY/KShwS+sxJOpmEBhmYIdxiokJBmLsNC4mmLuwKYk1
YluT274lRjCeKbIUAMi806SBA8xdGLBQBTjkrh3UV9oxDEY2LeNJ/IuMStww
6xMoBDKJ8ayMEpPOJj1acDZkZDkEZ7ws5hxACNIw3wzBLcXUEvpmUxqCnmEc
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
KT+PFlUkxo8R8ELNRsTlMchjhzeXqXHts3jW5mq8mmo2cxXsXvlwy5+pKJMF
CT3EOneip8qiykrWe+Zr84qDcDzEt49HsPcZDyHHA8UWjrPykLc6311XdUCv
lQqW9UKDd1bUezP16wdVwrXLvufrcAX7LH53yzHC8p3azVdTlu9T6JUTvI5q
L+bALP8crvjsaMVnx36MQ/r+2DwwD80j89h8aZ78ms9klH9v/5P/k2HeCmiy
/Fskun9lbr8+9TDXvr+w6YhE+VcBFt5+NGjenJgvnp0/b39zdnHxsi3XyA1X
jPpqZwPZdlZdd1lJX5aH4J3AMMU78tClDymHPBtekDlqXvaWs+gAfYQ8KRkl
RWSuQqVsnpL9qn5K80bUuTcu3MauD+rzM4raeT8bjt71kcMzziurQorGZe/W
5IhPyAzvAq3cM/U0Pt2ptFPWXOn4fLcKiPKdzd8apol5+5imekhTHpujt923
V28D+J+Obf91QVov+Pl4WyXYmO6nlplNviBnKw7a8rGIzT3ziaBppDJ7YF6l
GoBYBucjQ3PdwI77WU7lX/nzL6XUapDu+fn4Ivby7Oam+/ys3b25Obu+dUJ2
5T4X0frmzfJr795xUY1CM4AaQa5mNnLzlmEt9Ucc4jrPQoA1GSdSjnKJcbWr
Ps1ZDhuzsLg8v+KBz6/uHlWBUb3yMfbVP7AuJ4l3gl2+Y54hK/5r2FXVJUoO
IfqZRUGsvarnfUN/HVANVQGsK9cBW2x0hWVRMGb3RRe4Mv/4e3fpwl3DbPF3
U8nyzRB79rcMN17nY6x6z9Udm8pVBKcSVl23WNIP96Xp/qEkzCdTEj/iRpGO
vlLAXJOPl8NU/xeKnvWzv/+PQtP5J4fpbBhG+Vnvrf358KcPG+bXQfORcPO7
ptTRH5RaBvr9oNn02MbvPyo0v2suvvydcXHTKL05v7y6OHNG6WZLQyzUtlHF
i1hQi5VvyyvYE2duNO2m+2pfqGtfs/9ODIww3JiKizJfmDHOexFvYotwZdBg
gz2os0BHn6g5cyPGllwETt1FtqLgA0scFkpCyiR6zXH/pXRdxBiSeu0rFOjh
5IgodzHWqg5ClQHuQ7Q0Xds9G+sdIMJZMuB8CyQNKNzOdHgv2M25FmyYuSCn
K9lA1DvxiSmokuBrPBy6SxUn4YWu+jMH+szlCfsRVYJFbWf5szRfF+HU5hyh
9AndicS3fD0HjkyidOmigTQHVDj+ibol5VLMc5m7YZfPkcoRFz7thq92FT76
E9WNci7BsMmparCvCdFxuQohtUoVHg1B8N0XDasir3yrvS6zglV85CV8rl5C
HcQ/gjchNH8Eb1ZC4/SkRF/aKMF6fdp+9vL6stsM4Wi5h3cugLu69Mqyx77p
kuznux//8No/cAds/vkUVvTaqjNL3vvnakV/RGh+I0o1vfffM6X+8No//Oe3
5eKm9/65crGzRq66T789u1UzpH3z3Fsi72Vz3OO7O/X2f8mL/2ec2MP/45GA
dVtivVv8ZhX/rHNc11Z2ek8flgvlbChR9+aLZum/z9fg/cPJej9ofnt32A37
woe1nkuPkd0Xew1oV7kE/2pK1WMXhxuiF58WmqPfGJrwZ7MF8PajDvOJUPzi
k6HYWRy1wEdgcWwq7/ruI0esr08aAWiMdh2k6SHxorqjsaZocB5EUOXTaJOe
aslUvtqi5O0mzbomVWnVqgrxJg3oKi9Kew9JBc71OjLmXFmMcamaCefF+Kst
143LG626vabYXFNLt9JD7qMPswKXBHlYrx20VzCaQtbPVj9YqO8Btodc9afa
Vx9usnK6+PqKlki/bFay1bvdjVKq3dptGG9+rquCKTdVfTR/Re1bX8O1A0vd
dYTTSrRczCYqrNztA1PqNDNvbWqZWEnJr+0MroRRyk0FpFXhkhcucq0bonaZ
n/6MqtqpNI4r68sdpqRtkG+ToRujwZmrrjSzjPjD+qv/fO7WX0MKeF9j99u9
39ze+nU/nyiFIUTT+oypzzYY8hGh+bSUWpcx9bum1B/B1w//+U24+NvfGxev
doXIAlJX6L4eAO+WvJfDj+q9pPeZreq6SA78e3st99nBrrD7Wo9lpZX7UVyW
j+yirHRPP9g7vceEWePTaOS69njHdB2NuSgQOpmyi6o9mHiRanVLG4uGm8Vd
LbQ8XzWVtEdwpWmWkotquzuunKjPzw6vg/i/JQ2o4h2hZsG9lH5by7fBV4cb
I7GfEpqj3xaaxs/nEWlsoPjqE6LYqdfn1y9fXamSdao1lE1Ol9b3LXdbqaT4
x9IEH0MVBNu5pgSWn+BbcTmtZ5qloZ5MG082YmAuxTbEklpP53p4qCNUrebq
0t7bHygB1agbI2qkMTGBcrB2CsR6DrRXuK/ns9ok0DqAGjLSYqiwLmTsMHqq
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
tgAA

-->

</rfc>

