<?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 comments="yes"?>

<rfc ipr="trust200902" docName="draft-eckert-bier-rbs-00" category="exp" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="bier-rbs">Recursive BitString Structure (RBS) Addresses for BIER and MSR6</title>

    <author initials="T." surname="Eckert" fullname="Toerless Eckert" role="editor">
      <organization>Futurewei Technologies USA</organization>
      <address>
        <postal>
          <street>2220 Central Expressway</street>
          <city>Santa Clara</city>
          <code>CA 95050</code>
          <country>USA</country>
        </postal>
        <email>tte@cs.fau.de</email>
      </address>
    </author>
    <author initials="M." surname="Menth" fullname="Michael Menth">
      <organization>University of Tuebingen</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>menth@uni-tuebingen.de</email>
      </address>
    </author>
    <author initials="X." surname="Geng" fullname="Xuesong Geng">
      <organization>Huawei 2012 NT Lab</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>gengxuesong@huawei.com</email>
      </address>
    </author>
    <author initials="X." surname="Zheng" fullname="Xiuli Zheng">
      <organization>Huawei 2012 NT Lab</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>zhengxiuli@huawei.com</email>
      </address>
    </author>
    <author initials="R." surname="Meng" fullname="Rui Meng">
      <organization>Huawei 2012 NT Lab</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>mengrui@huawei.com</email>
      </address>
    </author>
    <author initials="F." surname="Li" fullname="Fengkai Li">
      <organization>Huawei 2012 NT Lab</organization>
      <address>
        <email>lifengkai@huawei.com</email>
      </address>
    </author>

    <date year="2022" month="October" day="24"/>

    
    <workgroup>BIER</workgroup>
    

    <abstract>


<t>This memo introduces a compact data-structure representation of multicast trees
called "Recursive Bitstring Structure" (RBS) and its use for (stateless)
forwarding of packets that include this structure in their
header. It is intended as an alternative to "flat" bitstring addresses
as used in BIER and BIER-TE or possible forwarding plane variations such as MSR6.
RBS aims to improve performance and scalability over flat bitstrings and simplify
operations.</t>

<t>Operations is simplified because RBS does not require the use, management and optimization
of network-wide configured address spaces BIFT-ID and SI and because one common RBS mechanism
can replace flat bitstring addresses for both shortest-path forwarding and tree engineered
forwarding. It intends to improve performance by allowing multicast to sparse set of
receivers in larger networks with fewer packets and it intends to improve scalability
by requiring less BIFT state on routers.</t>



    </abstract>



  </front>

  <middle>


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

<t>This memo introduces a compact data-structure representation of multicast trees
called "Recursive Bitstring Structure" (RBS) and its use for (stateless)
forwarding of packets that include this structure in their
header. It is intended as an alternative to "flat" bitstring addresses
in BIER and BIER-TE or their possible variations such as MSR6.
RBS aims to improve performance and scalability over flat bitstrings and simplify
operations.</t>

<t>Operations is simplified because RBS does not require the use, management and optimization
of network-wide configured address spaces BIFT-ID and SI and because one common RBS mechanism
can replace flat bitstring addresses for both shortest-path forwarding and tree engineered
forwarding.</t>

<t>This document calls the bitstring addressing used today in BIER and BIER-TE "flat" solely as
simple to remember distinction to the "recursive" bitstring addressing used by RBS.</t>

<t>The document is structured as follows:</t>

<t>The introduction reviews the aspect of BIER and BIER-TE that RBS intends to improve on
to then give an introduction to RBS.</t>

<t>The architecture section describes the models how RBS can integrate into comprehensive forwarding
architectures such as those defined by BIER/BIER-TE.</t>

<t>The Overview section explains RBS address encoding and forwarding based on an example</t>

<t>The Specification section defines normative requirements of RBS including forwarding Pseudocode.</t>

<t>The section on using RBS with BIER and RFC8296 encapsulation describes proposed normative
aspects when applying RBS to BIER.</t>

<t>Appendices discuss High-speed implementation considerations and current insight into
how well RBS can help to reducing the number of of packet required to be sent with RBS.</t>

<section anchor="bier-review"><name>BIER review</name>

<t>In BIER, each bit of a bitstring indicates a BIER egress router (BFER). When using
<xref target="RFC8296"/> encapsulation, BitString can have a BitStringLength (BSL) of 2^N, N=6...12.
Routers may not be able to support up to 2^12=496 long BitStrings. The most common
BSL assumed to be supported is 256.</t>

<t>When a network has a number M of BFER, M &gt;&gt; BSL support by routers in the network,
it it necessary to use multiple "sets" of BitStrings across the network to address all BFER.
Each set has a SetIdentifier (SI). BFER are identified in BIER via their BFR-id which is
(SI &lt;&lt; N | 2^BP ), where BP is the BitPosition, the bit in the BitString used for this BFER:
the lower N bits of the BFR-id are the BP of the BFER and the high order bits the SI.
In <xref target="RFC8279"/> this is also shown as (SI:BitString), where the BitString has only the BP of
the BFER set.</t>

<t>When a network requires k SI to address all BFER, then a message that needs to
be sent to k arbitrary BFER in the network may require to send as many as k BIER packets -
when each of the k BFER has a different SI. The total number of packets required for
any possible set of receiver BFER is a stochastic matter. At best, BIER can reduce the
number of packet required to reach M BFER to M/BSL.</t>

<t>Intelligent allocation of BFR-id can lead to a more efficient delivery of
BIER traffic. Consider a network requiring k SI and random allocation of BFR-id so that
every edge area of the network has at least one BFR in each of the k BFR. This makes
it more likely that up to k BIER packets need to be sent into such an area to reach
subsets of BFR in it. Compare this to an allocation that attempts to minimize the
number of SI used by BFR in each individual area. This will result in fewer BIER
packets required to reach subsets of BFR in such an area.</t>

</section>
<section anchor="bier-te-review"><name>BIER-TE review</name>

<t>Whereas BIER relies on hop-by-hop routing to direct its traffic, Tree Engineering
for BIER (BIER-TE, <xref target="RFC9262"/>) is based on explicit source routing by encoding the whole
delivery tree in a BitString. This is done to support similar type of requirements
as those that require explicit source routing in IP unicast, also called traffic steering,
such as SRH in IPv6, but also multicast specific ones, such as lowest cost trees (so-called
Steiner trees).</t>

<t>BIER-TE was designed to reuse the packet encodings of BIER and as much as feasible of
the BIER forwarding plane. It therefore relies on the same type of flat BitStrings (and
their addressing via SI) as BIER.  In BIER-TE, each bit of a BitString indicates an adjacency.
In the most simple case those adjacencies are subnet adjacent BFR for the edges of the multicast
tree which are called forward_connected() in BIER-TE, and local_decap() adjacencies for the
leaves of the tree - effectively its BFER.</t>

<t>Because BIER-TE needs to represent the whole delivery tree and not only its leaves/BFER
in the BitString, intelligent and efficient allocation of BP is even more important than
in BIER, and a significant number of BP in every SI must be allocated to transit hops of
the network to allow defining BIER-TE trees across those transit hops. In large networks this
may also lead to the need to allocate BP across multiple SI for the same transit hops and
thus a much larger total number of BP required to represent a smaller number of BFER and
transit hop adjacencies - and in result also more BIER-TE packets required for the
same message to send to the larger number of different SI required.</t>

</section>
<section anchor="rbs-introduction"><name>RBS introduction</name>

<t>One way to understand the Recursive BitString Structure address is to think of it as an
evolution of BIER-TE flat bitstrings. Every single BFR processing a BIER-TE bitstring
only needs to look at a small subset of the BP in it: those BP that indicate adjacencies of
this BFR. All the other bits are ignored because they are adjacencies on other BFR.</t>

<t>Consider we decompose a BIER-TE BitString into separate smaller bitstrings - one each for
every BFR on the multicast tree that we want to encode. The BitString for each BFR now
only needs to have a BP for each subnet adjacent (neighbor) BFR. And an equivalent to the
local_decap() BP to indicate to the BFR itself to be a leaf/BFER on the multicast tree itself.</t>

<t>With this step, RBS eliminates the complex optimization problems resulting from the
flat BitStrings: There is no need anymore for a network wide SI address space and optimizing
which adjacencies and BFR-id to put into which SI. There is no hard partitioning by SI:
A tree can span an arbitrary subset of BFR. Just the total encoded size of the tree needs
to fit into an appropriate maximum header field size. And if the target tree is too large,
then it can arbitrarily be broken up into overlapping subtrees - all originating at the
sender, but each only delivering to a subset of BFER small enough so the encoded tree
fits into the target packet header size. And none of these optimization have to happen
at network configuration time by seeding optimized BIFT, but it happens when building
an RBS address on on ingress router or with the help of a controller.</t>

<t>The RBS encoding is called recursive, because it consists of such a local BitString
for the first BFR of the tree (BFIR), followed by a sequence of RBS sub-trees, one for
each adjacent BFR whose BP is set in the first BFR BitString. Whenever a packet is
forwarded to such an adjacent BFR, the RBS addressing information is appropriately
updated such that that BFR will only have to examine the local BitString for that BFR.
In result, every BFR in RBS only has to examine - like in BIER and BIER-TE a single
BitString. What really changes is that instead of clearing bits in a flat bitstring as
done in BIER/BIER-TE, every hop advances the decoding offset into the RBS address structure to look
at a different, small local BitString.</t>

</section>
</section>
<section anchor="arch"><name>RBS Network Architecture</name>

<section anchor="controller-centric"><name>Controller centric</name>

<t>RBS may simply use the same network architecture as BIER-TE
as shown in <xref target="FIG-ARCH"/>, and operations of the Controller 
is significantly simplified because the complex allocation of
BP across SI, especially the allocation of BP for transit
adjacencies is eliminated.</t>

<figure title="RBS Architecture with Controller" anchor="FIG-ARCH"><artwork><![CDATA[
                    Optional
   |<-IGMP/PIM->  multicast flow   <-PIM/IGMP->|
                     overlay

                    [Controller] 
control plane   .  ^      ^     ^   
               .  /       |      \     BIFT configuration
     ..........  |        |       |    per-flow RBS setup
    .            |        |       |   
   .             v        v       v
Src (-> ... ) -> BFIR-----BFR-----BFER -> (... ->) Rcvr

                |<----------------->|
             RBS-address forwarding plane

 |<.............. <- RBS domain ---> ...............|

              |<--------------------->|
              Routing underlay (optional)
]]></artwork></figure>

</section>
<section anchor="distributeddecentralized"><name>Distributed/Decentralized</name>

<t>Instead of a controller centric network architecture, RBS also lends itself
to a distributed/decentralized model, similar to the typical deployment model
of BIER, with extensions to a link-state IGP routing protocol.</t>

<t>Every BFR can automatically allocate its BFR neighbors and derive the size
of its local BitString and allocation of BP to each neighbor from it. This
is then signaled via appropriate link-state IGP extensions.</t>

<t>BFIR can derive not only the hop-by-hop paths towards BFER from this IGP information,
but also the necessary local BitString for each BFR on a tree. In the most simple
csae, these paths are the shorted-paths normally calculated by link-state IGP,
but for traffic-engineering purposes, this can easily include all type of
constrained path calculations.</t>

<t>It is this model that would be attractive, when there are no tree engineering /
traffic engineering requirements, but RBS is simply used to replace flat bitstrings
for BIER to simplify its operations and (depending on size / topology of network)
improve its scale / performance.</t>

</section>
<section anchor="host-to-host"><name>Host-to-host</name>

<t>To eliminate the need for an IP Multicast flow overlays and allow
utilization of benefits of bitstring addressing at the application level
(e.g.: eliminating group membership management for the network), the
 RBS domain may extend all the way into Sender/Receiver
hosts. This is possible with BIER/BIER-TE as well, but when the
total number of sender/receiver hosts is for example a factor 10 larger
than the number of BFR in BIER, then the elimination of the network wide
SI/BP allocation issue of BIER/BIER-TE could help to make this model
easier deployable with RBS than with BIER-TE/BIER.</t>

<t>To avoid dependencies against initial operating system level network stack
upgrades on hosts, such deployment option could for example be
introduced by tunneling the RBS packets over UDP to first-hop BFIR/BFER
as well as appropriate routing / controller plane extensions.</t>

</section>
</section>
<section anchor="fwd-overview"><name>Overview</name>

<t>This section gives a more thorough run run-through of the life
of a packet forwarded with an RBS address.</t>

<section anchor="example"><name>Example</name>

<t><xref target="FIG-RBS-Topo1"/> shows the example network topology.
R1 has network connections to R2, R3, R4, R5 (not shown) and R6.
R3 and R4 have connections to R1, R7, R8, R9 and R10.
R9 has connections to R3, R4, and further, not shown routers.
For the purpose of explaining RBS, it is irrelevant whether those
connections are separate L2 point-to-point links or adjacencies on shared LANs.</t>

<t>The example multicast tree encoded as an RBS address utilizing
topology information as explained in <xref target="arch"/> is
R1 -&gt; (R2, R3 -&gt; (R7), R4 -&gt; (R9 -&gt; (...), R10), R6): The packet
originates in the trees root R1, which needs to form the appropriate
packet header with this trees RBS address and replicate the packet to
R2, R3, R4 and R6. R2, R4 and R6 should receive the packet as domain
egress routers. R3 should only replicate the packet to R7, and R7 should
replicate the packet to R9 and R10. R10 should only receive the packet,
R9 should receive the packet and further replicate it to further routers
not shown.</t>

<figure title="Example Topology/RBS tree" anchor="FIG-RBS-Topo1"><artwork><![CDATA[
                +---+
                |R1 | (root)
                +-+-+           
            ...........................
     .......    .           .          .
  ...           .            .          ....
  |             |            |            |
+-v-+         +-v-+        +-v-+ (rcvr/ +-v-+
| R2| (rcvr)  |R3 |(vertex)|R4 | leaf)  |R6 | (rcvr)
+-+-+         +---+        +---+        +---+
                .            .
     .................................
  ...           .         .        .....
  |             |         |            |
+-v-+         +-v-+     +-v-+        +-v-+
|R7 | (recvr) |R8 |     |R9 |(rcvr/  |R10| (rcvr)
+-+-+         +---+     +---+ vertex +---+
                          .
                        .....
                    .... more vertex/leaves...
]]></artwork></figure>

<t>R7, R10 and some MSER behind R9. Given how R7, R8, R8, R10 and
the router behind R9 can be reached via both either R3 and R4, this
tree involves an explicit packet steering and replication (tree engineering)
choice of using R3 instead of R4 to reach R7, and R4 instead of R3
to reach R9, R10 (and routers below R9).</t>

</section>
<section anchor="rbs-bift"><name>RBS-BIFT</name>

<t>Every router has an RBS "Bit Index Forwarding Table" (RBS-BIFT) that defines
which BitPosition (BP) (1..N) indicates which adjacency.
<xref target="FIG-RBS-R1-BIFT"/>, shows the example RBS-BIFT for R1.</t>

<figure title="BIFT on R1" anchor="FIG-RBS-R1-BIFT"><artwork><![CDATA[
+--+-------+----------+
|BP|R Flag | Adjacency|
+--+-------+----------+
| 1|      0|   receive|
+--+-------+----------+
| 2|      0|       R2 |
+--+-------+----------+
| 3|      1|       R3 |
+--+-------+----------+
| 4|      1|       R4 |
+--+-------+----------+
| 5|      0|       R5 |
+--+-------+----------+
| 6|      0|       R6 |
+--+-------+----------+
]]></artwork></figure>

<t>The "receive" adjacency is the BP indicating that the
packet is to be received by the router itself. The (R)ecursive
flag indicates whether the adjacency when set in the BitString
of an RBS address will have a subtree (Recursive Unit, see below)
associated with it.</t>

<t>The absence of the R flag allows for more compact RBS encodings 
or adjacencies that for the purpose of RBS are not used for transit.
In the example, R2, R5 and R6 are connected to R1 but also leaf router in
the topology.  Hence they have R=0 in the RBS-BIFT of R1.</t>

</section>
<section anchor="rbs-address"><name>RBS Address</name>

<t>The RBS address as shown in <xref target="FIG-RBSA"/> consists of 
RU-Length, RU-Offset and RecursiveUnit0. Depending on packet header
encoding, these fields do not need to be encoded sequentially.</t>

<t>A RecursiveUnit (RU) is the unit of data processed by a particular
router Rx on the multicast tree encoded by the RBS address. RU0 is
the RU processed by the root of the tree. An RU consists of
the BitString whose length is the length of the RBS-BIFT of Rx, followed
by (N-1) AddressFields and N RUs. N is the number of BP set in BitString
with R=1 flag set - e.g. which do need an RU in the RBS address.
Each AddressField indicates the length of one RU. 
There are only N-1 AF for N RU because the length of the N'th
RU can be derived by calculation, saving for every router on the
tree one AF field, and therefore resulting in a more compact encoding.</t>

<t>RU-Offset indicates the offset of the current RU from the start of
RU0. '$' in <xref target="FIG-RBSA"/> is the first bit of RU0, and a value of
RU-Offset=0 indicates that the RU starts at '$' - and is therefore RU0.</t>

<t>For every copy of an RBS packet made by a router, RU-Offset and RU-Length
are updated. None of the other fields of the RBS-Address are modified for
RBS forwarding.</t>

<figure title="RBS Address" anchor="FIG-RBSA"><artwork><![CDATA[
       +----------------------+
       | RU-Length            |
       +----------------------+
       | RU-Offset            |
       +----------------------+
       |$ RecursiveUnit0 (RU0)|
       +----------------------+
      .                       .
 .....                         ................
.                                              .
+-----------+-----+     +--------+---+     +----+
| BitString | AF1 | ... | AF(n-1)|RU1| ... |RU N|
+-----------+-----+     +--------+---+     +----+
]]></artwork></figure>

</section>
<section anchor="processing-on-r1-in-the-example"><name>Processing on R1 in the example</name>

<t>In the example, the root of the tree is is R1, so the BitString
of RU0 is as shown in <xref target="FIG-R1"/></t>

<figure title="RU for R1 (RU0)" anchor="FIG-R1"><artwork><![CDATA[
  BitString (of RU0)
 1 2 3 4 5 6 
+-+-+-+-+-+-+-..-+...+...+
|0|1|1|1|0|1|AF1 |RU1|RU2|
+-+-+-+-+-+-+-..-+...+...+
]]></artwork></figure>

<t>When RBS forwarding in a router processes the RBS address, the
length of the BitString is known from the length of the RBS-BIFT.
In the case of R1 it is therefore known to be 6 bits long.</t>

<t>Two of the BP set in the BitString, BP3 for R3 and for R4
have R=1 in the RBS-BIFT of R1, therefore (N-1)=1 AF field must follow
and N=2 RU must follow in the RBS address for RU0 - one for R3,
one for R4.</t>

<t>When R1 creates packet copies to R3 and R4, it will rewrite
RU-Length and RU-Offset accordingly, so that RU-offset will
point to RU1 for the packet towards R3 and to RU2 for the
packet towards R4, and RU-Length indicates the length of RU1
or RU2.</t>

<t>This forwarding process repeats on every hop along the tree.
When a packet copy is made on a BP with R=0, RU-Length is set
to 0. When such a packet copy is received, it indicates that
no further RU lookup is required, and the packet is only
received - same as processing for a receive BU.</t>

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

<section anchor="rbs-address-1"><name>RBS Address</name>

<t>Any RBS router MUST support to parse its RU with AF entries that are 8
bit in size.  Any RBS routers SHOULD support to decode a variable length
AF encoding, where 0XXXXXXX (8-bit length AF field) is used to encode a
7-bit XXXXXXX (0..127) values, and where 1XXXXXXXXXXXX is used to
encode an 12-bit value XXXXXXXXXXX. All values indicate the size of an RU
in bits, therefore allowing up to 4096 bit long RU.</t>

<t>An RBS router MUST support processing the BitString size of its configured RBS-BIFT
(see <xref target="bift-size"/>).</t>

<t>RBS routers MUST support RU-Length and RU-Offset encodings of 12 bits.</t>

</section>
<section anchor="bift-size"><name>RBS-BIFT</name>

<t>An Router must support for its RBS-BIFT to be configured with a number of entries
ranging between min(k,1024), where k is an implementation specific number, no
less than the number of physical interfaces on the router.</t>

<t>The leftmost bit in an RBS RU Bitstrings is RBS-BIFT entry 1.</t>

<t>The type of adjacencies to be supported depend on the encapsulation and
are out of scope.</t>

</section>
<section anchor="rbs-address-creation"><name>RBS address creation</name>

<t>Upon creation of the RBS header with an RBS-Address, RU-Length MUST be 
set to the length of RU0 and RU-offset is set to 0.</t>

</section>
<section anchor="common"><name>Common RBS processing</name>

<t>Whether a header with an RBS address is created/imposed on the root of an
RBS tree or received from another RBS router, encapsulation independent
processing of the packet by RBS forwarding is the same.</t>

<t>Parsing RBS-Address, generating copies and rewriting RU-Length and RU-Offset for
each copy is formally described in <xref target="pseudocode"/></t>

</section>
<section anchor="receiving-rbs-packets"><name>Receiving RBS packets</name>

<t>When a packet copy is received with RU-Length=0, the packet is "received" -
it is passed up the stack to an appropriate receiving entity based on the
encapsulation parameters.</t>

<t>When a packet copy is made for a receive BP, its RU-Length is set to 0 and
the packet is processed as if it was received with RU-Length=0.</t>

</section>
<section anchor="encapsulation-considerations"><name>Encapsulation considerations</name>

<t>The total length of an RBS address is not included in the definition of an
RBS address here. This length is assumed to be provided by some other packet
header field, because it is not required to parse an RBS address itself, but is
only required to parse beyond an RBS address in a packet header by an RBS
unaware parser. The field that carries RU0 may be larger (for example due to
padding) than RU0 itself without problems for the RBS parsing/processing described here.</t>

<t>Additional forwarding rules may be established by specific encapsulations
such as BIER OAM processing steps when using BIER with RFC8296 encapsulation.</t>

<t>Given how the processing of the RBS address describes a naturally loop-free
rewrite operation, no further loop-prevention mechanism is required in packet
processing with RBS addresses, but no harm is done if this is still performed
(on appropriate header TTL fields independent of RBS).</t>

</section>
<section anchor="pseudocode"><name>RBS forwarding Pseudocode</name>

<t>The following RBS forwarding (derived from C language) pseudocode assumes all pointers
(and de-referencing them) are using bit-accurate addresses so that of calculation of
starting bit addresses of address fields and RU in RU0 can be shown with
as simple code as if byte addressing for pointers was used.  byte addressing of
pointers was used. This is NOT supported by C language!</t>

<figure title="RBS forwarding Pseudocode" anchor="FIG-PSEUDOCODE"><artwork><![CDATA[
void ForwardRBS(Packet)
{
  // parse bit accurate addresses of RBS address fields in Packet into
  // RBS.{RULength,RUOffset,RU0}
  RBS = ParseRBSAddress(Packet); 

  if(*(RBS.RULength) == 0) return ReceiveRBS(Packet);
  RU  = RBS.RU0 + *(RBS.RUOffset);
  RUL = *(RBS.RULength);

  BitStringA = RU
  AddressingField =  BitStringA + BIFT.entries;

  // [1] calculate number of R=1 BP set in BitString
  CopyBitString(*BitStringA, *RecursiveBits, BIFT.entries);
  And(*RecursiveBits,*BIFTRecursiveBits, BIFT.entries);
  N = CountBits(*RecursiveBits, BIFT.entries);

  // Start of first RecursiveUnit in RBS address
  // After AddressingField array with 8-bit length fields
  RecursiveUnit = AddressingField + (N - 1) * 8;

  RemainLength = *(RBS.RULength);
  Index = GetFirstBitPosition(*BitStringA);
  while (Index) {
    PacketCopy = Copy(Packet);
    RBSc = ParseRBSAddress(PacketCopy)
    if (BIFT.BP[Index].adjacency == receive)
      *(RBSc.RULength) = 0;
      ReceiveRBS(PacketCopy);
      next;
    }

    If (BIFT.BP[Index].recursive) {
      if(N == 1) {
        RecursiveUnitLength = RemainLength;
      } else {
        RecursiveUnitLength = *AddressingField;
        N--;
        AddressingField += 8;
        RemainLength -= RecursiveUnitLength;
        RemainLength -= 8; // 8 bit of AddressingField
      }
      *(RBSc.RUOffset) = RecursiveUnit - RU0
      *(RBSc.RULength) = RecursiveUnitLength
      RecursiveUnit += RecursiveUnitLength;
    } else {
      *(RBSc.RUOffset) = 0
      *(RBSc.RULength) = 0
      *(MSR6c.SegmentsLeft) -= 1
    }
    SendTo(PacketCopy, BIFT.BP[Index].adjacency)
    Index = GetNextBitPosition(*BitStringA, Index);
  }
}
]]></artwork></figure>

