<?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  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>

<?rfc {"tocdepth"=>5}="yes"?>
<?rfc comments="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-pim-assert-packing-10" category="std" consensus="true" submissionType="IETF" 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="09"/>

    
    <workgroup>PIM</workgroup>
    

    <abstract>


<t>LANs often have 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 50msec failover
mechanisms, something not possible equally with an L3 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 type they send.</t>

<t>It is out of scope of this specification for which conditions, such as data-triggered asserts or 
Assert Timer (AT) expiry based asserts, an implementation should generate PackedAsserts instead of Asserts.</t>

<t>Instead,</t>

<t><list style="symbols">
  <t>Implementations are expected to specify in documentation and/or management interfaces (such as a YANG model),
which PackedAssert message types they can send and under which conditions they will.</t>
  <t>Implementations SHOULD NOT send only Asserts, but no PackedAsserts under all conditions, 
when all routers on the LAN do support Assert Packing.</t>
  <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>
</list></t>

<t>When a PIM router has an assert record ready to send according to
<xref target="RFC7761"/>, it calls send Assert(S,G) / send Assert(<em>,G) (Section 4.2),
Send Assert(S,G) / SendAssertCancel(S,G) (Section 4.6.1),
Send Assert(</em>,G) / Send AssertCancel(*,G) (Section 4.6.2) and
send Assert(S,G) (Section 4.8.2). Each of these calls will send
an Assert message. When sending of PackedAsserts is possible on the
network, any of these calls is permitted to not send an Assert message, but only
remember the assert record, and let PIM continue with further processing
for other flows that may result in additional assert records - to finally
packed PackedAssert messages from the remembered assert records and send them.</t>

<t>The following text discusses several conditions to be taken into account
for this further processing and how to create and schedule PackedAssert messages.</t>

<t>Avoiding possible additional and relevant delay because of further processing
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, such as for example the following.</t>

<t>Asserts/PackedAsserts in this case are scheduled for serialization with highest priority, such
that they bypass any potentially earlier scheduled other packets.
When there is no such Assert/PacketAssert message scheduled for or being serialized,
the router immediately serializes an Assert or PackedAssert message without further assert packing.
If there are one or more Assert/PackedAssert messages serialized and/or scheduled to be serialized,
then the router can pack assert records into new PackedAssert messages until shortly before the
last of those Assert/PackedAssert packets has finished serializing.</t>

<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 losers 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 100msec.  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>

<t>Additional delay is not "relevant" when it still 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 no delay is added by the implementation.</t>

<t>This can simply be the case because the implementation can not afford to implement the (more advanced)
mechanisms described above, and some simpler mechanism that does introduce some additional delay
still causes more overall reduction in duplicate IP multicast packets than not sending PackedAsserts at all,
but only Asserts.</t>

<t>"Relevant" is a highly implementation dependent metric and can typically only be measured 
against routers of the same type as receivers, and performance results with other routers will likely
differ. Therefore it is optional.</t>

<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/PacketAssert, 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 DSCP, 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 50msec 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>

<t>It is sufficient that assert records are not packed up to MTU size, but to a size that
allows the router to achieve the required operating scale of (S,G) and (*,G) flows with minimum duplicates.
This packing size may be larger when the network is operating with the maximum number of supported multicast
 flows, and it can be a smaller packing size when operating with fewer multicast flows. Larger than sufficient
packets may then not provide additional benefits, because they only reduce the performance requirements for
packet sending and reception, and other performance limiting factors may take over once
a sufficient size is reached. And larger packets can incur more duplicates on loss.
Routers may support a sufficient amount of packing to minimize the negative impacts of loss of PackedAssert packets
without loss of performance of minimizing IP multicast packet duplication.</t>

</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 where 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"/> with the common header 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,
see <xref target="IANA"/>.
 As specified in <xref target="assert-packing-formats"/> below, 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>
</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>M: The number of Aggregated Assert Records in the message. Derived from the length of the packet carrying the message.</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:  <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:  <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>

</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 and Shuping Peng for her RtgDir 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-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='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>




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

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

-->

</rfc>

