<?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.7.8 (Ruby 2.6.10) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>

<?rfc comments="yes"?>

<rfc ipr="trust200902" docName="draft-eckert-pim-rts-forwarding-02" category="exp" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="pim-rts">Stateless Multicast Replication with Segment Routed Recursive Tree Structures (RTS)</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="S." surname="Lindner" fullname="Steffen Lindner">
      <organization>University of Tuebingen</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>steffen.lindner@uni-tuebingen.de</email>
      </address>
    </author>

    <date year="2024" month="November" day="06"/>

    
    <workgroup>PIM</workgroup>
    

    <abstract>


<?line 170?>

<t>BIER provides stateless multicast in BIER domains using bitstrings to indicate receivers.
BIER-TE extends BIER with tree engineering capabilities. 
Both suffer from scalability problems in large networks as bitstrings are of limited size
so the BIER domains need to be subdivided using set identifiers so that possibly many
packets need to be sent to reach all receivers of a multicast group within a subdomain.</t>

<t>This problem can be mitigated by encoding explicit multicast trees in packet headers with
bitstrings that have only node-local significance. A drawback of this method is that
any hop on the path needs to be encoded so that long paths consume lots of header space.</t>

<t>This document presents the idea of Segment Routed Recursive Tree Structures (RTS), a unifying
approach in which a packet header representing a multicast distribution tree is constructed
from a tree structure of vertices ("so called Recursive Units") that support replication
to their next-hop neighbors either via local bitstrings or via sequence of next-hop neighbor
identifiers called SIDs.</t>

<t>RTS, like RBS is intended to expand the applicability of deployment for stateless
multicast replication beyond what BIER and BIER-TE support and expect: larger networks, less
operational complexity, and utilization of more modern forwarding planes
as those expected to be possible when BIER was designed (ca. 2010).</t>

<t>This document only specifies the forwarding plane but discusses possible architectural
options, which are primarily determined through the future definition/mapping to encapsulation
headers and controller-plane functions.</t>



    </abstract>



  </front>

  <middle>


<?line 197?>

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

<t>Please see {#version01} for a summary of changes over the prior version of this document.</t>

<t>This draft expands on prior experimental work called "Recursive BitString Structure" (RBS)
for stateless multicast replication with source routed data structures in the
header of multicast data packets. Its changes and enhancements over RBS are a result from further
scalability analysis and further matching against different use cases. Its proposed design
also includes Proof of Concept work on high-speed, limited functionality programmable
forwarding plane engines in the P4 programming language.</t>

<t>RTS, like RBS is intended to expand the applicability of deployment for stateless
multicast replication beyond what BIER and BIER-TE support and expect: larger networks, less
operational setup complexity, and utilization of more flexible programmable forwarding planes
as those expected to be possible when BIER was designed (ca. 2010).</t>

<t>Unlike RBS, RTS does not
limit itself to a design that is only based on the use of local bitstrings but instead offers
both bitstring and SID based addressing inside the recursive tree structure to support
to allow more scalability for a wider range of use cases.</t>

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

<section anchor="from-bier-to-rts"><name>From BIER to RTS</name>

<section anchor="example-topology-and-tree"><name>Example topology and tree</name>

<figure title="Example topology and tree" anchor="fig-ov-topo"><artwork><![CDATA[
          Src                         Src
           |                           ||
           R1                          R1
          /  \                       //  \\
         R2   R3                     R2   R3
        /  \ /  \                  //  \ /  \\
       R5  R6    R7                R5  R6    R7
      /  \ | \  /  \             // \\ | \ //  \\
    R8    R9  R10  R11          R8    R9  R10  R11
    |     |    |    |           ||    ||   ||   ||
   Rcv1 Rcv2  Rcv3 Rcv4        Rcv1 Rcv2  Rcv3 Rcv4

    Example Network            Example BIER-TE / RTS Tree,
      Topology               // and || indicate tree segments
]]></artwork></figure>

<t>The following explanations use above example topology in <xref target="fig-ov-topo"/> on the
left, and example tree on the right.</t>

</section>
<section anchor="ip-multicast"><name>IP Multicast</name>

<t>Assume a multicast packet is originated by Src and needs to be replicated and
forwarded to be received by Rcv1...Rcv4. In IP Multicast with PIM multicast
routing, router R1...R11 will have so-called PIM multicast tree state, especially
the intermediate routers R2...R7. Whenever an IP Multicast router has multiple
upstream routers to choose from, then the path election is based on routing
RPF, so the routing protocol on R9 would need to route Src via R5, and R10 would
need to route Src via R7 to arrive at the tree shown in the example.</t>

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

<t>In stateless multicast forwarding with Bit Index Explicit Replication (BIER),
<xref target="RFC8279"/>, a packet has a header with a bitstring,
and each bit in the bitstring indicates one receiver side BIER router (BFER).</t>

<figure title="Example BIER bitstring" anchor="fig-ov-bier"><artwork><![CDATA[
[R8:5 R9:9 R10:11 R11:17] =

00001000001000001000000000000000000000000 
]]></artwork></figure>

<t>In <xref target="fig-ov-bier"/>, the term [Ri:bi...] (i=5,9,10,11; bi=5,9,11,17) indicates the routers "Ri"
that have their associated bit in the bitstring number "bi" set.  In this
example, the bitstring is assumed to be 42 bit long. The actual
length of bitstring supported depends on the header, such as <xref target="RFC8296"/>
and implementation. The assignment of routers to bits in this example is
random.</t>

<t>With BIER, there is no tree state in R2...R7, but the packet is forwarded
from R2 across these routers based on those "destination" bits bi and information of
the hop-by-hop IP routing protocol, e.g.: IS-IS or OSPF. The intervening
routers traversed therefore also solely depend on that routing protocols
routing table, and as in IP multicast, there is no guarantee that the
shown intermediate hops in the example picture are chosen if, as shown there
are multiple equal cost paths (e.g.: src via R10-&gt;R6-&gt;R3 and R10-&gt;R7-&gt;R3).</t>

<t>The header and hence bitstring size is a limiting factor for BIER and
any source-routing.  When the network becomes larger, not all receiver
side routers or all links in the topology can be expressed by this number
of bits. A network with 10,000 receivers for example would require at least
40 different bitstrings of 256 bits to represent all 
receiver routers with separate bits. In addition, the packet header needs
to indicate which of those 40 bitstrings is contained in the packet header.</t>

<t>When then receiver routers in close proximity in the topology are assigned
to different bitstrings, then the path to these receivers will need to
carry multiple copies of the same packet payload, because each copy is
required to carry a different bitstring. In the worst case, even as few
as 40 receivers may require still 40 separate copies, as if unicast was
used - because each of the 40 bits is represented in a different bitstring.</t>

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

<t>In BIER with Tree Engineering (BIER-TE), <xref target="RFC9262"/>, the bits in the bitstring do
not only indicate the receiver side routers, but also the intermediate links in the
topology, hence allowing to explicitly "engineer" the tree, for purposes such
as load-splitting or bandwidth guarantees on the tree.</t>

<figure title="Example BIER-TE bitstring" anchor="fig-ov-bierte"><artwork><![CDATA[
[R1R2:4 R2R5:10 R5R8:15 R5R9:16 R1R3:25 R3R7:32 R7R10:39 R7R11:42]

000100000100001100000000100000010000001001
]]></artwork></figure>

<t>In <xref target="fig-ov-bierte"/>, the list of [RxRy:bi...] indicates the set of
bits needed to describe the tree in <xref target="fig-ov-topo"/>, using the same
notation as in <xref target="fig-ov-bier"/>.</t>

<t>Each RxRy indicates one bit in the bitstring for the link Rx-&gt;Ry. The need to express
every link in a topology as a separate bit makes scaling even more challenging
and requiring more bitstrings to represent a network than BIER does, but
in result of this representation, BIER-TE allows to explicitly steer copies
along the engineered path, something required for services that provide
traffic engineering, or when non-equal-cost load splitting is required (without
strict guarantees).</t>

</section>
<section anchor="rts"><name>RTS</name>

<t>With Recursive Tree Structure (RTS) encoding, the concept of steered forwarding
from BIER-TE is modified to actually encode the tree structure in the header as
opposed to just one single "flat" bitstring out of a large number of such bitstrings (in a
large network). For the same tree as above, the structure
in the header will logically look as follows.</t>

<figure title="Example RTS structure with SIDs" anchor="fig-ov-rts"><artwork><![CDATA[
Syntax:
  RU  = SID { :[  NHi+ ] }
  NHi = SID
  SID = Ri

Example tree with SID list on R1:
  R1 :[ R2 :[ R5 :[ R8   ,R9   ]], R3 :[R7 :[R10,  R11]]]

Semantic:
  R1 replicates to neighbors R2, R3.
  R2 replicates to R5
  R3 replicates to R7
  ...

Encoding structure:
  1 byte SID always followed by
  1 byte length of recursive structure length (":[" in example)
    If no recursive structure follows, length is 0.

Example SID list serialization (decimal):

  R1 :[ R2 :[ R5 :[ R8   ,R9   ]], R3 :[ R7 :[R10,  R11 ]]]
   |  |  |  |  |  |  | |   | |      | |   | |   | |   | | 
   v  v  v  v  v  v  v v   v v      v v   v v   v v   v v

   ..........SIDs according to above example..........
   |     |     |     |     |        |     |     |     |
  01 16 02 06 05 04 08 00 09 00    03 06 07 04 10 00 11 00
      |     |     |    |     |        |     |     |     |
      ......................Length fields................

Tree with SID list on R2:
  R2 :[ R5 :[ R8   ,R9   ]]
]]></artwork></figure>

<t>In the example the simplified RTS tree representation in <xref target="fig-ov-rts"/>, Rx:[NH1,... NHn]
indicates that Rx needs to replicate the packet to NH1, NH2 up to NHn.
This [NH1,... NHn] list is called the SID-list.  Each NH can again be a "recursive" structure
Rx:[NH1',...NHn'], such as R5, or a leaf, such as R8, R9, Ro10, R11.</t>

<t>A simplified RTS serialization of this structure for the packet header is
also shown: Each router Ri is represented by am 8-bit SID i. The 
length of the following SID list, :[NHi,...NHn], is also encoded in one byte.
If no SID list follows, it is 00.</t>

<t>When a packet copy is made for a next-hop, only the relevant
part of the structure is kept in the header as shown for R2.</t>

<figure title="Example RTS structure with bitstrings" anchor="fig-ov-rts-bits"><artwork><![CDATA[
Example tree with bitstrings on R1:
  BS1 :[ BS2 :[ BS5 :[ BS8,  BS9  ]], BS3  :[BS7 :[BS10, BS11]]]

Example bitstring serialization (decimal):

   ....List of next-hops indicated by the BitStrings.........
   |       |    |       |     |        |      |       |     |
  R2,R3   R5   R8,R9   Rcv   Rcv      R7     R10,R11 Rcv   Rcv
   |       |    |       |     |        |      |       |     |
  06 16   02 06 05 04  01 00 01 00    02  06 06  04  01 00 11 00
      |       |     |      |     |         |      |      |     |
      ......................Length fields.......................

Example tree with bitstrings on R2:
  BS2 :[ BS5 :[ BS8,  BS9  ]]
]]></artwork></figure>

<t>Instead of enumerating for each router the list of next-hop
neighbors by their number (SID), RTS can also use a bitstring
on each router, resulting in a potentially more compact encoding.
Scalability comparison of the two encoding options is discussed later
in the document. Unlike BIER/BIER-TE bitstrings, each of these bitstring will be small,
as it only needs to indicate the direct neighbors of the router for which
the bitstring is intended.</t>

<t>In <xref target="fig-ov-rts-bits"/>, the example tree is shown with this 
bitstring encoding, also simplified over the actual RTS encoding.
BSi indicates the bitstring for Ri as an 8-bit bitstring.
On R8, R9, R10, R11 this bitstring has bit 1 set, which
is indicating that these routers should receive ("Rcv") and decapsulate
the packet.</t>


</section>
<section anchor="summary-and-benefits-of-rts"><name>Summary and Benefits of RTS</name>

<t>In BIER for large networks, even small number of receivers may
not fit into a single packet header, such as aforementioned when having 10,000
receiver routers with a bitstring size of 256. BIER always requires to
process the whole bitstring, bit-by-bit, so longer bitstrings may cause
issues in the ability of routers to process them, even if the actual length of
the bitstring would fit into processable packet header memory in the router.</t>

<t>In BIER-TE, these problems are even more pronounced because the bitstrings
now need to also carry bits for the intermediate node hops, which are
necessary whenever the path for a packet need to be explicitly predetermined
such as in traffic engineering and global network capacity optimization through
non-equal cost load-balancing, which in unicast is also a prime reason
for deployment of Segment Routing.</t>

<t>These scalability problems in BIER and BIER-TE can be reduced by intelligent
allocation of bits to bitstrings, but this requires global coordination, and
for best results good predictions of the most important required future multicast
trees.</t>

<t>In RTS, no such network wide intelligent assignment of addresses is required,
and any combination of receiver routers can be put into a single packet header
as long as the maximum size of the header is not exceeded (including of course
the intermediate nodes along the path).</t>

<t>Unlike Bier/BIER-TE, the RTS header can likely on many platforms be larger
than a BIER/BIER-TE bitstring, because the router never needs to examine every
bit in the  header, but only the (local) bitstring or list of SIDs for this router
itself and then for each copy to a neighbor, it only needs to copy the recursive structure
for that neighbor. The only significant limit for RTS in processing
is hence the maximum amount of bytes in a header that can be addressed.</t>

</section>
</section>
</section>
<section anchor="architecture"><name>Architecture</name>

<t>This version of the document does not specify an architecture for RTS.</t>

<t>The forwarding described in this document can allow different architectures,
also depending on the encapsulation chosen. The following high-level architectural
considerations and possible goals/benefits apply:</t>

<t>(A) If embedding RTS in an IP or IPv6 source-routing extension header, RTS can provide
source-routing to eliminate stateful (IP) Multicast hop-by-hop tree building protocols
such as PIM. This can be specifically attractive in use cases that previously used
end-to-end IP Multicast without a more complex P/PE architecture, such as enterprises,
industrial and other non-SP networks.</t>

<t>(B) The encoding of the RTS multicast tree in the packet header makes
it natural to think about RTS providing a multicast "Segment Routing" architecture
style service with stateless replication segments: Each recursive structure is an RTS segment.</t>

<t>This too can be a very attractive type of architecture to support, especially for networks
that already use MPLS or IPv6 Segment Routing for unicast. Nevertheless, RTS can also be beneficial
in SP networks not using unicast Segment Routing, and there are no dependencies
for networks running RTS to also support unicast SR, other than sharing architecture concepts.</t>

<t>(C) RTS naturally aligns with many goals and benefits of BIER and even more so BIER-TE,
which it could most easily supersede for better scalability and ease of operations.</t>

<t>In one possible option, the RTS header specified in this document could even replace the bitstring of the
BIER <xref target="RFC8296"/> header, keeping all other aspects of BIER/BIER-TE reusable. In such an
option, the architectural aspects of RTS would be derived and simplified from <xref target="RFC9262"/>,
similar to details described in <xref target="I-D.eckert-bier-cgm2-rbs-01"/>.</t>

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

<section anchor="rts-encapsulation"><name>RTS Encapsulation</name>

<figure title="RTS encapsulation" anchor="fig-rts-encap"><artwork><![CDATA[
+----------+--------+------------+
| Encap    | RTS    | Next Proto |
| Header(s)| Header | Payload    |
+----------+--------+------------+
]]></artwork></figure>

<t>This document specifies the formatting and functionality of the 
"Recursive Tree Structure" (RTS) Header, which is assumed to be located in a packet
between some Encap Header and some Next Proto / Payload.</t>

<t>The RTS header contains only elements to support replication to next-hops,
not any element for forwarding to next-hop. This is left as a task for the Encap Header
so that RTS can most easily be combined with potentially multiple alternative
Encapsulation Header(s) for different type of network protocols or deployment use cases.
Common Encap Headers will also require an Encap Header specific description of the total length of the RTS Header.</t>


<t>In a minimum (theoretical) example, RTS could be used on top of Ethernet with an
ethertype of RTS+Payload, which indicates not only that an RTS Header follows, but also
the type of the Next Proto Payload.</t>

<t>See the encap discussions in <xref target="encap-discussions"/> for considerations regarding BIER
or IPv6 extension headers as Encap Headers.</t>

</section>
<section anchor="rts-addressing"><name>RTS Addressing</name>

<t>Addresses of next-hops to which RTS can replicate are called RTS Segment IDentifiers (SIDs).
This is re-using the terminology established by <xref target="RFC8402"/> to be agnostic of the addressing
of the routing underlay used for forwarding to next-hops and obtaining routing information
for those routing underlay addresses. Specifying an encapsulation for RTS requires specifying how
to map RTS SIDs to addresses of the addresses used by that (unicast) forwarding mechanism.</t>

<t>RTS SIDs are more accurately called RTS replication SIDs. They are assigned to RTS
nodes. When a packet is directed to a particular RTS SID of an RTS node it means that
that node needs then to process the RTS Header and perform replication according to it.</t>

<t>Using the SR terminology does not mean that RTS is constrained to be used
with forwarding planes for which (unicast) SR mappings exist: IPv6 and MPLS, but
it means that for other forwarding planes, mappings need to be defined.
For example, when using RTS with <xref target="RFC8296"/> encapsulation, and hence BIER addressing,
which is relying on 16-bit BFR-id addressing (especially the BFIR-id in the
<xref target="RFC8296"/> header), then RTS SIDs need to map to these BFR-ids.</t>

<t>If instead RTS is to be deployed with (only) an IPv6 extension header as the Encap Header,
then RTS SIDs need to be mapped to IPv6 SIDs.</t>

<t>This document uses three types of RTS SIDs to support three type of encoding
of next-hops in an RTS Header: Global, Local and Local bitstring RTS SIDs.</t>

<t>All SIDs map to a unicast address or unicast SID of the node which the RTS SID addresses.
This unicast address or SID is used in an Encap Header when sending an RTS
packet to that node.</t>

<t>SIDs can be local or global in scope. All nodes only have one RTS SID table,
and it is purely a matter or the semantic assigned to a SID whether it is local or global
(as it is in SR).</t>

<t>There are two encoding lengths for SIDs, 10 and 18 bit. It may hence be beneficial
to fit all local SID into the lower 10 bit of the SID address table so they can
use the so-called short SID encoding (10 bit).</t>

<t>The network is expected to make SID information available to the creators of RTS headers so they can
create one or more RTS headers to achieve the desired replication tree(s) for a payload. This includes:</t>

<t><list style="symbols">
  <t>global SIDs and the nodes they map to.</t>
  <t>Semantic of local SIDs on each node to optimize RTS headers by use of local SIDs</t>
  <t>Capabilities of each node to understand which subset of the RTS syntax can be encoded in the so-called "Recursive Unit" for this node.</t>
  <t>For each node its "all-leaf-neighbors" list of global SIDs (see {#all-leaf-neighbors})</t>
</list></t>

</section>
<section anchor="rts-header"><name>RTS Header</name>

<figure title="RTS Header" anchor="fig-rts-header"><artwork><![CDATA[
+--------------------------------------------+ 
| RU0                                        |
|+---------++--------++-------+     +-------+|
||RU-Params|| RU-NH1 ||RU-NH2 | ....|RU-NHn ||
|+---------++--------++-------+     +-------+|
|           |<------- RU-list (optional) -->||
+--------------------------------------------+
]]></artwork></figure>

<t>The RTS Header consists of a recursive structure of "Recursive Units" abbreviated "RU"s.
The whole header itself is called RU0. Every RU is composed of RU-Params and an
optional list of RU for next-hops called the RU-list.</t>

<section anchor="ru-params"><name>RU-Params</name>

<figure title="RU-Format" anchor="fig-ru-format"><artwork><![CDATA[
 0 1 2 3 4 5                 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7   BSL * 8    rle(RULL)
+-+-+-+-+-+-+- ............ +- ........... -+- ........... -+- ....... -+- ...
|b|d|S|L|B|R| SID (3/10/18) | RULL (0/8)    |    BSL  | SD  | BitString | RU-List
+-+-+-+-+-+-+- ............ +- ........... -+- ........... -+- ....... -+- ...
 |<-Flags ->|
]]></artwork></figure>

<t>Flags:</t>

<t>b)roadcast: The node should broadcast copies of this packet to all direct leaf neighbors if set to 1, else not</t>

<t>d)eliver: The node should receive a copy of the packet itself if set to 1, else not.</t>

<t>S)ID: A SID is present if set to 1, else not. If no SID is present, the flags are followed by pad bits so that the following field will start at a byte boundary.</t>

<t>L)ength: The SID is "Long" (18 bit), else short (10 bit).</t>

<t>B)itString: If set to 1, a BitString is present as well as the BLE/SD fields, else all three fields are not present.</t>

<t>R)U-List: An RU-List and its length field, the RULL are present. If 0, both are not present.</t>

<t>SIDs:</t>

<t>As described by the S)ID and L)ength flags, when present, the SID can be 10 or 18 bit long.
These are called "short" and "long" SIDs. They both address the same single SID table
in the node. Short SIDs are just an encoding optimization. Any SID may be "local" or
"global". A SID is "global" when it points to the same node consistently. It is "local"
when each node has it's own, potentially different meaning for it. Typically, SIDs
fitting into a short SID will preferably be local SIDs such as those pointing to direct
(subnet) neighbors.</t>

<t>BitString / BSL / SD:</t>

<t>The BitString Length field (BSL) indicates the length of the BitString field in bytes.
It permits length of 0-32 bytes. SD is a SubDomain, and allows up to 8 different
BitStrings for each length.</t>

<t>RU-List / RULL:</t>

<t>RU-List Length (RULL) is the length of the RU-List field. To allow RU-Lists longer than
256 bytes, the encoding of RULL uses a simple encoding: RULL values &lt;= 127 indicate the
length of RU-List in bytes, values &gt;= 128 indicate a length of (127 + (RULL - 127) * 4).
This allows RU-List length of up to 640 bytes at the expense of up to 3 padding
bytes at the end of an RU-List required when encoding RU-Lists with length &gt; 127 bytes.</t>

<t>Note: RULL is placed before BSL/SD and BitString so that the offset of RULL inside of RU
is fixed and does not depend on the length of BitString (if present). This is beneficial
because both SID and RULL need to be parsed by prior-hop nodes when this RU is in
an RU-list. See the following explanations for more details.</t>

</section>
<section anchor="ru-params-parsing-and-semantics"><name>RU-Params Parsing and Semantics</name>

<t>An RU representing some specific nodeRU is parsed up to two times. The first time,
the RU may be present in the RU-List of the prior-hop node to nodeRU, and the second
time it is parsed by nodeRU itself.</t>

<section anchor="bitstring-replication-to-leaf-nodes"><name>Bitstring replication to leaf nodes</name>

<t><xref target="fig-ru-example1"/> shows the most simple example with bitstrings, the RU for a node
that should use a local BitString to replicate to only lead nodes</t>