<t>Explanations for <xref target="FIG-PSEUDOCODE"/>.</t>

<t>ForwardRBS(Packet) processes the RBS address independent
of its encapsulation. ParseRBSAddress(Packet) parses the
header of Packet to create a list of bit-accurate pointers to
the elements of an RBS address: RBS.{RULength,RUOffset,RU0}.</t>

<t>BitStringA is the address of the RBS address BitString in Packet.
Other variables use names matching those from the packet header
figures (without " -_").</t>

<t>The BFR local BIFT has a total number of BIFT.entries
addressable BP 1...BIFTentries. The BitString therefore
has BIFT.entries bits.</t>

<t>BIFT.RecursiveBits is a BitString pre-filled by the control
plane with all the BP with the recursive flag set. This is constructed
from the Recursive flag setting of the BP of the BIFT. The
code starting at [1] therefore counts the number of
recursive BP in the packets BitString.</t>

<t>Because the AddressingField does not have an entry for the
last (potentially only) RecursiveUnit, its length has to be calculated
By subtracting the length of the prior N-1 RecursiveUnits from
RULength as received. This is done via variable RemainLength.</t>

<t>For every PacketCopy that is to be forwarded, the RU-Length  and RU-Offset
fields are updated. SendTo(packet,adjacency) takes care of any
encapsulation/architecture specific further rewrites of the packet headers
based on the adjcency of the BP.</t>

</section>
</section>
<section anchor="using-rbs-with-bier-and-rfc8296-encapsulation"><name>Using RBS with BIER and RFC8296 encapsulation</name>

<t>RBS can be used in a BIER domain by introducing as a per-subdomain mode of forwarding,
exactly the same as <xref target="RFC8279"/> (non-TE) BIER and <xref target="RFC9262"/> BIER-TE can co-exist in a BIER.</t>

