<?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.17 (Ruby 3.1.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY RFC1112 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1112.xml">
<!ENTITY RFC7761 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7761.xml">
<!ENTITY RFC5015 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5015.xml">
<!ENTITY RFC6388 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6388.xml">
<!ENTITY RFC4875 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4875.xml">
<!ENTITY I-D.ietf-pim-sr-p2mp-policy SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-pim-sr-p2mp-policy.xml">
<!ENTITY RFC7988 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7988.xml">
<!ENTITY RFC8279 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8279.xml">
<!ENTITY I-D.ietf-bier-te-arch SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-bier-te-arch.xml">
<!ENTITY I-D.eckert-bier-cgm2-rbs SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.eckert-bier-cgm2-rbs.xml">
<!ENTITY I-D.chen-pim-srv6-p2mp-path SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.chen-pim-srv6-p2mp-path.xml">
<!ENTITY RFC6514 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6514.xml">
<!ENTITY RFC7524 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7524.xml">
<!ENTITY RFC6037 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6037.xml">
<!ENTITY RFC6513 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6513.xml">
<!ENTITY I-D.ietf-bess-evpn-bum-procedure-updates SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-bess-evpn-bum-procedure-updates.xml">
<!ENTITY RFC7716 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7716.xml">
<!ENTITY RFC8556 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8556.xml">
<!ENTITY I-D.ietf-bier-pim-signaling SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-bier-pim-signaling.xml">
<!ENTITY I-D.ietf-bier-mldp-signaling-over-bier SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-bier-mldp-signaling-over-bier.xml">
<!ENTITY RFC6625 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6625.xml">
<!ENTITY RFC7060 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7060.xml">
<!ENTITY I-D.zzhang-bess-mvpn-evpn-segmented-forwarding SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.zzhang-bess-mvpn-evpn-segmented-forwarding.xml">
]>

<?rfc comments="yes"?>

<rfc ipr="trust200902" docName="draft-zzhang-pim-multicast-scaling-considerations-00" category="info" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="Multicast Scaling">Multicast Scaling Considerations</title>

    <author initials="Z." surname="Zhang" fullname="Zhaohui Zhang">
      <organization>Juniper Networks</organization>
      <address>
        <email>zzhang@juniper.net</email>
      </address>
    </author>
    <author initials="R." surname="Parekh" fullname="Rishabh Parekh">
      <organization>Cisco</organization>
      <address>
        <email>riparekh@cisco.com</email>
      </address>
    </author>
    <author initials="H." surname="Bidgoli" fullname="Hooman Bidgoli">
      <organization>Nokia</organization>
      <address>
        <email>hooman.bidgoli@nokia.com</email>
      </address>
    </author>
    <author initials="Z." surname="Zhang" fullname="Zheng Zhang">
      <organization>ZTE</organization>
      <address>
        <email>zhang.zheng@zte.com.cn</email>
      </address>
    </author>

    <date year="2022" month="October" day="24"/>

    <area>routing</area>
    <workgroup>pim</workgroup>
    <keyword>multicast bier scaling</keyword>

    <abstract>


<t>This informational document discusses various multicast scaling aspects,
compares different multicast technologies with respect to scaling,
and suggests a general approach of combined solutions to scale multicast.
This discussion is independent of IPv4/IPv6 or MPLS/SRv6 data planes.</t>



    </abstract>



  </front>

  <middle>


<section anchor="different-scaling-aspects"><name>Different Scaling Aspects</name>

<t>IP Multicast <xref target="RFC1112"/> architecture involves an IP multicast
group/destination address that, together with the source address, identifies
a multicast tree rooted at the First Hop Router (FHR) that the source is
attached to. Multicast traffic is forwarded along the tree, which is typically
set up by Protocol Independent Multicast (PIM) <xref target="RFC7761"/>.</t>

<t>In this document, each (source, group) pair is referred to a flow or
a tree. Typically, each flow is for a "piece of content", e.g.,
an audio or video content.</t>

<t>While a bidirectional tree <xref target="RFC5015"/> can be used for multicast
among a set of sources and receivers using only group/destination
address, it is typically used only in a small domain and is not considered
in this document.</t>

<section anchor="ip"><name>Scaling in the number of receivers</name>

<t>With the above-mentioned multicast tree, each tree node only need
to replicate to a minimum number of downstream nodes, which could be
transit or leaf nodes. Except in the case of Broadband Node Gateway (BNG)
connecting to a huge number of home subscribers or in the case of
a spine switch connecting to a large number of leaf switches in a Data
Center, the number of replication is small, yet the number of total
receivers can be unlimited as the tree grows lengthwise and width-wise.</t>

</section>
<section anchor="tunnel"><name>Scaling in the number of trees</name>

<t>The number of (source, group) pairs could be huge.
Each (source, group) pair would need a tree, with each replication
point being a tree node. Each tree node needs to have state specifically for
each tree both in forwarding plane and control plane (that is used to set up
the forwarding plane state).</t>

<t>The number of multicast trees that a network can support may have to be limited because
of the tree state, yet the number of multicast trees transiting a network may
be huge (simply because of the huge number of multicast flows).</t>

<t>Chances are, many of the flows have a common set of ingress and egress points
in the transit network. In that case, instead of setting up individual
multicast (source, group) trees across this network, tunnels can be to
transport those individual trees. For example, a single mLDP <xref target="RFC6388"/>
tunnel can be used to transport thousands of IP multicast flows,
greatly reducing the number of trees in the network.</t>

</section>
</section>
<section anchor="multicast-tunnels"><name>Multicast Tunnels</name>

<t>A multicast tunnel also corresponds to a multicast tree and requires
corresponding state on tree nodes, though it is not
identified by a (source, group) pair.</t>

<t>In case of mLDP <xref target="RFC6388"/> or RSVP-TE P2MP <xref target="RFC4875"/> tunnel,
the tree is identified by an mLDP FEC
or RSVP P2MP Session Object in the control plane, and a label in the forwarding
plane. The tree will likely have transit (non-root/leaf) tree nodes.</t>

<t>An MPLS SR-P2MP <xref target="I-D.ietf-pim-sr-p2mp-policy"/> tunnel is identical to
mLDP/RSVP-TE in the forwarding plane. It's only different from the latter in
the control plane - different control plane identifier and different setup
procedures, but still requires per-tree state on all tree nodes.</t>

<t>An SRv6-P2MP tunnel is also similar to mLDP/RSVP-TE/SR MPLS P2MP tunnel even
in data plane - it's just that the data plane identifier is now part of
IPv6 destination address.</t>

<t>An Ingress Replication (IR) <xref target="RFC7988"/> tunnel is a special/degraded multicast
tree in that it does not have transit tree nodes. The tree root (ingress)
replicates traffic and tunnel to tree leaves directly using unicast, without
the need for tree state on transit routers. Obviously, it does not have efficient
replication - the ingress may need to send multiple copies through common
downstream nodes - but it may still be desired in certain situation.</t>

<t>We refer the tunnels to as underlay tunnels and multicast traffic (e.g. IP
Multicast) that the undelay tunnels carry to as overlay flows. Notice that,
an underlay tunnel could be carried by another underlay tunnel (e.g.
a part of an mLDP tunnel is transported by RSVP-TE P2MP tunnel).</t>

</section>
<section anchor="new-multicast-technologies"><name>New Multicast Technologies</name>

<t>The IP multicast and non-IR tunnels described above require per-tree/tunnel
state on transit tree nodes. While use of tunnels removes individual
IP Multicast trees
in the tunnels' region, the number of tunnels may still be large.
New multicast technologies have been developed to remove the per-tree/tunnel
state while still allow efficient replication, as summarized below.</t>

<section anchor="bier"><name>BIER</name>

<t>Bit Index Explicit Replication (BIER) <xref target="RFC8279"/> is a multicast architecture
in which forwarding is based on a BitString in the BIER header preceding the
payload. Each Bit Position (BP) that is set in the BitString represents a
BIER Forwarding Egress Router (BFER) that needs to receive the packet.
A BIER Forwarding Router (BFR) checks the set BPs to determine the set of
next hop BFR to replicate the packet to, by repeatedly using a BP as lookup
key in a BIER Index Forwarding Table (BIFT). A clever way ensures that the
number of lookup is bound by the number of replications, no matter
how many and which BPs are set.</t>

<t>The length of the BitString is limited by maximum transmission unit (MTU)
of the BIER domain, the reserved space in a packet for payloads, and more
importantly the implementation tradeoff in the forwarding plane. A typical value
is 256. While larger BitString lengths could be used, it may be suboptimal
if the BFERs for a packet are sparsely distributed.</t>