<figure title="BitString replication to leaf nodes" anchor="fig-ru-example1"><artwork><![CDATA[
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5  BSL * 8
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- ....... -+
|0|0|0|0|1|0|0|0|    BSL  | SD  | BitString |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- ....... -+
 b d S L B R p p
 |<-Flags ->|
]]></artwork></figure>

<t>We assume the node is just transit node, so the packet is neither to be broadcast to all
leaf neighbors nor received, hence b=0, d=0.</t>

<t>The RU has no SID, so S=0, L=0, and hence the flags are followed by padding bits set to 0.</t>

<t>B=1 indicates a bitstring follows and R=0 indicates that the RU has no RU-list, and hence no
RULL. If the node's packet parser requires any non-required field to be present, then those
would have to be included and set to 0.</t>

<t>Note that this RU can only be used if this is the the root of the tree or the prior
hop node was also replicating to this node via a BitString. If the prior hop node was
replicating via a SID-List, then this RU would include a SID, but that SID would be
ignored, because it was only included for the benefit of the prior hop node.</t>

<t>BSL and SD indicate the BitString and its length.</t>

<t>When the node replicates to the bits in the BitString, it operates pretty much like
BIER-TE, aka: each bit indicates an adjacency, most likely direct, subnet-local neighbors.
For every bit, a copy is being made.</t>

<t>For the copy to a leaf neighbor, the RTS packet is rewritten to a simple form shown in
<xref target="fig-ru-example1-1"/>.</t>

<figure title="RU for leaf" anchor="fig-ru-example1-1"><artwork><![CDATA[
 0 1 2 3 4 5 6 7 
+-+-+-+-+-+-+-+-+
|b|d|0|0|0|0|0|0|
+-+-+-+-+-+-+-+-+
 b d S L B R p p
 |<-Flags ->|
]]></artwork></figure>

<t>The whole RTS header consists of a single by RU indicating simply whether the receiving
node should b)roadcast and/or d)eliver the packet. Both bits are derived from the 
BIFT (Bit Index Forwarding Table) of the replicating node.</t>

</section>
<section anchor="sid-list-replication-to-leaf-nodes"><name>SID-list replication to leaf nodes</name>

<t>Replication to a list of SID on a node requires an RU
on the node as shown in <xref target="fig-ru-example2"/>.</t>

<figure title="RU-List replication to leaf nodes" anchor="fig-ru-example2"><artwork><![CDATA[
                   1                   2
 0 1 2 3 4 5 6 7 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ...........
|0|0|0|0|0|1|0|0| RULL (8)      | RU-List
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ...........
 b d S L B R p p
 |<-Flags ->|
]]></artwork></figure>

<t>The SIDs of nodes to replicate to are always inside the neighbors RU, hence
SID-list replication means replication with an RU-List and hence also 
an RULL field.</t>

<t>The b and d field for the replicating nodes RU itself determine only whether
it should also broadcast and/or receive the packet, so their setting is
irrelevant to the RU-List operation, so we assume in this example both are 0.</t>

<t>If the prior hop node was also replicating via an RU-List, this RU would also
require a SID, but if this node is the root of the tree or the prior hop
was replicating via a BitString, it does not require a SID. We show this
simpler case. S=0, L=0 mean that instead of a SID, there are just two
padding bits p before RULL.</t>

<t>Assume all the neighbors to replicate to are direct neighbors, so we encode 
local SIDs that fit into short, 10-bit long SIDs. In result, the RU-list
is a sequence of 16-bit long RUs, one each for each neighbor to replicate to,
as shown in <xref target="fig-ru-example2-1"/>. And if the neighbor was a couple of
hops in the network topology away, one would use a global SID, in which case
it likely might require a long SID encoding, and hence 24-bit for the RU.</t>

<figure title="Leaf-node RU with SID" anchor="fig-ru-example2-1"><artwork><![CDATA[
                     1
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0|1|1|0|0|0| SID (10)          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 b d S L B R
 |<-Flags ->|
]]></artwork></figure>

<t>When the packet with the neighbors RU reaches that neighor, the RU is RU0,
aka: the complete RTS header.</t>

<t>In this encoding, unlike the encoding of the prior version of this document,
the SID itself carries no other semantic than the node it is targeted for.</t>

<t>When RTS is used (like BIER) as a standalone L3 network layer, this means
that intermediate RTS capable, but not replicating nodes could simply
unicast forward the packet to the node indicated by the RU0, similar to
how loose hops operate in IPv6 with SRH. But that only works when the SID
of RU0 is a global SID. So the replicating node may want to rewrite the
SID in the RU to a global SID (including adjusting the length) when 
such a mode of operation is desirable. However, when operating RTS
inside of IPv6, this loose-hop role would be served by an outer IPv6
header, and the RTS header would become another routing header. And
the SID serves no value anymore, but can be replaced by a special value
such as 0, or the RU be rewritten to not include a SID but just 2 bits
of padding.</t>

<t>Likewise, if the SID used in the RU encoding is a local SID, then its
semantic will likely be different on the receiving node, so if its
needed for loose hop routing, it would need to be rewritten to a global SID.
If used inside IPv6 or another network layer, local SIDs in RU0 should be
removed or replaced by 0.</t>

</section>
<section anchor="ru-with-sid-list-and-bitstring"><name>RU with SID-List and BitString</name>

<t>When would an RU require a SID and a BitString ? This is exactly
the case when the prior-hop node was replicating based on RU-List,
because this requires a SID in the next-hop RU, but that next-hop RU
itself should replicate with a BitString. In this case, the RU for
that node would include both a SID for the benefit of processing by
the prior-hop node, and a BitString (including BSL/SD) for its own
replication.</t>

<t>As mentioned before, the SID itself has no relevance anymore after
having been processed by the prior-hop replication engine, and might
be removed in the packet copy to the target node, but in the packet header
as encoded in the packet header for the root of the RTS tree, both SID and
BitString would need to be in the RU.</t>

</section>
<section anchor="bitstring-replication-to-non-leaf-neighbors"><name>BitString replication to non-leaf neighbors</name>

<t>When replicating to non-leaf neighbors via BitString, an RU-List parameter
is necessary in the RU of the replicating node. Which raises the question,
how the replicating node can know whether to replicate to a leaf or a
non-leaf neighbor.</t>

<t>There are two options for this:</t>

<t><list style="numbers">
  <t>In the BIFT of the replicating node, each bit has a flag indicating
whether or not the node indicated by the bit is always a leaf node
or potentially also a non-leaf node. In this option, there needs
to be an RU-list in the RU with an entry for each bit set in the
BitString that indicates to not always be a lead node in the BIFT.
Each such RU-list entry can be a simple 8-bit RU without SID or
BitString when that neighbor is addressed without the need for
a larger RU.</t>
  <t>There is no such bit in the BIFT, then all neighbors always
require an RU, which equally can be as short as 8-bit.</t>
</list></t>

</section>
<section anchor="functional-subsets-on-individual-nodes"><name>Functional subsets on individual nodes</name>

<t>Less capable forwarding engines may support only a subset of the encoding
and then need to be able to discover from the flag-bits whether the
RU destined for it contains an unsupported option and then stop processing
the packet and raise an error, e.g.: ICMP.</t>

<t>One set of limitations that seems to be necessary to fit functionally
limited forwarding engines could include all or a subset of the following:</t>

<t>o Only one size of SID can be supported. In this case, the long SID
  format should be supported, unless the type of device is known to
  always be leaf nodes in topologies, in which case only short SIDs may be
  supported.</t>

<t>o The variability of including an RU-list can not well be supported.
  In this case, the RU for such a node may need to always include
  a RUST field with a value of 0.</t>

<t>o The node can not support BitString replication for non-leaf neighbors.
  In this case, the RU with a BitString may not have the R-bit set and no
  RU-List. For common cases where this would be an issue, workarounds
  may be devised, for example, the node may have a local SID pointing
  back to it, so that the node needs to be encoded as 2 RU: The first
  RU uses RU-List replication, and one of the RU is for the local SID
  of the node itself, causing the packet to recirculate, and that
  RU would then use a BitString (without RU-List).</t>

<t>Because there are no "global" aspects to the parsing of RUs, it limitations
on one type of node only have limited impact on the network-wide ability
to construct tree.</t>

</section>
</section>
<section anchor="creating-and-receiving-copies"><name>Creating and Receiving copies</name>

<t>RTS relies on unicast forwarding procedures using the Encap Header(s) 
to receive packets and send copies of packets. Every copy of a packet created,
except for those that are for local reception by a node, is sent towards a unicast address/SID
according to the RTS SID it addresses.</t>

<t>The RU0 Flags are responsible for distinguishing the encoding of the following
RU parameters but also provides the bits used for processing by so-called "leaves" of an
RTS tree, where packets need to be delivered and/or broadcast to all "leaf" neighbors (where
they are then delivered).</t>

</section>
<section anchor="dcopy"><name>Creating copies because of RTS Header d=1</name>

<t>When d=1 is encountered in RU0, an (internal) copy of the packet is created
in which the headers up to the RTS Header are disposed of according to the procedures specified
for Encap Header(s) so that the Next Proto Payload after the RTS Header is processed.</t>

</section>
<section anchor="all-leaf-neighbors"><name>Creating copies because of RTS Header b=1</name>

<t>When b=1 is set in RU0 flags, a list of unicast addresses/SIDs called the
"all leaf neighbors" is used to create a separate copy of the packet for each element
in that list.  Each RTS node MAY have such a list.</t>

<t>For each packet copy made because of b=1, the RU0 for that neighbor is set with all
Flags to 0 except for d=0. The RU0 for each such neighbor is thus 8 bit long.
Typically, the "all-leaf-neighbors" list is (auto-)configured with the list of
RTS L2 neighbors that are known to be leaves of the RTS domain.</t>

</section>
</section>
</section>
<section anchor="discussion"><name>Discussion</name>

<section anchor="encoding-efficiency-vs-decoding-challenges"><name>Encoding Efficiency vs. decoding challenges</name>

<t>One core challenge for RTS is encoding efficiency, aka: the size of
the header required to address a particular number of leaves. Or with
a defined maximum header size the maximum number of leaves that can be addressed.</t>

<t>One core encoding trick to increase encoding efficiency is to not indicate
the semantic of variable fields but derive encoding from prior field or
state knowledge.</t>

<t>One example for this is not to encode the length of a local bitstring but
assume that this bitstring length is consistently known between the processing
node and the node encoding the bitstring, such as ingress-PE, controller or sender
application.</t>

<t>Consistent understanding of such control plane information to correctly encode
packet headers already exists as a requirement in other headers, specifically
MPLS and SR-MPLS and SRv6/SRH. The semantic of labels/SID is not necessarily
global and static in nature but often also local and learned through control plane.
If that control plane information is inconsistent, then encoding nodes may
create incorrect headers that will be incorrectly processed.</t>

<t>For RTS, one additional challenge is when such consistent control plane information
implies the length of fields, such as in the bitstring example. To reduce the
problem space to what has been accepted in unicast solutions such as MPLS/SR,
it may hence be necessary to explicitly include lengths for all variable lengths
fields. But this is in the opinion of the authors an open issue to investigate
further.</t>

<t>It may be possible and beneficial to instead of expanding the size of headers
because of this issue, to look into control plane solutions to avoid this
requirement. This could be based on the following mechanisms:</t>

<t>o Packets are forwarded only as L2 unicast with explicit addressing of
  destinations to prohibit hop-by-hop mis-delivery. Such as using L2
  ethernet with globally unique L2 ethernet MAC destination addresses.
  This is what the solution currently assumes.</t>