<t>In BIER deployments, RBS can most easily replace BIER-TE, and using a centralized controller
and therefore simplify and easier scale deployment of tree engineering. RBS should also
be able to replace BIER in networks with link-state routing protocols and reduce the
number of replicated packets in large networks. This requires as aforementioned the
change from hop-by-hop routing to source-routing.</t>

<t>When using BIER, RBS routers are BFR, RBS ingress routers are BFIR, RBS egress routers are BFER.
Routers may support multiple RBS-BIFT through different BIFT-ID or SI. This may be useful
when specific constructs such as slices of the network are only allowed to use a subset
of the adjacencies of the network.</t>

<t>The RBS address is encoded as a binary string concatenating {RULenth,RUOffset,RU0} into the
BitString field in <xref target="RFC8296"/> packet headers.  Without changes to <xref target="RFC8296"/>, the length of this
field has to be a power of 2 sized. The RBS address SHOULD be zero-padded to the size used.</t>

<t>In BIER, the BitStringLength (BSL) expects to indicate different BIFT. When using RBS addresses,
it SHOULD be possible for all supported BSL to refer to the same RBS-BIFT, so that upon
imposition of an RBS-Address the smallest power of 2 BitString size can be used without
duplication of BIFT state on routers.</t>

<t>SendTo() of RBS forwarding pseudocode <xref target="pseudocode"/> needs to take care of any BIER
specific rewrites of the <xref target="RFC8296"/> BIER header, specifically the BIFT-id derived from
the RBS-BIFT adjacency.</t>

<t>TBD: This description does not outline, how much of existing BIER IGP extensions could be
reused with RBS and how.</t>

</section>
<section anchor="using-rbs-with-ipv6-extension-header-encapsulation"><name>Using RBS with IPv6 extension header encapsulation</name>

<t>Solutions for stateless IP multicast have been proposed to the IETF under the name
Multicast Source Routing for IPv6 (MSR6). They are based on putting the stateless multicast
structures into an IPv6 routing extension headers and using per-steering-hop rules according to
or derived from <xref target="RFC8200"/>, Section 4.4 rules.  IPv6 forwarding") for source routing.</t>

<t>SendTo() of RBS forwarding pseudocode <xref target="pseudocode"/> needs to take care of any IPv6
specific rewrites of the IPv6 header (IPv6 Destination address) and IPv6 routing extension
header.</t>

<t>For complete support of IPv6 multicast with <xref target="RFC8200"/> compliant source routing, it
is necessary for the IPv6 routing extension header to not only carry the RBS address information
but also an IPv6 multicast destination address field.</t>

<t><xref target="I-D.eckert-msr6-rbs"/> is a proposed IPv6 extension header design for MSR6 using RBS that
is supporting IPv6 multicast.</t>

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

</section>
<section anchor="acknowledgments"><name>Acknowledgments</name>

<t>This work is based on the design published by Sheng Jiang, Xu Bing, Yan Shen, Meng Rui, Wan Junjie and Wang Chuang {jiangsheng|bing.xu|yanshen|mengrui|wanjunjie2|wangchuang}@huawei.com, see <xref target="CGM2Design"/>.
Many thanks for Bing Xu (bing.xu@huawei.com) for editorial work on the prior variation of this work <xref target="I-D.xu-msr6-rbs"/>.</t>

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

<t>[RFC-editor: please remove]</t>

<t>This document is written in https://github.com/cabo/kramdown-rfc2629 markup language.
This documents source is maintained at https://github.com/toerless/multicast-rbs,
please provide feedback to the bier@ietf.org and/or msr6@ietf.org mailing list and submit an Issue
to the GitHub.</t>

<t>This draft is derived from and supercedes <xref target="I-D.eckert-bier-cgm2-rbs"/> as follows:</t>

<t><list style="symbols">
  <t>Removes larger architectural context (CGM2) and re-focusses on only RBS.</t>
  <t>Add explanation about possible distributed/decentralized control plane via
link-state IGP to complement the central controller based approach.</t>
  <t>Define its procedures independent of specific
architectures such as BIER wih RFC8296 encapsulation or proposed MSR encoding.</t>
  <t>Inherits the RBS specific improvements originally introduced with  <xref target="I-D.eckert-msr6-rbs"/>.
RU-Length and RU-Offset to avoid rewriting complete RBS address with the RU of the next
hop and instead just updating these two indices when forwarding RBS address.</t>
  <t>Adds specific proposed encapsulation details for BIER.</t>
</list></t>

</section>


  </middle>

  <back>


    <references title='Normative References'>





<reference anchor='RFC8279' target='https://www.rfc-editor.org/info/rfc8279'>
<front>
<title>Multicast Using Bit Index Explicit Replication (BIER)</title>
<author fullname='IJ. Wijnands' initials='IJ.' role='editor' surname='Wijnands'><organization/></author>
<author fullname='E. Rosen' initials='E.' role='editor' surname='Rosen'><organization/></author>
<author fullname='A. Dolganow' initials='A.' surname='Dolganow'><organization/></author>
<author fullname='T. Przygienda' initials='T.' surname='Przygienda'><organization/></author>
<author fullname='S. Aldrin' initials='S.' surname='Aldrin'><organization/></author>
<date month='November' year='2017'/>
<abstract><t>This document specifies a new architecture for the forwarding of multicast data packets.  It provides optimal forwarding of multicast packets through a &quot;multicast domain&quot;.  However, it does not require a protocol for explicitly building multicast distribution trees, nor does it require intermediate nodes to maintain any per-flow state. This architecture is known as &quot;Bit Index Explicit Replication&quot; (BIER).  When a multicast data packet enters the domain, the ingress router determines the set of egress routers to which the packet needs to be sent.  The ingress router then encapsulates the packet in a BIER header.  The BIER header contains a bit string in which each bit represents exactly one egress router in the domain; to forward the packet to a given set of egress routers, the bits corresponding to those routers are set in the BIER header.  The procedures for forwarding a packet based on its BIER header are specified in this document.  Elimination of the per-flow state and the explicit tree-building protocols results in a considerable simplification.</t></abstract>
</front>
<seriesInfo name='RFC' value='8279'/>
<seriesInfo name='DOI' value='10.17487/RFC8279'/>
</reference>



<reference anchor='RFC8296' target='https://www.rfc-editor.org/info/rfc8296'>
<front>
<title>Encapsulation for Bit Index Explicit Replication (BIER) in MPLS and Non-MPLS Networks</title>
<author fullname='IJ. Wijnands' initials='IJ.' role='editor' surname='Wijnands'><organization/></author>
<author fullname='E. Rosen' initials='E.' role='editor' surname='Rosen'><organization/></author>
<author fullname='A. Dolganow' initials='A.' surname='Dolganow'><organization/></author>
<author fullname='J. Tantsura' initials='J.' surname='Tantsura'><organization/></author>
<author fullname='S. Aldrin' initials='S.' surname='Aldrin'><organization/></author>
<author fullname='I. Meilik' initials='I.' surname='Meilik'><organization/></author>
<date month='January' year='2018'/>
<abstract><t>Bit Index Explicit Replication (BIER) is an architecture that provides optimal multicast forwarding through a &quot;multicast domain&quot;, without requiring intermediate routers to maintain any per-flow state or to engage in an explicit tree-building protocol.  When a multicast data packet enters the domain, the ingress router determines the set of egress routers to which the packet needs to be sent.  The ingress router then encapsulates the packet in a BIER header.  The BIER header contains a bit string in which each bit represents exactly one egress router in the domain; to forward the packet to a given set of egress routers, the bits corresponding to those routers are set in the BIER header.  The details of the encapsulation depend on the type of network used to realize the multicast domain.  This document specifies a BIER encapsulation that can be used in an MPLS network or, with slight differences, in a non-MPLS network.</t></abstract>
</front>
<seriesInfo name='RFC' value='8296'/>
<seriesInfo name='DOI' value='10.17487/RFC8296'/>
</reference>



<reference anchor='RFC9262' target='https://www.rfc-editor.org/info/rfc9262'>
<front>
<title>Tree Engineering for Bit Index Explicit Replication (BIER-TE)</title>
<author fullname='T. Eckert' initials='T.' role='editor' surname='Eckert'><organization/></author>
<author fullname='M. Menth' initials='M.' surname='Menth'><organization/></author>
<author fullname='G. Cauchie' initials='G.' surname='Cauchie'><organization/></author>
<date month='October' year='2022'/>
<abstract><t>This memo describes per-packet stateless strict and loose path steered replication and forwarding for &quot;Bit Index Explicit Replication&quot; (BIER)  packets (RFC 8279); it is called &quot;Tree Engineering for Bit Index Explicit Replication&quot; (BIER-TE) and is intended to be used as the path steering mechanism for Traffic Engineering with BIER.</t><t>BIER-TE introduces a new semantic for &quot;bit positions&quot; (BPs). These BPs indicate adjacencies of the network topology, as opposed to (non-TE) BIER in which BPs indicate &quot;Bit-Forwarding Egress Routers&quot; (BFERs).  A BIER-TE &quot;packets BitString&quot; therefore indicates the edges of the (loop-free) tree across which the packets are forwarded by BIER-TE. BIER-TE can leverage BIER forwarding engines with little changes. Co-existence of BIER and BIER-TE forwarding in the same domain is possible -- for example, by using separate BIER &quot;subdomains&quot; (SDs). Except for the optional routed adjacencies, BIER-TE does not require a BIER routing underlay and can therefore operate without depending on a routing protocol such as the &quot;Interior Gateway Protocol&quot; (IGP).</t></abstract>
</front>
<seriesInfo name='RFC' value='9262'/>
<seriesInfo name='DOI' value='10.17487/RFC9262'/>
</reference>



<reference anchor='RFC8200' target='https://www.rfc-editor.org/info/rfc8200'>
<front>
<title>Internet Protocol, Version 6 (IPv6) Specification</title>
<author fullname='S. Deering' initials='S.' surname='Deering'><organization/></author>
<author fullname='R. Hinden' initials='R.' surname='Hinden'><organization/></author>
<date month='July' year='2017'/>
<abstract><t>This document specifies version 6 of the Internet Protocol (IPv6). It obsoletes RFC 2460.</t></abstract>
</front>
<seriesInfo name='STD' value='86'/>
<seriesInfo name='RFC' value='8200'/>
<seriesInfo name='DOI' value='10.17487/RFC8200'/>
</reference>




    </references>

    <references title='Informative References'>




<reference anchor='I-D.eckert-msr6-rbs'>
   <front>
      <title>Recursive Bitstring Structure (RBS) for Multicast Source Routing over IPv6 (MSR6)</title>
      <author fullname='Toerless Eckert' initials='T. T.' surname='Eckert'>
         <organization>Futurewei Technologies USA</organization>
      </author>
      <author fullname='Xuesong Geng' initials='X.' surname='Geng'>
         <organization>Huawei 2012 NT Lab</organization>
      </author>
      <author fullname='Xiuli Zheng' initials='X.' surname='Zheng'>
         <organization>Huawei 2012 NT Lab</organization>
      </author>
      <author fullname='Rui Meng' initials='R.' surname='Meng'>
         <organization>Huawei 2012 NT Lab</organization>
      </author>
      <author fullname='Fengkai Li' initials='F.' surname='Li'>
         <organization>Huawei 2012 NT Lab</organization>
      </author>
      <date day='11' month='July' year='2022'/>
      <abstract>
	 <t>   This document defines an encoding and corresponding packet processing
   procedures for native IPv6 multicast source routing (MSR6) using a
   so-called &quot;Recursive Bitstring&quot; (RBS) address structure.

   The RBS address structure encodes the source-routed multicast tree as
   a tree of bitstrings.  Each router on the tree only needs to examine
   and perform replication for the one bitstring destined for it.

   The MSR6/RBS IPv6 extension header encoding and processing is modeled
   after that of unicast source routing headers, RFC6554 and RFC8754,
   and shares all elements that can be shared.  To support the RBS
   structure, it is replacing the &quot;Segments Left&quot; pointer to the next
   segment with two fields to point to the next sub-tree to parse.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-eckert-msr6-rbs-00'/>
   <format target='https://www.ietf.org/archive/id/draft-eckert-msr6-rbs-00.txt' type='TXT'/>
</reference>


<reference anchor='I-D.xu-msr6-rbs'>
   <front>
      <title>RBS(Recursive BitString Structure) for Multicast Source Routing over IPv6</title>
      <author fullname='Bing Xu' initials='B.' surname='Xu'>
         <organization>Huawei</organization>
      </author>
      <author fullname='Xuesong Geng' initials='X.' surname='Geng'>
         <organization>Huawei</organization>
      </author>
      <author fullname='Toerless Eckert' initials='T. T.' surname='Eckert'>
         <organization>Futurewei Technologies</organization>
      </author>
      <date day='30' month='March' year='2022'/>
      <abstract>
	 <t>   This document defines a new type of segment: End.RBS, and the
   corresponding packet processing procedures over the IPv6 data plane
   for the MSR6(Multicast Source Routing over IPv6) TE solutions.


	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-xu-msr6-rbs-01'/>
   <format target='https://www.ietf.org/archive/id/draft-xu-msr6-rbs-01.txt' type='TXT'/>
</reference>