<t>If the number of BFERs is larger than the BitString length, there are two ways
to make it work:</t>

<t><list style="symbols">
  <t>Send multiple copies - each copy is for a different set of BFERs.
The same BP in different copies corresponds to different BFERs.
This not only requires multiple copies but also multiple BIFTs - one
BIFT for each set.</t>
  <t>Divide the BIER domain into per-region sub-domains to use tunnel segmentation
(<xref target="seg"/>). A segmentation point decapsulates the BIER packets received in an
upstream region and re-encapsulate BIER packets for downstream regions.</t>
</list></t>

<t>BIER can be considered as a tunneling technology - overlay flows (e.g. IP
multicast) are tunneled over BIER, even though there are not per-tunnel
state in a BIER domain.</t>

<t>The BIER architecture includes a flow overlay on top of BIER layer that does
BIER signaling and forwarding, which is in turn over a routing underlay that
forwards BIER traffic from BIER Forwarding Ingress Routers (BFIRs) to BFERs.
The purpose of flow overlay is for BFERs to signal BFIRs that they are
interested in certain overlay flows so that the BFIRs can derive what BitString
to use for an overlay flow.</t>

</section>
<section anchor="bierte"><name>BIER-TE</name>

<t>BIER does not provide per-flow traffic engineering capability.
BIER Traffic Engineering (BIER-TE) <xref target="I-D.ietf-bier-te-arch"/> does so without
requiring per-flow state inside the BIER domain.</t>

<t>With BIER-TE, a BP may indicate a replication branch - not just a BFER anymore.
Because of that, with the same BitString length, fewer BFERs will be covered
by a packet - whether we send multiple copies or use tunnel segmentation.</t>

</section>
<section anchor="cgm2"><name>CGM2</name>

<t>With BIER and BIER-TE, the BPs in the BitString have "global" ("subdomain-wide"
to be strict) significance
and all BFRs in a subdomain must have entries for all of them in the BIFTs.
However, the BIER-TE concept can be augmented to
work with BPs of local significance. This is referred to as Carrier Grade
Minimalist Multicast (CGM2) <xref target="I-D.eckert-bier-cgm2-rbs"/>.</t>

<t>The CGM2 concept could be more easily understood through
<xref target="I-D.chen-pim-srv6-p2mp-path"/>, which uses SRv6 SIDs to encode replication
branches. Replacing the SIDs with BPs you get CGM2.</t>

<t>Obviously CGM2 scales better than <xref target="I-D.chen-pim-srv6-p2mp-path"/> in that many
fewer bits are needed in the packet header so this document focuses on CGM2.</t>

<t>While CGM2 does use fewer BIFT entries, it does not save on the number of bits
needed to encode all replication branches. In fact, it uses more bits to turn the
flat-structured BitString in BIER-TE to recursive/hierarchical constructs,
and that also leads to more complicated forwarding behavior.</t>

<t>Given this limitation, while CGM2 can be used as underlay tunnels, it is not
really a good fit for Carrier Grade multicast when overlay IP multicast is
not used (i.e. the end receivers are directly encoded as BPs).</t>

</section>
</section>
<section anchor="seg"><name>Multicast Tunnel Segmentation</name>

<t>An end-to-end (E2E) multicast flow may need to go through a vast network
consisting of many ASes and/or IGP areas (referred to regions). When tunneling
overlay multicast flows, different types/instances of tunnels may need to be
used in different regions. This is referred to as tunnel segmentation
<xref target="RFC6514"/> <xref target="RFC7524"/>, and it is because of the following reasons:</t>

<t><list style="symbols">
  <t>Due to technological or administrative reasons, different tunnel
technologies may have to be used in different regions. For example,
one region may use mLDP while another may use IR.</t>
  <t>For the same reasons, different tunnel instances of the same type
may have to be used in different regions.</t>
  <t>Even if the same tunnel could be established across multiple regions,
different tunnel instances in different regions may be desired for better
optimization. For example, if a set of flows have very different sets of
egress points, it is not desired to carry them in a single across-region tunnel
but they may be carried by a single intra-region tunnel in one region and
different intra-region tunnels in other regions.</t>
  <t>In case of IR, instead of directly replicating to all egress points,
it is more
efficient to ingress replicate to segmentation points who in turn
ingress replicate to the next set of segmentation and/or egress points.</t>
  <t>In case of BIER, when the number of BFERs is larger than the BitString
length, segmentation may be used together with smaller subdomains.</t>
</list></t>

<t>At the segmentation points, overlay state is needed to stitch the upstream
segments and downstream segments together.</t>


</section>
<section anchor="signaling-for-tunneling-and-segmentation"><name>Signaling for Tunneling and Segmentation</name>

<t>To carry multicast traffic over a tunnel, the tunnel ingress needs to know
what flows to be put onto which tunnel. Depending on the tunnel type, it may
also need to know the tunnel egresses. The tunnel egresses may also need to
know that they need to join the tunnel. This requires signaling - note that
this is not for setting up the underlay tunnel, but for "flow overlay".</t>

<section anchor="mvpn"><name>MVPN as Flow Overlay Signaling for Tunneling</name>

<t>Consider some E2E IP multicast trees of a customer with part of them go over
a VPN provider network.
The PE routers tunnel the traffic across the provider network based
on PIM-MVPN or BGP-MVPN signaling specified in <xref target="RFC6037"/> <xref target="RFC6513"/> and
<xref target="RFC6514"/>. In particular, Data MDT or I/S-PMSI A-D routes are used to announce
the binding of overlay flows to underlay tunnels. The binding could be
inclusive (one tunnel for all flows in a VPN and to all egress PEs - referred
to as an inclusive tunnel) or selective (one tunnel for one or more flows
and only to the egress PEs that need to receive the traffic - referred to
as a selective tunnel). While selective binding prevents multicast traffic
from being sent to PEs that do not need to receive traffic, inclusive binding
can significantly reduce the number of tunnels needed (only one tunnel is used
for each VPN but traffic is sent to all the PEs of the VPN).</t>

<t>Two other features of BGP-MVPN can further reduce the number of underlay
tunnels. One is to use the same tunnel for flows in different VPNs
(referred to as tunnel aggregation in this document). This can be done
for all flows or just for some selective flows in the VPNs, achieved
by advertising a de-multiplex VPN label in the PMSI Tunnel Attribute (PTA)
attached to the PMSI A-D routes and imposing the de-multiplex label before
imposing the tunnel label to the traffic. The other is inter-as aggregation
where per-PE inclusive tunnels are confined to the local AS while per-AS
inclusive tunnels are used outside the local AS. This is achieved with
Inter-AS I-PMSI A-D routes <xref target="RFC6514"/> and the concept is further explained
and extended to per-Region Aggregation (Section 6.2 of <xref target="I-D.ietf-bess-evpn-bum-procedure-updates"/>).</t>

<t>The same BGP-MVPN procedures can be applied to Global Table Multicast (GTM)
for multicast in the default/master routing instance over an underlay network,
as specified in <xref target="RFC7716"/>.</t>

<t>Note that this section is about MVPN as Flow Overlay Signaling for any kind
of tunneling technology including BIER <xref target="RFC8556"/>, and the next section
is about two flow overlay signaling methods specifically for BIER.</t>

</section>
<section anchor="pimbier"><name>PIM/mLDP as Flow Overlay Signaling over BIER</name>

<t>Consider an E2E IP multicast tree
with part of it tunneled over BIER. The flow overlay signaling can be PIM,
which is both the signaling protocol for the E2E tree and the overlay
signaling protocol for tunneling over BIER <xref target="I-D.ietf-bier-pim-signaling"/>.</t>

<t>The above applies to IP multicast in both the default/global routing instance
and in VRFs in case of MVPN, and it replaces PIM-MVPN <xref target="RFC6037"/>
<xref target="RFC6513"/> in this context.</t>

<t>Similarly, an E2E mLDP tree can have part of it tunneled over BIER. In this
case, the flow overlay signaling is mLDP as specified in <xref target="I-D.ietf-bier-mldp-signaling-over-bier"/>.</t>

<t>Note that, "tunnel segmentation" is originally documented in BGP-MVPN (<xref target="seg"/>)
and it refers to that a PE-PE multicast provider tunnel can be instantiated
with different types/instances of tunnels in different ASes/regions.
Strictly speaking, an IP multicast tree going over different tunnels in
different regions is different from the MVPN "tunnel segmentation". However,
in the rest of the document we use "tunnel segmentation" for both situations.</t>

</section>
<section anchor="flow-overlay-signaling-and-tunnel-segmentation"><name>Flow Overlay Signaling and Tunnel Segmentation</name>

<t>In case of BGP-MVPN as overlay signaling (for any kind of tunnels -
see <xref target="mvpn"/>) with tunnel segmentation, the segmentation points maintain
overlay state in the form of I-PMSI A-D routes that are for all flows
or S-PMSI A-D routes for specific flows,
instead of overlay (e.g., IP) multicast tree state.</t>

<t>In case of PIM/mLDP as BIER flow overlay signaling (<xref target="pimbier"/>), when the
BIER domain is divided into multiple sub-domains for segmentation purpose,
the overlay state that the segmentation points maintain is the overlay
multicast tree state itself (i.e., IP multicast tree state or mLDP tree state).</t>

</section>
</section>
<section anchor="overall-considerations-for-multicast-scaling"><name>Overall Considerations for Multicast Scaling</name>

<t>With all the background laid out above, we have the following observations
and considerations.</t>

<section anchor="observations"><name>Observations</name>

<t>For a massive number of flows to reach a massive number of receivers,
the best solution is IP multicast (<xref target="ip"/>) carried over tunnels (<xref target="tunnel"/>).</t>

<t>With massive number of receivers and a large span of an E2E
network, an E2E multicast overlay flow may need to be carried by multiple
tunnels/segments of different types or instances in different parts of the E2E
network (<xref target="tunnel"/>, <xref target="seg"/>).</t>

<t>Even if BIER/BIER-TE/CGM2 is supported on all devices E2E, it may be impractical
to encode all BFERs or BIER-TE/CGM2 replication branches in a single BitString
(flat or recursive), and sending multiple copies is just not efficient hence
undesired or impractical. Tunnel
segmentation needs to be used so that different sub-domains can be used in
different regions of the E2E network, and that requires the overlay
state/signaling at the segmentation points.</t>

<t>However, the segmentation points may become the scaling bottleneck due to
the overlay state/signaling. That may be mitigated by solutions described
below.</t>

</section>
<section anchor="considerations"><name>Considerations</name>

<t>As observed above, to massively scale multicast in both dimensions (number
of receivers and number of flows) and over a vast network, IP multicast
over underlay tunnel segments
is needed. This section focuses on how to reduce the number of underlay tunnels
and how to scale segmentation points.</t>

<section anchor="reduce-number-of-underlay-tunnels-or-amount-of-tunnel-binding-signaling"><name>Reduce Number of Underlay Tunnels or Amount of Tunnel Binding Signaling</name>

<t>As discussed in <xref target="mvpn"/>, underlay tunnels can be reduced by use of following:</t>

<t><list style="symbols">
  <t>Inclusive tunnels</t>
  <t>Tunnel aggregation</t>
  <t>Per-region aggregation</t>
</list></t>

<t>Notice that while they all reduce the number of underlay tunnels (which is
useful, otherwise the underlay network need to maintain more tunnel state
unless BIER/BIER-TE/CGM2 is used),
tunnel aggregation does not reduce the overlay signaling of binding between
tunnel and overlay flows.</t>

<t>Therefore, if segmented selective tunnels are used, or if there are just too
many VPNs
to support (such that even the number of I-PMSI A-D routes is too large),
segmentation point scaling is still needed as discussed below.</t>

<t>On the other hand, the trend of multicast application seems to be that
it is mainly for large scale delivery of real-time high rate data that
most likely need to be sent everywhere, e.g., broadcasting of World Cup Soccer
or Chinese Spring Festival Gala. In this case inclusive tunnels in a few VPNs
may very well suffice.</t>

<t>Note that, while <xref target="RFC6514"/> and <xref target="RFC6625"/> specifies that the source/group
length fields of S-PMSI A-D routes to be either 0 (wildcard) or 32/128
(IPv4/IPv6 host address), it could be extended to have lengths between
0 and 32/128. With that, a set of overlay flows not only can share the
same underlay tunnel but can also share the same S-PMSI A-D route.</t>

