| < draft-ietf-spring-sr-replication-segment-05.txt | draft-ietf-spring-sr-replication-segment-06.txt > | |||
|---|---|---|---|---|
| Network Working Group D. Voyer, Ed. | Network Working Group D. Voyer, Ed. | |||
| Internet-Draft Bell Canada | Internet-Draft Bell Canada | |||
| Intended status: Standards Track C. Filsfils | Intended status: Standards Track C. Filsfils | |||
| Expires: 21 February 2022 R. Parekh | Expires: 28 April 2022 R. Parekh | |||
| Cisco Systems, Inc. | Cisco Systems, Inc. | |||
| H. Bidgoli | H. Bidgoli | |||
| Nokia | Nokia | |||
| Z. Zhang | Z. Zhang | |||
| Juniper Networks | Juniper Networks | |||
| 20 August 2021 | 25 October 2021 | |||
| SR Replication Segment for Multi-point Service Delivery | SR Replication Segment for Multi-point Service Delivery | |||
| draft-ietf-spring-sr-replication-segment-05 | draft-ietf-spring-sr-replication-segment-06 | |||
| Abstract | Abstract | |||
| This document describes the SR Replication segment for Multi-point | This document describes the SR Replication segment for Multi-point | |||
| service delivery. A SR Replication segment allows a packet to be | service delivery. A SR Replication segment allows a packet to be | |||
| replicated from a Replication Node to downstream nodes. | replicated from a Replication Node to downstream nodes. | |||
| Requirements Language | Requirements Language | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| skipping to change at page 1, line 44 ¶ | skipping to change at page 1, line 44 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on 21 February 2022. | This Internet-Draft will expire on 28 April 2022. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2021 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 (https://trustee.ietf.org/ | |||
| license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
| Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
| skipping to change at page 2, line 27 ¶ | skipping to change at page 2, line 27 ¶ | |||
| 2. Replication Segment . . . . . . . . . . . . . . . . . . . . . 3 | 2. Replication Segment . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2.1. SR-MPLS data plane . . . . . . . . . . . . . . . . . . . 4 | 2.1. SR-MPLS data plane . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.2. SRv6 data plane . . . . . . . . . . . . . . . . . . . . . 5 | 2.2. SRv6 data plane . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6 | 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 5. Security Considerations . . . . . . . . . . . . . . . . . . . 6 | 5. Security Considerations . . . . . . . . . . . . . . . . . . . 6 | |||
| 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 6 | 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 7. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 6 | 7. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 8.1. Normative References . . . . . . . . . . . . . . . . . . 7 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 7 | |||
| 8.2. Informative References . . . . . . . . . . . . . . . . . 7 | 8.2. Informative References . . . . . . . . . . . . . . . . . 8 | |||
| Appendix A. Illustration of a Replication Segment . . . . . . . 8 | Appendix A. Illustration of a Replication Segment . . . . . . . 8 | |||
| A.1. SR-MPLS . . . . . . . . . . . . . . . . . . . . . . . . . 9 | A.1. SR-MPLS . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| A.2. SRv6 . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | A.2. SRv6 . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 1. Introduction | 1. Introduction | |||
| We define a new type of segment for Segment Routing [RFC8402], called | We define a new type of segment for Segment Routing [RFC8402], called | |||
| Replication segment, which allows a node (henceforth called as | Replication segment, which allows a node (henceforth called as | |||
| Replication Node) to replicate packets to a set of other nodes | Replication Node) to replicate packets to a set of other nodes | |||
| (called Downstream Nodes) in a Segment Routing Domain. Replication | (called Downstream Nodes) in a Segment Routing Domain. Replication | |||
| segments provide building blocks for Point-to-Multipoint Service | segments provide building blocks for Point-to-Multipoint Service | |||
| delivery via SR Point-to-Multipoint (SR P2MP) policy. A Replication | delivery via SR Point-to-Multipoint (SR P2MP) policy. A Replication | |||
| segment can replicate packet to directly connected nodes or to | segment can replicate packet to directly connected nodes or to | |||
| skipping to change at page 4, line 38 ¶ | skipping to change at page 4, line 38 ¶ | |||
| Replication segment will not have any Replication State and the | Replication segment will not have any Replication State and the | |||
| operation is NEXT. At an egress node, the Replication SID MAY be | operation is NEXT. At an egress node, the Replication SID MAY be | |||
| used to identify that portion of the multi-point service. Notice | used to identify that portion of the multi-point service. Notice | |||
| that the segment on the leaf node is still referred to as a | that the segment on the leaf node is still referred to as a | |||
| Replication segment for the purpose of generalization. | Replication segment for the purpose of generalization. | |||
| A node can be a bud node, i.e. it is a Replication Node and a leaf | A node can be a bud node, i.e. it is a Replication Node and a leaf | |||
| node of a multi-point service at the same time | node of a multi-point service at the same time | |||
| [I-D.ietf-pim-sr-p2mp-policy]. | [I-D.ietf-pim-sr-p2mp-policy]. | |||
| There MUST not be any topological SID after a Replication SID in a | ||||
| packet. Otherwise, the behavior at Downstream nodes of a Replication | ||||
| segment is undefined and outside the scope of this document. | ||||
| 2.1. SR-MPLS data plane | 2.1. SR-MPLS data plane | |||
| When the Active Segment is a Replication SID, the processing results | When the Active Segment is a Replication SID, the processing results | |||
| in a POP operation and lookup of the associated Replication state. | in a POP operation and lookup of the associated Replication state. | |||
| For each replication in the Replication state, the operation is a | For each replication in the Replication state, the operation is a | |||
| PUSH of the downstream Replication SID and an optional segment list | PUSH of the downstream Replication SID and an optional segment list | |||
| on to the packet which is forwarded to the Downstream node. For leaf | on to the packet which is forwarded to the Downstream node. For leaf | |||
| nodes the inner packet is forwarded as per local configuration. | nodes the inner packet is forwarded as per local configuration. | |||
| When the root of a multi-point service steers a packet to a | When the root of a multi-point service steers a packet to a | |||
| skipping to change at page 5, line 18 ¶ | skipping to change at page 5, line 12 ¶ | |||
| the replication SID and an optional segment list on to the packet | the replication SID and an optional segment list on to the packet | |||
| which is forwarded to the downstream node. | which is forwarded to the downstream node. | |||
| 2.2. SRv6 data plane | 2.2. SRv6 data plane | |||
| In SRv6 [RFC8986], the "Endpoint with replication" behavior | In SRv6 [RFC8986], the "Endpoint with replication" behavior | |||
| (End.Replicate for short) replicates a packet and forwards the packet | (End.Replicate for short) replicates a packet and forwards the packet | |||
| according to a Replication state. | according to a Replication state. | |||
| When processing a packet destined to a local Replication-SID, the | When processing a packet destined to a local Replication-SID, the | |||
| packet is replicated to Downstream nodes in the associated | packet is replicated to Downstream nodes and/or locally delivered off | |||
| Replication state. For replication, the outer header is re-used, and | tree (when this is a bud/leaf node) according to the associated | |||
| replication state. For replication, the outer header is re-used, and | ||||
| the Downstream Replication SID is written into the outer IPv6 header | the Downstream Replication SID is written into the outer IPv6 header | |||
| destination address.If required, an optional segment list is used to | destination address. If required, an optional segment list may be | |||
| encapsulate the replicated packet via H.Encaps. For a leaf node, the | used on some branches using H.Encaps.Red (while some other branches | |||
| packet is decapsulated and the inner packet is forwarded as per local | may not need that). Note that this H.Encaps.Red is independent from | |||
| configuration. | the replication segment - it is just used to steer the replicated | |||
| traffic on a traffic engineered path to a Downstream node. | ||||
| When the root of a multi-point service steers a packet into a | The above also applies when the Replication segment is for the Root | |||
| Replication segment, for each replication, H.Encaps is used to | node, whose upstream node has placed the Replication-SID in the | |||
| encapsulate the packet with the segment list to the Downstream node . | header. A local application (e.g. MVPN/EVPN) may also apply | |||
| H.Encaps.Red and then steer the resulting traffic into the segment. | ||||
| Again note that the H.Encaps.Red is independent of the Replication | ||||
| segment - it is the action of the application (e.g. MVPN/EVPN | ||||
| service). If the service is on a Root node, the two H.Encaps | ||||
| mentioned, one for the service and other in the previous paragraph | ||||
| for replication to Downstream node SHOULD be combined for | ||||
| optimization (to avoid extra IPv6 encapsulation). | ||||
| An End.Replicate SID MUST only appear as the ultimate SID in a SID- | For the local delivery on a bud/leaf node, the action associated with | |||
| list. An implementation that receives a packet destined to a locally | Replication-SID is "look at next SID in SRH". The next SID could be | |||
| instantiated End.Replicate SID that is not the ultimate segment | a SID with End.DT2/4/6 local behavior (equivalent of MVPN/EVPN PMSI | |||
| SHOULD reply with ICMP Parameter Problem error (Erroneous header | label in case of tunnel sharing across multiple VPNs). There may | |||
| field encountered) and discard the packet. | also not be a next SID (e.g. MVPN/EVPN with one tunnel per VPN), in | |||
| which case the Replication-SID is then equivalent to End.DT2/4/6. | ||||
| Note that decapsulation is not an inherent action of a Replication | ||||
| segment even on a bud/leaf node. | ||||
| 3. Use Cases | 3. Use Cases | |||
| In the simplest use case, a single Replication segment includes the | In the simplest use case, a single Replication segment includes the | |||
| root node of a multi-point service and the egress/leaf nodes of the | root node of a multi-point service and the egress/leaf nodes of the | |||
| service as all the Downstream Nodes. This achieves Ingress | service as all the Downstream Nodes. This achieves Ingress | |||
| Replication [RFC7988] that has been widely used for MVPN [RFC6513] | Replication [RFC7988] that has been widely used for MVPN [RFC6513] | |||
| and EVPN [RFC7432] BUM (Broadcast, Unknown and Multicast) traffic. | and EVPN [RFC7432] BUM (Broadcast, Unknown and Multicast) traffic. | |||
| Replication segments can also be used as building blocks for | Replication segments can also be used as building blocks for | |||
| skipping to change at page 8, line 17 ¶ | skipping to change at page 8, line 24 ¶ | |||
| srv6-net-pgm-illustration-04.txt>. | srv6-net-pgm-illustration-04.txt>. | |||
| [I-D.ietf-lsr-flex-algo] | [I-D.ietf-lsr-flex-algo] | |||
| Psenak, P., Hegde, S., Filsfils, C., Talaulikar, K., and | Psenak, P., Hegde, S., Filsfils, C., Talaulikar, K., and | |||
| A. Gulko, "IGP Flexible Algorithm", Work in Progress, | A. Gulko, "IGP Flexible Algorithm", Work in Progress, | |||
| Internet-Draft, draft-ietf-lsr-flex-algo-17, 6 July 2021, | Internet-Draft, draft-ietf-lsr-flex-algo-17, 6 July 2021, | |||
| <https://www.ietf.org/archive/id/draft-ietf-lsr-flex-algo- | <https://www.ietf.org/archive/id/draft-ietf-lsr-flex-algo- | |||
| 17.txt>. | 17.txt>. | |||
| [I-D.ietf-pim-sr-p2mp-policy] | [I-D.ietf-pim-sr-p2mp-policy] | |||
| Voyer, D., Filsfils, C., Parekh, R., Bidgoli, H., and Z. | (editor), D. V., Filsfils, C., Parekh, R., Bidgoli, H., | |||
| Zhang, "Segment Routing Point-to-Multipoint Policy", Work | and Z. Zhang, "Segment Routing Point-to-Multipoint | |||
| in Progress, Internet-Draft, draft-ietf-pim-sr-p2mp- | Policy", Work in Progress, Internet-Draft, draft-ietf-pim- | |||
| policy-02, 19 February 2021, | sr-p2mp-policy-03, 23 August 2021, | |||
| <https://www.ietf.org/archive/id/draft-ietf-pim-sr-p2mp- | <https://www.ietf.org/archive/id/draft-ietf-pim-sr-p2mp- | |||
| policy-02.txt>. | policy-03.txt>. | |||
| [RFC6513] Rosen, E., Ed. and R. Aggarwal, Ed., "Multicast in MPLS/ | [RFC6513] Rosen, E., Ed. and R. Aggarwal, Ed., "Multicast in MPLS/ | |||
| BGP IP VPNs", RFC 6513, DOI 10.17487/RFC6513, February | BGP IP VPNs", RFC 6513, DOI 10.17487/RFC6513, February | |||
| 2012, <https://www.rfc-editor.org/info/rfc6513>. | 2012, <https://www.rfc-editor.org/info/rfc6513>. | |||
| [RFC7432] Sajassi, A., Ed., Aggarwal, R., Bitar, N., Isaac, A., | [RFC7432] Sajassi, A., Ed., Aggarwal, R., Bitar, N., Isaac, A., | |||
| Uttaro, J., Drake, J., and W. Henderickx, "BGP MPLS-Based | Uttaro, J., Drake, J., and W. Henderickx, "BGP MPLS-Based | |||
| Ethernet VPN", RFC 7432, DOI 10.17487/RFC7432, February | Ethernet VPN", RFC 7432, DOI 10.17487/RFC7432, February | |||
| 2015, <https://www.rfc-editor.org/info/rfc7432>. | 2015, <https://www.rfc-editor.org/info/rfc7432>. | |||
| End of changes. 13 change blocks. | ||||
| 29 lines changed or deleted | 37 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||