<t>o Mechanisms to the control plane distributing the relevant information
  (such as lengths of bitstrings, semantics of SIDs) not only in an
  "eventual consistency" way, but in a "strict consistency" way. Aka:
  all nodes in the domain that can be addressed by RTS trees are known
  to have consistent control plane information relevant to the consistent
  encoding/decoding.</t>

<t>o Mapping this "strict consistency" encoding to a numeric "control plane version"
  value that can be carried as a new field in headers.</t>

<t>Such an approach may not be sufficient to answer all questions, such as
how to change control plane information upon planned topology changes,
but it should suffice to ensure that whoever encodes a packet can add
the "control plane version" field to the header, and any node potentially
parsing this header will have either consistent information or not accept
the indicated "control plane version".</t>

<t>Short of deriving on such a solution, the encoding will become longer due to
the need of explicitly including fields for the semantic of following fields.
The encoding described has a range of cases where this option is already
defined as an alternative.</t>

<t>Because of these additional, not currently standard control plane requirements,
this version of the document includes now all variable aspects explicitly in the
encoding.</t>

</section>
<section anchor="encap-discussions"><name>Encapsulation considerations</name>

<section anchor="comparison-with-bier-header-and-forwarding"><name>Comparison with BIER header and forwarding</name>

<t>The RTS header is equivalent to the elements of a BIER/BIER-TE header required for
BIER and BIER-TE replication.</t>

<t>(SI, SD, BSL, Entropy, Bitstring)</t>

<t>RTS currently does not specify an ECMP procedure to next-hop SIDs because it is part
of the (unicast) forwarding to next-hops, but not to RTS replication.</t>

<t>Note that this is not the same set of header fields as <xref target="RFC8296"/>, because
that header contains more and different fields for additional functionality, which RTS
would require to be in an Encap Header.</t>

<t>For the same reason, the RTS Header does also not include the <xref target="RFC8296"/> fields TC/DSCP
for QoS, OAM, Proto (for next proto identification) and BFIR-id. Note that BFIR-id is not
used by BIER forwarding either, but by BIER overlay-flow forwarding on BFIR and BFER.</t>

<t>Constraining the RTS header to only the necessary fields was chosen to make it most
easy to combine it with any desirable encapsulation header.</t>

<t>RTS could use <xref target="RFC8296"/> as an Encap Header and BIER/<xref target="RFC8296"/>
forwarding procedures, replacing only BIER bitstring replication to next-hop functionality
with RTS replication.</t>

<t>In this case, the RTS Header could take the place of the bitstring field in
the <xref target="RFC8296"/> header, using the next largest size allowed by BIER to fit the RTS header.
SI would be unused, and SD could be used to run RTS, BIER and even BIER-TE in parallel
through different values of SD, and all BIER forwarding procedures including ECMP to
next-hop SIDs could be used in conjunction with RTS replication.</t>

</section>
<section anchor="comparison-with-ipv6-extension-headers"><name>Comparison with IPv6 extension headers</name>

<t>The RTS header could be used as a payload of an an IPv6 extension header
as similarly proposed for RBS in <xref target="I-D.eckert-msr6-rbs"/>. Note that the RTS
header itself does not contain a simple length field that allows to completely
skip across it. This is done because such functionality may not be required
by all encapsulation headers / forwarding planes, or the format in which such
a length is expected (unit) may be different for different forwarding planes.
If required, such as when using the RTS header in an IPv6 extension header, then
such a total-length field would have to be added to the Encap Header.</t>

</section>
</section>
<section anchor="encoding-choices-and-complexity"><name>Encoding choices and complexity</name>

<section anchor="sid-vs-bitstrings-in-recursive-trees"><name>SID vs bitstrings in recursive trees</name>

<t>The use of SID-lists in the encoding is a natural fit when the target tree is one
that does not require replication on many of the hops through which it passes, such as
when doing non-equal-cost load-splitting, such as in capacity optimization in service provider
networks. In <xref target="RFC9262"/>, Figure 2, such an example is called an "Overlay" (tree). In the
SID list, each of the SID can easily be global, making it possible for a next-hop to be anywhere
in the network. While it is possible to also use global SIDs in a bitstring, the decision to
include any global (remote) SID as a bit in a bitstring introduces additional encoding size
cost for every tree, and not only the ones that would need this bit. This is also the
main issue of using such global SIDs in BIER-TE (where they are represented as forward_routed())
adjacencies.</t>

<t>When replicating to direct neighbors, SID lists may be efficient for sparse trees. In the
RTS encoding, up to 127 direct neighbors could be encoded in 8 bit for each SID, so it is
easy to compare the encoding efficiency to that of a bitstring. A router with 32
neighbors (assume leaf neighbors for simplicity) requires 32 bits to represent all possible neighbors,
if 4 or fewer neighbors need to receive a copy, a SID-list encoding requires equal or fewer
bytes to encode.</t>

<t>Use of the broadcast option is equally possible with SID-list or bitstrings. An
initial scalability test with such an option was shown in slide 6 of <xref target="RBSatIETF115"/>, but
not included in any prior proposed encoding option; a better analysis of this option is
subject to future work.</t>

<t>The ability of the RTS encoding to mix for the initial part(s) of a tree SID lists
and then for leaves or tail parts of the tree bitstrings specifically addresses the
common understanding that multicast trees typically are sparse at the root and may also be
more "overlay" type, but then tend to become denser towards the leaves. Even if there is
the opportunity to create more replications within the first hops of a tree, that
approach may often not result in the most costs-effective ("steiner") trees.</t>

</section>
<section anchor="limited-per-node-functionality"><name>Limited per-node functionality</name>

<t>The encoding proposed in this (version of the) draft is based on P4 development of
a reference proof of concept called SEET+. It does not exactly follow the encoding,
but attempts to generalize it to support both more flexible and more constrained
forwarding platforms.</t>

<t>Because in a recursive tree an individual node only needs to parse one part of the
tree that is designated for it, this type of encoding allows it to support different
flexible forwarding engines in the same network: The recursive units that are
to be parsed by a less flexible nodes forwarding engine simply can not use all
the possible options, but only those options possible on that forwarding engine.</t>

<t>To then support such a mix of forwarding engines, the following architectural
elements are necessary:</t>

<t><list style="numbers">
  <t>The control plane of every node needs to signal the subset of functionality
so that the place where the control plane constructs an RTS will know what
limitations it has.</t>
  <t>The forwarding plane of nodes not supporting full functionality needs to be able
to reliably recognize when the encoding utilizes a feature not supported, stop
parsing/replicating the packet and raise an error (ICMP or similar) as necessary.</t>
</list></t>

<t>For example, some type of forwarding engines could have the following set of
limitations.</t>

<t>The forwarding engine might not be possible to process the recursive bitstring
structure because there could be insufficient code space for both recursive SID and
recursive bitstring option. In this case the limitation would be that a bitstring
type RU to be processed by this node does have to be a leaf which is not followed by a
set of RU for downstream neighbors.</t>

<t>Consider such a node is located in a distribution ring serving as an aggregation node to
a large number of lead neighbors.  In this topological case, a local bitstring would be
ideal to indicate which of the leaf neighbors the packet has to be replicated. However,
the packet would equally need to be forwarded to the next ring neighbor, and that
ring neighbor would need its own RU. Which would not be directly supportable on
this type of node.</t>

<t>To handle this situation, such a limited functionality node would assign a local SID
to itself and trees that pass through this node would need to encode first a SID
type RU indicating the ring neighbor as well as the node itself. The RU for this
nodes SID itself would then be a local bitstring RU. Likely the node would then
also process the packet twice through so-called recirculation. In addition, this
approach increases the side of the RTS encoding.</t>

</section>
</section>
<section anchor="differences-over-prior-recursive-bitstring-rbs-encodings-proposal"><name>Differences over prior Recursive BitString (RBS) encodings proposal</name>

<t>The encoding for bitstrings proposed in this draft relies again on discarding of unnecessary RU
instead of using offset pointers in the header to allow parsing only the relevant RU.</t>

<t>Discarding unnecessary RU has the benefit, that the total size of the header
can be larger than if offset pointers where used. Forwarding engines have
a maximum amount of header that they can inspect. With offset pointers, the
furthest a node has to look into the RTS header is the actual size of the
RTS header. With discarding of unnecessary RU, this maximum size for inspection can
be significantly less than the maximum RTS header size. Consider the root of tree has two neighbors
to copy to and both have equal size RU, then this root of the tree only needs to
inspect up to the beginning of the second RU (the SID or bitstring in it).</t>

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

<t>TBD</t>

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

<t>The local bitstrings part of 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 that work <xref target="I-D.xu-msr6-rbs"/>.</t>

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

<section anchor="section"><name>-00</name>

<t>This version was derived from merging the <xref target="SEET"/> and RBS proposals (called BEET in the <xref target="SEET"/> presentation)
into a single encoding mechanism. SEET is a proposal for per-tree-hop replication with SID-Lists, RBS is a
proposal for replication with per-hop local BitStrings. Both embody the same idea
of Recursive Units to represent each hop in the tree, but the content of these
recursive Units is different whether SID-Lists or BitStrings are used.</t>

<t>Because the processing of recursive structures are directly impacted and limited by
the capabilities of forwarding planes, and because by the time of writing this -00 draft,
only separate SEET and separate RBS reference Proof Of Concept implementations existed,
this version does propose to support only separate trees: A tree only constructed
from SID-Lists, or a Tree only supported from local BitStrings. Each packet needs
to choose which format to use.</t>

</section>
<section anchor="version01"><name>-01</name>

<t>After -00 version, reference Proof Of Concept work was done to investigate whether it
was possible in a single forwarding plane to support trees that can have both SID-lists
and local BitStrings. The main reason for this was that supporting both options as
ships in the night turned out to be costing too much code space on limited forward
plane engines.</t>

<t>In result, the reference limited forwarding plane engine could be made to support
trees with a limited mix of SID-list replication and local BitStrings. Local BitStrings
could only be used on hops prior to leaves, e.g.: no further local BitString
replication was possible (single stage).</t>

<t>RTS -01 is now a proposal that generalizes on these PoC experiences by proposing
a format for recursive units that allows to implement the limited functionality
possible on limited capability forwarding engines, but that also allow to
implement arbitrary mixing of per-hop use of SID-List and BitString replication
on forwarding planes that are more capable. The encoding is also chosen so that
nodes can easily recognize if the packet embodies an encoding option not supported
by it and reject the packet.</t>

<t>In addition, the -00 version of RTS did embody a range of optimizations for shorter
encoding length by avoiding packet header fields that contain information such as
parameter length that could be assumed to be known by both the generator and
consumer of the header element (RU). This has been removed in this version of the
proposal and replaced by explicitly integrating all variable length field information
as well as other interpretation semantics explicitly into the header encoding.
This change is not necessarily the final conclusion of thi issue, but the document
lays out what other control plane requirements would first have to be built to
be able to have more compact encodings - and those requirements are not commonly
support by the most widely used control planes.</t>

</section>
<section anchor="version02"><name>-02</name>

<t>Refresh.</t>

</section>
</section>


  </middle>

  <back>


    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC6554">
  <front>
    <title>An IPv6 Routing Header for Source Routes with the Routing Protocol for Low-Power and Lossy Networks (RPL)</title>
    <author fullname="J. Hui" initials="J." surname="Hui"/>
    <author fullname="JP. Vasseur" initials="JP." surname="Vasseur"/>
    <author fullname="D. Culler" initials="D." surname="Culler"/>
    <author fullname="V. Manral" initials="V." surname="Manral"/>
    <date month="March" year="2012"/>
    <abstract>
      <t>In Low-Power and Lossy Networks (LLNs), memory constraints on routers may limit them to maintaining, at most, a few routes. In some configurations, it is necessary to use these memory-constrained routers to deliver datagrams to nodes within the LLN. The Routing Protocol for Low-Power and Lossy Networks (RPL) can be used in some deployments to store most, if not all, routes on one (e.g., the Directed Acyclic Graph (DAG) root) or a few routers and forward the IPv6 datagram using a source routing technique to avoid large routing tables on memory-constrained routers. This document specifies a new IPv6 Routing header type for delivering datagrams within a RPL routing domain. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6554"/>
  <seriesInfo name="DOI" value="10.17487/RFC6554"/>
