<?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-03" 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>
    <author initials="Y." surname="Liu" fullname="Yisong Liu">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>liuyisong@chinamobile.com</email>
      </address>
    </author>

    <date year="2025" month="July" day="06"/>

    
    <workgroup>PIM</workgroup>
    

    <abstract>


<?line 175?>

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

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

<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:
H4sIAPHyamgAA9V9e3cbx5Xn//UpauGzG2AMgAD1sjjjTESJipkj2VySHk82
9vFpAA2iLaAb6W6QYizNJ9v/9ovtfVbdaoCyktk9e1ZxKAroruet+/zdW6PR
yM2rRVHenPhduxx95VxbtOv8xF+1WZuv86bxb3frtphnTesv8+0afmuLqvR3
RbvyV/nNJi/hi2rX5gv4fr6rm+I299d1nkMT9W7e7uq88f3L66uBd9lsVue3
J35bbEZ127hFNS+zDfS2qLNlO8rn7/K6Hcm3o2VV32U1Dm40eeTuYIgX528d
9J/fVPX9ic/fb12xrU889NO0x5PJ88mxa9o6zzYn/vzs+rWDf2Xl4udsXZXQ
yX3euG1x4v/SVvOhb6oaHl028Nv9hn+ZVxucTvOTc9muXVX1ifN+BP+nPzzS
6yqvaVnOaLD6ZV3houWLoq1q/ayqYcivd7gCd3nhr/P5qqzW1U0BC/L91Qt9
DEectyf++Ph44l9C/3W29mfvt7BuzV12r4/NixbmfJWVbeZfrrM6C19UC+j6
5Qv//MnkySR+uoOW4A3TU77JijUsV5v/Yd6Ml9luvMj3Z/i2mK+yfO3fwlBW
yVy+L2FvYYPbe18t/fUun8He5OVel3/M601W3ne6xaVd/WFXFqNW3zzY/1Wb
L5d56d8U5aLM6/+DI2i45fGaW/6Msfy5aKryBoayS4bxclWUmX9bzYp1vtc3
fdnpeV3s7qmpP8zx2w29OQZ6c3D84LVitmuR3EbS77/vcur4j3l546TTb3YZ
kJE70JN0ApO4ec8v/mFFD1MPoc1ity78/1j9PU3+DZ9+jy8eavFyVyCVfH5z
QAI39e5gW6/hq3dZAUv92a2tiyW/ZNtzrqxg71ugEzy9l69fPn3y5LH8+tXx
s+fh1+dP5dfnx0+Pw6eTif76eBI+fYYtuKJc2qbPR6/GwrFmRV6P6llz6OP5
zeYYvxtxyw9/Pe18vWnqp7bR97u9jw41JGN+9hzag1/pFB8/OiGCFN5+tlwW
8yIv53SKTs/PLg2TL+DkZfVN7r/N27uqftfQm1lZAtuu821dlMz0IoeEP7qL
r8bQYQ3n6yb9/HpVbbIGjvb/+p8zPdL63duxYTVNXgN7xJU+8XKGzs/Ozk58
Np/nWxQysAe+h5+BkMnKJpujOGo8iCQZMIx1AZKpvi3muX+blRnJqJ60pnM4
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
L7ItUwTHIMfufwP4asjt6OkAAA==

-->

</rfc>