<reference anchor='I-D.eckert-bier-cgm2-rbs'>
   <front>
      <title>Carrier Grade Minimalist Multicast (CGM2) using Bit Index Explicit Replication (BIER) with Recursive BitString Structure (RBS) Addresses</title>
      <author fullname='Toerless Eckert' initials='T. T.' surname='Eckert'>
         <organization>Futurewei Technologies USA</organization>
      </author>
      <author fullname='Bing Xu' initials='B.' surname='Xu'>
         <organization>Huawei Technologies (2012Lab)</organization>
      </author>
      <date day='9' month='February' year='2022'/>
      <abstract>
	 <t>   This memo introduces the architecture of a multicast architecture
   derived from BIER-TE, which this memo calls Carrier Grade Minimalist
   Multicast (CGM2).  It reduces limitations and complexities of BIER-TE
   by replacing the representation of the in-packet-header delivery tree
   of packets through a &quot;flat&quot; BitString of adjacencies with a
   hierarchical structure of BFR-local BitStrings called the Recursive
   BitString Structure (RBS) Address.

   Benefits of CGM2 with RBS addresses include smaller/fewer BIFT in
   BFR, less complexity for the network architect and in the CGM2
   controller (compared to a BIER-TE controller) and fewer packet copies
   to reach a larger set of BFER.

   The additional cost of forwarding with RBS addresses is a slightly
   more complex processing of the RBS address in BFR compared to a flat
   BitString and the novel per-hop rewrite of the RBS address as opposed
   to bit-reset rewrite in BIER/BIER-TE.

   CGM2 can support the traditional deployment model of BIER/BIER-TE
   with the BIER/BIER-TE domain terminating at service provider PE
   routers as BFIR/BFER, but it is also the intention of this document
   to expand CGM2 domains all the way into hosts, and therefore
   eliminating the need for an IP Multicast flow overlay, further
   reducing the complexity of Multicast services using CGM2.  Note that
   this is not fully detailed in this version of the document.

   This document does not specify an encapsulation for CGM2/RBS
   addresses.  It could use existing encapsulations such as [RFC8296],
   but also other encapsulations such as IPv6 extension headers.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-eckert-bier-cgm2-rbs-01'/>
   <format target='https://www.ietf.org/archive/id/draft-eckert-bier-cgm2-rbs-01.txt' type='TXT'/>
</reference>


<reference anchor="CGM2Design" target="https://github.com/BingXu1112/CGMM/blob/main/Novel%20Multicast%20Protocol%20Proposal%20Introduction.pptx">
  <front>
    <title>Novel Multicast Protocol Proposal Introduction</title>
    <author initials="S." surname="Jiang" fullname="Sheng Jiang">
      <organization></organization>
    </author>
    <author initials="B. (Robin)" surname="Xu" fullname="Bing (Robin) Xu">
      <organization></organization>
    </author>
    <author initials="Y." surname="Shen" fullname="Yan Shen">
      <organization></organization>
    </author>
    <author initials="M." surname="Rui" fullname="Meng Rui">
      <organization></organization>
    </author>
    <author initials="W." surname="Junjie" fullname="Wan Junjie">
      <organization></organization>
    </author>
    <author initials="W." surname="Chuang" fullname="Wang Chuang">
      <organization></organization>
    </author>
    <date year="2021" month="October" day="10"/>
  </front>
</reference>


    </references>


<section anchor="high-speed-implementation-considerations"><name>High-speed implementation considerations</name>

<t>RBS was designed with high-speed, low-cost forwarding hardware and possible backward compatibility
with potentially existing flat-bitstring look-up and replication hardware in mind.</t>

<t>Because RBS requires to only perform replication on each router on a single
bitstring, it could be possible to reuse existing bitstring replication hardware,
or design future hardware such that it supports BIER, BIER-TE and RBS bitstrings.</t>

<t>The calculations required to process an RBS header are the added complexity of
processing RBS packets are the additional new cost of RBS. It has to be seen
whether / how these are feasible at the low-end of high-speed forwarding plane
hardware, especially P4. Further optimizations to reduce calculations are possible,
but at the expense of compression of the RBS address.</t>

<t>RBS also minimizes write-cycles to packet memory by only requiring per-packet-copy
rewrites of the RU-Length and RU-Offset fields. With mandatory encoding of 12
bits each, these are 24 bits to rewrite and should therefore be causing minimal
cost with today's high-speed forwarding hardware.</t>

</section>
<section anchor="complete-rbs-example"><name>Complete RBS example</name>

<t>TBD: Need to rewrite more elaborate multi-hop example from <xref target="I-D.eckert-bier-cgm2-rbs"/> with RU-Offset, RU-Length.</t>

</section>
<section anchor="replication-efficiency-performance-considerations"><name>Replication efficiency performance considerations</name>

<t>This section discusses in more detail the number of packets
required to reach a set of receivers when using flat bitstrings
vs. RBS addresses. The first sub-section gives a hopefully
simple to understand theoretical topology example, the second
sub-section presents initial results of a real-world, large-network
simulation.</t>

<section anchor="reducing-number-of-duplicate-packet-copies"><name>Reducing number of duplicate packet copies</name>

<t>If the total size of an RBS encoded delivery tree is
larger than a supported maximum RBS header size, then
the controller simply needs to divide the tree
into multiple subtrees, each only addressing a part
of the BFER (leaves) of the target tree and pruning
any unnecessary branches.</t>

<figure title="Simple Topology Example" anchor="FIG-SMPLT"><artwork><![CDATA[
             B1
            /  \
      B2    B3
        /   \  /  \
       /     \/    \
     B4      B5     B6
   /..|     /  \    |..\
B7..B99  B100..B200 B201...B300
]]></artwork></figure>

<t>Consider the simple topology in <xref target="FIG-SMPLT"/> and a multicast packet
that needs to reach all BFER B7...B300. Assume that
the desired maximum RBM header size is such that a
RBS address size of &lt;= 256 bits is desired. The 
controller could create an RBS address
B1=&gt;B2=&gt;B4=&gt;(B7..B99), for a first packet, an
RBS address B1=&gt;B3=&gt;B5=&gt;(B100..B200) for a second
packet and a third RBS address B1=&gt;B3=&gt;B6=&gt;B201...B300.</t>

<t>The elimination of larger BIFT state in BFR
through multiple SI in BIER/BIER-TE does come at
the expense of replicating initial hops of a tree
in RBS addresses, such as in the example the encoding
of B1=&gt;B3 in the example.</t>

<t>Consider that the assignment of BFIR-ids with BIER
in the above example is not carefully engineered. It is
then easily possible that the BFR-ids for B7..B99 are not
sequentially, but split over a larger BFIR-id space.
If the same is true for all BFER, then it is possible
that each of the three BFR B4,B5 and B6 has attached
BFER from three different SI and one may need to send
for example three multiple packets to B7 to
address all BFER B7..B99 or to B5 to address all
B100..B200 or B6 to address all B201...B300. These
unnecessary duplicate packets across B4, B5 or B6 are
because of the addressing principle in BIER and are not
necessary in RBS, as long as the total length of an RBS
address does not require it.</t>

</section>
<section anchor="analysis"><name>Statistical Analysis of performance gain</name>

