draft-ietf-bess-nsh-bgp-control-plane-09.txt | draft-ietf-bess-nsh-bgp-control-plane-10.txt | |||
---|---|---|---|---|
BESS Working Group A. Farrel | BESS Working Group A. Farrel | |||
Internet-Draft Old Dog Consulting | Internet-Draft Old Dog Consulting | |||
Intended status: Standards Track J. Drake | Intended status: Standards Track J. Drake | |||
Expires: September 7, 2019 E. Rosen | Expires: October 28, 2019 E. Rosen | |||
Juniper Networks | Juniper Networks | |||
J. Uttaro | J. Uttaro | |||
AT&T | AT&T | |||
L. Jalil | L. Jalil | |||
Verizon | Verizon | |||
March 6, 2019 | April 26, 2019 | |||
BGP Control Plane for NSH SFC | BGP Control Plane for NSH SFC | |||
draft-ietf-bess-nsh-bgp-control-plane-09 | draft-ietf-bess-nsh-bgp-control-plane-10 | |||
Abstract | Abstract | |||
This document describes the use of BGP as a control plane for | This document describes the use of BGP as a control plane for | |||
networks that support Service Function Chaining (SFC). The document | networks that support Service Function Chaining (SFC). The document | |||
introduces a new BGP address family called the SFC AFI/SAFI with two | introduces a new BGP address family called the SFC AFI/SAFI with two | |||
route types. One route type is originated by a node to advertise | route types. One route type is originated by a node to advertise | |||
that it hosts a particular instance of a specified service function. | that it hosts a particular instance of a specified service function. | |||
This route type also provides "instructions" on how to send a packet | This route type also provides "instructions" on how to send a packet | |||
to the hosting node in a way that indicates that the service function | to the hosting node in a way that indicates that the service function | |||
skipping to change at page 1, line 49 ¶ | skipping to change at page 1, line 49 ¶ | |||
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 September 7, 2019. | This Internet-Draft will expire on October 28, 2019. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2019 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 2, line 34 ¶ | skipping to change at page 2, line 34 ¶ | |||
1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 5 | 1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
2.1. Overview of Service Function Chaining . . . . . . . . . . 6 | 2.1. Overview of Service Function Chaining . . . . . . . . . . 6 | |||
2.2. Control Plane Overview . . . . . . . . . . . . . . . . . 7 | 2.2. Control Plane Overview . . . . . . . . . . . . . . . . . 7 | |||
3. BGP SFC Routes . . . . . . . . . . . . . . . . . . . . . . . 11 | 3. BGP SFC Routes . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
3.1. Service Function Instance Route (SFIR) . . . . . . . . . 12 | 3.1. Service Function Instance Route (SFIR) . . . . . . . . . 12 | |||
3.1.1. SFI Pool Identifier Extended Community . . . . . . . 13 | 3.1.1. SFI Pool Identifier Extended Community . . . . . . . 13 | |||
3.1.2. MPLS Mixed Swapping/Stacking Extended Community . . . 14 | 3.1.2. MPLS Mixed Swapping/Stacking Extended Community . . . 14 | |||
3.2. Service Function Path Route (SFPR) . . . . . . . . . . . 14 | 3.2. Service Function Path Route (SFPR) . . . . . . . . . . . 14 | |||
3.2.1. The SFP Attribute . . . . . . . . . . . . . . . . . . 15 | 3.2.1. The SFP Attribute . . . . . . . . . . . . . . . . . . 15 | |||
3.2.2. General Rules For The SFP Attribute . . . . . . . . . 20 | 3.2.2. General Rules For The SFP Attribute . . . . . . . . . 21 | |||
4. Mode of Operation . . . . . . . . . . . . . . . . . . . . . . 21 | 4. Mode of Operation . . . . . . . . . . . . . . . . . . . . . . 22 | |||
4.1. Route Targets . . . . . . . . . . . . . . . . . . . . . . 21 | 4.1. Route Targets . . . . . . . . . . . . . . . . . . . . . . 22 | |||
4.2. Service Function Instance Routes . . . . . . . . . . . . 21 | 4.2. Service Function Instance Routes . . . . . . . . . . . . 22 | |||
4.3. Service Function Path Routes . . . . . . . . . . . . . . 21 | 4.3. Service Function Path Routes . . . . . . . . . . . . . . 22 | |||
4.4. Classifier Operation . . . . . . . . . . . . . . . . . . 23 | 4.4. Classifier Operation . . . . . . . . . . . . . . . . . . 24 | |||
4.5. Service Function Forwarder Operation . . . . . . . . . . 24 | 4.5. Service Function Forwarder Operation . . . . . . . . . . 25 | |||
4.5.1. Processing With 'Gaps' in the SI Sequence . . . . . . 25 | 4.5.1. Processing With 'Gaps' in the SI Sequence . . . . . . 26 | |||
5. Selection in Service Function Paths . . . . . . . . . . . . . 26 | 5. Selection in Service Function Paths . . . . . . . . . . . . . 27 | |||
6. Looping, Jumping, and Branching . . . . . . . . . . . . . . . 28 | 6. Looping, Jumping, and Branching . . . . . . . . . . . . . . . 29 | |||
6.1. Protocol Control of Looping, Jumping, and Branching . . . 28 | 6.1. Protocol Control of Looping, Jumping, and Branching . . . 29 | |||
6.2. Implications for Forwarding State . . . . . . . . . . . . 29 | 6.2. Implications for Forwarding State . . . . . . . . . . . . 30 | |||
7. Advanced Topics . . . . . . . . . . . . . . . . . . . . . . . 29 | 7. Advanced Topics . . . . . . . . . . . . . . . . . . . . . . . 30 | |||
7.1. Correlating Service Function Path Instances . . . . . . . 29 | 7.1. Correlating Service Function Path Instances . . . . . . . 30 | |||
7.2. Considerations for Stateful Service Functions . . . . . . 30 | 7.2. Considerations for Stateful Service Functions . . . . . . 31 | |||
7.3. VPN Considerations and Private Service Functions . . . . 31 | 7.3. VPN Considerations and Private Service Functions . . . . 32 | |||
7.4. Flow Spec for SFC Classifiers . . . . . . . . . . . . . . 32 | 7.4. Flow Spec for SFC Classifiers . . . . . . . . . . . . . . 33 | |||
7.5. Choice of Data Plane SPI/SI Representation . . . . . . . 33 | 7.5. Choice of Data Plane SPI/SI Representation . . . . . . . 34 | |||
7.5.1. MPLS Representation of the SPI/SI . . . . . . . . . . 34 | 7.5.1. MPLS Representation of the SPI/SI . . . . . . . . . . 35 | |||
7.6. MPLS Label Swapping/Stacking Operation . . . . . . . . . 34 | 7.6. MPLS Label Swapping/Stacking Operation . . . . . . . . . 35 | |||
7.7. Support for MPLS-Encapsulated NSH Packets . . . . . . . . 35 | 7.7. Support for MPLS-Encapsulated NSH Packets . . . . . . . . 36 | |||
8. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 35 | 8. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 36 | |||
8.1. Example Explicit SFP With No Choices . . . . . . . . . . 37 | 8.1. Example Explicit SFP With No Choices . . . . . . . . . . 38 | |||
8.2. Example SFP With Choice of SFIs . . . . . . . . . . . . . 37 | 8.2. Example SFP With Choice of SFIs . . . . . . . . . . . . . 38 | |||
8.3. Example SFP With Open Choice of SFIs . . . . . . . . . . 38 | 8.3. Example SFP With Open Choice of SFIs . . . . . . . . . . 39 | |||
8.4. Example SFP With Choice of SFTs . . . . . . . . . . . . . 38 | 8.4. Example SFP With Choice of SFTs . . . . . . . . . . . . . 39 | |||
8.5. Example Correlated Bidirectional SFPs . . . . . . . . . . 39 | 8.5. Example Correlated Bidirectional SFPs . . . . . . . . . . 40 | |||
8.6. Example Correlated Asymmetrical Bidirectional SFPs . . . 39 | 8.6. Example Correlated Asymmetrical Bidirectional SFPs . . . 40 | |||
8.7. Example Looping in an SFP . . . . . . . . . . . . . . . . 40 | 8.7. Example Looping in an SFP . . . . . . . . . . . . . . . . 41 | |||
8.8. Example Branching in an SFP . . . . . . . . . . . . . . . 41 | 8.8. Example Branching in an SFP . . . . . . . . . . . . . . . 42 | |||
8.9. Examples of SFPs with Stateful Service Functions . . . . 41 | 8.9. Examples of SFPs with Stateful Service Functions . . . . 42 | |||
8.9.1. Forward and Reverse Choice Made at the SFF . . . . . 42 | 8.9.1. Forward and Reverse Choice Made at the SFF . . . . . 43 | |||
8.9.2. Parallel End-to-End SFPs with Shared SFF . . . . . . 43 | 8.9.2. Parallel End-to-End SFPs with Shared SFF . . . . . . 44 | |||
8.9.3. Parallel End-to-End SFPs with Separate SFFs . . . . . 45 | 8.9.3. Parallel End-to-End SFPs with Separate SFFs . . . . . 46 | |||
8.9.4. Parallel SFPs Downstream of the Choice . . . . . . . 47 | 8.9.4. Parallel SFPs Downstream of the Choice . . . . . . . 48 | |||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 50 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 51 | |||
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 51 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 52 | |||
10.1. New BGP AF/SAFI . . . . . . . . . . . . . . . . . . . . 51 | 10.1. New BGP AF/SAFI . . . . . . . . . . . . . . . . . . . . 52 | |||
10.2. New BGP Path Attribute . . . . . . . . . . . . . . . . . 51 | 10.2. New BGP Path Attribute . . . . . . . . . . . . . . . . . 52 | |||
10.3. New SFP Attribute TLVs Type Registry . . . . . . . . . . 51 | 10.3. New SFP Attribute TLVs Type Registry . . . . . . . . . . 52 | |||
10.4. New SFP Association Type Registry . . . . . . . . . . . 52 | 10.4. New SFP Association Type Registry . . . . . . . . . . . 53 | |||
10.5. New Service Function Type Registry . . . . . . . . . . . 53 | 10.5. New Service Function Type Registry . . . . . . . . . . . 54 | |||
10.6. New Generic Transitive Experimental Use Extended | 10.6. New Generic Transitive Experimental Use Extended | |||
Community Sub-Types . . . . . . . . . . . . . . . . . . 54 | Community Sub-Types . . . . . . . . . . . . . . . . . . 55 | |||
10.7. New BGP Transitive Extended Community Types . . . . . . 54 | 10.7. New BGP Transitive Extended Community Types . . . . . . 55 | |||
10.8. SPI/SI Representation . . . . . . . . . . . . . . . . . 54 | 10.8. SPI/SI Representation . . . . . . . . . . . . . . . . . 55 | |||
11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 54 | 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 55 | |||
12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 55 | 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 56 | |||
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 55 | 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 56 | |||
13.1. Normative References . . . . . . . . . . . . . . . . . . 55 | 13.1. Normative References . . . . . . . . . . . . . . . . . . 56 | |||
13.2. Informative References . . . . . . . . . . . . . . . . . 56 | 13.2. Informative References . . . . . . . . . . . . . . . . . 57 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 56 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 57 | |||
1. Introduction | 1. Introduction | |||
As described in [RFC7498], the delivery of end-to-end services can | As described in [RFC7498], the delivery of end-to-end services can | |||
require a packet to pass through a series of Service Functions (SFs) | require a packet to pass through a series of Service Functions (SFs) | |||
(e.g., WAN and application accelerators, Deep Packet Inspection (DPI) | (e.g., WAN and application accelerators, Deep Packet Inspection (DPI) | |||
engines, firewalls, TCP optimizers, and server load balancers) in a | engines, firewalls, TCP optimizers, and server load balancers) in a | |||
specified order: this is termed "Service Function Chaining" (SFC). | specified order: this is termed "Service Function Chaining" (SFC). | |||
There are a number of issues associated with deploying and | There are a number of issues associated with deploying and | |||
maintaining service function chaining in production networks, which | maintaining service function chaining in production networks, which | |||
skipping to change at page 16, line 24 ¶ | skipping to change at page 16, line 24 ¶ | |||
o The SFP attribute contains a sequence of one or more Hop TLVs. | o The SFP attribute contains a sequence of one or more Hop TLVs. | |||
Each Hop TLV contains all of the information about a single hop in | Each Hop TLV contains all of the information about a single hop in | |||
the SFP. | the SFP. | |||
o Each Hop TLV contains an SI value and a sequence of one or more | o Each Hop TLV contains an SI value and a sequence of one or more | |||
SFT TLVs. Each SFT TLV contains an SFI reference for each | SFT TLVs. Each SFT TLV contains an SFI reference for each | |||
instance of an SF that is allowed at this hop of the SFP for the | instance of an SF that is allowed at this hop of the SFP for the | |||
specific SFT. Each SFI is indicated using the RD with which it is | specific SFT. Each SFI is indicated using the RD with which it is | |||
advertised (we say the SFIR-RD to avoid ambiguity). | advertised (we say the SFIR-RD to avoid ambiguity). | |||
Malformed SFP attributes, or those that are in error in some way, | Section 6 of [RFC4271] describes the handling of malformed BGP | |||
MUST be handled as described in Section 6 of [RFC4271]. | attributes, or those that are in error in some way. [RFC7606] | |||
revises BGP error handling specifically for the for UPDATE message, | ||||
provides guidelines for the authors of documents defining new | ||||
attributes, and revises the error handling procedures for a number of | ||||
existing attributes. This document introduces the SFP attribute and | ||||
so defines error handling as follows: | ||||
o When parsing a message, an unknown Attribute Type code or a length | ||||
that suggests that the attribute is longer than the remaining | ||||
message is treated as a malformed message and the "treat-as- | ||||
withdraw" approach used as per [RFC7606]. | ||||
o When parsing a message that contains an SFP attribute, the | ||||
following cases constitute errors: | ||||
1. Optional bit is set to 0 in SFP attribute. | ||||
2. Transitive bit is set to 0 in SFP attribute. | ||||
3. Unknown TLV type field found in SFP attribute. | ||||
4. TLV length that suggests the TLV extends beyond the end of the | ||||
SFP attribute. | ||||
5. Association TLV contains an unknown SFPR-RD. | ||||
6. No Hop TLV found in the SFP attribute. | ||||
7. No SFT TLV found in a Hop TLV. | ||||
8. Unknown SFIR-RD found in a Hop TLV. | ||||
o The errors listed above are treated as follows: | ||||
1., 2., 6., 7.: The attribute MUST be treated as malformed and | ||||
the "treat-as-withdraw" approach used as per [RFC7606]. | ||||
3.: Unknown TLVs SHOULD be ignored, and message processing SHOULD | ||||
continue. | ||||
4.: Treated as a malformed message and the "treat-as-withdraw" | ||||
approach used as per [RFC7606] | ||||
5., 8.: The absence of an RD with which to corollate is nothing | ||||
more than a soft error. The receiver SHOULD store the | ||||
information from the SFP attribute until a corresponding | ||||
advertisement is received. An implementation MAY time-out such | ||||
stored SFP attributes to avoid becoming over-loaded. | ||||
3.2.1.1. The Association TLV | 3.2.1.1. The Association TLV | |||
The Association TLV is an optional TLV in the SFP attribute. It MAY | The Association TLV is an optional TLV in the SFP attribute. It MAY | |||
be present multiple times. Each occurrence provides an association | be present multiple times. Each occurrence provides an association | |||
with another SFP as advertised in another SFPR. The format of the | with another SFP as advertised in another SFPR. The format of the | |||
Association TLV is shown in Figure 7 | Association TLV is shown in Figure 7 | |||
+--------------------------------------------+ | +--------------------------------------------+ | |||
| Type = 1 (1 octet) | | | Type = 1 (1 octet) | | |||
skipping to change at page 55, line 27 ¶ | skipping to change at page 56, line 27 ¶ | |||
13.1. Normative References | 13.1. Normative References | |||
[I-D.ietf-idr-tunnel-encaps] | [I-D.ietf-idr-tunnel-encaps] | |||
Rosen, E., Patel, K., and G. Velde, "The BGP Tunnel | Rosen, E., Patel, K., and G. Velde, "The BGP Tunnel | |||
Encapsulation Attribute", draft-ietf-idr-tunnel-encaps-11 | Encapsulation Attribute", draft-ietf-idr-tunnel-encaps-11 | |||
(work in progress), February 2019. | (work in progress), February 2019. | |||
[I-D.ietf-mpls-sfc] | [I-D.ietf-mpls-sfc] | |||
Farrel, A., Bryant, S., and J. Drake, "An MPLS-Based | Farrel, A., Bryant, S., and J. Drake, "An MPLS-Based | |||
Forwarding Plane for Service Function Chaining", draft- | Forwarding Plane for Service Function Chaining", draft- | |||
ietf-mpls-sfc-05 (work in progress), February 2019. | ietf-mpls-sfc-07 (work in progress), March 2019. | |||
[I-D.ietf-mpls-sfc-encapsulation] | [I-D.ietf-mpls-sfc-encapsulation] | |||
Malis, A., Bryant, S., Halpern, J., and W. Henderickx, | Malis, A., Bryant, S., Halpern, J., and W. Henderickx, | |||
"MPLS Transport Encapsulation For The SFC NSH", draft- | "MPLS Transport Encapsulation For The SFC NSH", draft- | |||
ietf-mpls-sfc-encapsulation-03 (work in progress), March | ietf-mpls-sfc-encapsulation-04 (work in progress), March | |||
2019. | 2019. | |||
[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>. | |||
[RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A | [RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A | |||
Border Gateway Protocol 4 (BGP-4)", RFC 4271, | Border Gateway Protocol 4 (BGP-4)", RFC 4271, | |||
DOI 10.17487/RFC4271, January 2006, | DOI 10.17487/RFC4271, January 2006, | |||
skipping to change at page 56, line 15 ¶ | skipping to change at page 57, line 15 ¶ | |||
[RFC5575] Marques, P., Sheth, N., Raszuk, R., Greene, B., Mauch, J., | [RFC5575] Marques, P., Sheth, N., Raszuk, R., Greene, B., Mauch, J., | |||
and D. McPherson, "Dissemination of Flow Specification | and D. McPherson, "Dissemination of Flow Specification | |||
Rules", RFC 5575, DOI 10.17487/RFC5575, August 2009, | Rules", RFC 5575, DOI 10.17487/RFC5575, August 2009, | |||
<https://www.rfc-editor.org/info/rfc5575>. | <https://www.rfc-editor.org/info/rfc5575>. | |||
[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>. | |||
[RFC7606] Chen, E., Ed., Scudder, J., Ed., Mohapatra, P., and K. | ||||
Patel, "Revised Error Handling for BGP UPDATE Messages", | ||||
RFC 7606, DOI 10.17487/RFC7606, August 2015, | ||||
<https://www.rfc-editor.org/info/rfc7606>. | ||||
[RFC7665] Halpern, J., Ed. and C. Pignataro, Ed., "Service Function | [RFC7665] Halpern, J., Ed. and C. Pignataro, Ed., "Service Function | |||
Chaining (SFC) Architecture", RFC 7665, | Chaining (SFC) Architecture", RFC 7665, | |||
DOI 10.17487/RFC7665, October 2015, | DOI 10.17487/RFC7665, October 2015, | |||
<https://www.rfc-editor.org/info/rfc7665>. | <https://www.rfc-editor.org/info/rfc7665>. | |||
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | |||
Writing an IANA Considerations Section in RFCs", BCP 26, | Writing an IANA Considerations Section in RFCs", BCP 26, | |||
RFC 8126, DOI 10.17487/RFC8126, June 2017, | RFC 8126, DOI 10.17487/RFC8126, June 2017, | |||
<https://www.rfc-editor.org/info/rfc8126>. | <https://www.rfc-editor.org/info/rfc8126>. | |||
End of changes. 11 change blocks. | ||||
59 lines changed or deleted | 111 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |