<?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-06" 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="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="T." surname="Eckert" fullname="Toerless Eckert">
      <organization>Futurewei</organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>tte@cs.fau.de</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="February" day="10"/>

    
    <workgroup>PIM</workgroup>
    

    <abstract>


<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 routers, assert packets are sent from these routers to
elect a single forwarder. The PIM assert packets are sent
periodically to keep the assert state. The PIM assert packet carries
information about a single multicast source and group, along with
the metric-preference and metric of the route towards the source or
RP. This document defines a standard to send and receive information
for multiple multicast sources and groups in a single PIM assert
message. This can be particularly helpful when there is   traffic
for a large number of multicast groups.</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 packets are sent periodically to keep the assert state. The
PIM assert packet carries information about a single multicast
source and group, along with the corresponding metric-preference and
metric of the route towards the source or RP.</t>

<t>This document defines a standard to send and receive information for
multiple multicast sources and groups in a single PIM assert
message. It can efficiently pack multiple PIM assert messages into a
single message and reduce the processing pressure of   the PIM
routers. This can be particularly helpful when there is   traffic
for a large number of multicast groups.</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>RPF: Reverse Path Forwarding</t>

<t>RP: Rendezvous Point</t>

<t>SPT: Shortest Path Tree</t>

<t>RPT: RP Tree</t>

<t>DR: Designated Router</t>

<t>BDR: Backup Designated Router</t>

</section>
</section>
<section anchor="use-cases"><name>Use Cases</name>

<t>PIM Assert will happen in many services where multicast is used and
not limited to the examples described below.</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 grows, 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 and BDR 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="summary"><name>Summary</name>

<t>In the above scenarios, the existence of PIM assert state depends
mainly on the network topology. As long as there is a layer 2
network between PIM neighbors, there may be multiple upstream
routers, which can cause duplicate multicast traffic to be forwarded
and assert process to occur.</t>

<t>Moreover 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 is
discarded, thus extending the time of traffic duplication in the
network.</t>

<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>
<section anchor="solution"><name>Solution</name>

<t>The change to the PIM assert includes two elements: the PIM assert
packing hello option and the PIM assert packing method.</t>

<t>There is no change required to the PIM assert state machine.
Basically a PIM router can now be the assert winner or loser for
multiple packed (S, G)'s in a single assert message instead of one
(S, G) assert at a time.</t>

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

<t>The newly defined Hello Option is used by a router to negotiate the
assert message packing capability. Assert packing can only be used
when all PIM routers, in the same shared LAN network, support this
capability. This document defines two packing methods. One method is
a simple merge of the original messages and the other is to extract
the common message fields for aggregation.</t>

</section>
<section anchor="pim-assert-packing-simple-type"><name>PIM Assert Packing Simple Type</name>

<t>In this type of packing, as described in <xref target="RFC7761"/>, the assert
message body is used as a record. The newly defined assert message
can carry multiple assert records and identify the number of
records.</t>

<t>This packing method is simply extended from the original assert
packet, but, because the multicast service deployment often uses a
small number of sources and RPs, there may be a large number of
assert records with the same metric preference or route metric
field, which would waste the payload of the transmitted message.</t>

</section>
<section anchor="pim-assert-packing-aggregation-type"><name>PIM Assert Packing Aggregation Type</name>

<t>When the source or RP addresses, in the actual deployment of the
multicast service, are very few, this type of packing will combine
the records related to the source address or RP address in the
assert message.</t>

<t><list style="symbols">
  <t>A (S, G) assert only can contain one SPT (S, G) entry, so it can
be aggregated according to the same source address, and then all SPT
(S, G) entries corresponding to the same source address are merged
into one assert record.</t>
  <t>A (*, G) assert may contain a (*, G) entry or a RPT (S, G) entry,
and both entry types actually depend on the route to the RP. So it
can be aggregated further according to the same RP address, and then
all (*, G) and RPT (S, G) entries corresponding to the same RP
address are merged into one assert record.</t>
</list></t>

<t>This method can optimize the payload of the transmitted message by
merging the same field content, but will add the complexity of the
packet encapsulation and parsing.</t>

</section>
<section anchor="pim-assert-timer"><name>PIM Assert Timer</name>

<t>As described in section 4.6 in <xref target="RFC7761"/>, the Assert Timer function of
each (S,G) and (*,G) is not changed. After the Assert Message
Packing function defined in this document is enabled, when the first
AT of a (S,G) or (*,G) is expired, in order to carry much more
assert information in this message, some of other (S,G) or (*,G) may
be included in the same message, even though their ATs have not been
expired. After the assert message packing, the ATs of all the (S,G)
or (*,G), that are packed in the same message, are all reset. That
is after the packed assert messages is sent, the ATs of the packed
(S,G) or (*,G) will be set with the same value.</t>

</section>
<section anchor="pim-assert-format-selection"><name>PIM Assert Format Selection</name>

<t>An implementation MUST NOT send assert messages using a packing
type, unless all routers on the LAN have indicated support for the
type. If both packing types are supported, then it is left to the
implementation whether to use assert packing and which packing type
to use. It is RECOMMENDED to use the supported method that is most
efficient. The Aggregation Packing Format is likely to be the most
efficient if the assert message is to include multiple records
having the same source address or RP address.</t>

