<?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-09" 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="08"/>

    
    <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-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:
H4sIAAAAAAAAA+197XLbRrL2f1bxHqaUP9IekfpwYseqylvLWLKjimTrSHLy
ZvektkBySGINAgwASmZs38tey17Z6ae7ZzAASdHxap2zjrUflkhgpqe/u6en
p9PptFvtVhmXiT0yF6fnplcUNi/NuS2KaGzNRTR4Fafjdivq93N7c2Qi/r4z
c58Ps0EaTenlYR6Nyk5sy1FnFk879ec6+4/brUFU2nGWL45MUQ7braLMbTQ9
Mqcn10/brdsxz99uxbP8yJT5vCgP9/cf7x8CvqKM0uHfoiRLaaKFLdqtWXxk
/mrKbLCL/xvaWTk5Ml/tmiLLadhRQb8tpvLLIJtObVoWP2OkaF5Osvyo3TKm
g/8zRqD/KS6ydGzO4rl8mmdAiB3GZZbLJ1lOED6ZxGlkzrN+nNh1Dw6yeVpi
lfywfGanUZwcmSSeL3iiPw/w3ZTH6RKAS/BcZzZPiAbmZPCK8BiA8HReznN7
a+ON87+86tVmL0v750HRHUXz7tAuzXgev7LmfPBtHg/t+unWDj6NB5PIJt3p
oI8R/jxy761c3l8mNh1vXxFVFzv0RwRO8lP+5frEPMnyWZZHZZylG7H6K97v
/ooh//xryfjsDlJQO83yKY1xY5ngl0+fHB4cPHa/P3r08MD9/vXBoy/599PO
cdfzcD4afP3owcN+XBxhtDgdNcd78PjRA/f7w/0Hj/i5Tqdjoj6xdzQo8fdZ
73lhslFpUzOJbqyZZrk1JQFtiJ/NfCaCQJSclzbvtls/0kpYFq9mUV4QUbKh
Ndv0QefqfGfXxOkgmQ9JqOSZbJ4PLD1qB/EoHnTcL+Z8npTxICpKfVXeLcy8
sEMSmklcQCJTk9hoSDJkhvNZEkNEzemFmfqXIcC2LEzfYkZCwG2UD+3Q9Bc0
hi2IVQCFwF50TahDpqJDChPRejEtprGJHZQmMgUNl1g/YI7f2i0bDSb1+QmL
IyxnlGS3BER5awk5PLOfFDi+pvUY0kVziLoZ2lGcYmKCgdgyjYsp5i5sSnqH
mM7kdmCJjMaTNEsBgMw7Sxo4wNyFAQNUgEMx2mF9pV3DYGSzMp7Gv8qouR3O
BwQKgUx6NiujxKTzaZ8WnI0YWQ7BGS/LELMYQAjS0N+kwsAtxcwS+uYzGoKe
YRxicBoCfzdxuSuzgmD4upovpHG7tUxkYq15Tu92HRtP4+EQmq7d+sKckvxl
NKzIZLt1ykxKPGmKCVF4yKCnRKEsf1XsCvBguHIxo1mSZFFn/HaryfmGGb+C
cRiVkQctms1slAdY2jWjHJplGI9GNBNRvTEewSBGqBoDmMSTeNOxrz58J29G
g0GWs8jRU2/eqPJ49w4Et2K2ohU8z3PNbB5nQ8UAvf7K2hmvQd8g21Yy56go
1QciPsjz2BY1To36BHMFp6cjGUrRBmCgMS1sRihIYNdu43LCk9I6clvMspRX
M7VlTjpjRlwGFMqbxBj8seMuRhBBDlwUwm8yC8kLAL4kqbK/3mTzwlxkMa14
+/Ji5/2FkqaFfsO44RppcuVQiOMqrUJTZRvkUUEg1EOAVQOYf58CYDyDNljf
2MlfADwTm9YVwf7bfNE1p2WoIsxv0xCsDhoqwnywhmi3Gipi2QyQgmeMQjuR
caIv50mUE2P3rZnYZDaaJ+aWpFgBY/F3CpywGxl6ehxqpGoG5tcCTEWmihGY
2qQQhqywYGZ5RrjCeiBZTDzwbcirJMw0b0E0Yy784gti0V/mcW7ZDTRnRJo5
EUs41JJALgzpLOLtrfOXV9dbu/Kvef6Cf788+e+Xp5cnx/j96rve2Zn/RZ5o
t+ivFy/P9AH8Vr365MX5+cnzY3mbPjWNj857P9E/vMatFxfXpy+e9862iCnZ
PleiA2VC3NsHv9L6SF5LonVET9hikMd9+iMmnH/75MIcfCkKCp7Ou3fyO7wb
+h2E4cmIk4hk8idhbeGUK9g7SeAWzGJiQ1agpNyzW3JciJoOm9c2n8ZplmTj
hcMhqV3oSYLZviYHpBRbT/COommcxDS210Bl9TaotqRNRxmkFfRN4qIUqZDg
I2YxLWgygrbkNdfxxAD2ro+ctF3HU3B1u3V5cbSkpuTzp/jixsLNuogIwqci
IRzatFtXFzTYFQUMpSUO5Qeuc2vlVfrq8sL/fXx5ZI5tEY9TBu2SGVEM50We
9RM7NVcQfqYnPq+0AjH9gOwulkPMvCCizpJswczaNVfWEo7Ie+qQlNiOfR1N
ST0V7961W5AoQjeJa1wa9wXTF59GqaKLkHw7WRh6JnZuaJqRIGUkRQQXCBXd
ZLEY/cACsa4CMIS4giCLwTSqg9TM07szpiS92ysMm5qoqEw/5H1BfHHoX2A2
qPyAQxN4j7tOa0wjViheFy8b9tsJhRushQYR4abSWqFX4zSPcqJ3XYEh5xmI
NsEjTAPhIGG6aiB69CaGhu5bii2g5Yc2cXQSb5omXqXUiIZqvQe0gMIWIn/L
elDggelV66Y4YBeCzQ4x6QLCmDuXggU4mAvuEgXGaixo3vHYioWuLxaiFQsZ
VzhuXRHogCz0lYizQ9Yy9CHXTFmFVB5lHXTyjMnZ6WEQ8kMIdkYeoRIIJgai
WIT4Bi+0WzyLKIWaI8e4AQsTfhQmVQY0OAwICXQKx7AYMMExxRyaiVh/6Eye
PDvyTOI4CEZTsEMUFZx0nZareSHOhRmwOysmkOVIgqMh6wJvYGUkRAB4zrkJ
NHlakGAW834KbIl0rGP7LrQTxUgi6eAkc3ZocszhAiNHMgBVEKtilWBb+DtZ
OorH89yr5ohfZaM/g0LslFmHf/Hg0CupKHOJ9ipArjkAOzvcO3vgdQDZDXg9
Lt5LgYE8Yg1Dix1PdoVhxeDQE4y0IUJg9gL5ydDnaLcYHUA6yR2LOb/rZEn9
WeJ8WkGswQmQUXNc3BiOiFAWTBoBk6xcxrw0oiFZHTKQhYuiCcElkZrtVaxL
gzxwjPSUFTBTw9xEJJPEZc0XoKSB5wKsekPcAeyar/anhSWfKIqT7AZ2wvMT
Mlcg3AQrqelp8mE4huAVgfYPlFCmH0EAMEuXTMtZ/MrexgUxyOnJyQkbQbIi
4DM4vM+FE8X7d3OS/zNP4BSzm2TgWGIdSlio6pJZCvAUMa13ITxFVmYg3CHw
BOaA3ifoOvoJMIEBGN0sGITcKC1pIPF+a8SsDKC4HD67EbnYc3VkUU7IGMP3
FUePxLiYz2ZQO3UdpUlJTtYc+BjOibamPM13lhwR82KGOQmOQ3mQwxV8jSFX
hACFPPpddrsy3lj3CjtWG4BYoYZWPWa237xpZF8z/uLdux2XAGKjn6bZHL6z
IkkcirKubRt8onKx2vdaubYV0EjEVQCcdsu52mAohmyect6TWP2f/witkDNZ
0dQ6vvcrKF3ahSnFuGwgyOWzn8rc5s0Xa4Baqev53V1xuMFqvPwrDbG+7D7u
Pmy4suTKONdcnAkKlghwXgisvdn+0+6zHdiq7Sv8ohgnBoamFOtTOcJhkOq4
e9mhZVeUQtVoTBH4zq7LDPaGQ7K0pFaeIcAi78b9fS5RPrhTf73weQDNZHkJ
Q/ai0KRhLROROtBhYPKh+k819nGqGZi4JWVrb1cg18tVASfQY4FD94GbawgO
YaNN42ChniuqAb0LRSELxyRv3qzJ6RKV5F1mW7N9scNT4KPeeJzbMTvy270d
IgXm4rWdSpxJD8tbjG7C1L6M5eZm33c7zVLmLzvcWbFk5IzqAlWLhcTxJ3Dx
gdtO0Vfx/akKIMIC8ZwBqwDEQsXeYwlJ3xev031K6jeDG8DZSVJLs7KxNL+q
A15V2lgaAsQkgSO9OgnisFguZvLHBCxFjotTncI/LmafRQvn9w2tRIeVx+GW
5CDsfbO/AqZ+NlwIzgsyYVYTAjXOLJSlGWMK/dZVzLY7XMVWlcwVCrC9s0rH
JTJ4sFahag1YFXNtgjA1WwEr1sB04FWj3QXiNQnMunmZTpqwdNzIL4ki3HJ6
pHpd6X3Jr2+RwyKIckwqw7ISlORewRsd29iIy9KdJcV0lyKCzr0l44Z/I84I
sMOK8ZCtQyDJes2NZpGi2gCxd8VIAmUIgoyQV1bGnYNTkHIFh3jyKhtXYRie
FH0uCUMOrwKrpVs1cNJ6LiW3AVbx9tLmIuF70W/s5ixnTn02WhmLnVAAdrDT
7XbxS7rTNZ7AlxebiZvPNlBXiLuJluTT14gJediStSltaEbeBOKsBYJ8N0lU
x4Hs41Sj/GrzzLNEncOsBlaRbCKuELN2awMSXADC4/BuNEWW5vLiaX1rYDvQ
4DuEIBqfydOkHjvUGtAIb9D0tzE9zRuE/tM7TbRkoTzUIH2Dv809sLd4heKu
MFdzCriJYuP9Lw5R2JEjDR6go5aEGFIYWnAwHKdDyTZX+wrbxY4gSFMYdhg4
pbsmQ44I8Y0sYAkMZ/N8FL/soHxLY2xWEsD6HVxRSDAju7FWproUyymMi4xZ
Sf8jqEqANaV4B3lw7D2FiOljLwdDDYmViTrzuJgwdoJoA4nATfAy61zCPpJ4
1dxKpwaGWdPLqHHQ2iEPZMg/veeQEsuELHXuIghOMQbf8ACIKiV1wCQNcbOU
jtSdEx+gM9/DGSpKcvdI5ArN8VRB113Bmmm6YGUtA01xRiFevthHRLK8kYfc
0K2mo9xOr/C/KNsGlpAFGw5jfox4kx0bju3VOQyXXC/AgZq+dunUNPN4ysJA
Te34qjBBUkzTuAR1kT2i1+LccyPHtJKO+fu8KGtPE9Aje0seNBiUc3F5tZNK
2JUvmxtW/UVpqxhzzeaeg469WJcHDIO9YsIJCWSpNEUNuu65KLpp3iKifg6g
9jLdaeAYMkh4IsuCgEDZ8wtkRKSGYhVb4CHejJ7zy/V4WDx9khhsfa0iXTOk
EYjIc2W0XdC/8KFJ1mEJwWo+JQeDTvr1UrEAsowQ1JUgfJbBALFqWamv2d3m
DBlwJfb9VJL+czaRxSCb6U5ZXNQliJlWk+rYG2ZOJts/pw8Q9UZl1KnUceS2
LXLjoz3eayF3/XoHuw9xvtCslD7L2Uo2NiC8zKlEHtvU5pDtumKIRaQBr34k
zraX9HarY05rIwrGwh0oWSRyhj6W9cEkeIWkgFA3lSQ74XwUIUzdduuOzE+9
58/IiA5tAnu+AfuFoJ+Try7xgzzoMmrlQVh80Gl5HdU+oozEudKeQyUEknRB
HV8yETyOkIKA2fK2npetYBuZlK/LkNXzJVIAIgUZ2JIKZTN4n+2DJAXHZPkJ
52448FN9SEJf3FglB6RL66tiVb/8FSuF/7eolqoBiwAcgEsgFktZCt6uXFT5
ucCFa7fCLA42zST1wQ8KAGJa92ofsWncrjJCh+CWq+V38JF88gTb1ol8Hrz4
sHvQfPVP1aum9m5z0oc0rewlL0EbPPU1PdU1J+pjSyWVrJEdUFcj1VBmWpzj
rGvDnrLj5RPVWX37ZJc5qDEXnkeoX6qgMhOJzCyl3cDuYJB2C1v4bGiWjJ9k
OBLy/UB7YgvypObqr4/mOXzGwByIU8uepIZq7HBiX0msUWixo6RpbzqAeBSn
4gmIEV/jX7hKI+NAX4r6GXBeOj029XtNlRNS2tclfMPBnGOHAtvVUVJTJmw8
yuiVTbUqZsCRjsvoErKXcSCZGUlTY0OllFxNMZiQe74mJhAV3MMuFxdgOIqH
qGK/K7E3ESfmE97GlOCJWGAVKQi6KRL/gzzGnk2yyoFi8nAw7Y1Qn/lhYGeu
zoXLxbDbEn7oTFU0hideqiKu9rJ4evX7tk5NNHXc92OcklnacuVZ//zHaeoZ
uNCkrhtCtbVoMnjznodRIrXKWoBBCSCJxZAhCpcricEMVqqobdNP6Y1p/Kut
NjAJclnRhupN3qT0G9zXuuMf0k1IFYdJxWCNzlbbKXZmUC+SZ7M85g33xm5B
wET1zYPKnRgF+2Y1hztIHxd7TXeggkxyVcqoQx6OHoqjxLniLPaTeDxB2QbB
mRFrLWR+eMCILWF/+4tZhK0GUk+zrCS7FHP0aqM8ibFmP4NoClcDpWamDNxy
XpmAKnCXDYLXoaX/Sj2tA9sONYWr6I6nUzsEepNF9UzxHozldpadoNWJ03VZ
3tzqFmyVRguhX1JjFZzOc6oW5FzX+krSkHukXGzwajkuKnVDYOWspMLiRAoH
eMdxJHUjFqUBheaP4RSvAt1xPuw/qWrE1EMPpO6Uel6rqRXnv2p6undtahsd
t6wYZCM4k4KGjlddquoYA+II9kPas1W5ibTQMtzW1jX87QUpd9TP/+0U7ugN
Del3jhpbTOTTsRvTbon2hrf6gFYIuwAgh6TavXpQyash30FHfL/r9ifVjlZV
FYJ0dgj09YQwjgiNw3HZN2aEyZI26SF+Pii1Sb0iqBWFcljkVQpCgGtHlmYY
4teTNUhUcJhFgxETun2da9n4DBWYGVPMi1COVITXUAf7vEHvyh3ZMxJa0RBh
nWi7pZkWkYrt/2GnjJEjJcWKmrJK6oFjtCQl8jaeTL8KEuoQiNvFq5AaCF9R
KmMGzk8tKZIvAv0pPmIlS+yqNzDmKgkoNCcJwUBVvhHcgfXWFQibJnbnWLvI
VEESgcuViBCOjV1Y+KIKC93gKN7RPbTKHGjNh8cVMXNBw+QuvCvegxEECUuW
rWBx3XK+yZbk7VF8U3rqilnP2MEiV2YKJwrct+2s8E5YabaSw3GSwmqBChc/
eT9NExON0qkV7LMrCdsc5FdyF3E597VJItJpVq2M7Hi1ZVaPsqpCbA5LffEG
11sAyFAJNQJ0V/IRjUa8T5RVD0gOiw2HarThTljFElSmRn1CqOgVVLYIDLT4
QOBhkYeZ1HTLXrE82vRPXNZEicXTO2pxHYlD0QY1xPlvF3I0s0AFpJVGJDvm
Ig+fgWCjsXXpeYg39+Bo0DMN5EnhJFDVkKrqPIQrG5sSt3BhFomX+qk+2B4F
ioP3Uwunq3MtJgzLoCV6UckWGXUjsQ5L4lcWMYscmmDB1fJxLQ/VHH7XB9Me
J7kzFb4CXqvxyCDo6Bo78bKICC4KQ+IRVp6mdWTRwMgPtVRtT5r3DONCQtIs
rQW+O3V3IebNjaI+eiapEAnuVM+wt1Ht+OvrQGE98JOCPUgfF2/ZjuOS+sGt
Fe7ebhjr8N62894pWOzHCUwMCinhCi2FsIGP67MapqLQrqekCzc01RIInbcn
o4Z/KFGm93YyYm1V1s4GhBbx+OrJReWtn7ye4XghIbAqjjZm++Tpzm4zKIlz
5oZdYznxJvHxbf1Uzx1+gaCOVk8Gy5d8YEDZ69Lln/d+8mtn9cpljZwnFvbV
gOCO/K4pb1FuGqdalZrlnFHyeT8tz4twxEFWCS3Dtb+eorJQryFcbWMYuN9m
QZROsp2zhe0GZWeSPS+APuUYvLSUWuFstt+0q7+Emj3yE0HLxio5R6pla5UV
0nmaKXQWFFdNUxOvQjjBhU0+6sWhzCjVdKv/Og4D8H49c8hKgp1mLU5e4bjz
1jaFX6C5cadNPPB8nmRuaxHkbZiYWkr1kbFMrBRusyvpIq9amG+2e2I6egd7
vQeNHS3dKnfJ9GKOeuFYbCAsRSObo3GB6hycx8nM+fVLppfwix5bYpHBBqs7
nlTFS5zCmcRW94K1LpP06IxdIQSOZEFszX9wvqdQUiqJIZrzaSV8hTsR5Txr
hkJLzXWLxzOyK9lns+Dm9e7ZNHrNY1eejMokgRmU8Ao4Yqji0jl+kZSJa0zt
AeGpG3PJLlPjKFbXnAmwLBMVRaq6c6yJo1CmhdsOr9yJvk3tKOZkelhbzKIc
VKTWbWtwiIhPq6oBbG45Mu/rQRtJHASjJKQseXUjMlpZrpBGr8SRIQAGXJYS
cBmjJoZcRAgku6YHrVjfjxuwF49DJGyjAktITK0a1OlPTFjpz2Ciyt91VGnm
nFIuNLixzubi2UTN9Krouwpf3FONM1s6+lLVtmI2KMr3G3eXflN37dbdy5mW
tlVpwJUP7/raQZW7YH+XdM6NqN+yqErU9Mjh2iKzIFEJ5vNxNMdN8QjqKdDX
4ThNC3XLSRoXlq8/gapHjARfWt3qXX7dvDb1WtSq/M7VYvLRiIJDLO+BS4Z1
+XzV5jrl5eJarT/G6zi3b/bN8s/Bis8OV3z2wI9xQN8/MF+ar8xD88h8bR7/
ls9klP/q/Iv/kWHeCmiy/Gu46d+Y62+PPcy1789sOibF9k2Ahbf3Bs2bI/PF
09Nnne9Ozs5edORIoeH2Ht9sbSDb1qra55X05agHvBP4W3hHHjr3tRUhz4bV
0ofNg3+y2xigj5B3ZAQpGFhLdBWmJ+SXqTPdLI8/9b0RnGTXB/X1RkVtp5Id
Iu+fy74C1xlUuTDjarlqisTX54SF4Stlpl7WoZJKkrKmwPfTFRUQ5QebvzVM
E/P2EU31FU35wBy+7b29eBvA/2RiB68KcjKCn/sTlUAw3U+tTo9CHK5eGXbk
Y1GbO+YjQdOobPPAvEzVEVoG556huWxgx/0sF3au/Pm3Umo1SHf83L+KPT+5
uuo9O+n0rq5OLq+dkl0p56Ja37xZfu3dOz5gXWjRQmM3p1md1jxyUqtWCJs8
cC2uHoDA+E4jbgXStmWeoljxWzg41ckWbnLg5xFFvfYAhS/194c0NLq8kHyD
HNLgqjzU9Z32nvdY2//zH72low8Nl8EfEiIHnVx+8tPJl9aTGJJY3XC8gr0w
Hzm5TSqpDXVKeVX565KGvusAwGc1bT6amv4LKrx1dIoCiA5wjI3//h6E//2G
2TTbph8dpvsvDtPdMEytltf89eDnDxvmt0FzT7i5T77516H5yJQ6/EypZaDf
D5pNj238/l6h+UNz8fkfjIubbuHV6fnF2YlzCzd7GuIjdowa3oJziDC+u97A
Hjl3o+k93XUUWYPrmud3ZOCKoYY9Lsp8YSbkraE+pc++4MqwfYMnqLPARh+p
O3MlzpYczErd0YKi4H2tK1hv3i2fIveZVsUbLvc4QJSf1DuRoF8C1ou+iM6l
9edSq3pxv0dD03Xcs7HWvRPOkqG5jeSQgsLt3In3gt2c6gHaucszuiO0RL0j
X9WAU6v+zO2Bft87Cs9h1p/Z12fOj3jLpsqsN07lxLVTpl1zbHPOEfpa00Qy
TP58LecG0Uhu0UBaUG3qUoJ8+K4uynFR7UFLd5/wXE7tsOumgGWJMRnbn5zz
XAfxc1YhhOZzVmElNM58SFqggz5xl8edpy8uz3vN3IKeSn3nMourT4gvB7Kb
jop/uvL4OZhdO8x/gnO59nD8UlD7qTqX9wjN70SpZlD7R6bU52D2w39+Xy5u
BrWfKhc7b+Si9+T7k2t1QzpXz7wn8l4+xx0hrTN5/0nB7b8S2x38hwfIyzHp
2qYR9xye8mH9DU1y3nzRbD706fqyn+On94Pm94903bDPvdA8kx7n2893GtDW
I4CPQ6l6WuJgQ2Li40Jz+DtDE/5sNu7vFUq99zAfCcXPPxqKnTNRy2kEzsSm
BnPv7jlHe3nUSLlitMugNAylBlW9+5q2hXmQHJVPo012alem8g2fpFg0Weov
4Ju7VYe6NllA1/xJ2otL/WmuZzcx58p+UDVnqOQ23HwQUAs5LhuF8Lt1V0yx
uaabX2WH3Ecf5uAtKfKwYSxor2A0layfre621GWAXZ1CR6h99eHeKNcor2+q
hZK/Zi89PQnbaObWq51j8J5l4Qr9VxzmlDPkYeu4i9rVLvppF064u5FGe+G5
84By6AlMqdPMvSOpjer0EEMoGXq4kmvb9dQiV9KvG6J26JD+jKr2bTSOayzI
N1zIuTTfplsFo8GZq06Aso747P3Vfz5176+hBXxMsv39zu/ub/22n4+0aR+i
aX2N0Ceb57hHaD4updbVCP2hKfU5r/rhP78LF3//R+Pi1aEQeUAaCt3Vhfjd
UvRycK/RS3qX26qhi9R7v3fUcpcf7HrLro1YVnq59xKy3HOIsjI8/eDodI0L
syae0YR07dGu6Tn6cv+UotRLJ/QGCF6getzSRLsRYnFPbW2ZHZzv5YfcdatL
NUM1yY4reD89H7wO4v+V6p6Kb4SaBd/k8Pt6vQ2+OtiYhf2Y0Bz+vtA0fj6N
LGMDxRcfEcXOtD67fPHyQg2sM6uhbnJ2tC633Oy90uD3ZQXuwwyoONcMwLKw
c5uM8G5ftY9p48lG7svt1oUYUq/pVPcDdYTqkpu6pvd+B3riNHpviAlpTEyg
7K+dAjmefb2j1PdEWe0KaLs0TRVpg0p4FTJ2mDXVmd3VMfvc3qc5QlSEc67E
1sqU54eyC175VjJpuKNBOmP4e0R+C7X4dm7seT+pt0t78wWfuOOD0fiam0j8
MreFNt0lhMbjVM9yc6N2uf/P79TiyHiHz1i3W3KQutiqNtbdyem1p7O51Sc3
N/E4+q9v5Mf9W/2y9LP0jVc5P0TJ3NK/epI+0EHPkV8MdB3hqJYPe3uPUMgB
f518n35Zh4e35q/cjeFYj4T/fD9QOIUH0nZ6V987Zcek9oTTA/A44vlqayMr
oPtQdSpUua1+rrLdqrGHL/lAXUfIHeuJf8d6V2KgwjiqN986Ir8NIF1D7mWS
f/DchjxK+kdx8dYcdh4dmZep4I1wSEQm4X7w+NGDn/+qUv5zw2R7PsUvB0dh
aLTEIgHkq97eP3LcJp+sf/vD193kr8Mmg9VJXzHY/wABnZNhXKLvW1baIyh6
fst3FFR20+ZGyobEfFykIwYgvFFLbi4tgrPM6PvqX3A31OKa3/i1tv5Hb2t3
Dlk5ORqU8yjxp5ULAUqAQVvv6FV0xA/yqHLzNULTLb7ocpIlpFuJx5eC0GoN
/TjoVaztV7o/i4qGQZhzm9G6nnYBVeG+bnS9bPZ9naGFo85cdW7BjYN3tKCo
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

-->

</rfc>