<t>TBD: Comparison of number of packets/header sizes required
in large real-world operator topology between BIER/BIER-TE and RBS.
Analysis: Gain in dense topology</t>

<t>Topology description:
1. Typical topology of Beijing Mobile in China.
2. All zones dual homing access to backbone.
3. Core layer: 4 nodes full mesh connected
4. Aggregation layer: 8 nodes are divided into two layers, with full interconnection between the layers and dual homing access to the core layer on the upper layer.
5. Aggregation rings: 8 rings, 6 nodes per ring
6. Access rings: 3600 nodes, 18 nodes per ring</t>

<figure title="Validation Topology" anchor="FIG-TOPO"><artwork><![CDATA[
                  ┌──────┐          ┌──────┐
                  │      ├──────────┤      │
                 /└──────┘\        /└──────┘\   Interconnected
                /   / | \  \      /  / | \   \   BackBone
       ┌──────┐/   /  |  \  \    /  /  |  \   \┌──────┐
       │      │   /   |   \  \  /  /   |   \   │      │
       └───┬──┘  /    |    \  \/  /    |    \  └─┬────┘
           │    /     |     \ /\ /     |     \   │
        ┌──┴───┐      |      /  \      |      ┌──┴───┐
        │      │------------+ \/ +------------│      │
        └──────┘\     |       /\       |     /└──────┘
                 \    |      /  \      |    /
                  \ ┌──────┐/    \┌──────┐ /
                   \│      ├──────┤      │/
                    └───┬──┘      └───┬──┘
                        │   \     /   │  Dual Return Access
                        │    \   /    │
                        │     \ /     │
                        │      /      │
                        │     / \     │
                      ┌─┴───┐/   \┌───┴─┐
                      │     ├─────┤     │
                      └─┬───┘\   /└───┬─┘
                        │     \ /     │  Core Layer
                        │      /      │
                        │     / \     │
                      ┌─┴───┐/   \┌───┴─┐
                     /│     ├─────┤     │\
                    / └──┬──┘\   /└──┬──┘ \
                   /     │\   \ /   /│     \   Zone1
                  /      │ \   \   / │      \
                 /       │  \ / \ /  │       \
                /   +----│---+   +---│----+   \
               /   /     │    \ /    │     \   \
              /   /      │     +     │      \   \
             /   /       │    / \    │       \   \
           ┌───┐/       ┌┴──┐/   \┌──┴┐       \┌───┐
           │   │\      /│   │     │   │\      /│   │
           └─┬─┘ \    / └─┬─┘\   /└─┬─┘ \    / └─┬─┘  Aggregation
             │    \  /    │   \ /   │    \  /    │    Layer
             │     \/     │    /    │     \/     │
             │     /\     │   / \   │     /\     │
           ┌─┴─┐  /  \  ┌─┴─┐/   \┌─┴─┐  /  \  ┌─┴─┐
           │   │--    --│   │     │   │--    --│   │
           └───┘        └───┘\   /└───┘\       └───┘
                        / | \ \ /  / |  \
                       /  |  \ \  /  |   \
                      /   |   / \/   |    \
                     / +--|--+ \/+---|---+ \
                    / /   |    /\    |    \ \
                 ┌───┐   ┌┴──┐/  \┌───┐   ┌───┐   ASBR
                 │   │   │   │    │   │   │   │
                 └─┬─┘   └─┬─┘    └─┬─┘   └─┬─┘
                   │       │        │       │  
                   │       │        │       │  
                 ┌─┴─┐   ┌─┴─┐    ┌─┴─┐   ┌─┴─┐
                 │   │   │   │    │   │   │   │
                 └─┬─┘   └─┬─┘    └─┬─┘   └─┬─┘
                   │       │        │       │  
                   │       │ 8Rings │       │  
                 ┌─┴─┐   ┌─┴─┐ ...┌─┴─┐   ┌─┴─┐
                 │   │---│   │    │   │---│   │
             ----└───┘   └───┘    └───┘\  └───┘
            /   /   \  \   |  \       \ \    |  \
          /    /     \  \  |   \       \ +---|-+ \
         /    /       \  +-|---+\       \    |  \ \   
       /     /         \   |    \\       \   |   \ \   
      /     /           \  |     \\       \  |    \ \  
     /     /             \ |      \\       \ |     \ \ 
┌───┐   ┌───┐           ┌───┐   ┌───┐       ┌───┐   ┌───┐ CSBR
│   │   │   │           │   │   │   │       │   │   │   │ 
└─┬─┘   └─┬─┘           └─┬─┘   └─┬─┘       └─┬─┘   └─┬─┘ 
  │       │    Access     │       │           │       │   
  │       │    Rings      │       │           │       │   
┌─┴─┐   ┌─┴─┐  ...      ┌─┴─┐   ┌─┴─┐       ┌─┴─┐   ┌─┴─┐ 
│   │   │   │           │   │   │   │       │   │   │   │ 
└─┬─┘   └─┬─┘           └─┬─┘   └─┬─┘       └─┬─┘   └─┬─┘ 
  │       │               │       │           │       │   
  │       │               │       │           │       │   
┌─┴─┐   ┌─┴─┐           ┌─┴─┐   ┌─┴─┐       ┌─┴─┐   ┌─┴─┐ 
│   │   │   │           │   │   │   │       │   │   │   │ 
└───┘...└───┘           └───┘...└───┘       └───┘...└───┘ 
]]></artwork></figure>

<t>Comparison notes:</t>

<t><list style="numbers">
  <t>RBS: We randomly select egress points as group members, with the total number ranging from 10 to 28800 (for sake of simplicity, we assume merely one client per egress point). The egress points are randomly distributed in the topology with 10 runs for each value, showing the average result in our graphs as below. The total number of samples is 60</t>
  <t>BIER: We divide the overall topology into 160 BIER domains, each of which includes 180 egress points, providing the total of 28000 egress points.</t>
  <t>Simulation: In order to compare the BIER against the in-packet tree encoding mechanism, we limit the size of the header to 256 bits (the typical size of a BIER header).</t>
</list></t>

<t>Results are shown in the following image: https://user-images.githubusercontent.com/92767820/153332926-defe38e4-1b63-4b16-852f-feaae487d307.png</t>

<t>Conclusions:</t>

<t><list style="numbers">
  <t>BIER reaches its 160 packet replication limit at about 500 users, while the in-packet tree encoding reaching its limit of 125 replications at about 12000 users. And the following decrease of replications is caused by the use of node-local broadcast as a further optimization.</t>
  <t>For the sake of comparison, the same 256-bit encapsulation limit is imposed on RBS, but we can completely break the 256-bit encapsulation limit, thus allowing the source to send fewer multicast streams.</t>
  <t>RBS encoding performs significantly better than BIER in that it requires less packet replications and network bandwidth.</t>
</list></t>

</section>
</section>


  </back>

<!-- ##markdown-source:
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

-->

</rfc>

