| < draft-ietf-bier-te-arch.txt | draft-ietf-bier-te-arch.txt > | |||
|---|---|---|---|---|
| Network Working Group T. Eckert, Ed. | Network Working Group T. Eckert, Ed. | |||
| Internet-Draft Futurewei | Internet-Draft Futurewei | |||
| Intended status: Standards Track G. Cauchie | Intended status: Standards Track G. Cauchie | |||
| Expires: July 28, 2022 Bouygues Telecom | Expires: July 31, 2022 Bouygues Telecom | |||
| M. Menth | M. Menth | |||
| University of Tuebingen | University of Tuebingen | |||
| January 24, 2022 | January 27, 2022 | |||
| Tree Engineering for Bit Index Explicit Replication (BIER-TE) | Tree Engineering for Bit Index Explicit Replication (BIER-TE) | |||
| draft-ietf-bier-te-arch-12 | draft-ietf-bier-te-arch-12 | |||
| Abstract | Abstract | |||
| This memo describes per-packet stateless strict and loose path | This memo describes per-packet stateless strict and loose path | |||
| steered replication and forwarding for "Bit Index Explicit | steered replication and forwarding for "Bit Index Explicit | |||
| Replication" (BIER, RFC8279) packets. It is called BIER Tree | Replication" (BIER, RFC8279) packets. It is called BIER Tree | |||
| Engineering (BIER-TE) and is intended to be used as the path steering | Engineering (BIER-TE) and is intended to be used as the path steering | |||
| mechanism for Traffic Engineering with BIER. | mechanism for Traffic Engineering with BIER. | |||
| BIER-TE introduces a new semantic for "bit positions" (BP) that | BIER-TE introduces a new semantic for "bit positions" (BP). They | |||
| indicate adjacencies, as opposed to (non-TE) BIER in which BPs | indicate adjacencies of the network topology, as opposed to (non-TE) | |||
| indicate "Bit-Forwarding Egress Routers" (BFER). BIER-TE can | BIER in which BPs indicate "Bit-Forwarding Egress Routers" (BFER). A | |||
| leverage BIER forwarding engines with little changes. Co-existence | BIER-TE packets BitString therefore indicates the edges of the (loop- | |||
| of BIER and BIER-TE forwarding in the same domain is possible, for | free) tree that the packet is forwarded across by BIER-TE. BIER-TE | |||
| example by using separate BIER "sub-domains" (SDs). Except for the | can leverage BIER forwarding engines with little changes. Co- | |||
| optional routed adjacencies, BIER-TE does not require a BIER routing | existence of BIER and BIER-TE forwarding in the same domain is | |||
| underlay, and can therefore operate without depending on an "Interior | possible, for example by using separate BIER "sub-domains" (SDs). | |||
| Gateway Routing protocol" (IGP). | Except for the optional routed adjacencies, BIER-TE does not require | |||
| a BIER routing underlay, and can therefore operate without depending | ||||
| on an "Interior Gateway Routing protocol" (IGP). | ||||
| As it operates on the same per-packet stateless forwarding | As it operates on the same per-packet stateless forwarding | |||
| principles, BIER-TE can also be a good fit to support multicast path | principles, BIER-TE can also be a good fit to support multicast path | |||
| steering in "Segment Routing" (SR) networks. | steering in "Segment Routing" (SR) networks. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on July 28, 2022. | ||||
| This Internet-Draft will expire on July 31, 2022. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2022 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 35 ¶ | skipping to change at page 2, line 38 ¶ | |||
| 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 2.1. Basic Examples . . . . . . . . . . . . . . . . . . . . . 5 | 2.1. Basic Examples . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 2.2. BIER-TE Topology and adjacencies . . . . . . . . . . . . 8 | 2.2. BIER-TE Topology and adjacencies . . . . . . . . . . . . 8 | |||
| 2.3. Relationship to BIER . . . . . . . . . . . . . . . . . . 9 | 2.3. Relationship to BIER . . . . . . . . . . . . . . . . . . 9 | |||
| 2.4. Accelerated/Hardware forwarding comparison . . . . . . . 11 | 2.4. Accelerated/Hardware forwarding comparison . . . . . . . 11 | |||
| 3. Components . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 3. Components . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 3.1. The Multicast Flow Overlay . . . . . . . . . . . . . . . 12 | 3.1. The Multicast Flow Overlay . . . . . . . . . . . . . . . 12 | |||
| 3.2. The BIER-TE Control Plane . . . . . . . . . . . . . . . . 12 | 3.2. The BIER-TE Control Plane . . . . . . . . . . . . . . . . 12 | |||
| 3.2.1. The BIER-TE Controller . . . . . . . . . . . . . . . 13 | 3.2.1. The BIER-TE Controller . . . . . . . . . . . . . . . 13 | |||
| 3.2.1.1. BIER-TE Topology discovery and creation . . . . . 14 | 3.2.1.1. BIER-TE Topology discovery and creation . . . . . 14 | |||
| 3.2.1.2. Engineered Trees via BitStrings . . . . . . . . . 14 | 3.2.1.2. Engineered Trees via BitStrings . . . . . . . . . 15 | |||
| 3.2.1.3. Changes in the network topology . . . . . . . . . 15 | 3.2.1.3. Changes in the network topology . . . . . . . . . 15 | |||
| 3.2.1.4. Link/Node Failures and Recovery . . . . . . . . . 15 | 3.2.1.4. Link/Node Failures and Recovery . . . . . . . . . 15 | |||
| 3.3. The BIER-TE Forwarding Plane . . . . . . . . . . . . . . 15 | 3.3. The BIER-TE Forwarding Plane . . . . . . . . . . . . . . 15 | |||
| 3.4. The Routing Underlay . . . . . . . . . . . . . . . . . . 16 | 3.4. The Routing Underlay . . . . . . . . . . . . . . . . . . 16 | |||
| 3.5. Traffic Engineering Considerations . . . . . . . . . . . 16 | 3.5. Traffic Engineering Considerations . . . . . . . . . . . 17 | |||
| 4. BIER-TE Forwarding . . . . . . . . . . . . . . . . . . . . . 17 | 4. BIER-TE Forwarding . . . . . . . . . . . . . . . . . . . . . 18 | |||
| 4.1. The Bit Index Forwarding Table (BIFT) . . . . . . . . . . 17 | 4.1. The Bit Index Forwarding Table (BIFT) . . . . . . . . . . 18 | |||
| 4.2. Adjacency Types . . . . . . . . . . . . . . . . . . . . . 19 | 4.2. Adjacency Types . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 4.2.1. Forward Connected . . . . . . . . . . . . . . . . . . 19 | 4.2.1. Forward Connected . . . . . . . . . . . . . . . . . . 19 | |||
| 4.2.2. Forward Routed . . . . . . . . . . . . . . . . . . . 19 | 4.2.2. Forward Routed . . . . . . . . . . . . . . . . . . . 19 | |||
| 4.2.3. ECMP . . . . . . . . . . . . . . . . . . . . . . . . 19 | 4.2.3. ECMP . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 4.2.4. Local Decap(sulation) . . . . . . . . . . . . . . . . 20 | 4.2.4. Local Decap(sulation) . . . . . . . . . . . . . . . . 20 | |||
| 4.3. Encapsulation / Co-existence with BIER . . . . . . . . . 20 | 4.3. Encapsulation / Co-existence with BIER . . . . . . . . . 20 | |||
| 4.4. BIER-TE Forwarding Pseudocode . . . . . . . . . . . . . . 21 | 4.4. BIER-TE Forwarding Pseudocode . . . . . . . . . . . . . . 21 | |||
| 4.5. Basic BIER-TE Forwarding Example . . . . . . . . . . . . 24 | 4.5. Basic BIER-TE Forwarding Example . . . . . . . . . . . . 25 | |||
| 4.6. BFR Requirements for BIER-TE forwarding . . . . . . . . . 27 | 4.6. BFR Requirements for BIER-TE forwarding . . . . . . . . . 28 | |||
| 5. BIER-TE Controller Operational Considerations . . . . . . . . 28 | ||||
| 5. BIER-TE Controller Operational Considerations . . . . . . . . 27 | 5.1. Bit Position Assignments . . . . . . . . . . . . . . . . 28 | |||
| 5.1. Bit position Assignments . . . . . . . . . . . . . . . . 27 | 5.1.1. P2P Links . . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 5.1.1. P2P Links . . . . . . . . . . . . . . . . . . . . . . 28 | 5.1.2. BFER . . . . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 5.1.2. BFER . . . . . . . . . . . . . . . . . . . . . . . . 28 | 5.1.3. Leaf BFERs . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 5.1.3. Leaf BFERs . . . . . . . . . . . . . . . . . . . . . 28 | 5.1.4. LANs . . . . . . . . . . . . . . . . . . . . . . . . 30 | |||
| 5.1.4. LANs . . . . . . . . . . . . . . . . . . . . . . . . 29 | 5.1.5. Hub and Spoke . . . . . . . . . . . . . . . . . . . . 31 | |||
| 5.1.5. Hub and Spoke . . . . . . . . . . . . . . . . . . . . 30 | 5.1.6. Rings . . . . . . . . . . . . . . . . . . . . . . . . 31 | |||
| 5.1.6. Rings . . . . . . . . . . . . . . . . . . . . . . . . 30 | 5.1.7. Equal Cost MultiPath (ECMP) . . . . . . . . . . . . . 32 | |||
| 5.1.7. Equal Cost MultiPath (ECMP) . . . . . . . . . . . . . 31 | 5.1.8. Forward Routed adjacencies . . . . . . . . . . . . . 35 | |||
| 5.1.8. Forward Routed adjacencies . . . . . . . . . . . . . 34 | 5.1.8.1. Reducing bit positions . . . . . . . . . . . . . 35 | |||
| 5.1.8.1. Reducing bit positions . . . . . . . . . . . . . 34 | 5.1.8.2. Supporting nodes without BIER-TE . . . . . . . . 36 | |||
| 5.1.8.2. Supporting nodes without BIER-TE . . . . . . . . 35 | 5.1.9. Reuse of bit positions (without DNC) . . . . . . . . 36 | |||
| 5.1.9. Reuse of bit positions (without DNC) . . . . . . . . 35 | 5.1.10. Summary of BP optimizations . . . . . . . . . . . . . 38 | |||
| 5.1.10. Summary of BP optimizations . . . . . . . . . . . . . 36 | 5.2. Avoiding duplicates and loops . . . . . . . . . . . . . . 39 | |||
| 5.2. Avoiding duplicates and loops . . . . . . . . . . . . . . 38 | 5.2.1. Loops . . . . . . . . . . . . . . . . . . . . . . . . 39 | |||
| 5.2.1. Loops . . . . . . . . . . . . . . . . . . . . . . . . 38 | 5.2.2. Duplicates . . . . . . . . . . . . . . . . . . . . . 39 | |||
| 5.2.2. Duplicates . . . . . . . . . . . . . . . . . . . . . 38 | 5.3. Managing SI, sub-domains and BFR-ids . . . . . . . . . . 40 | |||
| 5.3. Managing SI, sub-domains and BFR-ids . . . . . . . . . . 39 | 5.3.1. Why SI and sub-domains . . . . . . . . . . . . . . . 40 | |||
| 5.3.1. Why SI and sub-domains . . . . . . . . . . . . . . . 39 | 5.3.2. Assigning bits for the BIER-TE topology . . . . . . . 41 | |||
| 5.3.2. Assigning bits for the BIER-TE topology . . . . . . . 40 | 5.3.3. Assigning BFR-id with BIER-TE . . . . . . . . . . . . 42 | |||
| 5.3.3. Assigning BFR-id with BIER-TE . . . . . . . . . . . . 41 | 5.3.4. Mapping from BFR to BitStrings with BIER-TE . . . . . 43 | |||
| 5.3.4. Mapping from BFR to BitStrings with BIER-TE . . . . . 41 | 5.3.5. Assigning BFR-ids for BIER-TE . . . . . . . . . . . . 44 | |||
| 5.3.5. Assigning BFR-ids for BIER-TE . . . . . . . . . . . . 43 | 5.3.6. Example bit allocations . . . . . . . . . . . . . . . 44 | |||
| 5.3.6. Example bit allocations . . . . . . . . . . . . . . . 43 | 5.3.6.1. With BIER . . . . . . . . . . . . . . . . . . . . 44 | |||
| 5.3.6.1. With BIER . . . . . . . . . . . . . . . . . . . . 43 | 5.3.6.2. With BIER-TE . . . . . . . . . . . . . . . . . . 45 | |||
| 5.3.6.2. With BIER-TE . . . . . . . . . . . . . . . . . . 44 | 5.3.7. Summary . . . . . . . . . . . . . . . . . . . . . . . 46 | |||
| 5.3.7. Summary . . . . . . . . . . . . . . . . . . . . . . . 45 | 6. BIER-TE and Segment Routing . . . . . . . . . . . . . . . . . 47 | |||
| 6. BIER-TE and Segment Routing . . . . . . . . . . . . . . . . . 45 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 48 | |||
| 7. Security Considerations . . . . . . . . . . . . . . . . . . . 46 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 49 | |||
| 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 48 | 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 49 | |||
| 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 48 | 10. Change log [RFC Editor: Please remove] . . . . . . . . . . . 50 | |||
| 10. Change log [RFC Editor: Please remove] . . . . . . . . . . . 48 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 62 | |||
| 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 60 | 11.1. Normative References . . . . . . . . . . . . . . . . . . 62 | |||
| 11.1. Normative References . . . . . . . . . . . . . . . . . . 60 | 11.2. Informative References . . . . . . . . . . . . . . . . . 62 | |||
| 11.2. Informative References . . . . . . . . . . . . . . . . . 60 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 65 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 63 | ||||
| 1. Overview | 1. Overview | |||
| BIER-TE is based on architecture, terminology and packet formats with | BIER-TE is based on architecture, terminology and packet formats with | |||
| (non-TE) BIER as described in [RFC8279] and [RFC8296]. This document | (non-TE) BIER as described in [RFC8279] and [RFC8296]. This document | |||
| describes BIER-TE in the expectation that the reader is familiar with | describes BIER-TE in the expectation that the reader is familiar with | |||
| these two documents. | these two documents. | |||
| BIER-TE introduces a new semantic for "bit positions" (BP) that | BIER-TE introduces a new semantic for "bit positions" (BP). They | |||
| indicate adjacencies, as opposed to "Bit Index Explicit Replication" | indicate adjacencies of the network topology, as opposed to (non-TE) | |||
| (BIER) in which BPs indicate "Bit-Forwarding Egress Routers" (BFER). | BIER in which BPs indicate "Bit-Forwarding Egress Routers" (BFER). A | |||
| With BIER-TE, the "Bit Index Forwarding Table" (BIFT) of each "Bit | BIER-TE packets BitString therefore indicates the edges of the (loop- | |||
| free) tree that the packet is forwarded across by BIER-TE. With | ||||
| BIER-TE, the "Bit Index Forwarding Table" (BIFT) of each "Bit | ||||
| Forwarding Router" (BFR) is only populated with BP that are adjacent | Forwarding Router" (BFR) is only populated with BP that are adjacent | |||
| to the BFR in the BIER-TE Topology. Other BPs are empty in the BIFT. | to the BFR in the BIER-TE Topology. Other BPs are empty in the BIFT. | |||
| The BFR replicate and forwards BIER packets to adjacent BPs that are | The BFR replicate and forwards BIER packets to adjacent BPs that are | |||
| set in the packet. BPs are normally also cleared upon forwarding to | set in the packet. BPs are normally also cleared upon forwarding to | |||
| avoid duplicates and loops. This is detailed further below. | avoid duplicates and loops. | |||
| BIER-TE can leverage BIER forwarding engines with little or no | BIER-TE can leverage BIER forwarding engines with little or no | |||
| changes. It can also co-exist with BIER forwarding in the same | changes. It can also co-exist with BIER forwarding in the same | |||
| domain, for example by using separate BIER sub-domains. Except for | domain, for example by using separate BIER sub-domains. Except for | |||
| the optional routed adjacencies, BIER-TE does not require a BIER | the optional routed adjacencies, BIER-TE does not require a BIER | |||
| routing underlay, and can therefore operate without depending on an | routing underlay, and can therefore operate without depending on an | |||
| "Interior Gateway Routing protocol" (IGP). | "Interior Gateway Routing protocol" (IGP). | |||
| As it operates on the same per-packet stateless forwarding | As it operates on the same per-packet stateless forwarding | |||
| principles, BIER-TE can also be a good fit to support multicast path | principles, BIER-TE can also be a good fit to support multicast path | |||
| steering in "Segment Routing" (SR) networks ([RFC8402]). | steering in "Segment Routing" (SR) networks ([RFC8402]). | |||
| This document is structured as follows: | This document is structured as follows: | |||
| o Section 2 introduces BIER-TE with two reference forwarding | o Section 2 introduces BIER-TE with two forwarding examples, | |||
| examples, followed by an introduction of the new concepts of the | followed by an introduction of the new concepts of the BIER-TE | |||
| BIER-TE (overlay) topology and finally a summary of the | (overlay) topology and finally a summary of the relationship | |||
| relationship between BIER and BIER-TE and a discussion of | between BIER and BIER-TE and a discussion of accelerated hardware | |||
| accelerated hardware forwarding. | forwarding. | |||
| o Section 3 describes the components of the BIER-TE architecture, | o Section 3 describes the components of the BIER-TE architecture, | |||
| Flow overlay, BIER-TE layer with the BIER-TE control plane | Flow overlay, BIER-TE layer with the BIER-TE control plane | |||
| (including the BIER-TE controller) and BIER-TE forwarding plane, | (including the BIER-TE controller) and BIER-TE forwarding plane, | |||
| and the routing underlay. | and the routing underlay. | |||
| o Section 4 specifies the behavior of the BIER-TE forwarding plane | o Section 4 specifies the behavior of the BIER-TE forwarding plane | |||
| with the different type of adjacencies and possible variations of | with the different type of adjacencies and possible variations of | |||
| BIER-TE forwarding pseudocode, and finally the mandatory and | BIER-TE forwarding pseudocode, and finally the mandatory and | |||
| optional requirements. | optional requirements. | |||
| o Section 5 describes operational considerations for the BIER-TE | o Section 5 describes operational considerations for the BIER-TE | |||
| controller, foremost how the BIER-TE controller can optimize the | controller, foremost how the BIER-TE controller can optimize the | |||
| use of BP by using specific type of BIER-TE adjacencies for | use of BP by using specific type of BIER-TE adjacencies for | |||
| different type of topological situations, but also how to assign | different type of topological situations, but also how to assign | |||
| bits to avoid loops and duplicates (which in BIER-TE does not come | bits to avoid loops and duplicates (which in BIER-TE does not come | |||
| for free), and finally how "Set Identifier" (SI), "sub-domain" | for free), and finally how "Set Identifier" (SI), "sub-domain" | |||
| (SD) and BFR-ids can be managed by a BIER-TE controller, examples | (SD) and BFR-ids can be managed by a BIER-TE controller, examples | |||
| and summary. | and summary. | |||
| o Section 6 concludes the technology specific sections of document | o Section 6 concludes the technology specific sections of the | |||
| by further relating BIER-TE to SR. | document by further relating BIER-TE to SR. | |||
| Note that related work, [I-D.ietf-roll-ccast] uses Bloom filters | Note that related work, [I-D.ietf-roll-ccast] uses Bloom filters | |||
| [Bloom70] to represent leaves or edges of the intended delivery tree. | [Bloom70] to represent leaves or edges of the intended delivery tree. | |||
| Bloom filters in general can support larger trees/topologies with | Bloom filters in general can support larger trees/topologies with | |||
| fewer addressing bits than explicit BitStrings, but they introduce | fewer addressing bits than explicit BitStrings, but they introduce | |||
| the heuristic risk of false positives and cannot clear bits in the | the heuristic risk of false positives and cannot clear bits in the | |||
| BitString during forwarding to avoid loops. For these reasons, BIER- | BitString during forwarding to avoid loops. For these reasons, BIER- | |||
| TE uses explicit BitStrings like BIER. The explicit BitStrings of | TE uses explicit BitStrings like BIER. The explicit BitStrings of | |||
| BIER-TE can also be seen as a special type of Bloom filter, and this | BIER-TE can also be seen as a special type of Bloom filter, and this | |||
| is how related work [ICC] describes it. | is how related work [ICC] describes it. | |||
| 1.1. Requirements Language | 1.1. Requirements Language | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
| 14 [RFC2119], [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| 2. Introduction | 2. Introduction | |||
| 2.1. Basic Examples | 2.1. Basic Examples | |||
| BIER-TE forwarding is best introduced with simple examples. | BIER-TE forwarding is best introduced with simple examples. These | |||
| examples use formal terms defined later in the document (Figure 4), | ||||
| including forward_connected(), forward_routed() and local_decap(). | ||||
| BIER-TE Topology: | BIER-TE Topology: | |||
| Diagram: | Diagram: | |||
| p5 p6 | p5 p6 | |||
| --- BFR3 --- | --- BFR3 --- | |||
| p3/ p13 \p7 p15 | p3/ p13 \p7 p15 | |||
| BFR1 ---- BFR2 BFR5 ----- BFR6 | BFR1 ---- BFR2 BFR5 ----- BFR6 | |||
| p1 p2 p4\ p14 /p10 p11 p12 | p1 p2 p4\ p14 /p10 p11 p12 | |||
| skipping to change at page 6, line 44 ¶ | skipping to change at page 6, line 44 ¶ | |||
| BFR5: p6 -> forward_connected() to BFR3 | BFR5: p6 -> forward_connected() to BFR3 | |||
| p9 -> forward_connected() to BFR4 | p9 -> forward_connected() to BFR4 | |||
| p12 -> forward_connected() to BFR6 | p12 -> forward_connected() to BFR6 | |||
| BFR6: p11 -> forward_connected() to BFR5 | BFR6: p11 -> forward_connected() to BFR5 | |||
| p15 -> local_decap() | p15 -> local_decap() | |||
| Figure 1: BIER-TE basic example | Figure 1: BIER-TE basic example | |||
| Consider the simple network in the above BIER-TE overview example | Consider the simple network in the above BIER-TE overview example | |||
| picture with 6 BFRs. p1...p14 are the bit positions used. All BFRs | picture with 6 BFRs. p1...p15 are the bit positions used. All BFRs | |||
| can act as an ingress BFR (BFIR), BFR1, BFR3, BFR4 and BFR6 can also | can act as an ingress BFR (BFIR), BFR1, BFR3, BFR4 and BFR6 can also | |||
| be BFERs. Forward_connected() is the name for adjacencies that are | be BFERs. Forward_connected() is the name for adjacencies that are | |||
| representing subnet adjacencies of the network. Local_decap() is the | representing subnet adjacencies of the network. Local_decap() is the | |||
| name of the adjacency to decapsulate BIER-TE packets and pass their | name of the adjacency to decapsulate BIER-TE packets and pass their | |||
| payload to higher layer processing. | payload to higher layer processing. | |||
| Assume a packet from BFR1 should be sent via BFR4 to BFR6. This | Assume a packet from BFR1 should be sent via BFR4 to BFR6. This | |||
| requires a BitString (p2,p8,p10,p12,p15). When this packet is | requires a BitString (p2,p8,p10,p12,p15). When this packet is | |||
| examined by BIER-TE on BFR1, the only bit position from the BitString | examined by BIER-TE on BFR1, the only bit position from the BitString | |||
| that is also set in the BIFT is p2. This will cause BFR1 to send the | that is also set in the BIFT is p2. This will cause BFR1 to send the | |||
| only copy of the packet to BFR2. Similarly, BFR2 will forward to | only copy of the packet to BFR2. Similarly, BFR2 will forward to | |||
| BFR4 because of p8, BFR4 to BFR5 because of p10 and BFR5 to BFR6 | BFR4 because of p8, BFR4 to BFR5 because of p10 and BFR5 to BFR6 | |||
| because of p12. p15 finally makes BFR6 receive and decapsulate the | because of p12. p15 finally makes BFR6 receive and decapsulate the | |||
| packet. | packet. | |||
| To send in addition to BFR6 via BFR4 also a copy to BFR3, the | To send a copy to BFR6 via BFR4 and also a copy to BFR3, the | |||
| BitString needs to be (p2,p5,p8,p10,p12,p13,p15). When this packet | BitString needs to be (p2,p5,p8,p10,p12,p13,p15). When this packet | |||
| is examined by BFR2, p5 causes one copy to be sent to BFR3 and p8 one | is examined by BFR2, p5 causes one copy to be sent to BFR3 and p8 one | |||
| copy to BFR4. When BFR3 receives the packet, p13 will cause it to | copy to BFR4. When BFR3 receives the packet, p13 will cause it to | |||
| receive and decapsulate the packet. | receive and decapsulate the packet. | |||
| If instead the BitString was (p2,p6,p8,p10,p12,p13,p15), the packet | If instead the BitString was (p2,p6,p8,p10,p12,p13,p15), the packet | |||
| would be copied by BFR5 towards BFR3 because of p6 instead of being | would be copied by BFR5 towards BFR3 because of p6 instead of being | |||
| copied by BFR2 to BFR3 because of p5 in the prior case. This is | copied by BFR2 to BFR3 because of p5 in the prior case. This is | |||
| showing the ability of the shown BIER-TE Topology to make the traffic | showing the ability of the shown BIER-TE Topology to make the traffic | |||
| pass across any possible path and be replicated where desired. | pass across any possible path and be replicated where desired. | |||
| skipping to change at page 9, line 39 ¶ | skipping to change at page 9, line 39 ¶ | |||
| without desire for distributed routing protocols. | without desire for distributed routing protocols. | |||
| 1. BIER-TE inherits the following aspects from BIER unchanged: | 1. BIER-TE inherits the following aspects from BIER unchanged: | |||
| 1. The fundamental purpose of per-packet signaled packet | 1. The fundamental purpose of per-packet signaled packet | |||
| replication and delivery via a BitString. | replication and delivery via a BitString. | |||
| 2. The overall architecture consisting of three layers, flow | 2. The overall architecture consisting of three layers, flow | |||
| overlay, BIER(-TE) layer and routing underlay. | overlay, BIER(-TE) layer and routing underlay. | |||
| 3. The supportable encapsulations, [RFC8296] or other (future) | 3. The supportable encapsulations including [RFC8296]. | |||
| encapsulations. | ||||
| 4. The semantic of all [RFC8296] header elements used by the | 4. The semantic of all [RFC8296] header elements used by the | |||
| BIER-TE forwarding plane other than the semantic of the BP in | BIER-TE forwarding plane other than the semantic of the BP in | |||
| the BitString. | the BitString. | |||
| 5. The BIER forwarding plane, except for how bits have to be | 5. The BIER forwarding plane, except for how bits have to be | |||
| cleared during replication. | cleared during replication. | |||
| 2. BIER-TE has the following key changes with respect to BIER: | 2. BIER-TE has the following key changes with respect to BIER: | |||
| 1. In BIER, bits in the BitString of a BIER packet header | 1. In BIER, bits in the BitString of a BIER packet header | |||
| indicate a BFER and bits in the BIFT indicate the BIER | indicate a BFER and bits in the BIFT indicate the BIER | |||
| control plane calculated next-hop toward that BFER. In BIER- | control plane calculated next-hop toward that BFER. In BIER- | |||
| TE, bits in the BitString of a BIER packet header indicate an | TE, a bit in the BitString of a BIER packet header indicates | |||
| adjacency in the BIER-TE topology, and only the BFRs that are | an adjacency in the BIER-TE topology, and only the BFR that | |||
| the upstream of this adjacency have this bit populated with | is the upstream of that adjacency has its BP populated with | |||
| the adjacency in their BIFT. | the adjacency in its BIFT. | |||
| 2. In BIER, the implied reference option for the core part of | 2. In BIER, the implied reference option for the core part of | |||
| the BIER layer control plane are the BIER extensions for | the BIER layer control plane are the BIER extensions for | |||
| distributed routing protocols, such as those standardized in | distributed routing protocols. This includes ISIS/OSPF | |||
| ISIS/OSPF extensions for BIER, [RFC8401] and [RFC8444]. The | extensions for BIER, [RFC8401] and [RFC8444]. | |||
| reference option for the core part of the BIER-TE control | ||||
| 3. The reference option for the core part of the BIER-TE control | ||||
| plane is the BIER-TE controller. Nevertheless, both BIER and | plane is the BIER-TE controller. Nevertheless, both BIER and | |||
| BIER-TE BIFT forwarding plane state could equally be | BIER-TE BIFT forwarding plane state could equally be | |||
| populated by any mechanism. | populated by any mechanism. | |||
| 3. Assuming the reference options for the control plane, BIER-TE | 4. Assuming the reference options for the control plane, BIER-TE | |||
| replaces in-network autonomous path calculation by explicit | replaces in-network autonomous path calculation by explicit | |||
| paths calculated by the BIER-TE controller. | paths calculated by the BIER-TE controller. | |||
| 3. The following elements/functions described in the BIER | 3. The following elements/functions described in the BIER | |||
| architecture are not required by the BIER-TE architecture: | architecture are not required by the BIER-TE architecture: | |||
| 1. BIRTs are not required on BFRs for BIER-TE when using a BIER- | 1. BIRTs are not required on BFRs for BIER-TE when using a BIER- | |||
| TE controller because the controller can directly populate | TE controller because the controller can directly populate | |||
| the BIFTs. In BIER, BIRTs are populated by the distributed | the BIFTs. In BIER, BIRTs are populated by the distributed | |||
| routing protocol support for BIER, allowing BFRs to populate | routing protocol support for BIER, allowing BFRs to populate | |||
| skipping to change at page 10, line 44 ¶ | skipping to change at page 10, line 44 ¶ | |||
| 2. The BIER-TE layer forwarding plane does not require BFRs to | 2. The BIER-TE layer forwarding plane does not require BFRs to | |||
| have a unique BP and therefore also no unique BFR-id. See | have a unique BP and therefore also no unique BFR-id. See | |||
| Section 5.1.3. | Section 5.1.3. | |||
| 3. Identification of BFRs by the BIER-TE control plane is | 3. Identification of BFRs by the BIER-TE control plane is | |||
| outside the scope of this specification. Whereas the BIER | outside the scope of this specification. Whereas the BIER | |||
| control plane uses BFR-ids in its BFR to BFR signaling, a | control plane uses BFR-ids in its BFR to BFR signaling, a | |||
| BIER-TE controller may choose any form of identification | BIER-TE controller may choose any form of identification | |||
| deemed appropriate. | deemed appropriate. | |||
| 4. BIER-TE forwarding does not use the BFR-id field of the BIER | 4. BIER-TE forwarding does not require the BFIR-id field of the | |||
| packet header. | BIER packet header. | |||
| 4. Co-existence of BIER and BIER-TE in the same network requires the | 4. Co-existence of BIER and BIER-TE in the same network requires the | |||
| following: | following: | |||
| 1. The BIER/BIER-TE packet header needs to allow addressing both | 1. The BIER/BIER-TE packet header needs to allow addressing both | |||
| BIER and BIER-TE BIFT. Depending on the encapsulation | BIER and BIER-TE BIFT. Depending on the encapsulation | |||
| option, the same SD may or may not be reusable across BIER | option, the same SD may or may not be reusable across BIER | |||
| and BIER-TE. See Section 4.3. In either case, a packet is | and BIER-TE. See Section 4.3. In either case, a packet is | |||
| always only forwarded end-to-end via BIER or via BIER-TE | always only forwarded end-to-end via BIER or via BIER-TE | |||
| (ships in the nights forwarding). | (ships in the nights forwarding). | |||
| 2. BIER-TE deployments will have to assign BFR-ids to BFRs and | 2. BIER-TE deployments will have to assign BFR-ids to BFRs and | |||
| insert them into the BFR-id field of BIER packet headers as | insert them into the BFIR-id field of BIER packet headers as | |||
| BIER does, whenever the deployment uses (unchanged) | BIER does, whenever the deployment uses (unchanged) | |||
| components developed for BIER that use BFR-id, such as | components developed for BIER that use BFR-id, such as | |||
| multicast flow overlays or BIER layer control plane elements. | multicast flow overlays or BIER layer control plane elements. | |||
| See also Section 5.3.3. | See also Section 5.3.3. | |||
| 2.4. Accelerated/Hardware forwarding comparison | 2.4. Accelerated/Hardware forwarding comparison | |||
| Forwarding of BIER-TE is designed with the intent to easily build/ | BIER-TE forwarding rules, especially the Bitstring parsing are | |||
| program common forwarding hardware with BIER. The pseudocode in | designed to be as close as possible to those of BIER in the | |||
| Section 4.4 shows how existing (non-TE) BIER/BIFT forwarding can be | expectation that this eases the programming of BIER-TE forwarding | |||
| modified to support the REQUIRED BIER-TE forwarding functionality, by | code and/or BIER-TE forwarding hardware on platforms supporting BIER. | |||
| using BIER BIFT's "Forwarding Bit Mask" (F-BM): Only the clearing of | The pseudocode in Section 4.4 shows how existing (non-TE) BIER/BIFT | |||
| bits to avoid duplicate packets to a BFR's neighbor is skipped in | forwarding can be modified to support the REQUIRED BIER-TE forwarding | |||
| BIER-TE forwarding because it is not necessary and could not be done | functionality, by using BIER BIFT's "Forwarding Bit Mask" (F-BM): | |||
| when using BIER F-BM. | Only the clearing of bits to avoid duplicate packets to a BFR's | |||
| neighbor is skipped in BIER-TE forwarding because it is not necessary | ||||
| and could not be done when using BIER F-BM. | ||||
| Whether to use BIER or BIER-TE forwarding is simply a choice of the | Whether to use BIER or BIER-TE forwarding is simply a choice of the | |||
| mode of the BIFT indicated by the packet (BIER or BIER-TE BIFT). | mode of the BIFT indicated by the packet (BIER or BIER-TE BIFT). | |||
| This is determined by the BFR configuration for the encapsulation, | This is determined by the BFR configuration for the encapsulation, | |||
| see Section 4.3. | see Section 4.3. | |||
| 3. Components | 3. Components | |||
| BIER-TE can be thought of being constituted from the same three | BIER-TE can be thought of being constituted from the same three | |||
| layers as BIER: The "multicast flow overlay", the "BIER layer" and | layers as BIER: The "multicast flow overlay", the "BIER layer" and | |||
| skipping to change at page 12, line 12 ¶ | skipping to change at page 12, line 12 ¶ | |||
| "BIER layer" is constituted from the "BIER-TE forwarding plane" and | "BIER layer" is constituted from the "BIER-TE forwarding plane" and | |||
| the "BIER-TE control plane" represent by the "BIER-TE Controller". | the "BIER-TE control plane" represent by the "BIER-TE Controller". | |||
| <------BGP/PIM-----> | <------BGP/PIM-----> | |||
| |<-IGMP/PIM-> multicast flow <-PIM/IGMP->| | |<-IGMP/PIM-> multicast flow <-PIM/IGMP->| | |||
| overlay | overlay | |||
| BIER-TE [BIER-TE Controller] <=> [BIER-TE Topology] | BIER-TE [BIER-TE Controller] <=> [BIER-TE Topology] | |||
| control ^ ^ ^ | control ^ ^ ^ | |||
| plane / | \ BIER-TE control protocol | plane / | \ BIER-TE control protocol | |||
| | | | e.g. YANG/Netconf/RestConf | | | | e.g. YANG/NETCONF/RESTCONF | |||
| | | | PCEP/... | | | | PCEP/... | |||
| v v v | v v v | |||
| Src -> Rtr1 -> BFIR-----BFR-----BFER -> Rtr2 -> Rcvr | Src -> Rtr1 -> BFIR-----BFR-----BFER -> Rtr2 -> Rcvr | |||
| |<----------------->| | |<----------------->| | |||
| BIER-TE forwarding plane | BIER-TE forwarding plane | |||
| |<- BIER-TE domain->| | |<- BIER-TE domain->| | |||
| |<--------------------->| | |<--------------------->| | |||
| skipping to change at page 12, line 43 ¶ | skipping to change at page 12, line 43 ¶ | |||
| In the (non-TE) BIER architecture [RFC8279], the BIER control plane | In the (non-TE) BIER architecture [RFC8279], the BIER control plane | |||
| is not explicitly separated from the BIER forwarding plane, but | is not explicitly separated from the BIER forwarding plane, but | |||
| instead their functions are summarized together in Section 4.2. | instead their functions are summarized together in Section 4.2. | |||
| Example standardized options for the BIER control plane include ISIS/ | Example standardized options for the BIER control plane include ISIS/ | |||
| OSPF extensions for BIER, [RFC8401] and [RFC8444]. | OSPF extensions for BIER, [RFC8401] and [RFC8444]. | |||
| For BIER-TE, the control plane includes at minimum the following | For BIER-TE, the control plane includes at minimum the following | |||
| functionality. | functionality. | |||
| 1. During initial provisioning of the network and/or during | 1. BIER-TE topology control: During initial provisioning of the | |||
| modifications of its topology and/or services: protocols and/or | network and/or during modifications of its topology and/or | |||
| procedures to establish BIER-TE BIFTs: | services, the protocols and/or procedures to establish BIER-TE | |||
| BIFTs: | ||||
| 1. Determine the desired BIER-TE topology for a BIER-TE sub- | 1. Determine the desired BIER-TE topology for a BIER-TE sub- | |||
| domains: the native and/or overlay adjacencies that are | domains: the native and/or overlay adjacencies that are | |||
| assigned to BPs. | assigned to BPs. | |||
| 2. Determine the per-BFR BIFT from the BIER-TE topology. | 2. Determine the per-BFR BIFT from the BIER-TE topology. | |||
| 3. Optionally assign BFR-ids to BFIRs for later insertion into | 3. Optionally assign BFR-ids to BFIRs for later insertion into | |||
| BIER-TE headers on BFIRs. Alternatively, bfir-id in BIER | BIER headers on BFIRs as BFIR-id. Alternatively, BFIR-id in | |||
| packet headers may be managed solely by the flow overlay | BIER packet headers may be managed solely by the flow overlay | |||
| layer and/or be unused. | layer and/or be unused. | |||
| 4. Install/update the BIFTs into the BFRs and optionally BFR-ids | 4. Install/update the BIFTs into the BFRs and optionally BFR-ids | |||
| into BFIRs. | into BFIRs. | |||
| 2. During operations of the network: Protocols and/or procedures to | 2. BIER-TE tree control: During operations of the network, | |||
| support creation/change/removal of overlay flows on BFIRs: | protocols and/or procedures to support creation/change/removal of | |||
| overlay flows on BFIRs: | ||||
| 1. Process the BIER-TE requirements for the multicast overlay | 1. Process the BIER-TE requirements for the multicast overlay | |||
| flow: BFIR and BFERs of the flow as well as policies for the | flow: BFIR and BFERs of the flow as well as policies for the | |||
| path selection of the flow. | path selection of the flow. | |||
| 2. Determine the BitStrings and optionally Entropy. | 2. Determine the BitStrings and optionally Entropy. | |||
| 3. Install state on the BFIR to impose the desired BIER packet | 3. Install state on the BFIR to impose the desired BIER packet | |||
| header(s) for packets of the overlay flow. | header(s) for packets of the overlay flow. | |||
| 4. Install the necessary state on the BFERs to decapsulate the | 4. Install the necessary state on the BFERs to decapsulate the | |||
| BIER packet header and properly dispatch its payload. | BIER packet header and properly dispatch its payload. | |||
| 3.2.1. The BIER-TE Controller | 3.2.1. The BIER-TE Controller | |||
| Notwithstanding other options, this architecture describes the BIER | [RFC-Editor: the following text has three references to anchors | |||
| control plane as shown in Figure 3 to consists of: | topology-control, topology-control-1 and tree-control. | |||
| Unfortunately, XMLv2 does not offer any tagging that reasonable | ||||
| references are generated (i had this problem already in RFCs last | ||||
| year. Please make sure there are useful-to-read cross-references in | ||||
| the RFC in these three places after you convert to XMLv3.] | ||||
| o A single centralized BIER-TE controller. | This architecture describes the BIER-TE control plane as shown in | |||
| Figure 3 to consists of: | ||||
| o A single, centralized BIER-TE controller. | ||||
| o Data-models and protocols to communicate between controller and | o Data-models and protocols to communicate between controller and | |||
| BFRs in step 1, such as YANG/Netconf/RestConf. | BFRs in support of BIER-TE topology control (Paragraph 1), such as | |||
| YANG/NETCONF/RESTCONF ([RFC7950]/[RFC6241]/[RFC8040]). | ||||
| o Protocols to communicate between controller and BFIR in step 2, | o Protocols to communicate between controller and BFIR in support of | |||
| such as BIER-TE extensions for [RFC5440]. | BIER-TE tree control (Paragraph 2), such as BIER-TE extensions for | |||
| [RFC5440]. | ||||
| The (non-TE) BIER control plane could equally be implemented without | The single, centralized BIER-TE controller is used in this document | |||
| any active dynamic components by an operator via CLI on the BFRs. In | as reference option for the BIER-TE control plane but other options | |||
| that case, operator configured local policy on the BFIR would have to | are equally feasible. The BIER-TE control plane could equally be | |||
| determine how to set the appropriate BIER header fields. The BIER-TE | implemented without automated configuration/protocols, by an operator | |||
| control plane could also be decentralized and/or distributed, but | via CLI on the BFRs. In that case, operator configured local policy | |||
| this document does not consider any additional protocols and/or | on the BFIR would have to determine how to set the appropriate BIER | |||
| procedures which would then be necessary to coordinate its entities | header fields. The BIER-TE control plane could also be decentralized | |||
| to achieve the above described functionality. | and/or distributed, but this document does not consider any | |||
| additional protocols and/or procedures which would then be necessary | ||||
| to coordinate its (distributed/decentralized) entities to achieve the | ||||
| above described functionality. | ||||
| 3.2.1.1. BIER-TE Topology discovery and creation | 3.2.1.1. BIER-TE Topology discovery and creation | |||
| Step 1.1 includes network topology discovery and BIER-TE topology | The first item of BIER-TE topology control (Paragraph 1) includes | |||
| creation. The latter describes the process by which a Controller | network topology discovery and BIER-TE topology creation. The latter | |||
| determines which routers are to be configured as BFR and the | describes the process by which a Controller determines which routers | |||
| adjacencies between them. | are to be configured as BFR and the adjacencies between them. | |||
| In statically managed networks, such as in industrial environments, | In statically managed networks, such as in industrial environments, | |||
| both discovery and creation can be a manual/offline process. | both discovery and creation can be a manual/offline process. | |||
| In other networks, topology discovery may rely on protocols including | In other networks, topology discovery may rely on protocols including | |||
| extending a "Link-State-Protocol" (LSP) based IGP into the BIER-TE | extending a "Link-State-Protocol" based IGP into the BIER-TE | |||
| controller itself, [RFC7752] (BGP-LS) or [RFC8345] (YANG topology) as | controller itself, [RFC7752] (BGP-LS) or [RFC8345] (YANG topology) as | |||
| well as BIER-TE specific methods, for example via | well as BIER-TE specific methods, for example via | |||
| [I-D.ietf-bier-te-yang]. These options are non-exhaustive. | [I-D.ietf-bier-te-yang]. These options are non-exhaustive. | |||
| Dynamic creation of the BIER-TE topology can be as easy as mapping | Dynamic creation of the BIER-TE topology can be as easy as mapping | |||
| the network topology 1:1 to the BIER-TE topology by assigning a BP | the network topology 1:1 to the BIER-TE topology by assigning a BP | |||
| for every network subnet adjacency. In larger networks, it likely | for every network subnet adjacency. In larger networks, it likely | |||
| involves more complex policy and optimization decisions including how | involves more complex policy and optimization decisions including how | |||
| to minimize the number of BP required and how to assign BP across | to minimize the number of BP required and how to assign BP across | |||
| different BitStrings to minimize the number of duplicate packets | different BitStrings to minimize the number of duplicate packets | |||
| across links when delivering an overlay flow to BFER using different | across links when delivering an overlay flow to BFER using different | |||
| SIs/BitStrings. These topics are discussed in Section 5. | SIs/BitStrings. These topics are discussed in Section 5. | |||
| When the BIER-TE topology is determined, the BIER-TE Controller then | When the BIER-TE topology is determined, the BIER-TE Controller then | |||
| pushes the BitPositions/adjacencies to the BIFT of the BFRs. On each | pushes the BitPositions/adjacencies to the BIFT of the BFRs. On each | |||
| BFR only those SI:BitPositions are populated that are adjacencies to | BFR only those SI:BitPositions are populated that are adjacencies to | |||
| other BFRs in the BIER-TE topology. | other BFRs in the BIER-TE topology. | |||
| Communications between the BIER-TE Controller and BFRs (beside | Communications between the BIER-TE Controller and BFRs (beside | |||
| topology discovery) is ideally via standardized protocols and data- | topology discovery) is ideally via standardized protocols and data- | |||
| models such as Netconf/RestConf/YANG/PCEP. Vendor-specific CLI on | models such as NETCONF/RESTCONF/YANG/PCEP. Vendor-specific CLI on | |||
| the BFRs is also an option (as in many other SDN solutions lacking | the BFRs is also an option (as in many other SDN solutions lacking | |||
| definition of standardized data model). | definition of standardized data model). | |||
| 3.2.1.2. Engineered Trees via BitStrings | 3.2.1.2. Engineered Trees via BitStrings | |||
| In BIER, the same set of BFER in a single sub-domain is always | In BIER, the same set of BFER in a single sub-domain is always | |||
| encoded as the same BitString. In BIER-TE, the BitString used to | encoded as the same BitString. In BIER-TE, the BitString used to | |||
| reach the same set of BFER in the same sub-domain can be different | reach the same set of BFER in the same sub-domain can be different | |||
| for different overlay flows because the BitString encodes the paths | for different overlay flows because the BitString encodes the paths | |||
| towards the BFER, so the BitStrings from different BFIR to the same | towards the BFER, so the BitStrings from different BFIR to the same | |||
| skipping to change at page 16, line 8 ¶ | skipping to change at page 16, line 21 ¶ | |||
| according to state created by the BIER-TE control plane and/or | according to state created by the BIER-TE control plane and/or | |||
| overlay layer. | overlay layer. | |||
| When the BIER-TE Forwarding Plane receives a packet, it simply looks | When the BIER-TE Forwarding Plane receives a packet, it simply looks | |||
| up the bit positions that are set in the BitString of the packet in | up the bit positions that are set in the BitString of the packet in | |||
| the BIFT that was populated by the BIER-TE Controller. For every BP | the BIFT that was populated by the BIER-TE Controller. For every BP | |||
| that is set in the BitString, and that has one or more adjacencies in | that is set in the BitString, and that has one or more adjacencies in | |||
| the BIFT, a copy is made according to the type of adjacencies for | the BIFT, a copy is made according to the type of adjacencies for | |||
| that BP in the BIFT. Before sending any copy, the BFR clears all BPs | that BP in the BIFT. Before sending any copy, the BFR clears all BPs | |||
| in the BitString of the packet for which the BFR has one or more | in the BitString of the packet for which the BFR has one or more | |||
| adjacencies in the BIFT, except when the adjacency indicates | adjacencies in the BIFT. Clearing these bits inhibits packets from | |||
| "DoNotClear" (DNC, see Section 4.2.1). This is done to inhibit that | looping when the BitStrings erroneously includes a forwarding loop. | |||
| packets can loop. Because DNC raises the risk of packets looping | When a forward_connected() adjacency has the "DoNotClear" (DNC) flag | |||
| with inmakes it easier to | set, then this BP is re-set for the packet copied to that adjacency. | |||
| See Section 4.2.1. | ||||
| 3.4. The Routing Underlay | 3.4. The Routing Underlay | |||
| For forward_connected() adjacencies, BIER-TE is sending BIER packets | For forward_connected() adjacencies, BIER-TE is sending BIER packets | |||
| to directly connected BIER-TE neighbors as L2 (unicasted) BIER | to directly connected BIER-TE neighbors as L2 (unicasted) BIER | |||
| packets without requiring a routing underlay. For forward_routed() | packets without requiring a routing underlay. For forward_routed() | |||
| adjacencies, BIER-TE forwarding encapsulates a copy of the BIER | adjacencies, BIER-TE forwarding encapsulates a copy of the BIER | |||
| packet so that it can be delivered by the forwarding plane of the | packet so that it can be delivered by the forwarding plane of the | |||
| routing underlay to the routable destination address indicated in the | routing underlay to the routable destination address indicated in the | |||
| adjacency. See Section 4.2.2 for the adjacency definition. | adjacency. See Section 4.2.2 for the adjacency definition. | |||
| BIER relies on the routing underlay to calculate paths towards BFERs | BIER relies on the routing underlay to calculate paths towards BFERs | |||
| and derive next-hop BFR adjacencies for those paths. This commonly | and derive next-hop BFR adjacencies for those paths. This commonly | |||
| relies on BIER specific extensions to the routing protocols of the | relies on BIER specific extensions to the routing protocols of the | |||
| routing underlay but may also be established by a controller. In | routing underlay but may also be established by a controller. In | |||
| BIER-TE, the next-hops of a packet are determined by the BitString | BIER-TE, the next-hops of a packet are determined by the BitString | |||
| through the BIER-TE Controller established adjacencies on the BFR for | through the BIER-TE Controller established adjacencies on the BFR for | |||
| the BPs of the BitString. There is thus no need for BFER specific | the BPs of the BitString. There is thus no need for BFR specific | |||
| routing underlay extensions to forward BIER packets with BIER-TE | routing underlay extensions to forward BIER packets with BIER-TE | |||
| semantics. | semantics. | |||
| Encapsulation parameters can be provisioned by the BIER-TE controller | Encapsulation parameters can be provisioned by the BIER-TE controller | |||
| into the forward_connected() or forward_routed() adjacencies directly | into the forward_connected() or forward_routed() adjacencies directly | |||
| without relying on a routing underlay. | without relying on a routing underlay. | |||
| If the BFR intends to support FRR for BIER-TE, then the BIER-TE | If the BFR intends to support FRR for BIER-TE, then the BIER-TE | |||
| forwarding plane needs to receive fast adjacency up/down | forwarding plane needs to receive fast adjacency up/down | |||
| notifications: Link up/down or neighbor up/down, e.g. from BFD. | notifications: Link up/down or neighbor up/down, e.g. from BFD. | |||
| skipping to change at page 17, line 20 ¶ | skipping to change at page 17, line 32 ¶ | |||
| are out of scope of this document. | are out of scope of this document. | |||
| Path steering is supported via the definition of a BitString. | Path steering is supported via the definition of a BitString. | |||
| BitStrings used in BIER-TE are composed based on policy and resource | BitStrings used in BIER-TE are composed based on policy and resource | |||
| management considerations. For example, when composing BIER-TE | management considerations. For example, when composing BIER-TE | |||
| BitStrings, a Controller must take into account the resources | BitStrings, a Controller must take into account the resources | |||
| available at each BFR and for each BP when it is providing | available at each BFR and for each BP when it is providing | |||
| congestion-loss-free services such as Rate Controlled Service | congestion-loss-free services such as Rate Controlled Service | |||
| Disciplines [RCSD94]. Resource availability could be provided for | Disciplines [RCSD94]. Resource availability could be provided for | |||
| example via routing protocol information, but may also be obtained | example via routing protocol information, but may also be obtained | |||
| via a BIER-TE control protocol such as Netconf or any other protocol | via a BIER-TE control protocol such as NETCONF or any other protocol | |||
| commonly used by a Controller to understand the resources of the | commonly used by a Controller to understand the resources of the | |||
| network it operates on. The resource usage of the BIER-TE traffic | network it operates on. The resource usage of the BIER-TE traffic | |||
| admitted by the BIER-TE controller can be solely tracked on the BIER- | admitted by the BIER-TE controller can be solely tracked on the BIER- | |||
| TE Controller based on local accounting as long as no | TE Controller based on local accounting as long as no | |||
| forward_routed() adjacencies are used (see Section 4.2.1 for the | forward_routed() adjacencies are used (see Section 4.2.1 for the | |||
| definition of forward_routed() adjacencies). When forward_routed() | definition of forward_routed() adjacencies). When forward_routed() | |||
| adjacencies are used, the paths selected by the underlying routing | adjacencies are used, the paths selected by the underlying routing | |||
| protocol need to be tracked as well. | protocol need to be tracked as well. | |||
| Resource management has implications on the forwarding plane beyond | Resource management has implications on the forwarding plane beyond | |||
| skipping to change at page 18, line 5 ¶ | skipping to change at page 18, line 17 ¶ | |||
| 4.1. The Bit Index Forwarding Table (BIFT) | 4.1. The Bit Index Forwarding Table (BIFT) | |||
| The BIFT exists in every BFR. For every sub-domain in use, it is a | The BIFT exists in every BFR. For every sub-domain in use, it is a | |||
| table indexed by SI:bit position and is populated by the BIER-TE | table indexed by SI:bit position and is populated by the BIER-TE | |||
| control plane. Each index can be empty or contain a list of one or | control plane. Each index can be empty or contain a list of one or | |||
| more adjacencies. | more adjacencies. | |||
| Like BIER, BIER-TE can support multiple sub-domains, each with a | Like BIER, BIER-TE can support multiple sub-domains, each with a | |||
| separate BIFT. | separate BIFT. | |||
| In [RFC8279], Figure 2, indices into the BIFT are both SI:BitString | In [RFC8279], Figure 2, indices into the BIFT are SI:BitString and | |||
| and BFR-id, where BitString is indicating a BP: BFR-id = SI * 2^BSL + | BFR-id. BitString is indicating a BP, and therefore: BFR-id = SI:BP | |||
| BP. As shown in Figure 4, in BIER-TE, only SI:BP are used as indices | = SI * 2^BSL + (BP - 1). As shown in Figure 4, in BIER-TE, only | |||
| into a BIFT because they identify adjacencies and not BFR. | SI:BP are used as indices into a BIFT because they identify | |||
| adjacencies and not BFR. | ||||
| ------------------------------------------------------------------ | ------------------------------------------------------------------ | |||
| | Index: | Adjacencies: | | | Index: | Adjacencies: | | |||
| | SI:bit position | <empty> or one or more per entry | | | SI:bit position | <empty> or one or more per entry | | |||
| ================================================================== | ================================================================== | |||
| | 0:1 | forward_connected(interface,neighbor{,DNC}) | | | 0:1 | forward_connected(interface,neighbor{,DNC}) | | |||
| ------------------------------------------------------------------ | ------------------------------------------------------------------ | |||
| | 0:2 | forward_connected(interface,neighbor{,DNC}) | | | 0:2 | forward_connected(interface,neighbor{,DNC}) | | |||
| | | forward_connected(interface,neighbor{,DNC}) | | | | forward_connected(interface,neighbor{,DNC}) | | |||
| ------------------------------------------------------------------ | ------------------------------------------------------------------ | |||
| | 0:3 | local_decap({VRF}) | | | 0:3 | local_decap({VRF}) | | |||
| ------------------------------------------------------------------ | ------------------------------------------------------------------ | |||
| | 0:4 | forward_routed({VRF,}l3-neighbor) | | | 0:4 | forward_routed({VRF,}l3-neighbor) | | |||
| ------------------------------------------------------------------ | ------------------------------------------------------------------ | |||
| skipping to change at page 22, line 52 ¶ | skipping to change at page 23, line 5 ¶ | |||
| In BIER-TE, a BFR-NBR is an adjacency, forward_connected, | In BIER-TE, a BFR-NBR is an adjacency, forward_connected, | |||
| forward_routed or local_decap. There is no need for [2] to suppress | forward_routed or local_decap. There is no need for [2] to suppress | |||
| duplicates in the way BIER does because in general, different BP | duplicates in the way BIER does because in general, different BP | |||
| would never have the same adjacency. If a BIER-TE controller | would never have the same adjacency. If a BIER-TE controller | |||
| actually finds some optimization in which this would be desirable, | actually finds some optimization in which this would be desirable, | |||
| then the controller is also responsible to ensure that only one of | then the controller is also responsible to ensure that only one of | |||
| those bits is set in any Packet->BitString, unless the controller | those bits is set in any Packet->BitString, unless the controller | |||
| explicitly wants for duplicates to be created. | explicitly wants for duplicates to be created. | |||
| For BIER-TE, F-BM is handled as follows: | The following points describe how the forwarding bit mask (F-BM) for | |||
| each BP is configured in the BIFT and how this impacts the BitString | ||||
| of the packet being processed with that BIFT: | ||||
| 1. The F-BM of all bits without an adjacency has all bits clear. | 1. The F-BMs of all BIFT BPs without an adjacency have all their | |||
| This will cause [3] to skip further processing of such a bit. | bits clear. This will cause [3] to skip further processing of | |||
| such a BP. | ||||
| 2. All bits with an adjacency (with DNC flag clear) have an F-BM | 2. All BIFT BPs with an adjacency (with DNC flag clear) have an F-BM | |||
| that has only those bits set for which this BFR does not have an | that has only those BPs set for which this BFR does not have an | |||
| adjacency. This causes [2] to clear all bits from | adjacency. This causes [2] to clear all bits from | |||
| PacketCopy->BitString for which this BFR does have an adjacency. | PacketCopy->BitString for which this BFR does have an adjacency. | |||
| 3. [1] is not performed for BIER-TE. All bit clearing required by | 3. [1] is not performed for BIER-TE. All bit clearing required by | |||
| BIER-TE is performed by [2]. | BIER-TE is performed by [2]. | |||
| This Forwarding Pseudocode can support the REQUIRED BIER-TE | This Forwarding Pseudocode can support the REQUIRED BIER-TE | |||
| forwarding functions (see Section 4.6), forward_connected, | forwarding functions (see Section 4.6), forward_connected, | |||
| forward_routed() and local decap, but not the RECOMMENDED functions | forward_routed() and local decap, but not the RECOMMENDED functions | |||
| DNC flag and multiple adjacencies per bit nor the OPTIONAL function, | DNC flag and multiple adjacencies per bit nor the OPTIONAL function, | |||
| ECMP adjacencies. The DNC flag cannot be supported when using only | ECMP adjacencies. The DNC flag cannot be supported when using only | |||
| [1] to mask bits. | [1] to mask bits. | |||
| The modified and expanded Forwarding Pseudocode in Figure 6 specifies | The modified and expanded Forwarding Pseudocode in Figure 6 specifies | |||
| how to support all BIER-TE forwarding functions (required, | how to support all BIER-TE forwarding functions (required, | |||
| recommended and optional): | recommended and optional): | |||
| o This pseudocode eliminates per-bit F-BM, therefore reducing the | o This pseudocode eliminates per-bit F-BM, therefore reducing the | |||
| size of BIFT state by BitStringLength^2*SI and eliminating the | size of BIFT state by BitStringLength^2*SI and eliminating the | |||
| need for per-packet-copy bit string operation except for | need for per-packet-copy BitString operation except for | |||
| adjacencies with the DNC flag set: | adjacencies with the DNC flag set: | |||
| * AdjacentBits[SI] are bit positions with a non-empty list of | * AdjacentBits[SI] are bit positions with a non-empty list of | |||
| adjacencies in this BFR BIFT. This can be computed whenever | adjacencies in this BFR BIFT. This can be computed whenever | |||
| the BIER-TE Controller updates (add/removes) adjacencies in the | the BIER-TE Controller updates (add/removes) adjacencies in the | |||
| BIFT. | BIFT. | |||
| * The BFR needs to create packet copies for these adjacent bits | * The BFR needs to create packet copies for these adjacent bits | |||
| when they are set in the packets BitString. This set of bits | when they are set in the packets BitString. This set of bits | |||
| is calculated in PktAdjacentBits. | is calculated in PktAdjacentBits. | |||
| * All bit positions to which the BFR creates copies have to be | * All bit positions to which the BFR creates copies have to be | |||
| cleared in packet copies to avoid loops. This is done by | cleared in packet copies to avoid loops. This is done by | |||
| masking the bit string of the packet with ~AdjacentBits[SI]. | masking the BitString of the packet with ~AdjacentBits[SI]. | |||
| When an adjacency has DNC set, this bit position is set again | When an adjacency has DNC set, this bit position is set again | |||
| only for the packet copy towards that bit position. | only for the packet copy towards that bit position. | |||
| o BIFT entries may contain more than one adjacency in support of | o BIFT entries may contain more than one adjacency in support of | |||
| specific configurations such as Section 5.1.5. The code therefore | specific configurations such as Section 5.1.5. The code therefore | |||
| includes a loop over these adjacencies. | includes a loop over these adjacencies. | |||
| o The ECMP adjacency is shown. Its parameters are a seed and a | o The ECMP adjacency is shown. Its parameters are a seed and a | |||
| ListOfAdjacencies from which one is picked. | ListOfAdjacencies from which one is picked. | |||
| skipping to change at page 27, line 16 ¶ | skipping to change at page 28, line 16 ¶ | |||
| receive PIM or IGMP joins on LAN2 for the traffic. | receive PIM or IGMP joins on LAN2 for the traffic. | |||
| Further processing of the packet in BFR4, BFR5 and BFER2 accordingly. | Further processing of the packet in BFR4, BFR5 and BFER2 accordingly. | |||
| 4.6. BFR Requirements for BIER-TE forwarding | 4.6. BFR Requirements for BIER-TE forwarding | |||
| BFR that support BIER-TE and BIER MUST support configuration that | BFR that support BIER-TE and BIER MUST support configuration that | |||
| enables BIER-TE instead of (non-TE) BIER forwarding rules for all | enables BIER-TE instead of (non-TE) BIER forwarding rules for all | |||
| BIFT of one or more BIER sub-domains. Every BP in a BIER-TE BIFT | BIFT of one or more BIER sub-domains. Every BP in a BIER-TE BIFT | |||
| MUST support to have zero or one adjacency. BIER-TE forwarding MUST | MUST support to have zero or one adjacency. BIER-TE forwarding MUST | |||
| support the adjacency types forward_connected() with clear DNC flag, | support the adjacency types forward_connected() with the DNC flag not | |||
| forward_routed() and local_decap. As explained in Section 4.4, these | set, forward_routed() and local_decap. As explained in Section 4.4, | |||
| REQUIRED BIER-TE forwarding functions can be implementeded via the | these REQUIRED BIER-TE forwarding functions can be implementeded via | |||
| same Forwarding Pseudocode as BIER forwarding except for one | the same Forwarding Pseudocode as BIER forwarding except for one | |||
| modification (skipping one masking with F-BM). | modification (skipping one masking with F-BM). | |||
| BIER-TE forwarding SHOULD support forward_connected() adjacencies | BIER-TE forwarding SHOULD support forward_connected() adjacencies | |||
| with a set DNC flag, as this is highly useful to save bits in rings | with a set DNC flag, as this is highly useful to save bits in rings | |||
| (see Section 5.1.6). | (see Section 5.1.6). | |||
| BIER-TE forwarding SHOULD support more than one adjacency on a bit. | BIER-TE forwarding SHOULD support more than one adjacency on a bit. | |||
| This allows to save bits in hub&spoke scenarios (see Section 5.1.5). | This allows to save bits in hub&spoke scenarios (see Section 5.1.5). | |||
| BIER-TE forwarding MAY support ECMP adjacencies to save bits in ECMP | BIER-TE forwarding MAY support ECMP adjacencies to save bits in ECMP | |||
| scenarios, see Section 5.1.7 for an example. This is a MAY | scenarios, see Section 5.1.7 for an example. This is a MAY | |||
| requirement, because the deployment importance of ECMP adjacencies | requirement, because the deployment importance of ECMP adjacencies | |||
| for BIER-TE is unclear as one can also leverage ECMP of the routing | for BIER-TE is unclear as one can also leverage ECMP of the routing | |||
| underlay via forwarded_routed adjacencies and/or might prefer to have | underlay via forwarded_routed adjacencies and/or might prefer to have | |||
| more explicit control of the path chosen via explicit BP/adjacencies | more explicit control of the path chosen via explicit BP/adjacencies | |||
| for each ECMP path alternative. | for each ECMP path alternative. | |||
| 5. BIER-TE Controller Operational Considerations | 5. BIER-TE Controller Operational Considerations | |||
| 5.1. Bit position Assignments | 5.1. Bit Position Assignments | |||
| This section describes how the BIER-TE Controller can use the | This section describes how the BIER-TE Controller can use the | |||
| different BIER-TE adjacency types to define the bit positions of a | different BIER-TE adjacency types to define the bit positions of a | |||
| BIER-TE domain. | BIER-TE domain. | |||
| Because the size of the BitString limits the size of the BIER-TE | Because the size of the BitString limits the size of the BIER-TE | |||
| domain, many of the options described exist to support larger | domain, many of the options described exist to support larger | |||
| topologies with fewer bit positions (4.1, 4.3, 4.4, 4.5, 4.6, 4.7, | topologies with fewer bit positions. | |||
| 4.8). | ||||
| 5.1.1. P2P Links | 5.1.1. P2P Links | |||
| On a P2P link that connects two BFR, the same bit position can be | On a P2P link that connects two BFR, the same bit position can be | |||
| used on both BFR for the adjacency to the neighboring BFR. A P2P | used on both BFR for the adjacency to the neighboring BFR. A P2P | |||
| link requires therefore only one bit position. | link requires therefore only one bit position. | |||
| 5.1.2. BFER | 5.1.2. BFER | |||
| Every non-Leaf BFER is given a unique bit position with a local_decap | Every non-Leaf BFER is given a unique bit position with a local_decap | |||
| skipping to change at page 28, line 31 ¶ | skipping to change at page 29, line 31 ¶ | |||
| | / \ | | | | | / \ | | | | |||
| BFER1(PE) BFER2(PE) BFER1(PE)----BFER2(PE) | BFER1(PE) BFER2(PE) BFER1(PE)----BFER2(PE) | |||
| ^ U-turn link | ^ U-turn link | |||
| Leaf BFER / Non-Leaf BFER / | Leaf BFER / Non-Leaf BFER / | |||
| PE-router PE-router | PE-router PE-router | |||
| Figure 10: Leaf vs. non-Leaf BFER Example | Figure 10: Leaf vs. non-Leaf BFER Example | |||
| A leaf BFERs is one where incoming BIER-TE packets never need to be | A leaf BFER is one where incoming BIER-TE packets never need to be | |||
| forwarded to another BFR but are only sent to the BFER to exit the | forwarded to another BFR but are only sent to the BFER to exit the | |||
| BIER-TE domain. For example, in networks where Provider Edge (PE) | BIER-TE domain. For example, in networks where Provider Edge (PE) | |||
| router are spokes connected to Provider (P) routers, those PEs are | router are spokes connected to Provider (P) routers, those PEs are | |||
| Leaf BFERs unless there is a U-turn between two PEs. | Leaf BFERs unless there is a U-turn between two PEs. | |||
| Consider how redundant disjoint traffic can reach BFER1/BFER2 in | Consider how redundant disjoint traffic can reach BFER1/BFER2 in | |||
| Figure 10: When BFER1/BFER2 are Non-Leaf BFER as shown on the right- | Figure 10: When BFER1/BFER2 are Non-Leaf BFER as shown on the right- | |||
| hand side, one traffic copy would be forwarded to BFER1 from BFR1, | hand side, one traffic copy would be forwarded to BFER1 from BFR1, | |||
| but the other one could only reach BFER1 via BFER2, which makes BFER2 | but the other one could only reach BFER1 via BFER2, which makes BFER2 | |||
| a non-Leaf BFER. Likewise, BFER1 is a non-Leaf BFER when forwarding | a non-Leaf BFER. Likewise, BFER1 is a non-Leaf BFER when forwarding | |||
| skipping to change at page 29, line 41 ¶ | skipping to change at page 30, line 41 ¶ | |||
| packet, then these two optimizations can not be used together with | packet, then these two optimizations can not be used together with | |||
| shared bit positions optimization for leaf-BFER. | shared bit positions optimization for leaf-BFER. | |||
| 5.1.4. LANs | 5.1.4. LANs | |||
| In a LAN, the adjacency to each neighboring BFR is given a unique bit | In a LAN, the adjacency to each neighboring BFR is given a unique bit | |||
| position. The adjacency of this bit position is a | position. The adjacency of this bit position is a | |||
| forward_connected() adjacency towards the BFR and this bit position | forward_connected() adjacency towards the BFR and this bit position | |||
| is populated into the BIFT of all the other BFRs on that LAN. | is populated into the BIFT of all the other BFRs on that LAN. | |||
| BFR1 | BFR1 | |||
| |p1 | |p1 | |||
| LAN1-+-+---+-----+ | LAN1-+-+---+-----+ | |||
| p3| p4| p2| | p3| p4| p2| | |||
| BFR3 BFR4 BFR7 | BFR3 BFR4 BFR7 | |||
| Figure 11: LAN Example | Figure 11: LAN Example | |||
| If Bandwidth on the LAN is not an issue and most BIER-TE traffic | If Bandwidth on the LAN is not an issue and most BIER-TE traffic | |||
| should be copied to all neighbors on a LAN, then bit positions can be | should be copied to all neighbors on a LAN, then bit positions can be | |||
| saved by assigning just a single bit position to the LAN and | saved by assigning just a single bit position to the LAN and | |||
| populating the bit position of the BIFTs of each BFRs on the LAN with | populating the bit position of the BIFTs of each BFRs on the LAN with | |||
| a list of forward_connected() adjacencies to all other neighbors on | a list of forward_connected() adjacencies to all other neighbors on | |||
| the LAN. | the LAN. | |||
| skipping to change at page 31, line 36 ¶ | skipping to change at page 32, line 36 ¶ | |||
| the counterclockwise bit position because the DNC bit only applies to | the counterclockwise bit position because the DNC bit only applies to | |||
| the bit for which the replication is done. Likewise for the | the bit for which the replication is done. Likewise for the | |||
| clockwise bit position for the counterclockwise copy. As a result, | clockwise bit position for the counterclockwise copy. As a result, | |||
| the ring ingress BFR will send a copy in both directions, serving | the ring ingress BFR will send a copy in both directions, serving | |||
| BFRs on either side of the ring up to L1. | BFRs on either side of the ring up to L1. | |||
| 5.1.7. Equal Cost MultiPath (ECMP) | 5.1.7. Equal Cost MultiPath (ECMP) | |||
| [RFC-Editor: A reviewer (Lars Eggert) noted that the infinite "to | [RFC-Editor: A reviewer (Lars Eggert) noted that the infinite "to | |||
| use" in the following sentence is not correct. The same was also | use" in the following sentence is not correct. The same was also | |||
| noted for several other similar instances. What exactly should be | noted for several other similar instances. The following URL seems | |||
| done about this ?]. | to indicate though that this is a per-case decision, which seems | |||
| undefined: https://writingcenter.gmu.edu/guides/choosing-between- | ||||
| infinitive-and-gerund-to-do-or-doing. What exactly should be done | ||||
| about this ?]. | ||||
| An ECMP adjacency allows to use just one BP to deliver packets to one | An ECMP adjacency allows to use just one BP to deliver packets to one | |||
| one of N adjacencies instead of one BP for each adjacency. In the | one of N adjacencies instead of one BP for each adjacency. In the | |||
| common example case Figure 13, a link-bundle of three links L1,L2,L3 | common example case Figure 13, a link-bundle of three links L1,L2,L3 | |||
| connects BFR1 and BFR2, and only one BP is used instead of three BP | connects BFR1 and BFR2, and only one BP is used instead of three BP | |||
| to deliver packets from BFR1 to BFR2. | to deliver packets from BFR1 to BFR2. | |||
| --L1----- | --L1----- | |||
| BFR1 --L2----- BFR2 | BFR1 --L2----- BFR2 | |||
| --L3----- | --L3----- | |||
| skipping to change at page 34, line 47 ¶ | skipping to change at page 36, line 8 ¶ | |||
| Forward_routed() adjacencies can reduce the number of bit positions | Forward_routed() adjacencies can reduce the number of bit positions | |||
| required when the path steering requirement is not hop-by-hop | required when the path steering requirement is not hop-by-hop | |||
| explicit path selection, but loose-hop selection. Forward_routed() | explicit path selection, but loose-hop selection. Forward_routed() | |||
| adjacencies can also allow to operate BIER-TE across intermediate hop | adjacencies can also allow to operate BIER-TE across intermediate hop | |||
| routers that do not support BIER-TE. | routers that do not support BIER-TE. | |||
| ............... | ............... | |||
| ...BFR1--... ...--L1-- BFR2... | ...BFR1--... ...--L1-- BFR2... | |||
| ... .Routers. ...--L2--/ | ... .Routers. ...--L2--/ | |||
| ...BFR4--... ...------ BFR3... | ...BFR4--... ...--L3-- BFR3... | |||
| ... ...--L4--/ | | ||||
| ............... | | ............... | | |||
| LO | LO | |||
| Network Area 1 | Network Area 1 | |||
| Figure 16: Forward Routed Adjacencies Example | Figure 16: Forward Routed Adjacencies Example | |||
| Assume the requirement in Figure 16 is to explicitly steer traffic | Assume the requirement in Figure 16 is to explicitly steer traffic | |||
| flows that have arrived at BFR1 or BFR4 via a path in the routing | flows that have arrived at BFR1 or BFR4 via a path in the routing | |||
| underlay "Network Area 1" to one of the following three next | underlay "Network Area 1" to one of the following three next | |||
| segments: (1) BFR2 via link L1, (2) BFR2 via link L2, or (3) via | segments: (1) BFR2 via link L1, (2) BFR2 via link L2, or (3) via BFR3 | |||
| BFR3. | and then nor caring whether the packet is forwarded via L3 or L4. | |||
| To enable this, both BFR1 and BFR4 are set up with a forward_routed | To enable this, both BFR1 and BFR4 are set up with a forward_routed | |||
| adjacency bit position towards an address of BFR2 on link L1, another | adjacency bit position towards an address of BFR2 on link L1, another | |||
| forward_routed() bit position towards an address of BFR2 on link L2 | forward_routed() bit position towards an address of BFR2 on link L2 | |||
| and a third forward_routed() bit position towards a node address LO | and a third forward_routed() bit position towards a node address LO | |||
| of BFR3. | of BFR3. | |||
| 5.1.8.2. Supporting nodes without BIER-TE | 5.1.8.2. Supporting nodes without BIER-TE | |||
| Forward_routed() adjacencies also enable incremental deployment of | Forward_routed() adjacencies also enable incremental deployment of | |||
| BIER-TE. Only the nodes through which BIER-TE traffic needs to be | BIER-TE. Only the nodes through which BIER-TE traffic needs to be | |||
| steered - with or without replication - need to support BIER-TE. | steered - with or without replication - need to support BIER-TE. | |||
| Where they are not directly connected to each other, forward_routed | Where they are not directly connected to each other, forward_routed | |||
| adjacencies are used to pass over non BIER-TE enabled nodes. | adjacencies are used to pass over non BIER-TE enabled nodes. | |||
| 5.1.9. Reuse of bit positions (without DNC) | 5.1.9. Reuse of bit positions (without DNC) | |||
| bit positions can be re-used across multiple BFR to minimize the | Bit positions can be re-used across multiple BFRs to minimize the | |||
| number of BP needed. This happens when adjacencies on multiple BFR | number of BP needed. This happens when adjacencies on multiple BFRs | |||
| use the DNC flag as described above, but it can also be done for non- | use the DNC flag as described above, but it can also be done for non- | |||
| DNC adjacencies. This section only discusses this non-DNC case. | DNC adjacencies. This section only discusses this non-DNC case. | |||
| Because BP are cleared when passing a BFR with an adjacency for that | Because BP are cleared when passing a BFR with an adjacency for that | |||
| BP, reuse of BP across multiple BFR does not introduce any problems | BP, reuse of BP across multiple BFRs does not introduce any problems | |||
| with duplicates or loops that do not also exist when every adjacency | with duplicates or loops that do not also exist when every adjacency | |||
| has a unique BP. Instead, the challenge when reusing BP is whether | has a unique BP. Instead, the challenge when reusing BP is whether | |||
| it allows to still achieve the desired Tree Engineering goals. | it allows to still achieve the desired Tree Engineering goals. | |||
| BP cannot be reused across two BFR that would need to be passed | BP cannot be reused across two BFR that would need to be passed | |||
| sequentially for some path: The first BFR will clear the BP, so those | sequentially for some path: The first BFR will clear the BP, so those | |||
| paths cannot be built. BP can be set across BFR that would (A) only | paths cannot be built. BP can be set across BFR that would (A) only | |||
| occur across different paths or (B) across different branches of the | occur across different paths or (B) across different branches of the | |||
| same tree. | same tree. | |||
| skipping to change at page 41, line 13 ¶ | skipping to change at page 42, line 24 ¶ | |||
| BFERs in a BIFT:SI can range widely based on the size of the topology | BFERs in a BIFT:SI can range widely based on the size of the topology | |||
| and the amount of alternative paths in it. In a BIER-TE topology | and the amount of alternative paths in it. In a BIER-TE topology | |||
| crafted by a BIER-TE expert, the higher the percentage of non-BFER | crafted by a BIER-TE expert, the higher the percentage of non-BFER | |||
| bits, the higher the likelihood, that those topology bits are not | bits, the higher the likelihood, that those topology bits are not | |||
| just BIER-TE overhead without additional benefit, but instead that | just BIER-TE overhead without additional benefit, but instead that | |||
| they will allow to express desirable path steering alternatives. | they will allow to express desirable path steering alternatives. | |||
| 5.3.3. Assigning BFR-id with BIER-TE | 5.3.3. Assigning BFR-id with BIER-TE | |||
| BIER-TE forwarding does not use the BFR-id, nor does it require for | BIER-TE forwarding does not use the BFR-id, nor does it require for | |||
| the BFR-id field of the BIER header to be set to a particular value. | the BFIR-id field of the BIER header to be set to a particular value. | |||
| However, other parts of a BIER-TE deployment may need a BFR-id, | However, other parts of a BIER-TE deployment may need a BFR-id, | |||
| specifically overlay signaling, and in that case BFR need to also | specifically multicast flow overlay signaling and multicast flow | |||
| have BFR-ids for BIER-TE SDs. | overlay packet disposition, and in that case BFR need to also have | |||
| BFR-ids for BIER-TE SDs. | ||||
| For example, for BIER overlay signaling, BFIR need to have a BFR-id, | For example, for BIER overlay signaling, BFIR need to have a BFR-id, | |||
| because this BFIR BFR-id is carried in the BFR-id field of the BIER | because this BFIR BFR-id is carried in the BFIR-id field of the BIER | |||
| header to indicate to the overlay signaling on the receiving BFER | header to indicate to the overlay signaling on the receiving BFER | |||
| which BFIR originated the packet. | which BFIR originated the packet. | |||
| In BIER, BFR-id = BSL * SI + BP, such that the SI and BP of a BFER | In BIER, BFR-id = SI * 2^BSL + (BP - 1), such that the SI and BP of a | |||
| can be calculated from the BFR-id and vice versa. This also means | BFER can be calculated from the BFR-id and vice versa. This also | |||
| that every BFR with a BFR-id has a reserved BP in an SI, even if that | means that every BFR with a BFR-id has a reserved BP in an SI, even | |||
| is not necessary for BIER forwarding, because the BFR may never be a | if that is not necessary for BIER forwarding, because the BFR may | |||
| BFER but only a BFIR. | never be a BFER but only a BFIR. | |||
| In BIER-TE, for a non-leaf BFER, there is usually a single BP for | In BIER-TE, for a non-leaf BFER, there is usually a single BP for | |||
| that BFER with a local_decap() adjacency on the BFER. The BFR-id for | that BFER with a local_decap() adjacency on the BFER. The BFR-id for | |||
| such a BFER can therefore be determined using the same procedure as | such a BFER can therefore be determined using the same procedure as | |||
| in (non-TE) BIER: BFR-id = SI * BitStringLength + BP. | in (non-TE) BIER: BFR-id = SI * BitStringLength + (BP - 1). | |||
| As explained in Section 5.1.3, leaf BFERs do not need such a unique | As explained in Section 5.1.3, leaf BFERs do not need such a unique | |||
| local_decap() adjacency. Likewise, BFIR who are not also BFER may | local_decap() adjacency. Likewise, BFIR who are not also BFER may | |||
| not have a unique local_decap() adjacency either. For all those BFIR | not have a unique local_decap() adjacency either. For all those BFIR | |||
| and (leaf) BFER, the controller needs to determine unique BFR-ids | and (leaf) BFER, the controller needs to determine unique BFR-ids | |||
| that do not collide with the BFR-ids derived from the non-leaf BFER | that do not collide with the BFR-ids derived from the non-leaf BFER | |||
| local_decap() BPs. | local_decap() BPs. | |||
| While this document defines no requirements how to allocate such BFR- | While this document defines no requirements how to allocate such BFR- | |||
| id, a simple option is to derive it from the (SI,BP) of an adjacency | id, a simple option is to derive it from the (SI,BP) of an adjacency | |||
| skipping to change at page 42, line 8 ¶ | skipping to change at page 43, line 19 ¶ | |||
| could be the first BP with an adjacency towards that BFER. | could be the first BP with an adjacency towards that BFER. | |||
| 5.3.4. Mapping from BFR to BitStrings with BIER-TE | 5.3.4. Mapping from BFR to BitStrings with BIER-TE | |||
| In BIER, applications of the flow overlay on a BFIR can calculate the | In BIER, applications of the flow overlay on a BFIR can calculate the | |||
| (SI,BP) of a BFER from the BFR-id of the BFER and can therefore | (SI,BP) of a BFER from the BFR-id of the BFER and can therefore | |||
| easily determine the BitStrings for a BIER packet to a set of BFER | easily determine the BitStrings for a BIER packet to a set of BFER | |||
| with known BFR-ids. | with known BFR-ids. | |||
| In BIER-TE this mapping needs to be equally supported for flow | In BIER-TE this mapping needs to be equally supported for flow | |||
| overlays. This section outlines two core options, based on how | overlays. This section outlines two core options, based on what type | |||
| "complex" the Tree Engineering is that the BIER-TE controller | of Tree Engineering the BIER-TE controller needs to performs for a | |||
| performs for a particular application. | particular application. | |||
| "Independent branches": For a given flow overlay instance, the | "Independent branches": For a given flow overlay instance, the | |||
| branches from a BFIR to every BFER are calculated by the BIER-TE | branches from a BFIR to every BFER are calculated by the BIER-TE | |||
| controller to be independent of the branches to any other BFER. | controller to be independent of the branches to any other BFER. | |||
| Shortest path trees are the most common examples of trees with | Shortest path trees are the most common examples of trees with | |||
| independent branches. | independent branches. | |||
| "Interdependent branches": When a BFER is added or deleted from a | "Interdependent branches": When a BFER is added or deleted from a | |||
| particular distribution tree, the BIER-TE controller has to | particular distribution tree, the BIER-TE controller has to | |||
| recalculate the branches to other BFER, because they may need to | recalculate the branches to other BFER, because they may need to | |||
| skipping to change at page 42, line 44 ¶ | skipping to change at page 44, line 7 ¶ | |||
| changes. | changes. | |||
| Note that in either case (unlike in BIER), the bits may need to | Note that in either case (unlike in BIER), the bits may need to | |||
| change upon link/node failure/recovery, network expansion and network | change upon link/node failure/recovery, network expansion and network | |||
| resource consumption by other traffic as part of traffic engineering | resource consumption by other traffic as part of traffic engineering | |||
| goals (e.g.: re-optimization of lower priority traffic flows). | goals (e.g.: re-optimization of lower priority traffic flows). | |||
| Interactions between such BFIR applications and the BIER-TE | Interactions between such BFIR applications and the BIER-TE | |||
| Controller do therefore need to support dynamic updates to the | Controller do therefore need to support dynamic updates to the | |||
| SI:BitStrings. | SI:BitStrings. | |||
| Communications between BFIR flow overlay and BIER-TE controller | Communications between the BFIR flow overlay and BIER-TE controller | |||
| requires some way to identify BFER. If BFR-ids are used in the | requires some way to identify BFER. If BFR-ids are used in the | |||
| deployment, as outlined in Section 5.3.3, then those are the natural | deployment, as outlined in Section 5.3.3, then those are the natural | |||
| BFR identifier. If BFR-ids are not used, then any other unique | BFR identifier. If BFR-ids are not used, then any other unique | |||
| identifier, such as the BFR-prefix of the BFR as of [RFC8279] could | identifier, such as the BFR-prefix of the BFR as of [RFC8279] could | |||
| be used. | be used. | |||
| 5.3.5. Assigning BFR-ids for BIER-TE | 5.3.5. Assigning BFR-ids for BIER-TE | |||
| It is not currently determined if a single sub-domain could or should | It is not currently determined if a single sub-domain could or should | |||
| be allowed to forward both (non-TE) BIER and BIER-TE packets. If | be allowed to forward both (non-TE) BIER and BIER-TE packets. If | |||
| this should be supported, there are two options: | this should be supported, there are two options: | |||
| A. BIER and BIER-TE have different BFR-id in the same sub-domain. | A. BIER and BIER-TE have different BFR-id in the same sub-domain. | |||
| This allows higher replication efficiency for BIER because their BFR- | This allows higher replication efficiency for BIER because their BFR- | |||
| id can be assigned sequentially, while the BitStrings for BIER-TE | id can be assigned sequentially, while the BitStrings for BIER-TE | |||
| will have also the additional bits for the topology. There is no | will have also the additional bits for the topology. There is no | |||
| relationship between a BFR BIER BFR-id and BIER-TE BFR-id. | relationship between a BFR BIER BFR-id and its BIER-TE BFR-id. | |||
| B. BIER and BIER-TE share the same BFR-id. The BFR-ids are assigned | B. BIER and BIER-TE share the same BFR-id. The BFR-ids are assigned | |||
| as explained above for BIER-TE and simply reused for BIER. The | as explained above for BIER-TE and simply reused for BIER. The | |||
| replication efficiency for BIER will be as low as that for BIER-TE in | replication efficiency for BIER will be as low as that for BIER-TE in | |||
| this approach. | this approach. | |||
| 5.3.6. Example bit allocations | 5.3.6. Example bit allocations | |||
| 5.3.6.1. With BIER | 5.3.6.1. With BIER | |||
| skipping to change at page 44, line 10 ¶ | skipping to change at page 45, line 28 ¶ | |||
| (most likely) have to receive all 4 copies of the BIER packet because | (most likely) have to receive all 4 copies of the BIER packet because | |||
| there would be BFR-id for each of the 4 SIs in each of the areas. | there would be BFR-id for each of the 4 SIs in each of the areas. | |||
| Only further towards each BFER would this duplication subside - when | Only further towards each BFER would this duplication subside - when | |||
| each of the 4 trees runs out of branches. | each of the 4 trees runs out of branches. | |||
| If BFR-ids are allocated intelligently, then all the BFER in an area | If BFR-ids are allocated intelligently, then all the BFER in an area | |||
| would be given BFR-id with as few as possible different SIs. Each | would be given BFR-id with as few as possible different SIs. Each | |||
| area would only have to forward one or two packets instead of 4. | area would only have to forward one or two packets instead of 4. | |||
| Given how networks can grow over time, replication efficiency in an | Given how networks can grow over time, replication efficiency in an | |||
| area will also easily go down over time when BFR-ids are network wide | area will then also go down over time when BFR-ids are only allocated | |||
| allocated sequentially over time. An area that initially only has | sequentially, network wide. An area that initially only has BFR-id | |||
| BFR-id in one SI might end up with many SIs over a longer period of | in one SI might end up with many SIs over a longer period of growth. | |||
| growth. Allocating SIs to areas with initially sufficiently many | Allocating SIs to areas with initially sufficiently many spare bits | |||
| spare bits for growths can help to alleviate this issue. Or renumber | for growths can help to alleviate this issue. Or renumber BFERs | |||
| BFERs after network expansion. In this example one may consider to | after network expansion. In this example one may consider to use 6 | |||
| use 6 SIs and assign one to each area. | SIs and assign one to each area. | |||
| This example shows that intelligent BFR-id allocation within at least | This example shows that intelligent BFR-id allocation within at least | |||
| sub-domain 0 can even be helpful or even necessary in BIER. | sub-domain 0 can even be helpful or even necessary in BIER. | |||
| 5.3.6.2. With BIER-TE | 5.3.6.2. With BIER-TE | |||
| In BIER-TE one needs to determine a subset of the physical topology | In BIER-TE one needs to determine a subset of the physical topology | |||
| and attached BFERs so that the "desired" representation of this | and attached BFERs so that the "desired" representation of this | |||
| topology and the BFER fit into a single BitString. This process | topology and the BFER fit into a single BitString. This process | |||
| needs to be repeated until the whole topology is covered. | needs to be repeated until the whole topology is covered. | |||
| Once bits/SIs are assigned to topology and BFERs, BFR-id is just a | Once bits/SIs are assigned to topology and BFERs, BFR-id is just a | |||
| derived set of identifiers from the operator/BIER-TE Controller as | derived set of identifiers from the operator/BIER-TE Controller as | |||
| explained above. | explained above. | |||
| Every time that different sub-topologies have overlap, bits need to | Every time that different sub-topologies have overlap, bits need to | |||
| be repeated across the BitStrings, increasing the overall amount of | be repeated across the BitStrings, increasing the overall amount of | |||
| bits required across all BitString/SIs. In the worst case, random | bits required across all BitString/SIs. In the worst case, one | |||
| subsets of BFERs are assigned to different SIs. This is much worse | assigns random subsets of BFERs to different SIs. This will result | |||
| than in (non-TE) BIER because it not only reduces replication | in an outcome much worse than in (non-TE) BIER: It maximizes the | |||
| efficiency with the same number of overall bits, but even further - | amount of unnecessary topology overlap across SI and therefore | |||
| because more bits are required due to duplication of bits for | reduces the number of BFER that can be reached across each individual | |||
| topology across multiple SIs. Intelligent BFER to SI assignment and | SI. Intelligent BFER to SI assignment and selecting specific | |||
| selecting specific "desired" subtopologies can minimize this problem. | "desired" subtopologies can minimize this problem. | |||
| To set up BIER-TE efficiently for the topology of Figure 20, the | To set up BIER-TE efficiently for the topology of Figure 20, the | |||
| following bit allocation method can be used. This method can easily | following bit allocation method can be used. This method can easily | |||
| be expanded to other, similarly structured larger topologies. | be expanded to other, similarly structured larger topologies. | |||
| Each area is allocated one or more SIs depending on the number of | Each area is allocated one or more SIs depending on the number of | |||
| future expected BFERs and number of bits required for the topology in | future expected BFERs and number of bits required for the topology in | |||
| the area. In this example, 6 SIs, one per area. | the area. In this example, 6 SIs, one per area. | |||
| In addition, we use 4 bits in each SI: bia, bib, bea, beb: (b)it | In addition, we use 4 bits in each SI: bia, bib, bea, beb: (b)it | |||
| skipping to change at page 45, line 26 ¶ | skipping to change at page 46, line 44 ¶ | |||
| each packet, the bits indicate bits for topology and BFER in that | each packet, the bits indicate bits for topology and BFER in that | |||
| topology plus the four bits to indicate whether to pass this packet | topology plus the four bits to indicate whether to pass this packet | |||
| via the ingress area a or b border BFR and the egress area a or b | via the ingress area a or b border BFR and the egress area a or b | |||
| border BFR, therefore allowing path steering for those two "unicast" | border BFR, therefore allowing path steering for those two "unicast" | |||
| legs: 1) BFIR to ingress area edge and 2) core to egress area edge. | legs: 1) BFIR to ingress area edge and 2) core to egress area edge. | |||
| Replication only happens inside the egress areas. For BFER in the | Replication only happens inside the egress areas. For BFER in the | |||
| same area as in the BFIR, these four bits are not used. | same area as in the BFIR, these four bits are not used. | |||
| 5.3.7. Summary | 5.3.7. Summary | |||
| BIER-TE can, like BIER, support multiple SIs within a sub-domain to | BIER-TE can, like BIER, support multiple SIs within a sub-domain. | |||
| allow re-using the concept of BFR-id and therefore minimize BIER-TE | This allows to apply the mapping BFR-id = SI:BP = SI * 2^BSL + (BP - | |||
| specific functions in any possible BIER layer control plane used in | 1). This allows to re-use the BIER architecture concept of BFR-id | |||
| conjunction with BIER-TE, flow overlay methods and BIER headers. | and therefore minimize BIER-TE specific functions in possible BIER | |||
| layer control plane mechanisms with BIER-TE, including flow overlay | ||||
| methods and BIER header fields. | ||||
| The number of BFIR/BFER possible in a sub-domain is smaller than in | The number of BFIR/BFER possible in a sub-domain is smaller than in | |||
| BIER because BIER-TE uses additional bits for topology. | BIER because BIER-TE uses additional bits for topology. | |||
| Sub-domains (SDs) in BIER-TE can be used like in BIER to create more | Sub-domains (SDs) in BIER-TE can be used like in BIER to create more | |||
| efficient replication to known subsets of BFERs. | efficient replication to known subsets of BFERs. | |||
| Assigning bits for BFERs intelligently into the right SI is more | Assigning bits for BFERs intelligently into the right SI is more | |||
| important in BIER-TE than in BIER because of replication efficiency | important in BIER-TE than in BIER because of replication efficiency | |||
| and overall amount of bits required. | and overall amount of bits required. | |||
| skipping to change at page 47, line 30 ¶ | skipping to change at page 48, line 51 ¶ | |||
| BFR in a domain causes no impairment of the BIER-TE control plane on | BFR in a domain causes no impairment of the BIER-TE control plane on | |||
| other BFR. If a routing protocol is used to support forward_routed() | other BFR. If a routing protocol is used to support forward_routed() | |||
| adjacencies, then this is still an attack vector as in BIER, but only | adjacencies, then this is still an attack vector as in BIER, but only | |||
| for BIER-TE forward_routed() adjacencies, and not other adjacencies. | for BIER-TE forward_routed() adjacencies, and not other adjacencies. | |||
| Whereas IGP routing protocols are most often not well secured through | Whereas IGP routing protocols are most often not well secured through | |||
| cryptographic authentication and confidentiality, communications | cryptographic authentication and confidentiality, communications | |||
| between controllers and routers such as those to be considered for | between controllers and routers such as those to be considered for | |||
| the BIER-TE controller/control-plane can be and are much more | the BIER-TE controller/control-plane can be and are much more | |||
| commonly secured with those security properties, for example by using | commonly secured with those security properties, for example by using | |||
| Secure SHell (SSH), [RFC4253] for NetConf ([RFC6241]), or via | Secure SHell (SSH), [RFC4253] for NETCONF ([RFC6242]), or via | |||
| Transport Layer Security (TLS), such as [RFC8253] for PCEP, | Transport Layer Security (TLS), such as [RFC8253] for PCEP, | |||
| [RFC5440], or [RFC7589] for NetConf. BIER-TE controllers SHOULD use | [RFC5440], or [RFC7589] for NETCONF. BIER-TE controllers SHOULD use | |||
| security equal to or better than these mechanisms. | security equal to or better than these mechanisms. | |||
| For additional, BIER-TE independent security considerations for the | When any of these security mechanisms/protocols are used for | |||
| use of a central BIER-TE controller, the security section of the | communications between a BIER-TE controller and BFRs, their security | |||
| protocols and security options in the previous paragraph apply. In | considerations apply to BIER-TE. In addition, the security | |||
| addition, the security considerations of [RFC4655] apply. | considerations of PCE, [RFC4655] apply. | |||
| The most important attack vector in BIER-TE is misconfiguration, | The most important attack vector in BIER-TE is misconfiguration, | |||
| either on the BFR themselves or via the BIER-TE controller. | either on the BFR themselves or via the BIER-TE controller. | |||
| Forwarding entries with DNC could be set up to create persistent | Forwarding entries with DNC could be set up to create persistent | |||
| loops, in which packets only expire because of TTL. To minimize the | loops, in which packets only expire because of TTL. To minimize the | |||
| impact of such attacks (or more likely unintentional misconfiguration | impact of such attacks (or more likely unintentional misconfiguration | |||
| by operators and/or bad BIER-TE controller software), the BIER-TE | by operators and/or bad BIER-TE controller software), the BIER-TE | |||
| forwarding rules are defined to be as strict in clearing bits as | forwarding rules are defined to be as strict in clearing bits as | |||
| possible. The clearing of all bits with an adjacency on a BFR | possible. The clearing of all bits with an adjacency on a BFR | |||
| prohibits that a looping packet creates additional packet | prohibits that a looping packet creates additional packet | |||
| skipping to change at page 48, line 36 ¶ | skipping to change at page 50, line 10 ¶ | |||
| The authors would like to thank Greg Shepherd, Ijsbrand Wijnands, | The authors would like to thank Greg Shepherd, Ijsbrand Wijnands, | |||
| Neale Ranns, Dirk Trossen, Sandy Zheng, Lou Berger, Jeffrey Zhang, | Neale Ranns, Dirk Trossen, Sandy Zheng, Lou Berger, Jeffrey Zhang, | |||
| Carsten Borman and Wolfgang Braun for their reviews and suggestions. | Carsten Borman and Wolfgang Braun for their reviews and suggestions. | |||
| Special thanks to Xuesong Geng for shepherding the document and for | Special thanks to Xuesong Geng for shepherding the document and for | |||
| IESG review/suggestions by Alvaro Retana (responsible AD/RTG), | IESG review/suggestions by Alvaro Retana (responsible AD/RTG), | |||
| Benjamin Kaduk (SEC), Tommy Pauly (TSV), Zaheduzzaman Sarker (TSV), | Benjamin Kaduk (SEC), Tommy Pauly (TSV), Zaheduzzaman Sarker (TSV), | |||
| Eric Vyncke (INT), Martin Vigoureux (RTG), Robert Wilton (OPS), Eric | Eric Vyncke (INT), Martin Vigoureux (RTG), Robert Wilton (OPS), Eric | |||
| Kline (INT), Lars Eggert (GEN), Roman Danyliv (SEC), Ines Robles | Kline (INT), Lars Eggert (GEN), Roman Danyliv (SEC), Ines Robles | |||
| (RTGDIR). | (RTGDIR), Robert Sparks (Gen-ART), Yingzhen Qu (RTGdir), Martin Duke | |||
| (TSV). | ||||
| 10. Change log [RFC Editor: Please remove] | 10. Change log [RFC Editor: Please remove] | |||
| draft-ietf-bier-te-arch: | draft-ietf-bier-te-arch: | |||
| 12: | 12: | |||
| TSV review Martin Duke. | ||||
| Text/editorial nits. | ||||
| 4.4 improved text describing handling of F-BM. | ||||
| RTGdir review Yingzhen Qu. | ||||
| Various text/editorial nits. | ||||
| Added notion that BitStrings represent loop free tree for packet | ||||
| to abstract and intro. | ||||
| Various text nit and editorial improvements. | ||||
| Fixed broken SI*BSL formulas to SI * 2^BSL. | ||||
| Fixed some BFR-id field -> BFIR-id field mistakes. | ||||
| Capitalized NETCONF/RESTCONF/YANG, added RFC references. | ||||
| Improved Figure 16 with explicitly two links into BFR3 and | ||||
| explanatory text. | ||||
| Gen-ART review Robert Sparks. | ||||
| Various textual nits, editorial improvements. | ||||
| 3.2 Introduced terms "BIER-TE topology control" and "BIER-TE tree | ||||
| control" for the two functional components of the control plane. | ||||
| 3.2.1 - 3.2 change introduces the open RFC-editor issue of | ||||
| appropriate xrfs (to be resolved by RFC-editor). | ||||
| 3.3 Rewrote last paragraph to better describe loop prevention | ||||
| through clearing of bits in BitString. | ||||
| 4.1 Fixed up text/formula describing mapping between bfr-id, SI:BP | ||||
| and SI,BSL and BP. Fix offset bug. | ||||
| 5.3.6.2 Improved description paragraph explaining overlap of | ||||
| topology for different SI. | ||||
| 5.3.7 Improved first summary paragraph. | ||||
| 7. Rephrased applicability statement of control plane protocol | ||||
| security considerations to BIER-TE security. | ||||
| RTGDIR review Ines Robles. | RTGDIR review Ines Robles. | |||
| Fixed up adjacencies in Example 2 and explanation text to be | Fixed up adjacencies in Example 2 and explanation text to be | |||
| explicit about which BFR not only passes, but also receives the | explicit about which BFR not only passes, but also receives the | |||
| packet. | packet. | |||
| 7. (security considerations). Added paragraph about | 7. (security considerations). Added paragraph about | |||
| forward_routed() and prohibiting BIER packet leaking in/out of | forward_routed() and prohibiting BIER packet leaking in/out of | |||
| domain. | domain. | |||
| skipping to change at page 62, line 10 ¶ | skipping to change at page 64, line 24 ¶ | |||
| [RFC5440] Vasseur, JP., Ed. and JL. Le Roux, Ed., "Path Computation | [RFC5440] Vasseur, JP., Ed. and JL. Le Roux, Ed., "Path Computation | |||
| Element (PCE) Communication Protocol (PCEP)", RFC 5440, | Element (PCE) Communication Protocol (PCEP)", RFC 5440, | |||
| DOI 10.17487/RFC5440, March 2009, | DOI 10.17487/RFC5440, March 2009, | |||
| <https://www.rfc-editor.org/info/rfc5440>. | <https://www.rfc-editor.org/info/rfc5440>. | |||
| [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | |||
| and A. Bierman, Ed., "Network Configuration Protocol | and A. Bierman, Ed., "Network Configuration Protocol | |||
| (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | |||
| <https://www.rfc-editor.org/info/rfc6241>. | <https://www.rfc-editor.org/info/rfc6241>. | |||
| [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | ||||
| Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | ||||
| <https://www.rfc-editor.org/info/rfc6242>. | ||||
| [RFC7589] Badra, M., Luchuk, A., and J. Schoenwaelder, "Using the | [RFC7589] Badra, M., Luchuk, A., and J. Schoenwaelder, "Using the | |||
| NETCONF Protocol over Transport Layer Security (TLS) with | NETCONF Protocol over Transport Layer Security (TLS) with | |||
| Mutual X.509 Authentication", RFC 7589, | Mutual X.509 Authentication", RFC 7589, | |||
| DOI 10.17487/RFC7589, June 2015, | DOI 10.17487/RFC7589, June 2015, | |||
| <https://www.rfc-editor.org/info/rfc7589>. | <https://www.rfc-editor.org/info/rfc7589>. | |||
| [RFC7752] Gredler, H., Ed., Medved, J., Previdi, S., Farrel, A., and | [RFC7752] Gredler, H., Ed., Medved, J., Previdi, S., Farrel, A., and | |||
| S. Ray, "North-Bound Distribution of Link-State and | S. Ray, "North-Bound Distribution of Link-State and | |||
| Traffic Engineering (TE) Information Using BGP", RFC 7752, | Traffic Engineering (TE) Information Using BGP", RFC 7752, | |||
| DOI 10.17487/RFC7752, March 2016, | DOI 10.17487/RFC7752, March 2016, | |||
| <https://www.rfc-editor.org/info/rfc7752>. | <https://www.rfc-editor.org/info/rfc7752>. | |||
| [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | ||||
| RFC 7950, DOI 10.17487/RFC7950, August 2016, | ||||
| <https://www.rfc-editor.org/info/rfc7950>. | ||||
| [RFC7988] Rosen, E., Ed., Subramanian, K., and Z. Zhang, "Ingress | [RFC7988] Rosen, E., Ed., Subramanian, K., and Z. Zhang, "Ingress | |||
| Replication Tunnels in Multicast VPN", RFC 7988, | Replication Tunnels in Multicast VPN", RFC 7988, | |||
| DOI 10.17487/RFC7988, October 2016, | DOI 10.17487/RFC7988, October 2016, | |||
| <https://www.rfc-editor.org/info/rfc7988>. | <https://www.rfc-editor.org/info/rfc7988>. | |||
| [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | ||||
| Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | ||||
| <https://www.rfc-editor.org/info/rfc8040>. | ||||
| [RFC8253] Lopez, D., Gonzalez de Dios, O., Wu, Q., and D. Dhody, | [RFC8253] Lopez, D., Gonzalez de Dios, O., Wu, Q., and D. Dhody, | |||
| "PCEPS: Usage of TLS to Provide a Secure Transport for the | "PCEPS: Usage of TLS to Provide a Secure Transport for the | |||
| Path Computation Element Communication Protocol (PCEP)", | Path Computation Element Communication Protocol (PCEP)", | |||
| RFC 8253, DOI 10.17487/RFC8253, October 2017, | RFC 8253, DOI 10.17487/RFC8253, October 2017, | |||
| <https://www.rfc-editor.org/info/rfc8253>. | <https://www.rfc-editor.org/info/rfc8253>. | |||
| [RFC8345] Clemm, A., Medved, J., Varga, R., Bahadur, N., | [RFC8345] Clemm, A., Medved, J., Varga, R., Bahadur, N., | |||
| Ananthakrishnan, H., and X. Liu, "A YANG Data Model for | Ananthakrishnan, H., and X. Liu, "A YANG Data Model for | |||
| Network Topologies", RFC 8345, DOI 10.17487/RFC8345, March | Network Topologies", RFC 8345, DOI 10.17487/RFC8345, March | |||
| 2018, <https://www.rfc-editor.org/info/rfc8345>. | 2018, <https://www.rfc-editor.org/info/rfc8345>. | |||
| End of changes. 81 change blocks. | ||||
| 216 lines changed or deleted | 310 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||