<t>The regular <xref target="RFC7761"/> assert format is still allowed to be used. For
example the assert only needs to be sent for a single (S, G).</t>

</section>
</section>
<section anchor="packet-format"><name>Packet Format</name>

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

<section anchor="pim-assert-packing-hello-option-1"><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 = 1         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Packing_Type |
+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t><list style="symbols">
  <t>OptionType: TBD</t>
  <t>OptionLength: 1</t>
  <t>Packing_Type: The specific packing mode is determined by the value of this field:  <vspace blankLines='1'/>
When the first bit from the right is set to 1: indicates simple packing type as described in section 2.2  <vspace blankLines='1'/>
When the second bit from the right is set to 1: indicates aggregating packing type as described in section 2.3</t>
  <t>3-8 bits: reserved for future</t>
</list></t>

<t>The node may support multiple packing types. The node MUST set the
bits indicating which types they support. They MUST set both bits if
they support both type 1 and type 2. The format used MUST be a
format supported by all routers on the LAN, see section 3.5 for
details.</t>

<t>Once the packing format type is selected, this type of coding is
used for Assert message packing.</t>

<t>If not all nodes support a same packing format, then Assert
message format defined in <xref target="RFC7761"/> is used.</t>

</section>
<section anchor="pim-assert-simple-packing-format"><name>PIM Assert Simple Packing Format</name>

<figure title="PIM Assert Simple Packing Format" anchor="FIG-PACKET-FORMAT-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  |SubType|   FB  |           Checksum            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      Count    |                  Reserved                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
.                                                               .
.                        Assert Record [1]                      .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
.                                                               .
.                        Assert Record [2]                      .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               .                               |
.                               .                               .
|                               .                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
.                                                               .
.                        Assert Record [M]                      .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t><list style="symbols">
  <t>PIM Version, Reserved, Checksum  <vspace blankLines='1'/>
Same as <xref target="RFC7761"/> Section 4.9.6</t>
  <t>Type  <vspace blankLines='1'/>
The new Assert Type values TBD1.</t>
  <t>Type.SubType  <vspace blankLines='1'/>
The new Assert Type.SubType value TBD2.</t>
  <t>FB  <vspace blankLines='1'/>
Flag Bits field. This field is not used for now, it may be used in the future.</t>
  <t>Count  <vspace blankLines='1'/>
The number of packed assert records. A record consists of a single assert message body.</t>
</list></t>

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

<figure title="PIM Assert Record Format" 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="pim-sg-assert-aggregation-packing-format"><name>PIM (S,G) Assert Aggregation Packing Format</name>

<t>This method also extends PIM assert messages to carry multiple
records. But the records are divided for (S, G) and (*, G).</t>

<figure title="PIM Packed (S,G) Assert 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  |SubType|   FB  |           Checksum            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      Count    |                  Reserved                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
.                                                               .
.                        Assert Record [1]                      .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
.                                                               .
.                        Assert Record [2]                      .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               .                               |
.                               .                               .
|                               .                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
.                                                               .
.                        Assert Record [M]                      .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>Most fields of the specific assert message format is the same as
section 4.2, except for the subType fields and records. When
aggregated (S, G) records is carried in the message, the subType
field is set to TBD3.</t>

<t>The (S, G) assert records are organized by the same source address,
and the specific message format is:</t>

<figure title="PIM Assert Record Format (S,G)" 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Source Address (Encoded-Unicast format)            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0|                      Metric Preference                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             Metric                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        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>Source Address, Metric Preference, Metric and Reserved  <vspace blankLines='1'/>
Same as <xref target="RFC7761"/> Section 4.9.6, but the source address MUST NOT be set to zero.</t>
  <t>Number of Groups  <vspace blankLines='1'/>
The number of group addresses corresponding to the source address field in the (S, G) assert record.</t>
  <t>Group Address  <vspace blankLines='1'/>
Same as <xref target="RFC7761"/> Section 4.9.6, but there are multiple group addresses in the (S, G) assert record.</t>
</list></t>

</section>
<section anchor="pim-g-assert-aggregation-packing-format"><name>PIM (*,G) Assert Aggregation Packing Format</name>

<figure title="PIM Packed (\*,G) Assert Message Format" anchor="FIG-PACKET-FORMAT-STARG"><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  |SubType|   FB  |           Checksum            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      Count    |                  Reserved                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
.                                                               .
.                        Assert Record [1]                      .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
.                                                               .
.                        Assert Record [2]                      .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               .                               |
.                               .                               .
|                               .                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
.                                                               .
.                        Assert Record [M]                      .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>Most fields of the specific assert message format is the same as
section 4.2, except for the subType fields and records. When
aggregated (*, G) records is carried in the message, the subType
field is set to TBD4.</t>

<t>The (*, G) assert records are organized in the same RP address and
are divided into two levels of TLVs. The first level is the group
record of the same RP address, and the second level is the source
record of the same multicast group address, including (*, G) and RPT
(S, G), and the specific message format is:</t>

<figure title="PIM Assert Record Format (\*,G)" anchor="FIG-RECORD-FORMAT-STARG"><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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             RP Address (Encoded-Unicast format)               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1|                      Metric Preference                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             Metric                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Number of Group Records(O)  |           Reserved            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
.                                                               .
.                        Group Record [1]                       .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
.                                                               .
.                        Group Record [2]                       .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               .                               |
.                               .                               .
|                               .                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
.                                                               .
.                        Group Record [O]                       .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t><list style="symbols">
  <t>RP Address  <vspace blankLines='1'/>
The address of RP corresponding to all of the contained group
  records. The format for this address is given in the encoded
  unicast address in <xref target="RFC7761"/> Section 4.9.1</t>
  <t>Metric Preference, Metric and Reserved  <vspace blankLines='1'/>
Same as <xref target="RFC7761"/> Section 4.9.6</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.</t>
</list></t>

<t>The format of each group record is:</t>

<figure title="PIM Assert Group Record" anchor="FIG-GROUP-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)             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        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'/>
Same as <xref target="RFC7761"/> Section 4.9.6</t>
  <t>Number of Sources  <vspace blankLines='1'/>
The number of source addresses corresponding to the group
  address field in the group record.</t>
  <t>Source Address  <vspace blankLines='1'/>
Same as <xref target="RFC7761"/> Section 4.9.6, but there are multiple source
  addresses in the group record.</t>
</list></t>

</section>
</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document requests IANA to assign a registry for PIM assert
packing Hello Option in the PIM-Hello Options and new PIM assert
packet type and subtype. The assignment is requested permanent for
IANA when this document is published as an RFC. The string TBD
should be replaced by the assigned values accordingly.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>As described in section 6.1 in <xref target="RFC7761"/>, the forged assert message
may cause the legitimate designated forwarder to stop forwarding
traffic to the LAN. And the packed function defined in this
document, may make this situation worse, because it will affect
multiple flows with a single packed assert. That is in case one
forged packed assert message is accept, all the (S,G) or (*,G)
carried in this message may be stopped forwarding from one or more
legitimate designated forwarders. The general security function,
such as authentication function defined in <xref target="RFC7761"/>, or the necessary
PIM filtering method, will do good help to avoid the forged assert
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.</t>

</section>
<section anchor="changelog"><name>Changelog</name>

<t>[RFC-Editor: please remove this section].</t>

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

</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='RFC8736' target='https://www.rfc-editor.org/info/rfc8736'>
<front>
<title>PIM Message Type Space Extension and Reserved Bits</title>
<author fullname='S. Venaas' initials='S.' surname='Venaas'><organization/></author>
<author fullname='A. Retana' initials='A.' surname='Retana'><organization/></author>
<date month='February' year='2020'/>
<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.</t><t>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.</t><t>This document obsoletes RFC 6166.</t></abstract>
</front>
<seriesInfo name='RFC' value='8736'/>
<seriesInfo name='DOI' value='10.17487/RFC8736'/>
</reference>




    </references>

    <references title='Informative References'>





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



  </back>

<!-- ##markdown-source:
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
vhcLbXSw2TbXrequbb0Go1zb2vMNbq9pq/PP7+nZ1ItHQ7WztzX+Y3E2uByI
I3QtoeIqqvn2nwfAEnoKXQ+1RgeeY3VzKjE2x7Kta3LPTTX86oXnYvv+Rde/
zgto6yvUC4GZt8FjLOkx5SIeE678AATYYjOGPjCTqQJZjU35h3aL6DUVaDYK
1Ng6yVwrLcY/DsNdYxVarPSIr+7nC1v5O1NpJIPqtBITAL/NKzmuFlK0NpzF
BSszLAO0zd5dRX1e9PYai/rAZOYNZduoMJQrkBbBWhR6yVViXfX56g9iYIHh
Ikm90rdVWWAjwOeDS0AcJs1m8Miucj/0Z6GInR16DWgprxWzuSpAvEqyXFVl
3LQtlTSbKayn56SWS2VTiRn3qk/t/SCucmPq8oJVUlwq0fClsdwNFbwNMLHb
qRfcqQrcYOE7L1VbVRBytV6BX6nyqwVzXQMsN4V/GYYKEt3CdwNj5yoGCcAy
5kYqLF87IGZY3QjFsMT34Atb77SJ8zXRMPnqWGG5VSotjAo001Ghsqr+XoeZ
HiZiniQh/TUL0uGbRIfb0lX9WQ4W40FwHSerSIVzqtZpoST/jS1brRSLzLAM
yfhajAs9F29ULGXucuqoJlgRisqtujrPuStgUS+cIo6oHFWU0N9s+OevMOfu
Cf2drr4AecH1z9QSiycXXumW3+jhZy9El19du+H38rD0HqJn+Olq6hdvq5Iz
MdWyz66xrCrRO1UFFlLCPwyGXMRSdhkbXOiUSkqt8I8SFAo64ZqIASws9NJ9
9h1V9sEB0yQ3FfCOZSEnGYpoxmXzr/lvHuSAwnOtuNTxfwD1hwcBsm0AAA==

-->

</rfc>

