idnits 2.17.1 draft-chen-bier-te-enc-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (March 4, 2022) is 777 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) -- Looks like a reference, but probably isn't: '1' on line 651 -- Looks like a reference, but probably isn't: '65535' on line 387 == Missing Reference: 'SI-i' is mentioned on line 645, but not defined -- Looks like a reference, but probably isn't: '0' on line 654 -- Looks like a reference, but probably isn't: '2' on line 650 == Outdated reference: A later version (-13) exists of draft-ietf-bier-te-arch-12 Summary: 0 errors (**), 0 flaws (~~), 3 warnings (==), 5 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group H. Chen 3 Internet-Draft M. McBride 4 Intended status: Standards Track Futurewei 5 Expires: September 5, 2022 R. Chen 6 ZTE Corporation 7 G. Mishra 8 Verizon Inc. 9 A. Wang 10 China Telecom 11 Y. Fan 12 Casa Systems 13 L. Liu 14 Fujitsu 15 X. Liu 16 Volta Networks 17 March 4, 2022 19 BIER-TE Encapsulation with Multiple BitStrings 20 draft-chen-bier-te-enc-00 22 Abstract 24 This document describes a "Bit Index Explicit Replication Traffic 25 Engineering" (BIER-TE) header, two levels of Bit Index Forwarding 26 Tables (BIFTs) and a forwarding procedure for efficiently processing 27 BIER-TE packets with the header. For a multicast packet with an 28 explicit point-to-multipoint (P2MP) path, which has multiple 29 BitStrings, the packet with the header containing the BitStrings is 30 replicated and forwarded statelessly along the path. 32 Requirements Language 34 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 35 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 36 document are to be interpreted as described in [RFC2119] [RFC8174] 37 when, and only when, they appear in all capitals, as shown here. 39 Status of This Memo 41 This Internet-Draft is submitted in full conformance with the 42 provisions of BCP 78 and BCP 79. 44 Internet-Drafts are working documents of the Internet Engineering 45 Task Force (IETF). Note that other groups may also distribute 46 working documents as Internet-Drafts. The list of current Internet- 47 Drafts is at https://datatracker.ietf.org/drafts/current/. 49 Internet-Drafts are draft documents valid for a maximum of six months 50 and may be updated, replaced, or obsoleted by other documents at any 51 time. It is inappropriate to use Internet-Drafts as reference 52 material or to cite them other than as "work in progress." 54 This Internet-Draft will expire on September 5, 2022. 56 Copyright Notice 58 Copyright (c) 2022 IETF Trust and the persons identified as the 59 document authors. All rights reserved. 61 This document is subject to BCP 78 and the IETF Trust's Legal 62 Provisions Relating to IETF Documents 63 (https://trustee.ietf.org/license-info) in effect on the date of 64 publication of this document. Please review these documents 65 carefully, as they describe your rights and restrictions with respect 66 to this document. Code Components extracted from this document must 67 include Simplified BSD License text as described in Section 4.e of 68 the Trust Legal Provisions and are provided without warranty as 69 described in the Simplified BSD License. 71 Table of Contents 73 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 74 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 75 2. Example BIER-TE Path with Multiple BitStrings . . . . . . . . 4 76 2.1. Example BIER-TE Topology . . . . . . . . . . . . . . . . 4 77 2.2. BIER-TE Path with Multiple BitStrings . . . . . . . . . . 5 78 3. Extensions for Multiple BitStrings . . . . . . . . . . . . . 7 79 3.1. BIER-TE Header with Multiple BitStrings . . . . . . . . . 7 80 3.2. Two Levels of BIFTs . . . . . . . . . . . . . . . . . . . 9 81 3.3. Forwarding Procedure . . . . . . . . . . . . . . . . . . 14 82 4. Security Considerations . . . . . . . . . . . . . . . . . . . 15 83 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15 84 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 15 85 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 86 7.1. Normative References . . . . . . . . . . . . . . . . . . 15 87 7.2. Informative References . . . . . . . . . . . . . . . . . 16 88 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 90 1. Introduction 92 [I-D.ietf-bier-te-arch] introduces Bit Index Explicit Replication 93 (BIER) Traffic/Tree Engineering (BIER-TE). It is an architecture for 94 per-packet stateless explicit point to multipoint (P2MP) multicast 95 path/tree. 97 A Bit-Forwarding Router (BFR) in a BIER-TE domain has a BIER-TE Bit 98 Index Forwarding Tables (BIFT). A BIER-TE BIFT on a BFR comprises a 99 forwarding entry for a BitPosition (BP) assigned to each of the 100 adjacencies of the BFR. If the BP represents a forward connected 101 adjacency, the forwarding entry for the BP forwards the multicast 102 packet with the BP to the directly connected BFR neighbor of the 103 adjacency. If the BP represents a BFER (i.e., egress node) or say a 104 local decap adjacency, the forwarding entry for the BP decapsulates 105 the multicast packet with the BP and passes a copy of the payload of 106 the packet to the packet's NextProto within the BFR. 108 [RFC8296] defines the BIER header with one BitString with Default 109 BitStringLength value of 256. However, for a BIER-TE path from an 110 ingress to multiple egresses (or say destinations), the bit positions 111 representing the path may not be in one BitString. The existing BIER 112 header does not work for the BIER-TE path with more than one 113 BitString. 115 This document proposes a solution for a BIER-TE header to resolve 116 this issue. The BIER-TE header can contain all the bit positions of 117 a BIER-TE path. These bit positions are encoded in one or more 118 BitStrings. The document presents an enhanced forwarding procedure 119 for efficiently processing the BIER-TE header with multiple 120 BitStrings. 122 1.1. Terminology 124 BIER: Bit Index Explicit Replication. 126 BIER-TE: BIER Traffic Engineering. 128 BFR: Bit-Forwarding Router. 130 BFIR: Bit-Forwarding Ingress Router. 132 BFER: Bit-Forwarding Egress Router. 134 BFR-id: BFR Identifier. It is a number in the range [1,65535]. 136 BFR-NBR: BFR Neighbor. 138 BFR-prefix: An IP address (either IPv4 or IPv6) of a BFR. 140 BIRT: Bit Index Routing Table. It is a table that maps from the BFR- 141 id (in a particular sub-domain) of a BFER to the BFR-prefix of 142 that BFER, and to the BFR-NBR on the path to that BFER. 144 BIFT: Bit Index Forwarding Table. 146 IGP: Interior Gateway Protocol. 148 LSDB: Link State DataBase. 150 OSPF: Open Shortest Path First. 152 IS-IS: Intermediate System to Intermediate System. 154 SI: Set Identifier. 156 BP: Bit Position. 158 2. Example BIER-TE Path with Multiple BitStrings 160 This section illustrates an example BIER-TE domain topology and a 161 BIER-TE paths across the domain. The path has multiple sets of bit 162 strings, i.e., multiple BitStrings with different SIs (or multiple 163 BitStrings for short). The packet to be transported by this path 164 must contains the multiple BitStrings in the header of the packet. 165 If the header can contain only one BitString, the packet to be 166 transported by the path cannot be delivered to the egresses of the 167 path. 169 2.1. Example BIER-TE Topology 171 An example BIER-TE topology for a BIER-TE domain is shown in 172 Figure 1. It has 9 nodes/BFRs A, B, C, D, E, F, G, H and I. Nodes/ 173 BFRs D, F, E, H and A are BFERs and have local decap adjacency 174 BitPositions 1, 2, 3, 4, and 5 respectively. For simplicity, these 175 BPs are represented by (SI:BitString), where SI = 0 and BitString is 176 of 8 bits. BPs 1, 2, 3, 4, and 5 are represented by 1 (0:00000001), 177 2 (0:00000010), 3 (0:00000100), 4 (0:00001000) and 5 (0:00010000) 178 respectively. 180 6' 19' 20' 4 181 /----------( G )---------------( H ) 182 / 18'\ 16'/ 183 / \17' / 184 / ( I )____________/ 185 / 14'/ 15' 186 / / 187 8' 7' /5' 3' 4' /13' 12' 188 ( A )--------( B )------------( C )-----------------( D ) 1 189 5 \1' \9' 11' /24' 190 \ \ / 191 \2' 21' 22' \10' / 192 ( E )------------( F )____________/ 193 3 2 23' 195 Figure 1: Example BIER-TE Topology 197 The BitPositions for the forward connected adjacencies are 198 represented by i', where i is from 1 to 24. In one option, they are 199 encoded as (n+i), where n is a power of 2 such as 32768. For 200 simplicity, these BitPositions are represented by (SI:BitString), 201 where SI = (6 + (i-1)/8) and BitString is of 8 bits. BitPositions i' 202 (i from 1 to 24) are represented by 1'(6:00000001), 2'(6:00000010), 203 3'(6:00000100), 4'(6:00001000), 5'(6:00010000), 6'(6:00100000), 204 7'(6:01000000), 8'(6:10000000), 9'(7:00000001), 10'(7:00000010), . . 205 . , 24'(8:10000000). 207 For a link between two nodes X and Y, there are two BitPositions for 208 two forward connected adjacencies. These two forward connected 209 adjacency BitPositions are assigned on nodes X and Y respectively. 210 The BitPosition assigned on X is the forward connected adjacency of 211 Y. The BitPosition assigned on Y is the forward connected adjacency 212 of X. 214 For example, for the link between nodes B and C in the figure, two 215 forward connected adjacency BitPositions 3' and 4' are assigned to 216 two ends of the link. BitPosition 3' is assigned on node B to B's 217 end of the link. It is the forward connected adjacency of node C. 218 BitPosition 4' is assigned on node C to C's end of the link. It is 219 the forward connected adjacency of node B. 221 2.2. BIER-TE Path with Multiple BitStrings 223 One BIER-TE path is the explicit multicast P2MP path from ingress A 224 to egresses D and F, traversing from A to B to C, and from C to D and 225 F. This path is represented by BPs as {7', 4', 12', 10', 1, 2}, 226 which is {7'(6:01000000), 4'(6:00001000), 12'(7:00001000), 227 10'(7:00000010), 1(0:00000001), 2(0:00000010)}. These six bit 228 positions on the path are in three sets of bit strings with SI = 0, 6 229 and 7. 231 Bit positions 1 and 2 are in the set with SI = 0, which is 232 (0:00000011). Bit positions 7' and 4' are in the set with SI = 6, 233 which is (6:01001000). Bit positions 12' and 10' are in the set with 234 SI = 7, which is (7:00001010). 236 At ingress A, the packet to be transported by the path must be 237 encapsulated in a BIER-TE header containing all three sets of bit 238 strings. These sets represent the bit positions {7', 4', 12', 10', 239 1, 2} on the path. 241 The packet with the BIER-TE header is delivered from ingress A to BFR 242 B using bit position 7' with SI = 6 in the header. BFR B forwards 243 the packet to BFR C using bit position 4' with SI = 6 in the header. 244 BFR C forwards a copy of the packet to BFER D using bit position 12' 245 with SI = 7 in the header and another copy to BFER F using bit 246 position 10' with SI = 7 in the header. BFER D decapsulates the 247 packet and sends the payload of the packet to the packet's nextproto 248 within BFER D using bit position 1 with SI = 0 in the header. BFER F 249 decapsulates the packet and sends the payload of the packet to the 250 packet's nextproto within BFER F using bit position 2 with SI = 0 in 251 the header. 253 If a BIER-TE header can contain only one set of bit strings, the 254 packet to be transported by the path cannot be delivered to the 255 egresses of the path. At ingress A, three copies of the packet to be 256 transported by the path are produced. Each copy contains a header 257 with a set of bit strings. The first copy has a header with set of 258 bit strings (0:00000011) for bit positions 1 and 2. The second copy 259 has a header with set of bit strings (6:01001000) for bit positions 260 7' and 4'. The third copy has a header with set of bit strings 261 (7:00001010) for bit positions 12' and 10'. 263 For the first copy, ingress A will drop it since bit positions 1 and 264 2 are not any adjacency bit position of A. Similarly, ingress A will 265 the third copy since bit positions 12' and 10' are not any adjacency 266 bit position of A. 268 For the second copy, ingress A sends it to BFR B using bit position 269 7' in the header. After receiving the packet, BFR B sends the packet 270 to BFR C using bit position 4' in the header. After receiving the 271 packet, BFR C drops it since there is no bit position of BFR C in the 272 header of the packet. 274 3. Extensions for Multiple BitStrings 276 This section describes a BIER-TE header containing multiple 277 BitStrings with different SIs (or multiple BitStrings for short), two 278 levels of BIFTs for efficient processing the packets with the BIER-TE 279 header, and a forwarding procedure for handling the packets using the 280 two levels of BIFTs. 282 3.1. BIER-TE Header with Multiple BitStrings 284 A BIER-TE header needs to contain multiple sets of bit strings (i.e., 285 multiple BitStrings with different SIs) for a BIER-TE path. In one 286 option, they are represented by n indicating the number of 287 BitStrings, and a pair of SI and BitString for each of the n sets of 288 bit strings: SI-1, BitString-1; SI-2, BitString-2; ...; SI-n, 289 BitString-n. 291 Figure 2 illustrates a format of a BIER-TE header having multiple 292 BitStrings. 294 0 1 2 3 295 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 296 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 297 | BIFT-id | TC |S| TTL | 298 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 299 |Nibble | Ver | BSL | Entropy | 300 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 301 |OAM|M|R| DSCP | Proto | BFIR-id | 302 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 303 | n | 304 +-+-+-+-+-+-+-+-+ 305 | SI-1 | 306 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 307 | BitString-1 ~ 308 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 309 ~ ...... ~ 310 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 311 | SI-n | 312 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 313 | BitString-n ~ 314 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 316 Figure 2: A Format of BIER-TE Header 318 BIFT-id: This field indicates a BIFT. 320 TC: The "Traffic Class" field in [RFC5462] has its usual meaning in 321 an MPLS label stack entry. 323 S: When a BIER packet is traveling through an MPLS network, the 324 high-order 20 bits of the initial four octets of the BIER 325 encapsulation contain an MPLS label in the BIFT-id field. 326 These four octets are treated as the final entry in the 327 packet's MPLS label stack. Hence, the S bit (see [RFC3032]) 328 MUST be set to 1. If there are any MPLS label stack entries 329 immediately preceding the BIER encapsulation, the S bit of 330 those label stack entries MUST be set to 0. 332 TTL: This is the usual MPLS "Time to Live" field in [RFC3032]. When 333 a BIER packet is received, its "incoming TTL" (see below) is 334 taken from this TTL field. When a BIER packet is forwarded to 335 one or more BFR adjacencies, the BIER-MPLS label carried by the 336 forwarded packet MUST have a TTL field whose value is one less 337 than that of the packet's incoming TTL. 339 Nibble: This field is set to the binary value 0101; this ensures 340 that the MPLS ECMP logic will not confuse the remainder of the 341 BIER header with an IP header or with the header of a 342 pseudowire packet. In an MPLS network, if a BFR receives a 343 BIER packet with any other value in the first nibble after the 344 label stack, it SHOULD discard the packet and log an error. 346 Ver: This 4-bit field identifies the version of the BIER header. 347 [RFC8296] specifies version 0 of the BIER header. If a packet 348 is received by a particular BFR and that BFR does not support 349 the specified version of the BIER header, the BFR MUST discard 350 the packet and log an error. The value 0xF is reserved for 351 experimental use; that value MUST NOT be assigned by any future 352 IETF document or by IANA. 354 BSL: This 4-bit field encodes the length in bits of the BitString. 356 Entropy: This 20-bit field specifies an "entropy" value that can be 357 used for load-balancing purposes. The BIER forwarding process 358 may do equal-cost load balancing, in which case the load- 359 balancing procedure MUST choose the same path for any two 360 packets that have the same entropy value and the same 361 BitString. 363 OAM: By default, these two bits are set to 0 by the BFIR and are not 364 modified by other BFRs. These two bits have no effect on the 365 path taken by a BIER packet and have no effect on the quality 366 of service applied to a BIER packet. 368 M: This one bit flag is set to 1 for the header containing 369 multiple sets of bit strings, 0 for for the header not 370 containing multiple sets of bit strings. 372 R: This R bit is currently unused. It SHOULD be set to 0 upon 373 transmission and MUST be ignored upon reception. 375 DSCP: By default, this 6-bit field is not used in MPLS networks. The 376 default behavior is that all six bits SHOULD be set to 0 upon 377 transmission and MUST be ignored upon reception. 379 Proto: This 6-bit "Next Protocol" field identifies the type of the 380 payload. (The "payload" is the packet or frame immediately 381 following the BIER header.) IANA has created a registry called 382 "BIER Next Protocol Identifiers". This field is to be 383 populated with the appropriate entry from that registry. 385 BFIR-id: By default, this is the BFR-id of the BFIR, in the SD to 386 which the packet has been assigned. The BFR-id is encoded in 387 the 16-bit field as an unsigned integer in the range [1,65535]. 389 n: It indicates the number of sets of bit strings in the header. 391 SI-1: It is the set identifier of the first (1-th) bit string. 393 BitString-1: It is the first (1-th) bit string. The length of the 394 bit string is indicated by BSL. 396 SI-n: It is the set identifier of the n-th bit string. 398 BitString-n: It is the n-th bit string. The length of the bit 399 string is indicated by BSL. 401 3.2. Two Levels of BIFTs 403 A BFR has two levels of BIFTs for BIER-TE. At the top or first 404 level, there is one BIFT. The structure of this BIFT is shown in 405 Figure 3. This top level BIFT has an entry for every set identifier 406 (SI). The entry contains: 408 o BitString: The bit string (i.e., the adjacency bit positions) of 409 the BFR in the set indicated by SI. 411 o Pointer to 2nd Level BIFT: Pointer to the second level BIFT for 412 the bit string of the BFR in the set indicated by SI. If the 413 bit string is all zeros, there is no second level BIFT for it 414 and the pointer is NULL. 416 +--------------+--------------+ 417 SI | BitString |Pointer to | 418 (Index) |(Adjacency BP)|2nd Level BIFT| 419 +==============+==============+ 420 0 | xxxxxxxxxx | xxxxxxxx | 421 +--------------+--------------+ 422 1 | xxxxxxxxxx | xxxxxxxx | 423 . +--------------+--------------+ 424 : . . . . . . 426 Figure 3: Structure of Top Level BIFT 428 For example, the top level BIFT on BFR E is illustrated in Figure 4. 429 There are 9 sets of bit strings in total in the BIER-TE network in 430 Figure 1. So, the BIFT has 9 entries. 432 +--------------+--------------+ 433 SI | BitString |Pointer to | 434 |(Adjacency BP)|2nd Level BIFT| 435 +==============+==============+ 436 0 |00000100 (3) | ->BIFT4-SI-0 | 437 +--------------+--------------+ 438 1 |00000000 | NULL | 439 +--------------+--------------+ 440 2 |00000000 | NULL | 441 +--------------+--------------+ 442 3 |00000000 | NULL | 443 +--------------+--------------+ 444 4 |00000000 | NULL | 445 +--------------+--------------+ 446 5 |00000000 | NULL | 447 +--------------+--------------+ 448 6 |00000001 (1') | ->BIFT4-SI-6 | 449 +--------------+--------------+ 450 7 |00000000 | NULL | 451 +--------------+--------------+ 452 8 |00001000 (22')| ->BIFT4-SI-8 | 453 +--------------+--------------+ 455 Figure 4: Top Level BIFT on BFR E 457 The first entry is for the set of bit string (i.e., adjacency bit 458 positions) with SI = 0. It contains: 460 o BitString = 00000100. It indicates the local decap adjacency 461 Bit Position 3 of BFR E. 463 o Pointer to 2nd Level BIFT = ->BIFT4-SI-0. It is a pointer to 464 the second level BIFT for the bit string with SI = 0. 466 The second entry is for the set of bit string (i.e., adjacency bit 467 positions) with SI = 1. It contains 00000000 and NULL for BitString 468 and Pointer to 2nd Level BIFT respectively. BitString = 00000000 469 means that BFR E has no adjacency bit position in the set with SI = 470 1. 472 The 3-th to 6-th entries and the 8-th entry are similar to the second 473 entry. 475 The 7-th entry is for the set of bit string (i.e., adjacency bit 476 positions) with SI = 6. It contains: 478 o BitString = 00000001. It indicates the forward-connected 479 adjacency Bit Position 1' of BFR E. 481 o Pointer to 2nd Level BIFT = ->BIFT4-SI-6. It is a pointer to 482 the second level BIFT for the bit string with SI = 6. 484 The 9-th entry is for the set of bit string (i.e., adjacency bit 485 positions) with SI = 8. It contains: 487 o BitString = 00001000. It indicates the forward-connected 488 adjacency Bit Position 22' of BFR E. 490 o Pointer to 2nd Level BIFT = ->BIFT4-SI-8. It is a pointer to 491 the second level BIFT for the bit string with SI = 8. 493 A second level BIFT for the bit string identified by a SI contains 494 the entries for the adjacency bit positions (or say bit string) in 495 the set identified by the SI. Its structure is shown in Figure 5. 496 It is the same as the BIFT in [I-D.ietf-bier-te-arch]. 498 +--------------+--------------+------------+ 499 | BitString | Action | BFR-NBR | 500 |(Adjacency BP)| | (Next Hop) | 501 +==============+==============+============+ 502 | xxxxxxxx | xxxxxxxx | xxxxxxxx | 503 +--------------+--------------+------------+ 505 Figure 5: Structure of Second Level BIFT for SI 507 For example, BFR E has three adjacency bit positions: 3, 1' and 22'. 508 They are in the three sets of bit strings identified by SI = 0, 6 and 509 8 respectively. So, BFR E has three second level BIFTs: BIFT for SI 510 = 0, BIFT for SI = 6 and BIFT for SI = 8. These BIFTs are 511 illustrated in Figure 6, Figure 7 and Figure 8. 513 +--------------+--------------+------------+ 514 | BitString | Action | BFR-NBR | 515 |(Adjacency BP)| | (Next Hop) | 516 +==============+==============+============+ 517 |00000100 (3) | local-decap | | 518 +--------------+--------------+------------+ 520 Figure 6: BIFT for SI = 0 on BFR E 522 +--------------+--------------+------------+ 523 | BitString | Action | BFR-NBR | 524 |(Adjacency BP)| | (Next Hop) | 525 +==============+==============+============+ 526 |00000001 (1') | fw-connected | B | 527 +--------------+--------------+------------+ 529 Figure 7: BIFT for SI = 6 on BFR E 531 +--------------+--------------+------------+ 532 | BitString | Action | BFR-NBR | 533 |(Adjacency BP)| | (Next Hop) | 534 +==============+==============+============+ 535 |00001000 (22')| fw-connected | F | 536 +--------------+--------------+------------+ 538 Figure 8: BIFT for SI = 8 on BFR E 540 In another example, BFR B has four adjacency bit positions: 2', 4', 541 6' and 8'. They are in the same set of bit strings identified by SI 542 = 6. So, BFR B has one second level BIFT: BIFT for SI = 6. This 543 BIFT is illustrated in Figure 9. 545 +--------------+--------------+------------+ 546 | BitString | Action | BFR-NBR | 547 |(Adjacency BP)| | (Next Hop) | 548 +==============+==============+============+ 549 |00000010 (2') | fw-connected | E | 550 +--------------+--------------+------------+ 551 |00001000 (4') | fw-connected | C | 552 +--------------+--------------+------------+ 553 |00100000 (6') | fw-connected | G | 554 +--------------+--------------+------------+ 555 |10000000 (8') | fw-connected | A | 556 +--------------+--------------+------------+ 558 Figure 9: BIFT for SI = 6 on BFR B 560 The top level BIFT on BFR B is shwon in Figure 10. There are 9 sets 561 of bit strings in total in the BIER-TE network in Figure 1. So, the 562 BIFT has 9 entries. 564 +--------------+--------------+ 565 SI | BitString |Pointer to | 566 |(Adjacency BP)|2nd Level BIFT| 567 +==============+==============+ 568 0 |00000000 | NULL | 569 +--------------+--------------+ 570 1 |00000000 | NULL | 571 +--------------+--------------+ 572 2 |00000000 | NULL | 573 +--------------+--------------+ 574 3 |00000000 | NULL | 575 +--------------+--------------+ 576 4 |00000000 | NULL | 577 +--------------+--------------+ 578 5 |00000000 | NULL | 579 +--------------+--------------+ 580 6 |10101010 | ->BIFT4-SI-6 | 581 +--------------+--------------+ 582 7 |00000000 | NULL | 583 +--------------+--------------+ 584 8 |00000000 | NULL | 585 +--------------+--------------+ 587 Figure 10: Top Level BIFT on BFR B 589 The 7-th entry is for the set of bit string (i.e., adjacency bit 590 positions) with SI = 6. It contains: 592 o BitString = 10101010. It indicates the forward-connected 593 adjacency Bit Position 2', 4', 6' and 8' of BFR B. 595 o Pointer to 2nd Level BIFT = ->BIFT4-SI-6. It is a pointer to 596 the second level BIFT for the bit string with SI = 6. 598 The other entries are for the sets of bit strings (i.e., adjacency 599 bit positions) with SI other than 6. Each of them contains 00000000 600 and NULL for BitString and Pointer to 2nd Level BIFT respectively. 601 BitString = 00000000 means that BFR B has no adjacency bit position 602 in the set with SI other than 6. 604 3.3. Forwarding Procedure 606 For a packet with a BIER-TE header containing multiple BitStrings 607 with different SIs, after receiving the packet, a BFR checks each 608 BitString to see if it has any adjacency bit positions of the BFR. 610 If a BitString contains an adjacency bit position of the BFR, the BFR 611 processes the packet according to the adjacency bit position. If the 612 adjacency bit position is a forward-connected adjacency, the BFR 613 forwards a packet copy to the adjacency. If the adjacency bit 614 position is a local decap adjacency, the BFR sends the packet payload 615 to the packet's NextProto within the BFR. This is the same as the 616 existing behavior. 618 For a BitString identified by SI-i and BitString-i, the BFR 619 determines if it contains an adjacency bit position of the BFR using 620 the top level BIFT. The BFR gets its adjacency bit positions in the 621 set SI-i from the BIFT and checks if BitString-i and the bit 622 positions have the same bit with value 1. This can be achieved by 623 checking if BIFT[SI-i][0] AND BitString-i is not zero, where BIFT[SI- 624 i][0] is the adjacency bit positions of the BFR in the set SI-i, AND 625 is bit wise logical and. 627 When BitString-i contains an adjacency bit position of the BFR, the 628 BFR processes the packet using the second level BIFT for its 629 adjacency bit positions in the BitString identified by SI-i. The BFR 630 gets the second level BIFT from the top level BIFT using SI-i. The 631 second collumn of the row with index SI-i in the top level BIFT 632 (i.e., BIFT[SI-i][1]) stores a pointer to the second level BIFT. 634 For each adjacency bit position of the BFR in the BitString, the BFR 635 processes the packet using the second level BIFT pointed by BIFT[SI- 636 i][1] in the same way as the existing one. 638 The procedure for processing a BIER-TE packet is described in Pseudo 639 code in Figure 11. 641 Packet = the packet received by BFR; 642 FOR i = 1 to n {// n in header is number of BitStrings 643 T = BIFT[SI-i][0] & BitString-i; 644 IF (T) {//has an adjacency BP of BFR 645 BIFT4-SI-i = BIFT[SI-i][1]; //Get second level BIFT 646 get m; //m: number of adjacency BPs in set SI-i or BIFT4-SI-i 647 FOR (j = 1; T && j < m; j++) {//for each BP of BFR in set SI-i 648 IF (T & BIFT4-SI-i[j][0]) {//has adjacency BP at j 649 IF (BIFT4-SI-i[j][1] == fw-connected){//fw-connected adj 650 send a packet copy to BIFT4-SI-i[j][2]; 651 } ELSE IF (BIFT4-SI-i[j][1] == local-decap) {//decap adj 652 send packet payload to multicast overlay; 653 } 654 T = T & ~(BIFT4-SI-i[j][0])//Clear T's corresponding bit 655 } 656 } 657 } 658 } 660 Figure 11: Forwarding Procedure for Processing BIER-TE Packet 662 4. Security Considerations 664 TBD. 666 5. IANA Considerations 668 No requirements for IANA. 670 6. Acknowledgements 672 The authors would like to thank people for their comments to this 673 work. 675 7. References 677 7.1. Normative References 679 [I-D.ietf-bier-te-arch] 680 Eckert, T., Menth, M., and G. Cauchie, "Tree Engineering 681 for Bit Index Explicit Replication (BIER-TE)", draft-ietf- 682 bier-te-arch-12 (work in progress), January 2022. 684 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 685 Requirement Levels", BCP 14, RFC 2119, 686 DOI 10.17487/RFC2119, March 1997, 687 . 689 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 690 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 691 May 2017, . 693 7.2. Informative References 695 [RFC3032] Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y., 696 Farinacci, D., Li, T., and A. Conta, "MPLS Label Stack 697 Encoding", RFC 3032, DOI 10.17487/RFC3032, January 2001, 698 . 700 [RFC5462] Andersson, L. and R. Asati, "Multiprotocol Label Switching 701 (MPLS) Label Stack Entry: "EXP" Field Renamed to "Traffic 702 Class" Field", RFC 5462, DOI 10.17487/RFC5462, February 703 2009, . 705 [RFC8296] Wijnands, IJ., Ed., Rosen, E., Ed., Dolganow, A., 706 Tantsura, J., Aldrin, S., and I. Meilik, "Encapsulation 707 for Bit Index Explicit Replication (BIER) in MPLS and Non- 708 MPLS Networks", RFC 8296, DOI 10.17487/RFC8296, January 709 2018, . 711 Authors' Addresses 713 Huaimo Chen 714 Futurewei 715 Boston, MA 716 USA 718 Email: Huaimo.chen@futurewei.com 720 Mike McBride 721 Futurewei 723 Email: michael.mcbride@futurewei.com 725 Ran Chen 726 ZTE Corporation 728 Email: chen.ran@zte.com.cn 729 Gyan S. Mishra 730 Verizon Inc. 731 13101 Columbia Pike 732 Silver Spring MD 20904 733 USA 735 Phone: 301 502-1347 736 Email: gyan.s.mishra@verizon.com 738 Aijun Wang 739 China Telecom 740 Beiqijia Town, Changping District 741 Beijing 102209 742 China 744 Email: wangaj3@chinatelecom.cn 746 Yanhe Fan 747 Casa Systems 748 USA 750 Email: yfan@casa-systems.com 752 Lei Liu 753 Fujitsu 754 USA 756 Email: liulei.kddi@gmail.com 758 Xufeng Liu 759 Volta Networks 760 McLean, VA 761 USA 763 Email: xufeng.liu.ietf@gmail.com