<t>Part of an underlay tunnel itself can be stacked on top of another multicast
tunnel. When multiple upper tunnels stack on top of the same lower tunnel,
the lower tunnel's domain does not need to maintain state for the upper
tunnels. Examples include mLDP over RSVP-TE/mLDP/other P2MP tunnels
(<xref target="RFC7060"/>, mLDP over MVPN <xref target="RFC6514"/> where mLDP is the C-multicast protocol,
and mLDP over BIER <xref target="I-D.ietf-bier-mldp-signaling-over-bier"/>.</t>

</section>
<section anchor="scaleup"><name>Scale Up Segmentation Points</name>

<t>The scaling burden on a segmentation point falls on both control plane
(for overlay signaling)
and forwarding plane. While a typical router implementation supports much
lower number of multicast flows than unicast ones, it does not mean the
multicast scale cannot be increased.</t>

<section anchor="forwarding-plane-scaling"><name>Forwarding Plane Scaling</name>

<t>A modern edge router can handle hundreds of thousands if not millions
of (unicast) routes in the forwarding plane. For multicast forwarding,
the scaling property is actually similar to the unicase case -
the only difference is that the lookup key in case of IP multicast is
(source, group/destination)
pair instead of just a destination address. The forwarding action
is based on the forwarding instructions (e.g. a set of replication branches),
referred to as forwarding nexthop associated with the route that is looked up.</t>

<t>On the other hand, while many multicast routes can have the same
forwarding nexthop just like in unicast case, on segmentation points
the multicast forwarding nexthop sharing is limited as explained in
Section 2.1 of <xref target="I-D.zzhang-bess-mvpn-evpn-segmented-forwarding"/>.</t>

<t>Therefore, a modern router designed with multicast scaling in
consideration (e.g. has enough memory for multicast state especially more
unshared forwarding nexthop) should be able to handle hundreds of thousands
if not millions of multicast flows.</t>

<t>Of course, scaling must always be considered together with convergence.
For example, when something happens, how fast can the FIB state be updated.
This is further discussed below.</t>

</section>
<section anchor="control-plane-scaling"><name>Control Plane Scaling</name>

<t>While it might be challenging for some PIM <xref target="RFC7761"/> implementations to
handle hundreds of thousands of multicast flows due to the
following reasons:</t>

<t><list style="symbols">
  <t>Periodic refreshes due to soft state nature</t>
  <t>Potentially huge number of impacted flows when an interface goes up/down</t>
</list></t>

<t>Overlay multicast scaling does not have to rely on PIM (so no soft state
refresh problem) and is less prone to topology changes.</t>

<t>Taking the example of BGP-MVPN <xref target="RFC6514"/> as the overlay protocol,
overlay multicast interest is signaled with BGP-MVPN type-6/7
(C-Multicast Auto-Discovery or A-D) routes, augmented with type-4 (Leaf A-D)
routes in case of selective IR/BIER tunnels. None of the above-mentioned
scaling concerns are applicable here.</t>

<t>It is possible that an underlay topology change could impact some underlay
tunnels. A good implementation should be able to minimize the impact to
the overlay forwarding state. In the BIER case, no overlay forwarding
state needs to be changed at all.</t>

</section>
</section>
<section anchor="scaleout"><name>Scale out Segmentation Points</name>

<t>Consider that between two segmentation regions there are 2N segmentation points
(Regional Border Routers, or RBRs) in parallel. They are divided into N pairs
where each pair is responsible for 1/N of overlay flows (a pair is used for
redundancy purposes). By increasing the number N, we can scale out the
segmentation points (whether scale up is done at the same time or not).</t>


</section>
</section>
</section>
<section anchor="summary"><name>Summary</name>

<t>As discussed above, existing and in-development multicast solutions, when
implemented properly and deployed with appropriate combinations, can scale
very well to massive number of multicast flows with massive number of
receivers over a vast network:</t>

<t><list style="symbols">
  <t>Use IP multicast to scale for massive number of receivers (<xref target="ip"/>)</t>
  <t>Use tunneling to scale for massive number of flows (<xref target="tunnel"/>)</t>
  <t>Use inclusive tunnels and/or aggregation to reduce the number of underlay tunnels needed (<xref target="mvpn"/>)</t>
  <t>Use BIER to achieve efficient replication without requiring per-tree state (<xref target="bier"/>)</t>
  <t>Use BIER-TE/CGM2 to achieve per-flow traffic steering without requiring
per-tree state (<xref target="bierte"/>, <xref target="cgm2"/>)</t>
  <t>Use tunnel segmentation to scale for a vast network that may deploy
different types/instances of tunnels in different regions (<xref target="seg"/>)</t>
  <t>Scale up (<xref target="scaleup"/>) and scale out (<xref target="scaleout"/>) tunnel segmentation points</t>
</list></t>

<t>It's worth pointing out that the above is independent of IPv4/IPv6 or
MPLS/SRv6 data planes.</t>


</section>


  </middle>

  <back>



    <references title='Informative References'>

&RFC1112;
&RFC7761;
&RFC5015;
&RFC6388;
&RFC4875;
&I-D.ietf-pim-sr-p2mp-policy;
&RFC7988;
&RFC8279;
&I-D.ietf-bier-te-arch;
&I-D.eckert-bier-cgm2-rbs;
&I-D.chen-pim-srv6-p2mp-path;
&RFC6514;
&RFC7524;
&RFC6037;
&RFC6513;
&I-D.ietf-bess-evpn-bum-procedure-updates;
&RFC7716;
&RFC8556;
&I-D.ietf-bier-pim-signaling;
&I-D.ietf-bier-mldp-signaling-over-bier;
&RFC6625;
&RFC7060;
&I-D.zzhang-bess-mvpn-evpn-segmented-forwarding;


    </references>



  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA5V8W3MbN7b1O34Fyn4YaoqkbCWxM3r5Ituyo1NjRyUpM1Vz
6ntoskGyR2Q3T19EKy7997P2BWig2fLkPCRlsdHAxsa+rH1Bz2Yzs6zyolyf
265dzX42pi3arTu3n7ttWyyzprW3y2yLAfZ9VTZF7uqsLfAvky0WtXsYGWjy
allmO8yR19mqnf3xxyYr17N9sZvt/NhZI2Nny2TS2atXZpm1bl3Vj+e2KFeV
MU2blXm2rUpM+Ogasy/O7X+31XJqm6pua7dq8K/HnfxjWe12rmyb/29Msa/P
bVt3TXv26tXfXp2ZrHbZua2rriUiD9gxSDL3h3MbyLKLwtVWaTPmpf12fr6o
iq2r91uQZRfL/esfn4zJunZTYXpj7Qz/WZDanNt/ze2/aKv8i3AAf1ebroh+
r2os/F9dWeyx0hfXHqr6vuEnbpcV23Mr7Prl3zJkXrrWpMvczO019nK/ida5
KZpNttjED3ih90WzrOLZ62LPQ35Z0pM5+DWY/de5fVfk62pbRNP/WlW7rEwe
8PRfqvsii6ff8MD5Qgb+UtLzkUVGOeUgYwM+/evuMmENPZ3/QSN/+aN1NPF8
WRozm81stmjaOluCWXebomHZqXcsVdnWQiI7kgubY9dd07jGPmR1UXVNdPZ6
7DZr9m7ZNlMoxo6Y1eCt1crV9H4/unXLTVltq3WBAYei3ViMpBdtW/mppgai
a5tuvXZN29jMrl0JUd/abL+vq2y5sdWKRHZRlA7jqm3HWuBncP1yc9mVko9B
lveYu73D/0AYJrq6fvjxFP97A97Zz9d/vz29vcEfedZmFuJbumYurNoVeb51
JN4fwsa8kl/I5o25uo40+9u3/3fz8f3r16/Pnp5sVi83BbbfdrUDDQ/V9gEs
gHjglUCwWUPR9qc5Nl6UfAw2y3OwCLvbZO0Ue1y7dgMdYN7hX9h/Vy+dHza1
BW2sWIG/JosZXzsHLa5asCxr+c2PRY0Hv1Z7ewPtxpyTj7/enPBC8cwFJmpb
sB1vttU82h8kZ7UqlsRUiM0hq3OaHDZnze/TklN72BQ4MQxpH/d4bbt9NI1r
bbe3i0d7XVewSdXWXkWH0i8wub76fKJsfPv2zeunJ5zFVYnZ6VRVOqfWkUxM
hNypZRae2H1W1LQsLJyra6YdorTaVgccNFhD1M3tnSdKZ+Hnsh+MfrEvHDjA
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
B/1mpHyOO71q8b+ZJ7pXdVwAAA==

-->

</rfc>