</reference>

<reference anchor="RFC8279">
  <front>
    <title>Multicast Using Bit Index Explicit Replication (BIER)</title>
    <author fullname="IJ. Wijnands" initials="IJ." role="editor" surname="Wijnands"/>
    <author fullname="E. Rosen" initials="E." role="editor" surname="Rosen"/>
    <author fullname="A. Dolganow" initials="A." surname="Dolganow"/>
    <author fullname="T. Przygienda" initials="T." surname="Przygienda"/>
    <author fullname="S. Aldrin" initials="S." surname="Aldrin"/>
    <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 "multicast domain". 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 "Bit Index Explicit Replication" (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">
  <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"/>
    <author fullname="E. Rosen" initials="E." role="editor" surname="Rosen"/>
    <author fullname="A. Dolganow" initials="A." surname="Dolganow"/>
    <author fullname="J. Tantsura" initials="J." surname="Tantsura"/>
    <author fullname="S. Aldrin" initials="S." surname="Aldrin"/>
    <author fullname="I. Meilik" initials="I." surname="Meilik"/>
    <date month="January" year="2018"/>
    <abstract>
      <t>Bit Index Explicit Replication (BIER) is an architecture that provides optimal multicast forwarding through a "multicast domain", 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">
  <front>
    <title>Tree Engineering for Bit Index Explicit Replication (BIER-TE)</title>
    <author fullname="T. Eckert" initials="T." role="editor" surname="Eckert"/>
    <author fullname="M. Menth" initials="M." surname="Menth"/>
    <author fullname="G. Cauchie" initials="G." surname="Cauchie"/>
    <date month="October" year="2022"/>
    <abstract>
      <t>This memo describes per-packet stateless strict and loose path steered replication and forwarding for "Bit Index Explicit Replication" (BIER) packets (RFC 8279); it is called "Tree Engineering for Bit Index Explicit Replication" (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 "bit positions" (BPs). These BPs indicate adjacencies of the network topology, as opposed to (non-TE) BIER in which BPs indicate "Bit-Forwarding Egress Routers" (BFERs). A BIER-TE "packets BitString" 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 "subdomains" (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 "Interior Gateway Protocol" (IGP).</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9262"/>
  <seriesInfo name="DOI" value="10.17487/RFC9262"/>
</reference>

<reference anchor="RFC8200">
  <front>
    <title>Internet Protocol, Version 6 (IPv6) Specification</title>
    <author fullname="S. Deering" initials="S." surname="Deering"/>
    <author fullname="R. Hinden" initials="R." surname="Hinden"/>
    <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>

<reference anchor="RFC8402">
  <front>
    <title>Segment Routing Architecture</title>
    <author fullname="C. Filsfils" initials="C." role="editor" surname="Filsfils"/>
    <author fullname="S. Previdi" initials="S." role="editor" surname="Previdi"/>
    <author fullname="L. Ginsberg" initials="L." surname="Ginsberg"/>
    <author fullname="B. Decraene" initials="B." surname="Decraene"/>
    <author fullname="S. Litkowski" initials="S." surname="Litkowski"/>
    <author fullname="R. Shakir" initials="R." surname="Shakir"/>
    <date month="July" year="2018"/>
    <abstract>
      <t>Segment Routing (SR) leverages the source routing paradigm. A node steers a packet through an ordered list of instructions, called "segments". A segment can represent any instruction, topological or service based. A segment can have a semantic local to an SR node or global within an SR domain. SR provides a mechanism that allows a flow to be restricted to a specific topological path, while maintaining per-flow state only at the ingress node(s) to the SR domain.</t>
      <t>SR can be directly applied to the MPLS architecture with no change to the forwarding plane. A segment is encoded as an MPLS label. An ordered list of segments is encoded as a stack of labels. The segment to process is on the top of the stack. Upon completion of a segment, the related label is popped from the stack.</t>
      <t>SR can be applied to the IPv6 architecture, with a new type of routing header. A segment is encoded as an IPv6 address. An ordered list of segments is encoded as an ordered list of IPv6 addresses in the routing header. The active segment is indicated by the Destination Address (DA) of the packet. The next active segment is indicated by a pointer in the new routing header.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8402"/>
  <seriesInfo name="DOI" value="10.17487/RFC8402"/>
</reference>

<reference anchor="RFC8754">
  <front>
    <title>IPv6 Segment Routing Header (SRH)</title>
    <author fullname="C. Filsfils" initials="C." role="editor" surname="Filsfils"/>
    <author fullname="D. Dukes" initials="D." role="editor" surname="Dukes"/>
    <author fullname="S. Previdi" initials="S." surname="Previdi"/>
    <author fullname="J. Leddy" initials="J." surname="Leddy"/>
    <author fullname="S. Matsushima" initials="S." surname="Matsushima"/>
    <author fullname="D. Voyer" initials="D." surname="Voyer"/>
    <date month="March" year="2020"/>
    <abstract>
      <t>Segment Routing can be applied to the IPv6 data plane using a new type of Routing Extension Header called the Segment Routing Header (SRH). This document describes the SRH and how it is used by nodes that are Segment Routing (SR) capable.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8754"/>
  <seriesInfo name="DOI" value="10.17487/RFC8754"/>
</reference>




    </references>

    <references title='Informative References' anchor="sec-informative-references">




<reference anchor="I-D.eckert-bier-rbs">
   <front>
      <title>Recursive BitString Structure (RBS) Addresses for BIER and MSR6</title>
      <author fullname="Toerless Eckert" initials="T. T." surname="Eckert">
         <organization>Futurewei Technologies USA</organization>
      </author>
      <author fullname="Michael Menth" initials="M." surname="Menth">
         <organization>University of Tuebingen</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="24" month="October" year="2022"/>
      <abstract>
	 <t>   This memo introduces a compact data-structure representation of
   multicast trees called &quot;Recursive Bitstring Structure&quot; (RBS) and its
   use for (stateless) forwarding of packets that include this structure
   in their header.  It is intended as an alternative to &quot;flat&quot;
   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.

   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>
   <seriesInfo name="Internet-Draft" value="draft-eckert-bier-rbs-00"/>
   
</reference>


<reference anchor="I-D.eckert-bier-cgm2-rbs-00">
   <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>
      <date day="25" month="October" year="2021"/>
      <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-00"/>
   
</reference>


<reference anchor="I-D.eckert-bier-cgm2-rbs-01">
   <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"/>
   
</reference>


<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="24" month="October" 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-01"/>
   
</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"/>
   
</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"/>
   
</reference>

<reference anchor="RFC791">
  <front>
    <title>Internet Protocol</title>
    <author fullname="J. Postel" initials="J." surname="Postel"/>
    <date month="September" year="1981"/>
  </front>
  <seriesInfo name="STD" value="5"/>
  <seriesInfo name="RFC" value="791"/>
  <seriesInfo name="DOI" value="10.17487/RFC0791"/>
</reference>


<reference anchor="Menth23" >
  <front>
    <title>Efficiency of BIER Multicast in Large Networks</title>
    <author initials="D." surname="Merling" fullname="D. Merling">
      <organization></organization>
    </author>
    <author initials="T." surname="Stüber" fullname="Thomas Stüber">
      <organization></organization>
    </author>
    <author initials="M." surname="Menth" fullname="M. Menth">
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
  <seriesInfo name="IEEE" value="accepted for &quot;IEEE Transactions on Network and Service Managment&quot;"/>
  <seriesInfo name="preprint" value="&lt;https://atlas.cs.uni-tuebingen.de/~menth/papers/Menth21-Sub-5.pdf&gt;"/>
<annotation>preprint</annotation></reference>
<reference anchor="Menth23f" >
  <front>
    <title>Learning Multicast Patterns for Efficient BIER Forwarding with P4</title>
    <author initials="S." surname="Lindner" fullname="S. Lindner">
      <organization></organization>
    </author>
    <author initials="D." surname="Merling" fullname="D. Merling">
      <organization></organization>
    </author>
    <author initials="M." surname="Menth" fullname="M. Menth">
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
  <seriesInfo name="IEEE" value="in &quot;IEEE Transactions on Network and Service Managment&quot;, vol. 20, no. 2, June 2023"/>
  <seriesInfo name="preprint" value="https://atlas.cs.uni-tuebingen.de/~menth/papers/Menth22-Sub-2.pdf"/>
</reference>
<reference anchor="Menth21" >
  <front>
    <title>Hardware-based Evaluation of Scalable and Resilient Multicast with BIER in P4</title>
    <author initials="D." surname="Merling" fullname="D. Merling">
      <organization></organization>
    </author>
    <author initials="S." surname="Lindner" fullname="S. Lindner">
      <organization></organization>
    </author>
    <author initials="M." surname="Menth" fullname="M. Menth">
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
  <seriesInfo name="IEEE" value="in &quot;IEEE Access&quot;, &lt;https://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=6287639&gt;, vol. 9, p. 34500 - 34514, March 2021, &lt;https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;arnumber=9361548&gt;"/>
</reference>
<reference anchor="Menth20h" >
  <front>
    <title>P4-Based Implementation of BIER and BIER-FRR for Scalable and Resilient Multicast</title>
    <author initials="D." surname="Merling" fullname="D. Merling">
      <organization></organization>
    </author>
    <author initials="S." surname="Lindner" fullname="S. Lindner">
      <organization></organization>
    </author>
    <author initials="M." surname="Menth" fullname="M. Menth">
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
  <seriesInfo name="IEEE" value="in &quot;Journal of Network and Computer Applications&quot; (JNCA), vol. 196, Nov. 2020"/>
  <seriesInfo name="preprint" value="https://atlas.informatik.uni-tuebingen.de/~menth/papers/Menth20h.pdf"/>
  <seriesInfo name="DOI" value="10.1016/j.jnca.2020.102764"/>
</reference>
<reference anchor="SEET" target="&lt;https://datatracker.ietf.org/meeting/118/materials/slides-118-bier-02-ietf118-bier-p4-02.pdf&gt;">
  <front>
    <title>P4 Tofino Implementation Experiences with Advanced Stateless Multicast Source Routing</title>
    <author initials="S." surname="Lindner" fullname="Steffen Lindner">
      <organization>University of Tuebingen</organization>
    </author>
    <author initials="M." surname="Menth" fullname="Michael Menth">
      <organization>University of Tuebingen</organization>
    </author>
    <author initials="T." surname="Eckert" fullname="Toerless Eckert">
      <organization>Futurewei Technologies USA</organization>
    </author>
    <date year="2023" month="November" day="01"/>
  </front>
</reference>
<reference anchor="CGM2Design" target="&lt;https://github.com/BingXu1112/CGMM/blob/main/Novel%20Multicast%20Protocol%20Proposal%20Introduction.pptx&gt;">
  <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>
<reference anchor="CGM2report" target="&lt;https://raw.githubusercontent.com/network2030/publications/main/CENI_Carrier_Grade_Minimalist_Multicast_Networking_Test_Report.pdf&gt;">
  <front>
    <title>Carrier Grade Minimalist Multicast CENI Networking Test Report</title>
    <author >
      <organization></organization>
    </author>
    <date year="2022" month="August" day="01"/>
  </front>
</reference>
<reference anchor="RBSatIETF115" target="&lt;https://datatracker.ietf.org/meeting/115/materials/slides-115-bier-recursive-bitstring-structure-rbs-beyond-bierbier-te-00&gt;">
  <front>
    <title>RBS (Recursive BitString Structure) to improve scalability beyond BIER/BIER-TE, IETF115</title>
    <author initials="T." surname="Eckert" fullname="Toerless Eckert">
      <organization></organization>
    </author>
    <author initials="M." surname="Menth" fullname="Michael Menth">
      <organization></organization>
    </author>
    <author initials="X." surname="Gend" fullname="Xuesong Gend">
      <organization></organization>
    </author>
    <author initials="X." surname="Zhen" fullname="Xiuli Zhen">
      <organization></organization>
    </author>
    <author initials="R." surname="Meng" fullname="Rui Meng">
      <organization></organization>
    </author>
    <author initials="F." surname="Li" fullname="Fengkai Li">
      <organization></organization>
    </author>
    <date year="2022" month="November"/>
  </front>
</reference>


    </references>


<?line 1139?>

<section anchor="evolution-to-rts"><name>Evolution to RTS</name>

<t>The following history review of RBS explains key aspects of the road towards RTS and
how prior document work is included (or not) in this RTS work.</t>

<section anchor="research-work-on-bier"><name>Research work on BIER</name>

<t>Initial experience implementation with implementation of BIER in PE was
gained through "P4-Based Implementation of BIER and BIER-FRR for Scalable and Resilient Multicast", <xref target="Menth20h"/>,
from which experience was gained that processing of large BIER bitstring requires significantly
complex programming for efficient forwarding, as described in "Learning Multicast Patterns for Efficient BIER Forwarding
ith P4", <xref target="Menth23f"/>. Further evaluations where researched through 
"Hardware-based Evaluation of Scalable and Resilient Multicast with BIER in P4", <xref target="Menth21"/> and
"Efficiency of BIER Multicast in Large Networks", <xref target="Menth23"/>.</t>

</section>
<section anchor="initial-rbs-from-cgm2"><name>Initial RBS from CGM2</name>

<t>The initial, 2021 <xref target="I-D.eckert-bier-cgm2-rbs-00"/> introduces the concept of Recursive Bitstring
Forwarding (RBS) in which a single bitstring in a source routing header for stateless multicast
replication as introduced by BIER and re-used by BIER-TE is replaced by a recursive structure
representing each node of a multicast tree and in each node the list of neighbors to which to
replicate to is represented by a bitstring.</t>

<t>Routers processing this recursive structure do not need to process the whole structure, instead,
they only need to examine their own local bitstring, and replicate copies to each of the neighbors
for which a bit is set in the bitstring for this node. For each copy the recursive structure
is rewritten so that only the remaining subtree behind the neighbor remains in the packet header.
By only having to examine a "local" (and hence short) bitstring, RBS processing can arguably be
simpler than that of BIER/BIER-TE. By discarding the parts of the tree structure not needed
anymore, there is also no need to change bits in the bitstring as done in BIER/BIER-TE to avoid
loops.</t>

<t>This initial version of RBS encoding is based on a design originally called "Carrier
Grade Minimalist Multicast" (CGM2), and which started as a research project whose design is
summarized in <xref target="CGM2Design"/>. A vendor high-speed router implementation proof-of-concept was
done, as well as a wide-area proof-of-concept research network deployment, which was
documented for the 2022 Nanjing "6th future Network Development Conference". An english translation
of the report can be found at <xref target="CGM2report"/>.</t>

</section>
<section anchor="rbs-scalability-compared-to-bier"><name>RBS scalability compared to BIER</name>

<t>The 2022 <xref target="I-D.eckert-bier-cgm2-rbs-01"/> version of the document adds topology and testing
information about a simulation comparing RBS with BIER performance in a dense, high-speed network topology.
It is showing that the number of replications required to reach an increasing number of receivers does
grow slower with RBS than with BIER, because in BIER, it is necessary to send another packet copy from the
source whenever receivers in a different Set Identifier Bitstring (SI) are required, whereas
RBS requires to only create multiple copies of a packet at the source to reach more receivers
whenever the RBS packet header size for one packet is exhausted. The results of this simulation
are shown in slide 6 of <xref target="RBSatIETF115"/>.</t>

<t>While RBS with its explicit description of the whole multicast tree structure seems immediately
like (only) a replacement for BIER-TE, which does the same, but encodes it in a "flat"BIER
bitstring (and incurring more severe scalability limitations because of this), this simulation
shows that the RBS approach may also compete with BIER itself, even though this may initially
look counter-intuitive because information not needed in the BIER encoding - intermediate hops -
is encoded in RBS.</t>

<t>The scalability analysis also assumes one novel encoding optimization, indicating replication to
all leaf neighbors on a node. This allow to even further compact the RBS encoding for dense trees,
such as in applications like IPTV. Note that this optimization was not included in any of the
RBS proposal specifications, but it is included in this RTS specification.This optimization leads
to the actual reduction in packet copies sent for denser trees in the simulation results.</t>

</section>
<section anchor="discarding-versus-offset-pointers"><name>Discarding versus offset pointers</name>

<t><xref target="I-D.eckert-bier-rbs"/> re-focusses the work of the prior <xref target="I-D.eckert-bier-cgm2-rbs"/> to focus
only on the forwarding plane aspects, removing simulation results and architectural considerations
beyond the forwarding plane.</t>

<t>It also proposes one then considered to be interesting alternative to the encoding. Instead of
discarding unnecessary parts of the tree structure for every copy of a packet made along the
tree, its forwarding machinery instead uses two offset pointers in the header to point to the
relevant sub-structure for the next-hop, so that only a rewrite of these two pointers is needed.
This replicates the offset-rewrite used in unicast source-routing headers such as in IP,
<xref target="RFC791"/>, or IPv6, <xref target="RFC6554"/> and <xref target="RFC8754"/>.</t>

<t>Discussions about discarding vs. changing of offset since then seems to indicate that changing
offsets may be beneficial for forwarders that can save memory bandwidth when not having to rewrite
complete packet headers, such as specifically systems with so-called scatter-gather I/O,
whereas discarding of data is more beneficial when forwards do have an equivalent of
scatter/gather I/O, something which all modern high-speed routers seem to have, including
the platform used for validation of the approach described in this document.</t>

</section>
<section anchor="encapsulations-for-ipv6-only-networks"><name>Encapsulations for IPv6-only networks</name>

<t>Whereas all initial RBS proposal did either not propose specific encapsulations for
the RBS structure and/or discussed how to use RBS with the existing BIER encapsulation <xref target="RFC8296"/>,
the 2022 <xref target="I-D.xu-msr6-rbs"/> describes the encapsulation of RBS into an IPv6 extension header,
in support of a forwarding plane where all packets on the wire are IPv6 packets, rewriting
per-RBS-hop the destination IPv6 address of the outer IPv6 header like pre-existing
unicast IPv6 stateless source routing solutions too (<xref target="RFC6554"/>, <xref target="RFC8754"/>).</t>

<t>This approach was based on the express preference desire of IPv6 operators to have a common
encapsulation of all packets on the wire for operation reasons ("IPv6 only network design") and to share
a common source-routing mechanism operating on the principle of per-steering-hop IPv6
destination address rewrite.</t>

<t><xref target="I-D.eckert-msr6-rbs"/> extends this approach by adding the offset-pointer rewrite of
<xref target="I-D.eckert-bier-rbs"/> to the extension header to avoid any change in length of the
extension header, but it also includes another, RBS independent field, the IPv6 multicast
destination address to the extension header. Only this additional would allow for RBS
with a single extension header to be a complete IPv6 multicast source-routing solution.
BIER/BIER-TE or any encapsulation variations of RBS without such a header field would
always require to carry a full IPv6 header as a payload to provide end-to-end IPv6 multicast
service to applications.</t>

</section>
<section anchor="seet-and-beet"><name>SEET and BEET</name>

<t>To validate concepts for recursive trees, high-speed reference platform proof of concept
validation was done for booth SID-list and local-bitstring based recursive trees in 2023.
This is called in the research work SEET and BEET. See <xref target="SEET"/>. Paper to follow.</t>

</section>
</section>

    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
        <name>Contributors</name>
    <contact initials="X." surname="Geng" fullname="Xuesong Geng">
      <organization>Huawei</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>gengxuesong@huawei.com</email>
      </address>
    </contact>
    <contact initials="X." surname="Zheng" fullname="Xiuli Zheng">
      <organization>Huawei</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>zhengxiuli@huawei.com</email>
      </address>
    </contact>
    <contact initials="R." surname="Meng" fullname="Rui Meng">
      <organization>Huawei</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>mengrui@huawei.com</email>
      </address>
    </contact>
    <contact initials="F." surname="Li" fullname="Fengkai Li">
      <organization>Huawei</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>lifengkai@huawei.com</email>
      </address>
    </contact>
    </section>

  </back>

<!-- ##markdown-source:
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
rr3fkuxPNmPElVvIJu1RpSqD2LI1mAMLWmP/7uLtVWDlzmvTrWJRjP13KHuB
yviWncgAzJE3Dz4S/XGzkCQ/OOmrxknnMUOVuoJMKnXrw8JjHtO+gK93Zalb
Uc09LXAI418OhalI7zSrjI0uSyxJGmIlp+u/GrDLwnyCuwTUfSnmOyk1khA0
z5lxQYIxFK1VmI7qSidWGcY90VYmqwTsMCx4gikTbIxF6CzHvi4+LYxBoCYX
KISyDDFVMAIbZBcHRvYUs5ZsHZK/NBuasnhnHb+f9xlX3Rq4YBBo7/OcirDQ
s2I6Z/i4SJOg4+t8Ry4BwWJYFpTOzjiR0XYYfBV2MWZYAFYTBBqJYiIblNq1
KBQHXxZgcjAaoc2KdZMqot9++0zvJIIbfBVdca4J47y0P0uqzWII7+tR+PP1
3i/0D/eRb+YoJI5Fv3wHioJbKviPcMm3RNt+M9Bf4ZILRiRx4PILHrQXV8R4
EilNjSpKFCS+CePoLXfs1fptMs7lc4WWLZISeex6D6Xre5Kv/1YYRzZEF+dK
LoIilFiGO9gSdzn679UmF/p9G3GE9Kmh4JHSSi0Ra6IyZk0KgPK1FKpFaZmI
bMovSzh+SPEB3P5yF21WY+SYi0Xlwn9YRsAwkjZr3gcH1L6D0+JilaJWNMxy
cRwwxoACKAmkKo4tW2MnKGok5hLejJxEj44mluoM9W2C5eBTp9AUGb2qNhvs
6WKmLug6krsBypheEgwO2Xvb1tiWbdXaoEIQW98qgtBG8q4rb0rS0N8hL637
vGCGs1WZLJAjwa61w2j6DwUYLBGsLBAGp2J4SncfhUO4hIxMYXATRlJ6TIXZ
/SDm5Qpg4zOUiiXGPKN+PUIV+18GnQgXQjT9BhthgEHfh9tAiaAVAs5LgIkT
l6gs3CnyGWvYl+FJEmoqXY4f6CvBnV9fKK5RgwQa7A2oPDYKSrMOMZenaDxy
Gz9PqTHiNvJoqWugnuP2KHzp45H5+BPX1nZs8zq/kfWjugm1TrqWNfVSSHhz
HMT1y1CS59zL4KUnuTaYOFNEN2FMPxM+Word4Uu1V85fx4JzTJAgcEl3fZ2P
IrKNw0AMKMsbhHYXzYqDI6xPH09AXYn0y25K2P2wW4SwsZrQmXwC20/wkuuM
jfPPyCI2VKoZij3CeMn9BgwvTmnVHBg9RDU0LH3P4r/jf6mjGuI2Tbx4Vd1h
0HoDS0MERI8b96ddCfOuecOvNBNe7IslN7AvuMmx6LhoNlxXy4MSVp1A93NQ
QWiD39uVs5KdegOgQ5HijLVekqIgXL4UQ32UbapDsSp+jg0RdmhjyBzIDC8l
5I3RIg76S7cJ9vvxcxFShF1Owq5225FXmte4TMncE1RMgT7CD4HZri4Tfgs+
O84iapnQ8YHh28x65OSR4Nir1o3ZK7Ma8CgpwMeUR9G0J7wzcdoo6ATDaClA
47CRuPeMYRzNxFSp2h9jFW8idn7I0XbeYWQa4qStbZrw5tAUG7CNHvZUsMpx
y67vJbowfUrZrdM3lyDabT1v3zhSlI9/c06XCAh53zoeCD49cKi+Ge6FgFXn
B5Hzcb4MtcayTkoG1MhqA/RRUA848nBAFGps0ErDoTs8EWzPAmTnf7Dbx10z
Ujtwx1EBtOdQ7AejXPeyGk/xEk5Bs6/uOrCGVL2c+D9SjHfo31LtNa7W27QK
OzwLMTRgcNBjhYZZ8PRkpXz0U3VLIjVo3/Fy6z4jZF+Qb/zKBwYj1IwIJZ58
YnAQMzYSnOI3cxGuFPY8KkSctrjxXGcOo0uAGwZu5mDfjD2+IEdhSR9Ln5s4
Yy4O4nItEkrbHTIvWg7UEdQrUFRgk4lwy2gImDJtQr6/MxXX51w3pWZhlw/E
jBaHPEnEs+nG8oHNqemEFnD6HFcP+zJQCkpKfZLIAMwGE0ZUd0MzIDqXvC08
4ixrHA23oiyhWS+mglR4UomO05hxLGKlNC3dFSbc5xG1GknNX8raxj4EGCyS
6cSKsewWXEh6qkxxXudZK5n+6GI0yaToGl4/IBEpJ3spwY5XRX4rGIK8odRE
4oPAjlL7PdO6FHUwpLnFiXN/r4zEmlBaSTAf0Wx4u4zhQsXTxnYHdI8iOGij
tJWmntIJz+7TRgl4Jwz5yrTDop1vByJbgrqYy/5rdjMuGgg7sSHocai0iviy
dEF7abehXgzc8w77e0JJx4djZKYHt44QmjcK0IxeiP5bmvW508v+5Z8GwZKU
LX/Y5f/9P197cO4vf5j4L/zz0X2M43/99d5vX9NV4V9w+cfLH0YXWZ1tmo/4
pNF33049fYiIyY8EdeJ/ldgf4K8d3U7tH+VzfAqRs8+hHHRWRqM/fPz4V5Lm
cMBCExgxYsFLoCX/ZlHIb2ha6VZ2KLwKX/S6/ao89/Pn0t3e5Q89UgSaatdU
GueDIpgU1nDszygQe/kDm1MbrgRAWaBLwAWcGuNCT1fYDu7hOKbqRINRFXJq
FYSO5Q6wh6mQ9hM/9cf+kX/sn+xdZr976p/t/RvBaG/933vqOVGv8/7lD2/f
DmD97P8SmJxP/+1HD/9bf3cfZx8XH68+vv14+vHyI0nX/qOj6eRo+nyAoTB4
pO9PjuAfCtDDScFvV6/xZ2x5RHyNaMn/0xNEnn6zzsAABfY9wI67ESuDwI0/
jN7QB8iMdCPI4dlAsTUnXGuEckhATAF2kxQeogYP5gJqQ0GSoRAycLJiSZVW
cM106PN1k1OjG7cY5GvMI+8/TSFTGSckFWckvoxw9KFB0VIZnL8+8S/V9NFy
pcOX+wj9jddyRHdJ5MxCQQO7ddtswdl/jXylCGQGMlFkCbQG9irC5BLVWswq
UCZZfQ9TfDsg24PfW57de1thfqbP1sdA5shmgNH8pwNlphOce3ylzLCZeW2w
h+5yjHOxXX369uwImJKRofIMXDc2fvljyV2Ezn/opg6YbYGupbIwR5/aJoE9
SfgeNwQ3RuMRcKoTcKqw+dD+6KjCTrD9iIlxC2wYF5Ot6oE8BVdFvKhkuZCM
ooOBWiChmJDcdECwICYc0iPK9mjs3ppIb/xqnqiaa1q5JKCGYMgqYJMUuL9S
i40JSKg5jjVE4KfCYcBSLu9pILQwYco9Mkl6MG/XY8XeG0ce1o/4tQvsiFlI
6DdMjraP6BFCypEBizfz0I7ujfbFiizlv4ONfAdupg3Nxkgrer+aPkOL+Pp+
q8g+Mp6WWh0noI9gs9IGgOWBcbIZh4KNtaa5VA7b0LtIRIDFh+uDlQXm7SCK
EOT8wN5HJF6PQLqesCaNX1nks+/DZd1OGGnANt7Id2ApBSIQxg5ot8VgRORv
RPqNHh3LBSjaqd7/ajd7TR1EpecBox25wON5pGWcfhMhGTwy7i/ZUke0dU7i
B/I+rNW49Wf3HfRShh36a40ey+eNIuswheioEB9fYJgAQFmxw6YlZznj3FT8
+oS/JMRj4//xGz89fpYgiE1Fhk5HSTnU2/6Atz238ep4Ux8H/Jpf049w+AHo
9McalhSi6tDxPibzUywUJ+CIyGP0h0o29fmKRyi3yZ1PrysXGvWSoQPCineL
kifQkmIY8vw/EBmEXwisK3RC8YvZSAxzE+QU+BClLqHNAsdZBVItl+JV8ADc
fI3+iYiZZfFBkoYhKGb7cViOiOP3QeOJhBzEpI5xYhWsRMLuSuQsPd9EWLZZ
LQFNavHIjUvJM7vj7gVFI2ZkUTomJFcpaQT9gcZWS3UpJb3ZtRk9/NVotk69
vgaUBD4i7RBLObSQqsHJ8YRk6swB6PqD/M0bwdkU2NUAP6DoEo4pkjjYC2Wy
uyLU2RCBYtX0vJD6B40MQnjhcGiNcQQS6tzIgOE3/gpXTCJFnfQdG1FIa+cY
WQ9mnMQRp58+EYi+iTBB3bPapCOtsFDFrNVKFdZDU7dbtri4JoKFdOShtJat
4qjOGkN8Mq/DRjwa5s/9i9SwFzu9Y/ke+p+xbt3HifxvKn9/zrr+K8f2Mw+8
5d/6U3/pt377BVa0kl/t6PjwBxcPLewfc8kUx3CeAutbPGOm4DhbaPsVo/al
dBfm3RitcLa3XcfQLqs69FnTfhKzb8DyWnwzkbARsACqfjZ66YFXeMFb/BGD
zZ81gEkkshHM5ieOffrN1KjaLKm+kAoAFC/fTHyncLJNJiXyw86lrBxKJTIi
lXx/18RuJ7C76pi8wSw3QrAiVpY0u0gzYzFKzyXH4Azuh0UXSWRKUBrxDW05
Bks9tDe5G6ekMwtxikRRc86rCtKD2/CZRrsuSBJsFCq5aOEj3n4hQkRNioyR
H8jBrXftQM6Owbdh9ejboolvzi+g9Q70wnyZApkzseQkXeuKG2Cu3HSVKah/
i7ZDEZIpSEDARYnYDHNEboEdTJL9dVqJFPdT6l2Yjjz8mmk5vMJ+VGqHYRji
Sqn3nJyitkXsAdpexfvcBTRw9j47sf3kAh9j46FfQZeXczB6Sc4KSphNVQQG
oqkqPdyNvUrRPIqyUIVDFmpGZzklATOig3ZGiODcZEdHNFSUCHV+V4Pdzem3
YKpRpk27Z+2rixGDgh4W1/uik4MeE/O/A9f8J0ToaBqDEVr6s9TYGIewUvCL
iZCJJzbjEFYswiJi3IccgQCZQRyi6ZeEM0KoAxntCIEjEoww8nfsT7VbLolB
RW8RXIsAQ6fnb67BzQh9Ds3ZZdfoIQ5CJZ3ZkbIFSPlrVffndP9l+lVm8d9o
AGa6I4IERLOxMpsl1BSHyva4DsfAGP5gF93w51Dj2+N9FnrxeRvgC5Qz/c/G
upzhPjYAJNjGoTb/YEDty0b/27n32ATS3n52/ZSjOU+x1LRGx7CiRD4XUJnO
y6ZByA+izt1BjuE09V6f9CwN1mh/KdAybKoDJaVYjaY4YxfDVOMdYl229zkG
FwqFWA3IvsPEuewzRtV295qG9+JWU8unwN492nLHFbWW0KuQD+a4oqnoxrtg
XnVbOoaIEyrwBxXmvuYlrRmoN+woTMIRBdBY1Jqq/tXA+139j7NwOIF9jZ2q
sOD3JU8d+x+5XSs91rEqqAn0Ng5mncFPxF7gOus25EbZGL2rXGLgbdWFJQss
tgimkKFl0EMM3S0r1rWSqk5nQkKMsNAaPAokYT52pBE8Cc6da1cpdWdoK7iC
e13FMzYEBkF3Xv7QDCmJSeo9xF50Vt2ZU7n0w9KSFKl/WS60ujCMQ3yE8Dbk
u2rpbN/K0CkrdOeCrc6zujPuV0zpDePpKLiauKPE7thg+2bDBkodWzgd9vrx
Y6KDbuXLH8afl/Qg63/Xk/t9SetIWgeHjdIl08nA5gZ/fwwrm/8KuRytireU
CEVGw30rXWHIGYttF8mmkjL0VNzyWULqo9A3wRyj6MLlDxNgFTQb2X7Dp7fW
ZCFMjIqjsDY7rkXrBt+iRHjo6A2OU1BAmGXvnI4gI6eJYUkBNEHFAtHRJKuR
z/liC12NaYHpkOfSD50GBtI6DpPedHK3f/soMPA6u89rEYekdJwIFlOGxzDE
LfeBRbHIcqurRRgIyhabU+iKQKvs8ojk53fpthXBVfARLO9QFq6p7TZtP7H8
uQ3t7VNhg8tvwbJTJ4cVF5Vk3CljYIswCr5NOMYb9yWI1eqgVqTw0V2m51Ch
ic6RUYZiKOOQ/RaHs4WN4GfsmlbBcOz2DHhOUhJF5+UkdRSE60PgBdcmfAtO
+i3j0+EuuYohSC7GFJESsoREKgpn4QHqsU4BS4Kk/07puY4R73JaOKHBLmOg
673Yuha+Z5ZUSKbuiJcYGRM2pmcQ+3IlPTjuGBBklgnFuBpIRYyQINj4+lAm
Nhn6IN74HuMfMYzZuLc0Ouk66knd4DqLxsPEHGyCuwJbnRYRtqPgKXmEbY2Q
xbSGeNY4ZNiI3L+O5TYi4UJiRVvxq28Soz/wXBxCmlGSW6TsrNQkgyDtAN99
7YRl0e6RdyAWoJ2AUUBZpM7eNloZW1zDHlCfKQebZ1MhY5ANF5dmou6MkbTR
7AyWjIgdsaEkkGvMGU6gmBjAP4WwNYj3eStt+1Ehxr3aich2janQYFtNORdr
dG2tdubNRg0wezS7QzjEfKpVtiFdrfaD9EmwURpRAdxBNwZhDaI2jcKwyUrT
ORBNiaW02MhvnwDDPSIaEcN5iIHk8yj154zTQPadj40h2PSL6VV5aYnUiWk+
DzvXZ0ssQJZOErM8D4W/UV7HyVpnhTsK8NTJvnHE0MxraUmkBkrInCadJq/N
Z93YS2PVeQeUlVZXBj/HGOraGW6YJEdMCnJv+wX5YML6hyPDGJxMw7ayLzqR
v/3ryDMwfoFx77DN6yan+m+MGWsDiCi1HopD+B/JyKyzopEMKVjRDXlWjh2L
A7oOpfN7bFYRAi1d658dYBQybu89xl1IprZEUkTciXPT0H+aQiwPzH4YQ3Z8
XASGrE08CE1cnSJilqr2M6bErJBuE+SFZ9GFx1Gwz7JJkUtLivhqRErd6qYu
sBa8PI4hVRIhR2ZWR711eEB9H30UnBIdiskgbcx8xNQM212LGATlNvE0+xmn
VyVPE6KiQErqukZFvKQ/dSr84FCmK0FFbpUk88NKY4o41elERBKbtgBERi3V
D/eyYGWlhiNkenYX7ZljadEjRwNoX1k7ddGw1AYnbAl+YRzPFHGh2GbniVqN
rOObNQJSgF/o5XS3vgn1gILwJEwpkve2WGC3EonFvUVAiBi3tg5AD1JDK1AB
5WRZZh3EaMCVhwYNRogoQhcLi6iRU4g0ImNzWzUT23SwMnxghJgKVKErRYIZ
9lCJh2kwT8a2EA2WXZm+DEYuUg9olAfEkXWNfo+cJfHq3QVQ7PtSO2dzqwdJ
6XI6Mcf+Kvw6UQ4JXjpWXYIqD+fV7VNxnqYl1msv5xZaSobEMoiLyn9fUueO
PHQTMXigQIVD2lj9Z2AhgcgFcyfeSH6bYoG0RGCRU9k8tnEs6dCJCsaIGzCG
AImJ2fOnJviJay/tMyJ4iPPQMFScNr4gBuhus7ow3Y+M7xCFCr4zSgJCfSUv
7/yDxohAcqInE7sQSUySlgLfD+64ug44NzJVYiesMNOgJqjSUDbEYZVIaNI9
XffgbLsWFk+3iifa+MuRyk06oaqiptCkJrkT9ZyLQbldxB0JHXpM8H4y9Kua
HRbrgF2c1QjcQxEjCAFc9wZ5wpyJMYyKhWoGstvcOgcB5ASj0Jm+VP00TDAg
trgqOcAXZNUxvMFJBC5wm2vC6hyIP7MdRbB9RQjJiTTC8DIpGMXWl7B1N6SW
W+qFRhccXJWinlPDOnX/MpkH063luqY8tT1V+Ms0CcEYe+TEPgkB4aaV860m
whkFQt44d2Q1IgeTHPieoSKY/ONQeaISpuB2jVUSixtRSyTZTY5a38g5wnok
AuqFV1gDoenIy+CuSWN6x6V564KPU+gEMQruagI+Eh1LGqlqS3CwPMIxfSkk
rqdbc+6ZzoBVuG04t5TB24qMjU1pqV5jMXTYNmmrUb+qkaR1Jm1ueP3xeawS
yLVmawq7BvJR2jj/Zr8+6QjZJqnhU2uZ/QNbkiRog4l/E3AE8NUW83iiPOk8
ZxhnVzQrpU03KBakPCq7YOU28XCNcJp6yAGHotLEV7KlGNxksMfYLxeNfRYG
Bw4YX3BukDEBmMHoAjFozGXPGCZ9Ggz1Kpdp0v4I4wy6/CXLrM6plOVIecDi
m6n/7asFrrjGL/EjCSzuMPjG3g2Fw0B89SkgR/UMhwDUjfKKC6oIv9ZCmd3W
rqxWdFJAvwmVAntcYFg99Oyg6twuu1uhd6BMnbzI7tMJ0Sy+5F9FuhmR7kBh
jNBxxnQUKxvZVRDGMc3a2QM57QJb9+B6VAiW6K9eiKyiaOFKKnMex4FVCVa/
9GhgdDGermS6fofq3Hcv/03OPWTNLXUXoYbIusvUpdqQB95Z1enE7zX1UnKw
ol2vuTyAQDDeSBZEFPlrM0genAo7UrvagaltkdgRQ4xTeLjECW7uZ7u2Gg1A
Mi+Lm12tNaSkxXhxaPO+PbaJKJV1apSJLXYbi7X5uF3E7NKxhv51qOOnYqlw
osKZtB2d3/tbELuLXD7XA1NQA6AtPLenqIReYro92bINQwnWBOchpqqLe8/b
05kUf54Ua8cGoPxOY/89H4/oMi04Dm3VtIMOPgafoZ93x/AP9VgLLxcbyNaF
WC8lMnWTH3pFqf3l2Cs7qPSOjSneY1N2HWoO6Oh1wlfEEcn74awI25vgOPLZ
e7i2a+z6KpPUdG+oqZMOFm1oIRtj6nKQSadKF+u9A0RPIV7x63iUhYXYC49p
i5cgBdmlYuiFqWY0ZFwlrVBjk80bpP3o4mxozn73dKBNSbGsrQ3WvQpTMXWK
ojtpSBlDDvu2BaFk79SYng2HxrgkLNaE5lpUH99wUkjYcyMAWY4fyw3DpD+b
o34hBPG6HJnfb58eUf7lusMP62yWr0my6tqp91jAYBLNJqMIbb85Pp26XOXc
L3HZ5tLCax0KsYG5ayod5tajKTXGjAbI2s8QiatUA5El/hAWkX077L4r8h0v
JprGGll8gHbjDl9Tk9WozN6wvOB0sB5zh31Dg0QpJDeli6qr/uDUHfWW2it5
0LIf29TVcmI87fW6kkaopN+kbyosMPXYqvh8dmqKjXwPpgBoBbZAVFk21XqX
9mFGJoC1H1JbBVtXnYQJTCNa9f9toTYq2iA65Asnfe4lp8e7X14NTIPSNO0B
fbKiqBFlx8TNY3F2i4GUGxRVyx12h6PWvm1AhWuXstg5jVJRdGvsW/9hKzvQ
iHdlBmc0sMySfExEC+HBRoR8SFc0EhHVwW1VLOhOZ7ahdkhU3zU5Fz5i70PP
kYaiJRfqZdQhikV3rencMNCn4YQ+1Le6JrafBKgt781ppdqDeVVQNDZ2edwU
zUjM3vuxvxJmYGfo7TEMQuGs0PiHdzr2bSyLf4e1gbmEC969fGUfaZ0NHzJF
d2paKvH8fFfXLK5ZwDcUpXgXKBJq4hPao29SF7NdyMgGKJLdZ973lb+VTatl
ArtXIddox9ZB7FdEHRlgjB72sGu5KbJs7vl9zxNGRPIame/JcWPdS8b+JRgU
FHpam3jTKhcb57B2J+ykOD5NtJcchanJsPwSOeO7+Kx4E66sSMojtZyY8Nwq
hffAwZey7eozT2dBgMTvpbMQnEQPnsPxJ/uajI1YsNIq87tY3rUKDZaYFUts
kgrO3HwVAkkUNNOO8zSHssGGDkhfTY5EIcpZEjztO0NR/TCpduD60sfczkIP
aKXbmqGjdQ7BR55AzgZMQ00xSZWsKmonzBq7Mb4/AZU5uf4AoSIQPtqbki0s
uTTFpjicRl5omex5bMQcUpVgeCQ5oJhzLawXpE+zZlsemB0uCMVAKbBac5il
0l6LYTN3ytZEtRLmQMrcFiTQXcg2sFhOdUoo+ItRMWuLdMp5pao+PDQWqXLS
qaaFx77U3YiiBN2LYEw5NdH5KArT+84ExsKBHtEW4DOAoyBjcE696LCb0QsN
4oU+0xFZ2294TOMlWlUjcAnVyAyIh22Im2SbGKedz377ar9Fmrjt8XiUOz1j
256sbE487DZARIcKXhC2ex4lTuiDSGZ90rSz61Nh4mmv7Xua/+5fnQ/91Ws8
DuntEF4RiLsFIRxqtAYc84srcaiz9NmrdxcxHGIbmnGE31RQcHlYqw3SDvYL
sw3RIqCKu311pt8pUVEvaKUFzJw90cS3VHsnR6mH+g45Jr7TepLz/IgSDlgW
s5GM8Zo02NRsHOKQ0sOjQ/K805nIlEbQzLntfyyH0MBYlQt41wJ98CLb0Epm
eP3q6PXVqwuKSf33Cuzt71++G0rwqa89LbibpJe+iEJZPrNFWmaNfaRy6KJF
hHba+01P8gh5LZKWvHb6Neb31tn9aNnp9Aj7AkeVJ55dYojilTY8U1vEbAqt
ymOBp5a0vDKiYeR8dG0NhNZ31bQOCHrPbiC16CRMEWeh7yOkrNMpLwIbYydH
ZGRLbJZse41OaWOa69zBIPlQYEVMiLWQavZQhWTYVgm3cSO4/c1xIJ1kO7BQ
EiMTbCZ3E5ZdaUrZxIxwXRZTdRqD/MRMlOGm2sy/yMHOhkEkKZqu59hdncdM
1K7cUaZJSqXS3pmYNdjJeQ9pA+dwSmxJIXPwItdOveC4caUuG83S16F4fY93
TVg3Kk+ScKBlU7mWTq8gpfCrrIx/YFEOqYTDTTIP9MO1j8ua2GJKirofajJH
CG/GjLIrzkFtitudXu21V9409VPsrIzA7/RIJpRnaZudoA5EYkYsRXLSkXQv
14OPFT0MZlfzvtiC4VSDv8ktF0SOL+i0QlEcZBSlLYyN8ar6zmFmB1b00B5u
/NGhNoYiciURHpIDfLK4CYKFhmOosEBbaWY0KoWkY+/ekyj6Es4ZCSEC0xux
I+WKh1eTwzIKkaW2vKOE2HsFnqCm8mAId7SOjf+C5KRDpDNKw9HRAChenBRu
+VsTISSnKzZuIreKOVZMOq3bCd5ZiiPV1v4oEQK2UQBuemoasABr5b1qECsX
9fgSPVGFWsTK5g8dfrcZ+s3RiaFHLioOa+0dhB1Pk09iR4dP+sFugHKigOTm
ahcOQ/B0SlxsdO7fUGDfH+vA4ZRh07EKPux9z+qy5/tIjYHCw1w88tMchhfA
H7ET9Y30aQQdSDRvY0gnPb8zwLTuOYGXVnAQXm4dTDcdoq3iyYK2LxsJABPo
JRMc7MSGFZgLEBfszM/39RH32OYDBh1KJXVnIIwV1RWG5xprcwWOQnXjaPWW
oQqVM5yMiDAHzFSlxv8tpFGC31H80NshvSmiwGEzTI3RXqWV67y2qqC+ukOS
BrXHu9JR3iQZfqHDaxb9wcBpuW1BcZpDwMj9siJlAgXPxAPjGNxCNeK8JwPj
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
t+Sj5xWKN/YX2ZY5gnOQY/e/AdfphBx16QAA

-->

</rfc>

