| rfc9377.original | rfc9377.txt | |||
|---|---|---|---|---|
| Network Working Group A. Przygienda, Ed. | Internet Engineering Task Force (IETF) T. Przygienda, Ed. | |||
| Internet-Draft C. Bowers | Request for Comments: 9377 Juniper | |||
| Intended status: Experimental Juniper | Category: Experimental C. Bowers | |||
| Expires: 8 June 2023 Y. Lee | ISSN: 2070-1721 Individual | |||
| Y. Lee | ||||
| Comcast | Comcast | |||
| A. Sharma | A. Sharma | |||
| Individual | Individual | |||
| R. White | R. White | |||
| Akamai | Akamai | |||
| 5 December 2022 | April 2023 | |||
| IS-IS Flood Reflection | IS-IS Flood Reflection | |||
| draft-ietf-lsr-isis-flood-reflection-12 | ||||
| Abstract | Abstract | |||
| This document describes a backward-compatible, optional IS-IS | This document describes a backward-compatible, optional IS-IS | |||
| extension that allows the creation of IS-IS flood reflection | extension that allows the creation of IS-IS flood reflection | |||
| topologies. Flood reflection permits topologies in which L1 areas | topologies. Flood reflection permits topologies in which | |||
| provide transit forwarding for L2 using all available L1 nodes | IS-IS Level 1 (L1) areas provide transit-forwarding for IS-IS Level 2 | |||
| internally. It accomplishes this by creating L2 flood reflection | (L2) areas using all available L1 nodes internally. It accomplishes | |||
| adjacencies within each L1 area. Those adjacencies are used to flood | this by creating L2 flood reflection adjacencies within each L1 area. | |||
| L2 LSPDUs and are used in the L2 SPF computation. However, they are | Those adjacencies are used to flood L2 Link State Protocol Data Units | |||
| not ordinarily utilized for forwarding within the flood reflection | (LSPs) and are used in the L2 Shortest Path First (SPF) computation. | |||
| cluster. This arrangement gives the L2 topology significantly better | However, they are not ordinarily utilized for forwarding within the | |||
| scaling properties than traditionally used flat designs. As an | flood reflection cluster. This arrangement gives the L2 topology | |||
| additional benefit, only those routers directly participating in | significantly better scaling properties than prevalently used flat | |||
| flood reflection are required to support the feature. This allows | designs. As an additional benefit, only those routers directly | |||
| for incremental deployment of scalable L1 transit areas in an | participating in flood reflection are required to support the | |||
| existing, previously flat network design, without the necessity of | feature. This allows for incremental deployment of scalable L1 | |||
| upgrading all routers in the network. | transit areas in an existing, previously flat network design, without | |||
| the necessity of upgrading all routers in the network. | ||||
| Requirements Language | ||||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | ||||
| "OPTIONAL" in this document are to be interpreted as described in BCP | ||||
| 14 [RFC2119] [RFC8174] when, and only when, they appear in all | ||||
| capitals, as shown here. | ||||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This document is not an Internet Standards Track specification; it is | |||
| provisions of BCP 78 and BCP 79. | published for examination, experimental implementation, and | |||
| evaluation. | ||||
| Internet-Drafts are working documents of the Internet Engineering | ||||
| Task Force (IETF). Note that other groups may also distribute | ||||
| working documents as Internet-Drafts. The list of current Internet- | ||||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | This document defines an Experimental Protocol for the Internet | |||
| and may be updated, replaced, or obsoleted by other documents at any | community. This document is a product of the Internet Engineering | |||
| time. It is inappropriate to use Internet-Drafts as reference | Task Force (IETF). It represents the consensus of the IETF | |||
| material or to cite them other than as "work in progress." | community. It has received public review and has been approved for | |||
| publication by the Internet Engineering Steering Group (IESG). Not | ||||
| all documents approved by the IESG are candidates for any level of | ||||
| Internet Standard; see Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 8 June 2023. | Information about the current status of this document, any errata, | |||
| and how to provide feedback on it may be obtained at | ||||
| https://www.rfc-editor.org/info/rfc9377. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2023 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 (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
| license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
| and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
| extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
| described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
| provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
| in the Revised BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
| 2. Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 2. Conventions Used in This Document | |||
| 3. Further Details . . . . . . . . . . . . . . . . . . . . . . . 9 | 2.1. Terminology | |||
| 4. Encodings . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 2.2. Requirements Language | |||
| 4.1. Flood Reflection TLV . . . . . . . . . . . . . . . . . . 10 | 3. Further Details | |||
| 4.2. Flood Reflection Discovery Sub-TLV . . . . . . . . . . . 11 | 4. Encodings | |||
| 4.3. Flood Reflection Discovery Tunnel Type Sub-Sub-TLV . . . 12 | 4.1. Flood Reflection TLV | |||
| 4.4. Flood Reflection Adjacency Sub-TLV . . . . . . . . . . . 14 | 4.2. Flood Reflection Discovery Sub-TLV | |||
| 4.5. Flood Reflection Discovery . . . . . . . . . . . . . . . 15 | 4.3. Flood Reflection Discovery Tunnel Type Sub-Sub-TLV | |||
| 4.6. Flood Reflection Adjacency Formation . . . . . . . . . . 16 | 4.4. Flood Reflection Adjacency Sub-TLV | |||
| 5. Route Computation . . . . . . . . . . . . . . . . . . . . . . 16 | 4.5. Flood Reflection Discovery | |||
| 5.1. Tunnel-Based Deployment . . . . . . . . . . . . . . . . . 17 | 4.6. Flood Reflection Adjacency Formation | |||
| 5.2. No-Tunnel Deployment . . . . . . . . . . . . . . . . . . 17 | 5. Route Computation | |||
| 6. Redistribution of Prefixes . . . . . . . . . . . . . . . . . 17 | 5.1. Tunnel-Based Deployment | |||
| 7. Special Considerations . . . . . . . . . . . . . . . . . . . 18 | 5.2. No-Tunnel Deployment | |||
| 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18 | 6. Redistribution of Prefixes | |||
| 8.1. New IS-IS TLV Codepoint . . . . . . . . . . . . . . . . . 19 | 7. Special Considerations | |||
| 8.2. Sub TLVs for IS-IS Router CAPABILITY TLV . . . . . . . . 19 | 8. IANA Considerations | |||
| 8.3. Sub-sub TLVs for Flood Reflection Discovery sub-TLV . . . 19 | 8.1. New IS-IS TLV Codepoint | |||
| 8.4. Sub TLVs for TLVs Advertising Neighbor Information . . . 19 | 8.2. Sub-TLVs for IS-IS Router CAPABILITY TLV | |||
| 8.3. Sub-Sub-TLVs for Flood Reflection Discovery Sub-TLV | ||||
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 20 | 8.4. Sub-TLVs for TLVs Advertising Neighbor Information | |||
| 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 20 | 9. Security Considerations | |||
| 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 | 10. References | |||
| 11.1. Informative References . . . . . . . . . . . . . . . . . 20 | 10.1. Normative References | |||
| 11.2. Normative References . . . . . . . . . . . . . . . . . . 21 | 10.2. Informative References | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 22 | Acknowledgements | |||
| Authors' Addresses | ||||
| 1. Introduction | 1. Introduction | |||
| This section introduces the problem space and outlines the solution. | This section introduces the problem space and outlines the solution. | |||
| Some of the terms may be unfamiliar to readers without extensive IS- | Some of the terms may be unfamiliar to readers without extensive IS- | |||
| IS background; for such readers a glossary is provided in Section 2. | IS background; for such readers, the terminology is provided in | |||
| Section 2.1. | ||||
| Due to the inherent properties of link-state protocols the number of | Due to the inherent properties of link-state protocols, the number of | |||
| IS-IS routers within a flooding domain is limited by processing and | IS-IS routers within a flooding domain is limited by processing and | |||
| flooding overhead on each node. While that number can be maximized | flooding overhead on each node. While that number can be maximized | |||
| by well-written implementations and techniques such as exponential | by well-written implementations and techniques such as exponential | |||
| back-offs, IS-IS will still reach a saturation point where no further | backoffs, IS-IS will still reach a saturation point where no further | |||
| routers can be added to a single flooding domain. In some L2 | routers can be added to a single flooding domain. In some L2 | |||
| backbone deployment scenarios, this limit presents a significant | backbone deployment scenarios, this limit presents a significant | |||
| challenge. | challenge. | |||
| The traditional approach to increasing the scale of an IS-IS | The standard approach to increasing the scale of an IS-IS deployment | |||
| deployment is to break it up into multiple L1 flooding domains and a | is to break it up into multiple L1 flooding domains and a single L2 | |||
| single L2 backbone. This works well for designs where an L2 backbone | backbone. This works well for designs where an L2 backbone connects | |||
| connects L1 access topologies, but it is limiting where a single, | L1 access topologies, but it is limiting where a single, flat L2 | |||
| flat L2 domain is supposed to span large number of routers. In such | domain is supposed to span large number of routers. In such | |||
| scenarios, an alternative approach could be to consider multiple L2 | scenarios, an alternative approach could be to consider multiple L2 | |||
| flooding domains connected together via L1 flooding domains. In | flooding domains that are connected together via L1 flooding domains. | |||
| other words, L2 flooding domains are connected by "L1/L2 lanes" | In other words, L2 flooding domains are connected by "L1/L2 lanes" | |||
| through the L1 areas to form a single L2 backbone again. | through the L1 areas to form a single L2 backbone again. | |||
| Unfortunately, in its simplest implementation, this requires the | Unfortunately, in its simplest implementation, this requires the | |||
| inclusion of most, or all, of the transit L1 routers as L1/L2 to | inclusion of most, or all, of the transit L1 routers as L1/L2 to | |||
| allow traffic to flow along optimal paths through those transit | allow traffic to flow along optimal paths through those transit | |||
| areas. Consequently, such an approach fails to reduce the number of | areas. Consequently, such an approach fails to reduce the number of | |||
| L2 routers involved and with that fails to increase the scalability | L2 routers involved and, with that, fails to increase the scalability | |||
| of the L2 backbone as well. | of the L2 backbone as well. | |||
| Figure 1 is an example of a network where a topologically rich L1 | Figure 1 is an example of a network where a topologically rich L1 | |||
| area is used to provide transit between six different L2-only routers | area is used to provide transit between six different L2-only routers | |||
| (R1-R6). Note that the six L2-only routers do not have connectivity | (R1-R6). Note that the six L2-only routers do not have connectivity | |||
| to one another over L2 links. To take advantage of the abundance of | to one another over L2 links. To take advantage of the abundance of | |||
| paths in the L1 transit area, all the intermediate systems could be | paths in the L1 transit area, all the intermediate systems could be | |||
| placed into both L1 and L2, but this essentially combines the | placed into both L1 and L2, but this essentially combines the | |||
| separate L2 flooding domains into a single one, triggering again the | separate L2 flooding domains into a single one, again triggering the | |||
| maximum L2 scale limitation we try to address in first place. | maximum L2 scale limitation we were trying to address in first place. | |||
| +====+ +=======+ +=======+ +======-+ +====+ | +====+ +=======+ +=======+ +======-+ +====+ | |||
| I R1 I I R10 +-------------+ R20 +---------------+ R30 I I R4 I | I R1 I I R10 +-------------+ R20 +---------------+ R30 I I R4 I | |||
| I L2 +--+ L1/L2 I I L1 I I L1/L2 +--+ L2 I | I L2 +--+ L1/L2 I I L1 I I L1/L2 +--+ L2 I | |||
| I I I + +--+ I +------------+ I I I | I I I + +--+ I +------------+ I I I | |||
| +====+ ++====+=+ | +===+===+ | +=+==+=++ +====+ | +====+ ++====+=+ | +===+===+ | +=+==+=++ +====+ | |||
| | | | | | | | | | | | | | | | | |||
| | | | | | +-----------+ | | | | | | | +-----------+ | | |||
| | +-------+ | | | | | | | +-------+ | | | | | | |||
| | | | | | | | | | | | | | | | | |||
| skipping to change at page 4, line 34 ¶ | skipping to change at line 169 ¶ | |||
| | | +----------------+ | +-----------------+ | | | | +----------------+ | +-----------------+ | | |||
| | | | | | | | | | | | | | | | | | | | | |||
| +====+ ++=+==+=+ +-------+===+===+-----+ | ++=====++ +====+ | +====+ ++=+==+=+ +-------+===+===+-----+ | ++=====++ +====+ | |||
| I R3 I I R12 I I R22 I | + R32 I I R6 I | I R3 I I R12 I I R22 I | + R32 I I R6 I | |||
| I L2 +--+ L1/L2 I I L1 +-------+ I L1/L2 +--+ L2 I | I L2 +--+ L1/L2 I I L1 +-------+ I L1/L2 +--+ L2 I | |||
| I I I +-------------+ +---------------+ I I I | I I I +-------------+ +---------------+ I I I | |||
| +====+ +=======+ +=======+ +=======+ +====+ | +====+ +=======+ +=======+ +=======+ +====+ | |||
| Figure 1: Example Topology of L1 with L2 Borders | Figure 1: Example Topology of L1 with L2 Borders | |||
| A more effective solution would allow to reduce the number of links | A more effective solution would allow the reduction of the number of | |||
| and routers exposed in L2, while still utilizing the full L1 topology | links and routers exposed in L2, while still utilizing the full L1 | |||
| when forwarding through the network. | topology when forwarding through the network. | |||
| [RFC8099] describes Topology Transparent Zones (TTZ) for OSPF. The | [RFC8099] describes Topology Transparent Zones (TTZ) for OSPF. The | |||
| TTZ mechanism represents a group of OSPF routers as a full mesh of | TTZ mechanism represents a group of OSPF routers as a full mesh of | |||
| adjacencies between the routers at the edge of the group. A similar | adjacencies between the routers at the edge of the group. A similar | |||
| mechanism could be applied to IS-IS as well. However, a full mesh of | mechanism could be applied to IS-IS as well. However, a full mesh of | |||
| adjacencies between edge routers (or L1/L2 nodes) significantly | adjacencies between edge routers (or L1/L2 nodes) significantly | |||
| limits the practically achievable scale of the resulting topology. | limits the practically achievable scale of the resulting topology. | |||
| The topology in Figure 1 has 6 L1/L2 nodes. Figure 2 illustrates a | The topology in Figure 1 has six L1/L2 nodes. Figure 2 illustrates a | |||
| full mesh of L2 adjacencies between the 6 L1/L2 nodes, resulting in | full mesh of L2 adjacencies between the six L1/L2 nodes, resulting in | |||
| (5 * 6)/2 = 15 L2 adjacencies. In a somewhat larger topology | (5 * 6)/2 = 15 L2 adjacencies. In a somewhat larger topology | |||
| containing 20 L1/L2 nodes, the number of L2 adjacencies in a full | containing 20 L1/L2 nodes, the number of L2 adjacencies in a full | |||
| mesh rises to 190. | mesh rises to 190. | |||
| +----+ +-------+ +-------------------------------+-------+ +----+ | +----+ +-------+ +-------------------------------+-------+ +----+ | |||
| | R1 | | R10 | | | R30 | | R4 | | | R1 | | R10 | | | R30 | | R4 | | |||
| | L2 +--+ L1/L2 +------------------------------------+ L1/L2 +--+ L2 | | | L2 +--+ L1/L2 +------------------------------------+ L1/L2 +--+ L2 | | |||
| | | | | | | | | | | | | | | | | | | | | |||
| +----+ ++-+-+--+-+ | +-+--+---++ +----+ | +----+ ++-+-+--+-+ | +-+--+---++ +----+ | |||
| | | | | | | | | | | | | | | | | | | |||
| skipping to change at page 5, line 36 ¶ | skipping to change at line 216 ¶ | |||
| | | | | +----------+ | | | | | | +----------+ | | |||
| | | | | | | | | | | | | | | | | | | |||
| | | | | +-----+ | | | | | | | +-----+ | | | |||
| | | | | | | | | | | | | | | | | | | |||
| +----+ ++----+-+-+ | +-+-+--+-++ +----+ | +----+ ++----+-+-+ | +-+-+--+-++ +----+ | |||
| | R3 | | R12 | | L2 adjacency | R32 | | R6 | | | R3 | | R12 | | L2 adjacency | R32 | | R6 | | |||
| | L2 +--+ L1/L2 +------------------------------------+ L1/L2 +--+ L2 | | | L2 +--+ L1/L2 +------------------------------------+ L1/L2 +--+ L2 | | |||
| | | | | | | | | | | | | | | | | | | | | |||
| +----+ +-------+----+ +-------+ +----+ | +----+ +-------+----+ +-------+ +----+ | |||
| Figure 2: Example topology represented in L2 with a full mesh of | Figure 2: Example Topology Represented in L2 with a Full Mesh of | |||
| L2 adjacencies between L1/L2 nodes | L2 Adjacencies between L1/L2 Nodes | |||
| BGP, as specified in [RFC4271], faced a similar scaling problem, | BGP, as specified in [RFC4271], faced a similar scaling problem, | |||
| which has been solved in many networks by deploying BGP route | which has been solved in many networks by deploying BGP route | |||
| reflectors [RFC4456]. We note that BGP route reflectors do not | reflectors [RFC4456]. We note that BGP route reflectors do not | |||
| necessarily have to be in the forwarding path of the traffic. This | necessarily have to be in the forwarding path of the traffic. This | |||
| non-congruity of forwarding and control path for BGP route reflectors | non-congruity of forwarding and control path for BGP route reflectors | |||
| allows the control plane to scale independently of the forwarding | allows the control plane to scale independently of the forwarding | |||
| plane and represents an interesting degree of freedom in network | plane and represents an interesting degree of freedom in network | |||
| architecture. | architecture. | |||
| We propose in this document a similar solution for IS-IS and call it | We propose in this document a similar solution for IS-IS and call it | |||
| "flood reflection" in fashion analogous to "route reflection". A | "flood reflection" in a fashion analogous to "route reflection". A | |||
| simple example of what a flood reflector control plane approach would | simple example of what a flood reflector control plane approach would | |||
| look like is shown in Figure 3, where router R21 plays the role of a | look like is shown in Figure 3, where router R21 plays the role of a | |||
| flood reflector. Each L1/L2 ingress/egress router builds a tunnel to | flood reflector. Each L1/L2 ingress/egress router builds a tunnel to | |||
| the flood reflector, and an L2 adjacency is built over each tunnel. | the flood reflector, and an L2 adjacency is built over each tunnel. | |||
| In this solution, we need only 6 L2 adjacencies, instead of the 15 | In this solution, we need only six L2 adjacencies, instead of the 15 | |||
| needed for a full mesh. In a somewhat larger topology containing 20 | needed for a full mesh. In a somewhat larger topology containing 20 | |||
| L1/L2 nodes, this solution requires only 20 L2 adjacencies, instead | L1/L2 nodes, this solution requires only 20 L2 adjacencies, instead | |||
| of the 190 needed for a full mesh. Multiple flood reflectors can be | of the 190 needed for a full mesh. Multiple flood reflectors can be | |||
| used, allowing the network operator to balance between resilience, | used, allowing the network operator to balance between resilience, | |||
| path utilization, and state in the control plane. The resulting L2 | path utilization, and state in the control plane. The resulting L2 | |||
| adjacency scale is R*n, where R is the number of flood reflectors | adjacency scale is R*n, where R is the number of flood reflectors | |||
| used and n is the number of L1/L2 nodes. This compares quite | used and n is the number of L1/L2 nodes. This compares quite | |||
| favorably with n*(n-1)/2 L2 adjacencies required in a topologically | favorably with n*(n-1)/2 L2 adjacencies required in a topologically | |||
| fully meshed L2 solution. | fully meshed L2 solution. | |||
| skipping to change at page 6, line 35 ¶ | skipping to change at line 263 ¶ | |||
| | L2 +--+ L1/L2 +-----------+ L1/L2 +--------------+ L1/L2 +--+ L2 | | | L2 +--+ L1/L2 +-----------+ L1/L2 +--------------+ L1/L2 +--+ L2 | | |||
| | | | | L2 adj | flood | L2 adj | | | | | | | | | L2 adj | flood | L2 adj | | | | | |||
| +----+ +-------+ over |reflector| over +-------+ +----+ | +----+ +-------+ over |reflector| over +-------+ +----+ | |||
| tunnel +--+---+--+ tunnel | tunnel +--+---+--+ tunnel | |||
| +----+ +-------+ | | +-------+ +----+ | +----+ +-------+ | | +-------+ +----+ | |||
| | R3 | | R12 +--------------+ +-----------------+ R32 | | R6 | | | R3 | | R12 +--------------+ +-----------------+ R32 | | R6 | | |||
| | L2 +--+ L1/L2 | L2 adj L2 adj | L1/L2 +--+ L2 | | | L2 +--+ L1/L2 | L2 adj L2 adj | L1/L2 +--+ L2 | | |||
| | | | | over over | | | | | | | | | over over | | | | | |||
| +----+ +-------+ tunnel tunnel +-------+ +----+ | +----+ +-------+ tunnel tunnel +-------+ +----+ | |||
| Figure 3: Example topology represented in L2 with L2 adjacencies | Figure 3: Example Topology Represented in L2 with L2 Adjacencies | |||
| from each L1/ L2 node to a single flood reflector | from Each L1/ L2 Node to a Single Flood Reflector | |||
| As illustrated in Figure 3, when R21 plays the role of flood | As illustrated in Figure 3, when R21 plays the role of flood | |||
| reflector, it provides L2 connectivity among all of the previously | reflector, it provides L2 connectivity among all of the previously | |||
| disconnected L2 islands by reflooding all L2 LSPDUs. At the same | disconnected L2 islands by reflooding all L2 Link State Protocol Data | |||
| time, R20 and R22 in Figure 1 remain L1-only routers. L1-only | Unit (LSPs). At the same time, R20 and R22 in Figure 1 remain | |||
| routers and L1-only links are not visible in L2. In this manner, the | L1-only routers. L1-only routers and L1-only links are not visible | |||
| flood reflector allows us provide L2 control plane connectivity in a | in L2. In this manner, the flood reflector allows us to provide L2 | |||
| manner more scalable than a flat L2 domain. | control plane connectivity in a manner more scalable than a flat L2 | |||
| domain. | ||||
| As described so far, the solution illustrated in Figure 3 relies only | As described so far, the solution illustrated in Figure 3 relies only | |||
| on currently standardized IS-IS functionality. Without new | on currently standardized IS-IS functionality. Without new | |||
| functionality, however, the data traffic will traverse only R21. | functionality, however, the data traffic will traverse only R21. | |||
| This will unnecessarily create a bottleneck at R21 since there is | This will unnecessarily create a bottleneck at R21 since there is | |||
| still available capacity in the paths crossing the L1-only routers | still available capacity in the paths crossing the L1-only routers | |||
| R20 and R22 in Figure 1. | R20 and R22 in Figure 1. | |||
| Hence, additional functionality is compulsory to allow the L1/L2 edge | Hence, additional functionality is compulsory to allow the L1/L2 edge | |||
| nodes (R10-12 and R30-32 in Figure 3) to recognize that the L2 | nodes (R10-12 and R30-32 in Figure 3) to recognize that the L2 | |||
| adjacency to R21 should not be used for forwarding. The L1/L2 edge | adjacency to R21 should not be used for forwarding. The L1/L2 edge | |||
| nodes should forward traffic that would normally be forwarded over | nodes should forward traffic that would normally be forwarded over | |||
| the L2 adjacency to R21 over L1 links instead. This would allow the | the L2 adjacency to R21 over L1 links instead. This would allow the | |||
| forwarding within the L1 area to use the L1-only nodes and links | forwarding within the L1 area to use the L1-only nodes and links | |||
| shown in Figure 1 as well. It allows networks to be built that use | shown in Figure 1 as well. It allows networks that use the entire | |||
| the entire forwarding capacity of the L1 areas, while at the same | forwarding capacity of the L1 areas to be built, while at the same | |||
| time introducing control plane scaling benefits provided by L2 flood | time it introduces control plane scaling benefits that are provided | |||
| reflectors. | by L2 flood reflectors. | |||
| It is expected that deployment at scale, and suitable time in | It is expected that deployment at scale, and suitable time in | |||
| operation, will provide sufficient evidence to either make this | operation, will provide sufficient evidence to either put this | |||
| extension a standard, or suggest necessary modifications to | extension into a Standards Track document or suggest necessary | |||
| accomplish this. | modifications to accomplish that. | |||
| The remainder of this document defines the remaining extensions | The remainder of this document defines the remaining extensions | |||
| necessary for a complete flood reflection solution: | necessary for a complete flood reflection solution: | |||
| * It defines a special 'flood reflector adjacency' built for the | * It defines a special "flood reflector adjacency" built for the | |||
| purpose of reflecting flooding information. These adjacencies | purpose of reflecting flooding information. These adjacencies | |||
| allow 'flood reflectors' to participate in the IS-IS control plane | allow "flood reflectors" to participate in the IS-IS control plane | |||
| without necessarily being used in the forwarding plane. | without necessarily being used in the forwarding plane. | |||
| Maintenance of such adjacencies is a purely local operation on the | Maintenance of such adjacencies is a purely local operation on the | |||
| L1/L2 ingress and flood reflectors; it does not require replacing | L1/L2 ingress and flood reflectors; it does not require replacing | |||
| or modifying any routers not involved in the reflection process. | or modifying any routers not involved in the reflection process. | |||
| In practical deployments, it is far less tricky to just upgrade | In practical deployments, it is far less tricky to just upgrade | |||
| the routers involved in flood reflection rather than have a flag | the routers involved in flood reflection rather than have a flag | |||
| day for the whole IS-IS domain. | day for the whole IS-IS domain. | |||
| * It specifies an (optional) full mesh of tunnels between the L1/L2 | * It specifies an (optional) full mesh of tunnels between the L1/L2 | |||
| ingress routers, ideally load-balancing across all available L1 | ingress routers, ideally load-balancing across all available L1 | |||
| links. This harnesses all forwarding paths between the L1/L2 edge | links. This harnesses all forwarding paths between the L1/L2 edge | |||
| nodes without injecting unneeded state into the L2 flooding domain | nodes without injecting unneeded state into the L2 flooding domain | |||
| or creating 'choke points' at the 'flood reflectors' themselves. | or creating "choke points" at the "flood reflectors" themselves. | |||
| The specification is agnostic as to the tunneling technology used | The specification is agnostic as to the tunneling technology used | |||
| but provides enough information for automatic establishment of | but provides enough information for automatic establishment of | |||
| such tunnels if desired. The discussion of IS-IS adjacency | such tunnels if desired. The discussion of IS-IS adjacency | |||
| formation and/or liveness discovery on such tunnels is outside the | formation and/or liveness discovery on such tunnels is outside the | |||
| scope of this specification and is largely a choice of the | scope of this specification and is largely a choice of the | |||
| underlying implementation. A solution without tunnels is also | underlying implementation. A solution without tunnels is also | |||
| possible by introducing the correct scoping of reachability | possible by introducing the correct scoping of reachability | |||
| information between the levels. This is described in more detail | information between the levels. This is described in more detail | |||
| later. | later. | |||
| * Finally, the document defines support of reflector redundancy and | * Finally, this document defines support of reflector redundancy and | |||
| an (optional) way to auto-discover and annotate flood reflector | an (optional) way to auto-discover and annotate flood reflector | |||
| adjacencies on advertisements. Such additional information in | adjacencies on advertisements. Such additional information in | |||
| link advertisements allows L2 nodes outside the L1 area to | link advertisements allows L2 nodes outside the L1 area to | |||
| recognize a flood reflection cluster and its adjacencies. | recognize a flood reflection cluster and its adjacencies. | |||
| 2. Glossary | 2. Conventions Used in This Document | |||
| 2.1. Terminology | ||||
| The following terms are used in this document. | The following terms are used in this document. | |||
| ISIS Level-1 and Level-2 areas, mostly abbreviated as L1 and L2: | IS-IS Level 1 and Level 2 areas (mostly abbreviated as L1 and L2): | |||
| Traditional ISIS concepts whereas a routing domain has two | IS-IS concepts where a routing domain has two "levels" with a | |||
| "levels" with a single L2 area being the "backbone" that connects | single L2 area being the "backbone" that connects multiple L1 | |||
| multiple L1 areas for scaling and reliability purposes. In | areas for scaling and reliability purposes. IS-IS architecture | |||
| traditional ISIS L2 can be used as transit for L1-L1 traffic but | prescribes a routing domain with two "levels" where a single L2 | |||
| L1 areas cannot be used for that purpose since L2 level must be | area functions as the "backbone" that connects multiple L1 areas | |||
| "connected" and all traffic flows along L2 routers until it | amongst themselves for scaling and reliability purposes. In such | |||
| arrives at the destination L1 area. | architecture, L2 can be used as transit for traffic carried from | |||
| one L1 area to another, but L1 areas themselves cannot be used for | ||||
| that purpose because the L2 level must be a single "connected" | ||||
| entity, and all traffic exiting an L1 area flows along L2 routers | ||||
| until the traffic arrives at the destination L1 area itself. | ||||
| Flood Reflector: | Flood Reflector: | |||
| Node configured to connect in L2 only to flood reflector clients | Node configured to connect in L2 only to flood reflector clients | |||
| and reflect (reflood) IS-IS L2 LSPs amongst them. | and to reflect (reflood) IS-IS L2 LSPs amongst them. | |||
| Flood Reflector Client: | Flood Reflector Client: | |||
| Node configured to build Flood Reflector Adjacencies to Flood | Node configured to build Flood Reflector Adjacencies to Flood | |||
| Reflectors, and normal adjacencies to other clients and L2 nodes | Reflectors and to build normal adjacencies to other clients and L2 | |||
| not participating in flood reflection. | nodes not participating in flood reflection. | |||
| Flood Reflector Adjacency: | Flood Reflector Adjacency: | |||
| IS-IS L2 adjacency where one end is a Flood Reflector Client and | IS-IS L2 adjacency where one end is a Flood Reflector Client, and | |||
| the other a Flood Reflector, and the two have the same Flood | the other, a Flood Reflector. Both have the same Flood Reflector | |||
| Reflector Cluster ID. | Cluster ID. | |||
| Flood Reflector Cluster: | Flood Reflector Cluster: | |||
| Collection of clients and flood reflectors configured with the | Collection of clients and flood reflectors configured with the | |||
| same cluster identifier. | same cluster identifier. | |||
| Tunnel-Based Deployment: | Tunnel-Based Deployment: | |||
| Deployment where Flood Reflector Clients build a partial or full | Deployment where Flood Reflector Clients build a partial or full | |||
| mesh of tunnels in L1 to "shortcut" forwarding of L2 traffic | mesh of tunnels in L1 to "shortcut" forwarding of L2 traffic | |||
| through the cluster. | through the cluster. | |||
| No-Tunnel Deployment: | No-Tunnel Deployment: | |||
| Deployment where Flood Reflector Clients redistribute L2 | Deployment where Flood Reflector Clients redistribute L2 | |||
| reachability into L1 to allow forwarding through the cluster | reachability into L1 to allow forwarding through the cluster | |||
| without underlying tunnels. | without underlying tunnels. | |||
| Tunnel Endpoint: | Tunnel Endpoint: | |||
| An endpoint that allows the establishment of a bi-directional | An endpoint that allows the establishment of a bidirectional | |||
| tunnel carrying IS-IS control traffic or alternately, serves as | tunnel carrying IS-IS control traffic or, alternately, serves as | |||
| the origin of such a tunnel. | the origin of such a tunnel. | |||
| L1 shortcut: | L1 shortcut: | |||
| A tunnel between two clients visible in L1 only that is used as a | A tunnel established between two clients that is visible in L1 | |||
| next-hop, i.e. to carry data traffic in tunnel-based deployment | only and is used as a next hop, i.e., to carry data traffic in | |||
| mode. | tunnel-based deployment mode. | |||
| Hot-Potato Routing: | Hot-Potato Routing: | |||
| In context of this document, a routing paradigm where L2->L1 | In the context of this document, a routing paradigm where L2->L1 | |||
| routes are less preferred than L2 routes [RFC5302]. | routes are less preferred than L2 routes [RFC5302]. | |||
| 2.2. Requirements Language | ||||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | ||||
| "OPTIONAL" in this document are to be interpreted as described in | ||||
| BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | ||||
| capitals, as shown here. | ||||
| 3. Further Details | 3. Further Details | |||
| Several considerations should be noted in relation to such a flood | Several considerations should be noted in relation to such a flood | |||
| reflection mechanism. | reflection mechanism. | |||
| First, this allows multi-area IS-IS deployments to scale without any | First, the flood reflection mechanism allows multi-area IS-IS | |||
| major modifications in the IS-IS implementation on most of the nodes | deployments to scale without any major modifications in the IS-IS | |||
| deployed in the network. Unmodified (traditional) L2 routers will | implementation on most of the nodes deployed in the network. | |||
| compute reachability across the transit L1 area using the flood | Unmodified (standard) L2 routers will compute reachability across the | |||
| reflector adjacencies. | transit L1 area using the flood reflector adjacencies. (In this | |||
| document, the term "standard" refers to IS-IS as specified in | ||||
| [ISO10589].) | ||||
| Second, the flood reflectors are not required to participate in | Second, the flood reflectors are not required to participate in | |||
| forwarding traffic through the L1 transit area. These flood | forwarding traffic through the L1 transit area. These flood | |||
| reflectors can be hosted on virtual devices outside the forwarding | reflectors can be hosted on virtual devices outside the forwarding | |||
| topology. | topology. | |||
| Third, astute readers will realize that flooding reflection may cause | Third, astute readers will realize that flooding reflection may cause | |||
| the use of suboptimal paths. This is similar to the BGP route | the use of suboptimal paths. This is similar to the BGP route | |||
| reflection suboptimal routing problem described in | reflection suboptimal routing problem described in [RFC9107]. The L2 | |||
| [ID.draft-ietf-idr-bgp-optimal-route-reflection-28]. The L2 | computation determines the egress L1/L2 and, with that, can create | |||
| computation determines the egress L1/L2 and with that can create | illusions of ECMP where there is none; and in certain scenarios, the | |||
| illusions of ECMP where there is none, and in certain scenarios lead | L2 computation can lead to an L1/L2 egress that is not globally | |||
| to an L1/L2 egress which is not globally optimal. This represents a | optimal. This represents a straightforward instance of the trade-off | |||
| straightforward instance of the trade-off between the amount of | between the amount of control plane state and the optimal use of | |||
| control plane state and the optimal use of paths through the network | paths through the network that are often encountered when aggregating | |||
| often encountered when aggregating routing information. | routing information. | |||
| One possible solution to this problem is to expose additional | One possible solution to this problem is to expose additional | |||
| topology information into the L2 flooding domains. In the example | topology information into the L2 flooding domains. In the example | |||
| network given, links from router R10 to router R11 can be exposed | network given, links from router R10 to router R11 can be exposed | |||
| into L2 even when R10 and R11 are participating in flood reflection. | into L2 even when R10 and R11 are participating in flood reflection. | |||
| This information would allow the L2 nodes to build 'shortcuts' when | This information would allow the L2 nodes to build "shortcuts" when | |||
| the L2 flood reflected part of the topology looks more expensive to | the L2 flood-reflected part of the topology looks more expensive to | |||
| cross distance wise. | cross distance-wise. | |||
| Another possible variation is for an implementation to approximate | Another possible variation is for an implementation to use the tunnel | |||
| with the tunnel cost the cost of the underlying topology. | cost to approximate the cost of the underlying topology. | |||
| Redundancy can be achieved by configuring multiple flood reflectors | Redundancy can be achieved by configuring multiple flood reflectors | |||
| in a L1 area. Multiple flood reflectors do not need any | in an L1 area. Multiple flood reflectors do not need any | |||
| synchronization mechanisms amongst themselves, except standard IS-IS | synchronization mechanisms amongst themselves, except standard IS-IS | |||
| flooding and database maintenance procedures. | flooding and database maintenance procedures. | |||
| 4. Encodings | 4. Encodings | |||
| 4.1. Flood Reflection TLV | 4.1. Flood Reflection TLV | |||
| The Flood Reflection TLV is a top-level TLV that MUST appear in L2 | The Flood Reflection TLV is a top-level TLV that MUST appear in L2 | |||
| IIHs on all Flood Reflection Adjacencies. The Flood Reflection TLV | IIHs (IS-IS Hello) on all Flood Reflection Adjacencies. The Flood | |||
| indicates the flood reflector cluster (based on Flood Reflection | Reflection TLV indicates the flood reflector cluster (based on Flood | |||
| Cluster ID) that a given router is configured to participate in. It | Reflection Cluster ID) that a given router is configured to | |||
| also indicates whether the router is configured to play the role of | participate in. It also indicates whether the router is configured | |||
| either flood reflector or flood reflector client. The Flood | to play the role of either flood reflector or flood reflector client. | |||
| Reflection Cluster ID and flood reflector roles advertised in the | The Flood Reflection Cluster ID and flood reflector roles advertised | |||
| IIHs are used to ensure that flood reflector adjacencies are only | in the IIHs are used to ensure that flood reflector adjacencies are | |||
| formed between a flood reflector and flood reflector client, and that | only formed between a flood reflector and flood reflector client and | |||
| the Flood Reflection Cluster IDs match. The Flood Reflection TLV has | that the Flood Reflection Cluster IDs match. The Flood Reflection | |||
| the following format: | TLV has the following format: | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Type | Length |C| RESERVED | | | Type | Length |C| Reserved | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Flood Reflection Cluster ID | | | Flood Reflection Cluster ID | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Sub-TLVs ... | | Sub-TLVs ... | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type: 161 | Type: 161 | |||
| Length: The length, in octets, of the following fields. | Length: The length, in octets, of the following fields. | |||
| C (Client): This bit is set to indicate that the router acts as a | C (Client): This bit is set to indicate that the router acts as a | |||
| flood reflector client. When this bit is NOT set, the router acts | flood reflector client. When this bit is NOT set, the router acts | |||
| as a flood reflector. On a given router, the same value of the | as a flood reflector. On a given router, the same value of the | |||
| C-bit MUST be advertised across all interfaces advertising the | C-bit MUST be advertised across all interfaces advertising the | |||
| Flood Reflection TLV in IIHs. | Flood Reflection TLV in IIHs. | |||
| RESERVED: This field is reserved for future use. It MUST be set to | Reserved: This field is reserved for future use. It MUST be set to | |||
| 0 when sent and MUST be ignored when received. | 0 when sent and MUST be ignored when received. | |||
| Flood Reflection Cluster ID: Flood Reflection Cluster Identifier. | Flood Reflection Cluster ID: The same arbitrary 32-bit value MUST be | |||
| The same arbitrary 32-bit value MUST be assigned to all of the | assigned to all of the flood reflectors and flood reflector | |||
| flood reflectors and flood reflector clients in the same L1 area. | clients in the same L1 area. The value MUST be unique across | |||
| The value MUST be unique across different L1 areas within the IGP | different L1 areas within the IGP domain. In case of violation of | |||
| domain. In case of violation of those rules multiple L1 areas may | those rules, multiple L1 areas may become a single cluster, or a | |||
| become a single cluster or a single area may split in flood | single area may split in flood reflection sense, and several | |||
| reflection sense and several mechanisms such as auto-discovery of | mechanisms, such as auto-discovery of tunnels, may not work | |||
| tunnels may not work correctly. On a given router, the same value | correctly. On a given router, the same value of the Flood | |||
| of the Flood Reflection Cluster ID MUST be advertised across all | Reflection Cluster ID MUST be advertised across all interfaces | |||
| interfaces advertising the Flood Reflection TLV in IIHs. When a | advertising the Flood Reflection TLV in IIHs. When a router | |||
| router discovers that a node is using more than a single Cluster | discovers that a node is using more than a single Cluster IDs | |||
| IDs based on its advertised TLVs and IIHs, the node MAY log such | based on its advertised TLVs and IIHs, the node MAY log such | |||
| violations subject to rate limiting. This implies that a flood | violations subject to rate-limiting. This implies that a flood | |||
| reflector MUST NOT participate in more than a single L1 area. In | reflector MUST NOT participate in more than a single L1 area. In | |||
| case of Cluster ID value of 0, the TLV containing it MUST be | case of Cluster ID value of 0, the TLV containing it MUST be | |||
| ignored. | ignored. | |||
| Sub-TLVs: Optional sub-TLVs. For future extensibility, the format | Sub-TLVs (Optional Sub-TLVs): For future extensibility, the format | |||
| of the Flood Reflection TLV allows for the possibility of | of the Flood Reflection TLV allows for the possibility of | |||
| including optional sub-TLVs. No sub-TLVs of the Flood Reflection | including optional sub-TLVs. No sub-TLVs of the Flood Reflection | |||
| TLV are defined in this document. | TLV are defined in this document. | |||
| The Flood Reflection TLV SHOULD NOT appear more than once in an IIH. | The Flood Reflection TLV SHOULD NOT appear more than once in an IIH. | |||
| A router receiving one or more Flood Reflection TLVs in the same IIH | A router receiving one or more Flood Reflection TLVs in the same IIH | |||
| MUST use the values in the first TLV and it SHOULD log such | MUST use the values in the first TLV, and it SHOULD log such | |||
| violations subject to rate limiting. | violations subject to rate-limiting. | |||
| 4.2. Flood Reflection Discovery Sub-TLV | 4.2. Flood Reflection Discovery Sub-TLV | |||
| The Flood Reflection Discovery sub-TLV is advertised as a sub-TLV of | The Flood Reflection Discovery sub-TLV is advertised as a sub-TLV of | |||
| the IS-IS Router Capability TLV-242, defined in [RFC7981]. The Flood | the IS-IS Router Capability TLV 242, defined in [RFC7981]. The Flood | |||
| Reflection Discovery sub-TLV is advertised in L1 and L2 LSPs with | Reflection Discovery sub-TLV is advertised in L1 and L2 LSPs with | |||
| area flooding scope in order to enable the auto-discovery of flood | area flooding scope in order to enable the auto-discovery of flood | |||
| reflection capabilities. The Flood Reflection Discovery sub-TLV has | reflection capabilities. The Flood Reflection Discovery sub-TLV has | |||
| the following format: | the following format: | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Type | Length |C| Reserved | | | Type | Length |C| Reserved | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| skipping to change at page 12, line 21 ¶ | skipping to change at line 538 ¶ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type: 161 | Type: 161 | |||
| Length: The length, in octets, of the following fields. | Length: The length, in octets, of the following fields. | |||
| C (Client): This bit is set to indicate that the router acts as a | C (Client): This bit is set to indicate that the router acts as a | |||
| flood reflector client. When this bit is NOT set, the router acts | flood reflector client. When this bit is NOT set, the router acts | |||
| as a flood reflector. | as a flood reflector. | |||
| RESERVED: This field is reserved for future use. It MUST be set to | Reserved: This field is reserved for future use. It MUST be set to | |||
| 0 when sent and MUST be ignored when received. | 0 when sent and MUST be ignored when received. | |||
| Flood Reflection Cluster ID: The Flood Reflection Cluster Identifier | Flood Reflection Cluster ID: The Flood Reflection Cluster Identifier | |||
| is the same as that defined in the Flood Reflection TLV and obeys | is the same as that defined in the Flood Reflection TLV in | |||
| the same rules. | Section 4.1 and obeys the same rules. | |||
| The Flood Reflection Discovery sub-TLV SHOULD NOT appear more than | The Flood Reflection Discovery sub-TLV SHOULD NOT appear more than | |||
| once in TLV 242. A router receiving one or more Flood Reflection | once in TLV 242. A router receiving one or more Flood Reflection | |||
| Discovery sub-TLVs in TLV 242 MUST use the values in the first sub- | Discovery sub-TLVs in TLV 242 MUST use the values in the first sub- | |||
| TLV of the lowest numbered fragment and it SHOULD log such violations | TLV of the lowest numbered fragment, and it SHOULD log such | |||
| subject to rate limiting. | violations subject to rate-limiting. | |||
| 4.3. Flood Reflection Discovery Tunnel Type Sub-Sub-TLV | 4.3. Flood Reflection Discovery Tunnel Type Sub-Sub-TLV | |||
| Flood Reflection Discovery Tunnel Type sub-sub-TLV is advertised | Flood Reflection Discovery Tunnel Type sub-sub-TLV is advertised | |||
| optionally as a sub-sub-TLV of the Flood Reflection Discovery Sub- | optionally as a sub-sub-TLV of the Flood Reflection Discovery Sub- | |||
| TLV, defined in Section 4.2. It allows the automatic creation of L2 | TLV, defined in Section 4.2. It allows the automatic creation of L2 | |||
| tunnels to be used as flood reflector adjacencies and L1 shortcut | tunnels to be used as flood reflector adjacencies and L1 shortcut | |||
| tunnels. The Flood Reflection Tunnel Type sub-sub-TLV has the | tunnels. The Flood Reflection Tunnel Type sub-sub-TLV has the | |||
| following format: | following format: | |||
| skipping to change at page 13, line 4 ¶ | skipping to change at line 569 ¶ | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-------------+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-------------+-+ | |||
| | Type | Length | Reserved |F| | | Type | Length | Reserved |F| | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Tunnel Encapsulation Attribute | | | Tunnel Encapsulation Attribute | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type: 161 | Type: 161 | |||
| Length: The length, in octets, of zero or more of the following | Length: The length, in octets, of zero or more of the following | |||
| fields. | fields. | |||
| Reserved: SHOULD be 0 on transmission and MUST be ignored on | Reserved: SHOULD be 0 on transmission and MUST be ignored on | |||
| reception. | reception. | |||
| F Flag: When set indicates flood reflection tunnel endpoint, when | F Flag: When set, indicates flood reflection tunnel endpoint. When | |||
| clear, indicates possible L1 shortcut tunnel endpoint. | clear, indicates possible L1 shortcut tunnel endpoint. | |||
| Tunnel Encapsulation Attribute: Carries encapsulation type and | Tunnel Encapsulation Attribute: Carries encapsulation type and | |||
| further attributes necessary for tunnel establishment as defined | further attributes necessary for tunnel establishment as defined | |||
| in [RFC9012]. In context of this attribute the protocol Type sub- | in [RFC9012]. In context of this attribute, the protocol Type | |||
| TLV as defined in [RFC9012] MAY be included to ensure proper | sub-TLV as defined in [RFC9012] MAY be included to ensure proper | |||
| encapsulation of IS-IS frames. In case such a sub-TLV is included | encapsulation of IS-IS frames. In case such a sub-TLV is included | |||
| and the F flag is set (i.e. the resulting tunnel is a flood | and the F flag is set (i.e., the resulting tunnel is a flood | |||
| reflector adjacency) this sub-TLV MUST include a type that allows | reflector adjacency), this sub-TLV MUST include a type that allows | |||
| to carry encapsulated IS-IS frames. Furthermore, such tunnel type | to carry encapsulated IS-IS frames. Furthermore, such tunnel type | |||
| MUST be able to transport IS-IS frames of size up to | MUST be able to transport IS-IS frames of size up to | |||
| `originatingL2LSPBufferSize`. | "originatingL2LSPBufferSize". | |||
| A flood reflector receiving Flood Reflection Discovery Tunnel Type | A flood reflector receiving Flood Reflection Discovery Tunnel Type | |||
| sub-sub-TLVs in Flood Reflection Discovery sub-TLV with F flag set | sub-sub-TLVs in Flood Reflection Discovery sub-TLV with F flag set | |||
| (i.e. the resulting tunnel is a flood reflector adjacency) SHOULD use | (i.e., the resulting tunnel is a flood reflector adjacency) SHOULD | |||
| one or more of the specified tunnel endpoints to automatically | use one or more of the specified tunnel endpoints to automatically | |||
| establish one or more tunnels that will serve as flood reflection | establish one or more tunnels that will serve as a flood reflection | |||
| adjacency(-ies) to the clients advertising the endpoints. | adjacency and/or adjacencies to the clients advertising the | |||
| endpoints. | ||||
| A flood reflection client receiving one or more Flood Reflection | A flood reflection client receiving one or more Flood Reflection | |||
| Discovery Tunnel Type sub-sub-TLVs in Flood Reflection Discovery sub- | Discovery Tunnel Type sub-sub-TLVs in Flood Reflection Discovery sub- | |||
| TLV with F flag clear (i.e. the resulting tunnel is used to support | TLV with F flag clear (i.e., the resulting tunnel is used to support | |||
| tunnel-based mode) from other leaves MAY use one or more of the | tunnel-based mode) from other leaves MAY use one or more of the | |||
| specified tunnel endpoints to automatically establish one or more | specified tunnel endpoints to automatically establish one or more | |||
| tunnels that will serve as L1 tunnel shortcuts to the clients | tunnels that will serve as L1 tunnel shortcuts to the clients | |||
| advertising the endpoints. | advertising the endpoints. | |||
| In case of automatic flood reflection adjacency tunnels and in case | In case of automatic flood reflection adjacency tunnels and in case | |||
| IS-IS adjacencies are being formed across L1 shortcuts all the | IS-IS adjacencies are being formed across L1 shortcuts, all the | |||
| aforementioned rules in Section 4.5 apply as well. | aforementioned rules in Section 4.5 apply as well. | |||
| Optional address validation procedures as defined in [RFC9012] MUST | Optional address validation procedures as defined in [RFC9012] MUST | |||
| be disregarded. | be disregarded. | |||
| It remains to be observed that automatic tunnel discovery is an | It remains to be observed that automatic tunnel discovery is an | |||
| optional part of the specification and can be replaced or mixed with | optional part of the specification and can be replaced or mixed with | |||
| statically configured tunnels for either flood reflector adjacencies | statically configured tunnels for flood reflector adjacencies and | |||
| and/or tunnel-based shortcuts. Specific implementation details how | tunnel-based shortcuts. Specific implementation details how both | |||
| both mechanisms interact are specific to an implementation and mode | mechanisms interact are specific to an implementation and mode of | |||
| of operation and are outside the scope of this document. | operation and are outside the scope of this document. | |||
| Flood reflector adjacencies rely on IS-IS L2 liveliness procedures. | Flood reflector adjacencies rely on IS-IS L2 liveliness procedures. | |||
| In case of L1 shortcuts the mechanism used to ensure liveliness and | In case of L1 shortcuts, the mechanism used to ensure liveliness and | |||
| tunnel integrity are outside the scope of this document. | tunnel integrity are outside the scope of this document. | |||
| 4.4. Flood Reflection Adjacency Sub-TLV | 4.4. Flood Reflection Adjacency Sub-TLV | |||
| The Flood Reflection Adjacency sub-TLV is advertised as a sub-TLV of | The Flood Reflection Adjacency sub-TLV is advertised as a sub-TLV of | |||
| TLVs 22, 23, 25, 141, 222, and 223 (the "TLVs Advertising Neighbor | TLVs 22, 23, 25, 141, 222, and 223 (the "TLVs Advertising Neighbor | |||
| Information"). Its presence indicates that a given adjacency is a | Information"). Its presence indicates that a given adjacency is a | |||
| flood reflector adjacency. It is included in L2 area scope flooded | flood reflector adjacency. It is included in L2 area scope flooded | |||
| LSPs. The Flood Reflection Adjacency sub-TLV has the following | LSPs. The Flood Reflection Adjacency sub-TLV has the following | |||
| format: | format: | |||
| skipping to change at page 14, line 34 ¶ | skipping to change at line 649 ¶ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type: 161 | Type: 161 | |||
| Length: The length, in octets, of the following fields. | Length: The length, in octets, of the following fields. | |||
| C (Client): This bit is set to indicate that the router advertising | C (Client): This bit is set to indicate that the router advertising | |||
| this adjacency is a flood reflector client. When this bit is NOT | this adjacency is a flood reflector client. When this bit is NOT | |||
| set, the router advertising this adjacency is a flood reflector. | set, the router advertising this adjacency is a flood reflector. | |||
| RESERVED: This field is reserved for future use. It MUST be set to | Reserved: This field is reserved for future use. It MUST be set to | |||
| 0 when sent and MUST be ignored when received. | 0 when sent and MUST be ignored when received. | |||
| Flood Reflection Cluster ID: The Flood Reflection Cluster Identifier | Flood Reflection Cluster ID: The Flood Reflection Cluster Identifier | |||
| is the same as that defined in the Flood Reflection TLV and obeys | is the same as that defined in the Flood Reflection TLV in | |||
| the same rules. | Section 4.1 and obeys the same rules. | |||
| The Flood Reflection Adjacency sub-TLV SHOULD NOT appear more than | The Flood Reflection Adjacency sub-TLV SHOULD NOT appear more than | |||
| once in a given TLV. A router receiving one or more Flood Reflection | once in a given TLV. A router receiving one or more Flood Reflection | |||
| Adjacency sub-TLVs in a TLV MUST use the values in the first sub-TLV | Adjacency sub-TLVs in a TLV MUST use the values in the first sub-TLV | |||
| of the lowest numbered fragment and it SHOULD log such violations | of the lowest numbered fragment, and it SHOULD log such violations | |||
| subject to rate limiting. | subject to rate-limiting. | |||
| 4.5. Flood Reflection Discovery | 4.5. Flood Reflection Discovery | |||
| A router participating in flood reflection as client or reflector | A router participating in flood reflection as client or reflector | |||
| MUST be configured as an L1/L2 router. It MAY originate the Flood | MUST be configured as an L1/L2 router. It MAY originate the Flood | |||
| Reflection Discovery sub-TLV with area flooding scope in L1 and L2. | Reflection Discovery sub-TLV with area flooding scope in L1 and L2. | |||
| Normally, all routers on the edge of the L1 area (those having | Normally, all routers on the edge of the L1 area (those having | |||
| traditional L2 adjacencies) will advertise themselves as flood | standard L2 adjacencies) will advertise themselves as flood reflector | |||
| reflector clients. Therefore, a flood reflector client will have | clients. Therefore, a flood reflector client will have both standard | |||
| both traditional L2 adjacencies and flood reflector L2 adjacencies. | L2 adjacencies and flood reflector L2 adjacencies. | |||
| A router acting as a flood reflector MUST NOT form any traditional L2 | A router acting as a flood reflector MUST NOT form any standard L2 | |||
| adjacencies except with flood reflector clients. It will be an L1/L2 | adjacencies except with flood reflector clients. It will be an L1/L2 | |||
| router only by virtue of having flood reflector L2 adjacencies. A | router only by virtue of having flood reflector L2 adjacencies. A | |||
| router desiring to act as a flood reflector MAY advertise itself as | router desiring to act as a flood reflector MAY advertise itself as | |||
| such using the Flood Reflection Discovery sub-TLV in L1 and L2. | such using the Flood Reflection Discovery sub-TLV in L1 and L2. | |||
| A given flood reflector or flood reflector client can only | A given flood reflector or flood reflector client can only | |||
| participate in a single cluster, as determined by the value of its | participate in a single cluster, as determined by the value of its | |||
| Flood Reflection Cluster ID and should disregard other routers' TLVs | Flood Reflection Cluster ID and should disregard other routers' TLVs | |||
| for flood reflection purposes if the cluster ID is not matching. | for flood reflection purposes if the cluster ID is not matching. | |||
| Upon reception of Flood Reflection Discovery sub-TLVs, a router | Upon reception of Flood Reflection Discovery sub-TLVs, a router | |||
| acting as flood reflector SHOULD initiate a tunnel towards each flood | acting as flood reflector SHOULD initiate a tunnel towards each flood | |||
| reflector client with which it shares a Flood Reflection Cluster ID | reflector client with which it shares a Flood Reflection Cluster ID, | |||
| using one or more of the tunnel encapsulations provided with F flag | using one or more of the tunnel encapsulations provided with F flag | |||
| is set. The L2 adjacencies formed over such tunnels MUST be marked | is set. The L2 adjacencies formed over such tunnels MUST be marked | |||
| as flood reflector adjacencies. If the client or reflector has a | as flood reflector adjacencies. If the client or reflector has a | |||
| direct L2 adjacency with the according remote side it SHOULD use it | direct L2 adjacency with the according remote side, it SHOULD use it | |||
| instead of instantiating a tunnel. | instead of instantiating a tunnel. | |||
| In case the optional auto-discovery mechanism is not implemented or | In case the optional auto-discovery mechanism is not implemented or | |||
| enabled a deployment MAY use statically configured tunnels to create | enabled, a deployment MAY use statically configured tunnels to create | |||
| flood reflection adjacencies. | flood reflection adjacencies. | |||
| The IS-IS metrics for all flood reflection adjacencies in a cluster | The IS-IS metrics for all flood reflection adjacencies in a cluster | |||
| SHOULD be identical. | SHOULD be identical. | |||
| Upon reception of Flood Reflection Discovery TLVs, a router acting as | Upon reception of Flood Reflection Discovery TLVs, a router acting as | |||
| a flood reflector client MAY initiate tunnels with L1-only | a flood reflector client MAY initiate tunnels with L1-only | |||
| adjacencies towards any of the other flood reflector clients with | adjacencies towards any of the other flood reflector clients with | |||
| lower router IDs in its cluster using encapsulations with F flag | lower router IDs in its cluster using encapsulations with F flag | |||
| clear. These tunnels MAY be used for forwarding to improve the load- | clear. These tunnels MAY be used for forwarding to improve the load- | |||
| balancing characteristics of the L1 area. If the clients have a | balancing characteristics of the L1 area. If the clients have a | |||
| direct L2 adjacency they SHOULD use it instead of instantiating a new | direct L2 adjacency, they SHOULD use it instead of instantiating a | |||
| tunnel. | new tunnel. | |||
| 4.6. Flood Reflection Adjacency Formation | 4.6. Flood Reflection Adjacency Formation | |||
| In order to simplify implementation complexity, this document does | In order to simplify implementation complexity, this document does | |||
| not allow the formation of complex hierarchies of flood reflectors | not allow the formation of complex hierarchies of flood reflectors | |||
| and clients or allow multiple clusters in a single L1 area. | and clients or allow multiple clusters in a single L1 area. | |||
| Consequently, all flood reflectors and flood reflector clients in the | Consequently, all flood reflectors and flood reflector clients in the | |||
| same L1 area MUST share the same Flood Reflector Cluster ID. | same L1 area MUST share the same Flood Reflector Cluster ID. | |||
| Deployment of multiple cluster IDs in the same L1 area are outside | Deployment of multiple cluster IDs in the same L1 area are outside | |||
| the scope of this document. | the scope of this document. | |||
| A flood reflector MUST NOT form flood reflection adjacencies with | A flood reflector MUST NOT form flood reflection adjacencies with | |||
| flood reflector clients with a different Cluster ID. A flood | flood reflector clients with a different Cluster ID. A flood | |||
| reflector MUST NOT form any traditional L2 adjacencies. | reflector MUST NOT form any standard L2 adjacencies. | |||
| Flood reflector clients MUST NOT form flood reflection adjacencies | Flood reflector clients MUST NOT form flood reflection adjacencies | |||
| with flood reflectors with a different Cluster ID. | with flood reflectors with a different Cluster ID. | |||
| Flood reflector clients MAY form traditional L2 adjacencies with | Flood reflector clients MAY form standard L2 adjacencies with flood | |||
| flood reflector clients or nodes not participating in flood | reflector clients or nodes not participating in flood reflection. | |||
| reflection. When two flood reflector clients form a traditional L2 | When two flood reflector clients form a standard L2 adjacency, the | |||
| adjacency the Cluster IDs are disregarded. | Cluster IDs are disregarded. | |||
| The Flood Reflector Cluster ID and flood reflector roles advertised | The Flood Reflector Cluster ID and flood reflector roles advertised | |||
| in the Flood Reflection TLVs in IIHs are used to ensure that flood | in the Flood Reflection TLVs in IIHs are used to ensure that flood | |||
| reflection adjacencies that are established meet the above criteria. | reflection adjacencies that are established meet the above criteria. | |||
| On change in either flood reflection role or cluster ID on IIH on the | On change in either flood reflection role or cluster ID on IIH on the | |||
| local or remote side the adjacency has to be reset. It is then re- | local or remote side, the adjacency has to be reset. It is then re- | |||
| established if possible. | established if possible. | |||
| Once a flood reflection adjacency is established, the flood reflector | Once a flood reflection adjacency is established, the flood reflector | |||
| and the flood reflector client MUST advertise the adjacency by | and the flood reflector client MUST advertise the adjacency by | |||
| including the Flood Reflection Adjacency Sub-TLV in the Extended IS | including the Flood Reflection Adjacency Sub-TLV in the Extended IS | |||
| reachability TLV or MT-ISN TLV. | reachability TLV or Multi-Topology Intermediate System Neighbor (MT- | |||
| ISN) TLV. | ||||
| 5. Route Computation | 5. Route Computation | |||
| To ensure loop-free routing, the flood reflection client MUST follow | To ensure loop-free routing, the flood reflection client MUST follow | |||
| the normal L2 computation to determine L2 routes. This is because | the normal L2 computation to determine L2 routes. This is because | |||
| nodes outside the L1 area will generally not be aware that flood | nodes outside the L1 area will generally not be aware that flood | |||
| reflection is being performed. The flood reflection clients need to | reflection is being performed. The flood reflection clients need to | |||
| produce the same result for the L2 route computation as a router not | produce the same result for the L2 route computation as a router not | |||
| participating in flood reflection. | participating in flood reflection. | |||
| 5.1. Tunnel-Based Deployment | 5.1. Tunnel-Based Deployment | |||
| In the tunnel-based option the reflection client, after L2 and L1 | In the tunnel-based option, the reflection client, after L2 and L1 | |||
| computation, MUST examine all L2 routes with flood reflector next-hop | computation, MUST examine all L2 routes with flood reflector next-hop | |||
| adjacencies. Such next-hops must be replaced by the corresponding | adjacencies. Such next hops must be replaced by the corresponding | |||
| tunnel next-hops to the correct egress nodes of the flood reflection | tunnel next hops to the correct egress nodes of the flood reflection | |||
| cluster. | cluster. | |||
| 5.2. No-Tunnel Deployment | 5.2. No-Tunnel Deployment | |||
| In case of deployment without underlying tunnels, the necessary L2 | In case of deployment without underlying tunnels, the necessary L2 | |||
| routes are distributed into the area, normally as L2->L1 routes. Due | routes are distributed into the area, normally as L2->L1 routes. Due | |||
| to the rules in Section 4.6 the computation in the resulting topology | to the rules in Section 4.6, the computation in the resulting | |||
| is relatively simple, the L2 SPF from a flood reflector client is | topology is relatively simple: the L2 SPF from a flood reflector | |||
| guaranteed to reach the Flood Reflector within a single hop, and in | client is guaranteed to reach the Flood Reflector within a single | |||
| the following hop the L2 egress to which it has a forwarding tunnel. | hop, and in the following hop, it is guaranteed to reach the L2 | |||
| All the flood reflector tunnel nexthops in the according L2 route can | egress to which it has a forwarding tunnel. All the flood reflector | |||
| hence be removed and if the L2 route has no other ECMP L2 nexthops, | tunnel next hops in the according L2 route can hence be removed, and | |||
| the L2 route MUST be suppressed in the RIB by some means to allow the | if the L2 route has no other ECMP L2 next hops, the L2 route MUST be | |||
| less preferred L2->L1 route to be used to forward traffic towards the | suppressed in the RIB by some means to allow the less preferred | |||
| advertising egress. | L2->L1 route to be used to forward traffic towards the advertising | |||
| egress. | ||||
| In the particular case the client has L2 routes which are not flood | In the particular case the client has L2 routes which are not flood | |||
| reflected, those will be naturally preferred (such routes normally | reflected, those will be naturally preferred (such routes normally | |||
| "hot-potato" packets out of the L1 area). However in the case the L2 | "hot-potato" packets out of the L1 area). However, in the case the | |||
| route through the flood reflector egress is "shorter" than such | L2 route through the flood reflector egress is "shorter" than such | |||
| present non flood reflected L2 routes, the node SHOULD ensure that | present L2 routes that are not flood reflected, the node SHOULD | |||
| such routes are suppressed so the L2->L1 towards the egress still | ensure that such routes are suppressed so the L2->L1 towards the | |||
| takes preference. Observe that operationally this can be resolved in | egress still takes preference. Observe that operationally this can | |||
| a relatively simple way by configuring flood reflector adjacencies to | be resolved in a relatively simple way by configuring flood reflector | |||
| have a high metric, i.e. the flood reflector topology becomes "last | adjacencies to have a high metric, i.e., the flood reflector topology | |||
| resort" and the leaves will try to "hot-potato" out the area as fast | becomes "last resort," and the leaves will try to "hot-potato" out | |||
| as possible which is normally the desirable behavior. | the area as fast as possible, which is normally the desirable | |||
| behavior. | ||||
| In No-tunnel deployment all L1/L2 edge nodes MUST be flood reflection | In no-tunnel deployment, all L1/L2 edge nodes MUST be flood | |||
| clients. | reflection clients. | |||
| 6. Redistribution of Prefixes | 6. Redistribution of Prefixes | |||
| In case of no-tunnel deployment per Section 5.2 a client that does | In case of no-tunnel deployment per Section 5.2, a client that does | |||
| not have any L2 flood reflector adjacencies MUST NOT redistribute L2 | not have any L2 flood reflector adjacencies MUST NOT redistribute L2 | |||
| routes into the cluster. | routes into the cluster. | |||
| The L2 prefix advertisements redistributed into an L1 that contains | The L2 prefix advertisements redistributed into an L1 that contains | |||
| flood reflectors SHOULD be normally limited to L2 intra-area routes | flood reflectors SHOULD be normally limited to L2 intra-area routes | |||
| (as defined in [RFC7775]), if the information exists to distinguish | (as defined in [RFC7775]) if the information exists to distinguish | |||
| them from other L2 prefix advertisements. | them from other L2 prefix advertisements. | |||
| On the other hand, in topologies that make use of flood reflection to | On the other hand, in topologies that make use of flood reflection to | |||
| hide the structure of L1 areas while still providing transit | hide the structure of L1 areas while still providing transit- | |||
| forwarding across them using tunnels, we generally do not need to | forwarding across them using tunnels, we generally do not need to | |||
| redistribute L1 prefix advertisements into L2. | redistribute L1 prefix advertisements into L2. | |||
| 7. Special Considerations | 7. Special Considerations | |||
| In pathological cases setting the overload bit in L1 (but not in L2) | In pathological cases, setting the overload bit in L1 (but not in L2) | |||
| can partition L1 forwarding, while allowing L2 reachability through | can partition L1 forwarding, while allowing L2 reachability through | |||
| flood reflector adjacencies to exist. In such a case a node cannot | flood reflector adjacencies to exist. In such a case, a node cannot | |||
| replace a route through a flood reflector adjacency with a L1 | replace a route through a flood reflector adjacency with an L1 | |||
| shortcut and the client MAY use the L2 tunnel to the flood reflector | shortcut, and the client MAY use the L2 tunnel to the flood reflector | |||
| for forwarding but in any case it MUST initiate an alarm and declare | for forwarding. In all those cases, the node MUST initiate an alarm | |||
| misconfiguration. | and declare misconfiguration. | |||
| A flood reflector with directly L2 attached prefixes should advertise | A flood reflector with directly L2 attached prefixes should advertise | |||
| those in L1 as well since based on preference of L1 routes the | those in L1 as well since, based on preference of L1 routes, the | |||
| clients will not try to use the L2 flood reflector adjacency to route | clients will not try to use the L2 flood reflector adjacency to route | |||
| the packet towards them. A very unlikely corner case can occur when | the packet towards them. A very unlikely corner case can occur when | |||
| the flood reflector is reachable via L2 flood reflector adjacency | the flood reflector is reachable via L2 flood reflector adjacency | |||
| (due to underlying L1 partition) exclusively, in which case the | (due to underlying L1 partition) exclusively. In this instance, the | |||
| client can use the L2 tunnel to the flood reflector for forwarding | client can use the L2 tunnel to the flood reflector for forwarding | |||
| towards those prefixes while it MUST initiate an alarm and declare | towards those prefixes while it MUST initiate an alarm and declare | |||
| misconfiguration. | misconfiguration. | |||
| A flood reflector MUST NOT set the attached bit on its LSPs. | A flood reflector MUST NOT set the attached bit on its LSPs. | |||
| In certain cases where reflectors are attached to same broadcast | In certain cases where reflectors are attached to the same broadcast | |||
| medium, and where some other L2 router, which is neither a flood | medium, and where some other L2 router that is neither a flood | |||
| reflector nor a flood reflector client (a "non-FR router"), attaches | reflector nor a flood reflector client (a "non-FR router", i.e., a | |||
| to the same broadcast medium, flooding between the reflectors in | router not participating in flood reflection) attaches to the same | |||
| question might not succeed, potentially partitioning the flood | broadcast medium, flooding between the reflectors in question might | |||
| reflection domain. This could happen specifically in the event that | not succeed, potentially partitioning the flood reflection domain. | |||
| the non-FR router is chosen as the designated intermediate system | This could happen specifically in the event that the non-FR router is | |||
| ("DIS", the designated router). Since, per Section 4.6, a flood | chosen as the Designated Intermediate System (DIS) -- the designated | |||
| reflector MUST NOT form an adjacency with a non-FR router, the flood | router. Since, per Section 4.6, a flood reflector MUST NOT form an | |||
| reflector(s) will not be represented in the pseudo-node. | adjacency with a non-FR router, the flood reflector(s) will not be | |||
| represented in the pseudo-node. | ||||
| To avoid this situation, it is RECOMMENDED that flood reflectors not | To avoid this situation, it is RECOMMENDED that flood reflectors not | |||
| be deployed on the same broadcast medium as non-FR routers. | be deployed on the same broadcast medium as non-FR routers. | |||
| A router discovering such condition MUST initiate an alarm and | A router discovering such condition MUST initiate an alarm and | |||
| declare misconfiguration. | declare misconfiguration. | |||
| 8. IANA Considerations | 8. IANA Considerations | |||
| This document requests allocation for the following IS-IS TLVs and | IANA has assigned the following IS-IS TLVs and sub-TLVs and has | |||
| Sub-TLVs, and requests creation of a new registry. | created a new registry. | |||
| 8.1. New IS-IS TLV Codepoint | 8.1. New IS-IS TLV Codepoint | |||
| This document requests the following IS-IS TLV under the IS-IS Top- | The following IS-IS TLV has been registered in the "IS-IS Top-Level | |||
| Level TLV Codepoints registry:: | TLV Codepoints" registry: | |||
| Value Name IIH LSP SNP Purge | +=======+==================+=====+=====+=====+=======+ | |||
| ----- --------------------------------- --- --- --- ----- | | Value | Name | IIH | LSP | SNP | Purge | | |||
| 161 Flood Reflection y n n n | +=======+==================+=====+=====+=====+=======+ | |||
| | 161 | Flood Reflection | y | n | n | n | | ||||
| +-------+------------------+-----+-----+-----+-------+ | ||||
| 8.2. Sub TLVs for IS-IS Router CAPABILITY TLV | Table 1: Flood Reflection IS-IS TLV Codepoint | |||
| This document request the following registration in the "sub-TLVs for | 8.2. Sub-TLVs for IS-IS Router CAPABILITY TLV | |||
| IS-IS Router CAPABILITY TLV" registry. | ||||
| Type Description | The following has been registered in the "IS-IS Sub-TLVs for IS-IS | |||
| ---- ----------- | Router CAPABILITY TLV" registry: | |||
| 161 Flood Reflection Discovery | ||||
| 8.3. Sub-sub TLVs for Flood Reflection Discovery sub-TLV | +======+============================+ | |||
| | Type | Description | | ||||
| +======+============================+ | ||||
| | 161 | Flood Reflection Discovery | | ||||
| +------+----------------------------+ | ||||
| This document requests creation of a new registry named "Sub-sub TLVs | Table 2: IS-IS Router CAPABILITY TLV | |||
| for Flood Reflection Discovery sub-TLV" under the "IS-IS TLV | ||||
| Codepoints" grouping. The Registration Procedures for this registry | 8.3. Sub-Sub-TLVs for Flood Reflection Discovery Sub-TLV | |||
| are Expert Review, following the common expert review guidance given | ||||
| IANA has created a new registry named "IS-IS Sub-Sub-TLVs for Flood | ||||
| Reflection Discovery Sub-TLV" under the "IS-IS TLV Codepoints" | ||||
| grouping. The registration procedure for this registry is Expert | ||||
| Review [RFC8126], following the common expert review guidance given | ||||
| for the grouping. | for the grouping. | |||
| The range of values in this registry is 0-255. The registry should | The range of values in this registry is 0-255. The registry contains | |||
| be seeded with the following initial registration: | the following initial registration: | |||
| Type Description | +======+===========================================================+ | |||
| ---- ----------- | | Type | Description | | |||
| 161 Flood Reflection Discovery Tunnel Encapsulation Attribute | +======+===========================================================+ | |||
| | 161 | Flood Reflection Discovery Tunnel Encapsulation Attribute | | ||||
| +------+-----------------------------------------------------------+ | ||||
| 8.4. Sub TLVs for TLVs Advertising Neighbor Information | Table 3: IS-IS Sub-Sub-TLVs for Flood Reflection Discovery Sub-TLV | |||
| This document requests the following registration in the "IS-IS Sub- | 8.4. Sub-TLVs for TLVs Advertising Neighbor Information | |||
| TLVs for TLVs Advertising Neighbor Information" registry. | ||||
| Type Description 22 23 25 141 222 223 | The following has been registered in the "IS-IS Sub-TLVs for TLVs | |||
| ---- -------------------------------- --- --- --- --- --- --- | Advertising Neighbor Information" registry; | |||
| 161 Flood Reflector Adjacency y y n y y y | ||||
| +======+===========================+====+====+====+=====+=====+=====+ | ||||
| | Type | Description | 22 | 23 | 25 | 141 | 222 | 223 | | ||||
| +======+===========================+====+====+====+=====+=====+=====+ | ||||
| | 161 | Flood Reflector | y | y | n | y | y | y | | ||||
| | | Adjacency | | | | | | | | ||||
| +------+---------------------------+----+----+----+-----+-----+-----+ | ||||
| Table 4: IS-IS Sub-TLVs for TLVs Advertising Neighbor Information | ||||
| 9. Security Considerations | 9. Security Considerations | |||
| This document uses flood reflection tunnels to carry IS-IS control | This document uses flood reflection tunnels to carry IS-IS control | |||
| traffic. If an attacker can inject traffic into such a tunnel, the | traffic. If an attacker can inject traffic into such a tunnel, the | |||
| consequences could be in the most extreme case the complete | consequences could be (in the most extreme case) the complete | |||
| subversion of the IS-IS level 2 information. Therefore, a mechanism | subversion of the IS-IS Level 2 information. Therefore, a mechanism | |||
| inherent to the tunnel technology should be taken to prevent such | inherent to the tunnel technology should be used to prevent such | |||
| injection. Since the available security procedures will vary by | injection. Since the available security procedures will vary by | |||
| deployment and tunnel type, the details of securing tunnels are | deployment and tunnel type, the details of securing tunnels are | |||
| beyond the scope of this document. | beyond the scope of this document. | |||
| This document specifies information used to form dynamically | This document specifies information used to form dynamically | |||
| discovered shortcut tunnels. If an attacker were able to hijack the | discovered shortcut tunnels. If an attacker were able to hijack the | |||
| endpoint of such a tunnel and form an adjacency, it could divert | endpoint of such a tunnel and form an adjacency, it could divert | |||
| short-cut traffic to itself, placing itself on-path and facilitating | shortcut traffic to itself, placing itself on-path and facilitating | |||
| on-path attacks or could even completely subvert the IS-IS level 2 | on-path attacks, or it could even completely subvert the IS-IS Level | |||
| routing. Therefore, steps should be taken to prevent such capture by | 2 routing. Therefore, steps should be taken to prevent such capture | |||
| using mechanism inherent to the tunnel type used. Since the | by using mechanism inherent to the tunnel type used. Since the | |||
| available security procedures will vary by deployment and tunnel | available security procedures will vary by deployment and tunnel | |||
| type, the details of securing tunnels are beyond the scope of this | type, the details of securing tunnels are beyond the scope of this | |||
| document. | document. | |||
| Additionally, the usual IS-IS security mechanisms [RFC5304] SHOULD be | Additionally, the usual IS-IS security mechanisms [RFC5304] SHOULD be | |||
| deployed to prevent misrepresentation of routing information by an | deployed to prevent misrepresentation of routing information by an | |||
| attacker in case a tunnel is compromised if the tunnel itself does | attacker in case a tunnel is compromised and the tunnel itself does | |||
| not provide mechanisms strong enough guaranteeing the integrity of | not provide mechanisms strong enough to guarantee the integrity of | |||
| the messages exchanged. | the messages exchanged. | |||
| 10. Acknowledgements | 10. References | |||
| The authors thank Shraddha Hegde, Peter Psenak, Acee Lindem, Robert | ||||
| Raszuk and Les Ginsberg for their thorough review and detailed | ||||
| discussions. Thanks are also extended to Michael Richardson for an | ||||
| excellent routing directorate review. John Scudder ultimately spent | ||||
| significant time helping to make the document more comprehensible and | ||||
| coherent. | ||||
| 11. References | ||||
| 11.1. Informative References | ||||
| [ID.draft-ietf-idr-bgp-optimal-route-reflection-28] | ||||
| Raszuk et al., R., "BGP Optimal Route Reflection", July | ||||
| 2019, <https://www.ietf.org/id/draft-ietf-idr-bgp-optimal- | ||||
| route-reflection-28.txt>. | ||||
| [RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A | ||||
| Border Gateway Protocol 4 (BGP-4)", RFC 4271, | ||||
| DOI 10.17487/RFC4271, January 2006, | ||||
| <https://www.rfc-editor.org/info/rfc4271>. | ||||
| [RFC4456] Bates, T., Chen, E., and R. Chandra, "BGP Route | ||||
| Reflection: An Alternative to Full Mesh Internal BGP | ||||
| (IBGP)", RFC 4456, DOI 10.17487/RFC4456, April 2006, | ||||
| <https://www.rfc-editor.org/info/rfc4456>. | ||||
| [RFC8099] Chen, H., Li, R., Retana, A., Yang, Y., and Z. Liu, "OSPF | 10.1. Normative References | |||
| Topology-Transparent Zone", RFC 8099, | ||||
| DOI 10.17487/RFC8099, February 2017, | ||||
| <https://www.rfc-editor.org/info/rfc8099>. | ||||
| 11.2. Normative References | [ISO10589] ISO, "Information technology - Telecommunications and | |||
| information exchange between systems - Intermediate System | ||||
| to Intermediate System intra-domain routeing information | ||||
| exchange protocol for use in conjunction with the protocol | ||||
| for providing the connectionless-mode network service (ISO | ||||
| 8473)", Second Edition, ISO/IEC 10589:2002, November 2002. | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC5302] Li, T., Smit, H., and T. Przygienda, "Domain-Wide Prefix | [RFC5302] Li, T., Smit, H., and T. Przygienda, "Domain-Wide Prefix | |||
| Distribution with Two-Level IS-IS", RFC 5302, | Distribution with Two-Level IS-IS", RFC 5302, | |||
| DOI 10.17487/RFC5302, October 2008, | DOI 10.17487/RFC5302, October 2008, | |||
| <https://www.rfc-editor.org/info/rfc5302>. | <https://www.rfc-editor.org/info/rfc5302>. | |||
| skipping to change at page 21, line 46 ¶ | skipping to change at line 975 ¶ | |||
| [RFC7775] Ginsberg, L., Litkowski, S., and S. Previdi, "IS-IS Route | [RFC7775] Ginsberg, L., Litkowski, S., and S. Previdi, "IS-IS Route | |||
| Preference for Extended IP and IPv6 Reachability", | Preference for Extended IP and IPv6 Reachability", | |||
| RFC 7775, DOI 10.17487/RFC7775, February 2016, | RFC 7775, DOI 10.17487/RFC7775, February 2016, | |||
| <https://www.rfc-editor.org/info/rfc7775>. | <https://www.rfc-editor.org/info/rfc7775>. | |||
| [RFC7981] Ginsberg, L., Previdi, S., and M. Chen, "IS-IS Extensions | [RFC7981] Ginsberg, L., Previdi, S., and M. Chen, "IS-IS Extensions | |||
| for Advertising Router Information", RFC 7981, | for Advertising Router Information", RFC 7981, | |||
| DOI 10.17487/RFC7981, October 2016, | DOI 10.17487/RFC7981, October 2016, | |||
| <https://www.rfc-editor.org/info/rfc7981>. | <https://www.rfc-editor.org/info/rfc7981>. | |||
| [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | ||||
| Writing an IANA Considerations Section in RFCs", BCP 26, | ||||
| RFC 8126, DOI 10.17487/RFC8126, June 2017, | ||||
| <https://www.rfc-editor.org/info/rfc8126>. | ||||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| [RFC9012] Patel, K., Van de Velde, G., Sangli, S., and J. Scudder, | [RFC9012] Patel, K., Van de Velde, G., Sangli, S., and J. Scudder, | |||
| "The BGP Tunnel Encapsulation Attribute", RFC 9012, | "The BGP Tunnel Encapsulation Attribute", RFC 9012, | |||
| DOI 10.17487/RFC9012, April 2021, | DOI 10.17487/RFC9012, April 2021, | |||
| <https://www.rfc-editor.org/info/rfc9012>. | <https://www.rfc-editor.org/info/rfc9012>. | |||
| 10.2. Informative References | ||||
| [RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A | ||||
| Border Gateway Protocol 4 (BGP-4)", RFC 4271, | ||||
| DOI 10.17487/RFC4271, January 2006, | ||||
| <https://www.rfc-editor.org/info/rfc4271>. | ||||
| [RFC4456] Bates, T., Chen, E., and R. Chandra, "BGP Route | ||||
| Reflection: An Alternative to Full Mesh Internal BGP | ||||
| (IBGP)", RFC 4456, DOI 10.17487/RFC4456, April 2006, | ||||
| <https://www.rfc-editor.org/info/rfc4456>. | ||||
| [RFC8099] Chen, H., Li, R., Retana, A., Yang, Y., and Z. Liu, "OSPF | ||||
| Topology-Transparent Zone", RFC 8099, | ||||
| DOI 10.17487/RFC8099, February 2017, | ||||
| <https://www.rfc-editor.org/info/rfc8099>. | ||||
| [RFC9107] Raszuk, R., Ed., Decraene, B., Ed., Cassar, C., Åman, E., | ||||
| and K. Wang, "BGP Optimal Route Reflection (BGP ORR)", | ||||
| RFC 9107, DOI 10.17487/RFC9107, August 2021, | ||||
| <https://www.rfc-editor.org/info/rfc9107>. | ||||
| Acknowledgements | ||||
| The authors thank Shraddha Hegde, Peter Psenak, Acee Lindem, Robert | ||||
| Raszuk, and Les Ginsberg for their thorough review and detailed | ||||
| discussions. Thanks are also extended to Michael Richardson for an | ||||
| excellent routing directorate review. John Scudder ultimately spent | ||||
| significant time helping to make the document more comprehensible and | ||||
| coherent. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Tony Przygienda (editor) | Tony Przygienda (editor) | |||
| Juniper | Juniper | |||
| 1137 Innovation Way | 1137 Innovation Way | |||
| Sunnyvale, CA | Sunnyvale, CA | |||
| United States of America | United States of America | |||
| Email: prz@juniper.net | Email: prz@juniper.net | |||
| Chris Bowers | Chris Bowers | |||
| Juniper | Individual | |||
| 1137 Innovation Way | Email: chrisbowers.ietf@gmail.com | |||
| Sunnyvale, CA | ||||
| United States of America | ||||
| Email: cbowers@juniper.net | ||||
| Yiu Lee | Yiu Lee | |||
| Comcast | Comcast | |||
| 1800 Bishops Gate Blvd | 1800 Bishops Gate Blvd | |||
| Mount Laurel, NJ 08054 | Mount Laurel, NJ 08054 | |||
| United States of America | United States of America | |||
| Email: Yiu_Lee@comcast.com | Email: Yiu_Lee@comcast.com | |||
| Alankar Sharma | Alankar Sharma | |||
| Individual | Individual | |||
| End of changes. 112 change blocks. | ||||
| 345 lines changed or deleted | 391 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||