--- 1/draft-ietf-bess-nsh-bgp-control-plane-09.txt 2019-04-26 05:13:15.243301673 -0700 +++ 2/draft-ietf-bess-nsh-bgp-control-plane-10.txt 2019-04-26 05:13:15.355304507 -0700 @@ -1,24 +1,24 @@ BESS Working Group A. Farrel Internet-Draft Old Dog Consulting Intended status: Standards Track J. Drake -Expires: September 7, 2019 E. Rosen +Expires: October 28, 2019 E. Rosen Juniper Networks J. Uttaro AT&T L. Jalil Verizon - March 6, 2019 + April 26, 2019 BGP Control Plane for NSH SFC - draft-ietf-bess-nsh-bgp-control-plane-09 + draft-ietf-bess-nsh-bgp-control-plane-10 Abstract This document describes the use of BGP as a control plane for networks that support Service Function Chaining (SFC). The document 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 that it hosts a particular instance of a specified service function. 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 @@ -38,21 +38,21 @@ 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 and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference 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 (c) 2019 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents @@ -69,73 +69,73 @@ 1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 5 2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.1. Overview of Service Function Chaining . . . . . . . . . . 6 2.2. Control Plane Overview . . . . . . . . . . . . . . . . . 7 3. BGP SFC Routes . . . . . . . . . . . . . . . . . . . . . . . 11 3.1. Service Function Instance Route (SFIR) . . . . . . . . . 12 3.1.1. SFI Pool Identifier Extended Community . . . . . . . 13 3.1.2. MPLS Mixed Swapping/Stacking Extended Community . . . 14 3.2. Service Function Path Route (SFPR) . . . . . . . . . . . 14 3.2.1. The SFP Attribute . . . . . . . . . . . . . . . . . . 15 - 3.2.2. General Rules For The SFP Attribute . . . . . . . . . 20 - 4. Mode of Operation . . . . . . . . . . . . . . . . . . . . . . 21 - 4.1. Route Targets . . . . . . . . . . . . . . . . . . . . . . 21 - 4.2. Service Function Instance Routes . . . . . . . . . . . . 21 - 4.3. Service Function Path Routes . . . . . . . . . . . . . . 21 - 4.4. Classifier Operation . . . . . . . . . . . . . . . . . . 23 - 4.5. Service Function Forwarder Operation . . . . . . . . . . 24 - 4.5.1. Processing With 'Gaps' in the SI Sequence . . . . . . 25 - 5. Selection in Service Function Paths . . . . . . . . . . . . . 26 - 6. Looping, Jumping, and Branching . . . . . . . . . . . . . . . 28 - 6.1. Protocol Control of Looping, Jumping, and Branching . . . 28 - 6.2. Implications for Forwarding State . . . . . . . . . . . . 29 - 7. Advanced Topics . . . . . . . . . . . . . . . . . . . . . . . 29 - 7.1. Correlating Service Function Path Instances . . . . . . . 29 - 7.2. Considerations for Stateful Service Functions . . . . . . 30 - 7.3. VPN Considerations and Private Service Functions . . . . 31 - 7.4. Flow Spec for SFC Classifiers . . . . . . . . . . . . . . 32 - 7.5. Choice of Data Plane SPI/SI Representation . . . . . . . 33 - 7.5.1. MPLS Representation of the SPI/SI . . . . . . . . . . 34 + 3.2.2. General Rules For The SFP Attribute . . . . . . . . . 21 + 4. Mode of Operation . . . . . . . . . . . . . . . . . . . . . . 22 + 4.1. Route Targets . . . . . . . . . . . . . . . . . . . . . . 22 + 4.2. Service Function Instance Routes . . . . . . . . . . . . 22 + 4.3. Service Function Path Routes . . . . . . . . . . . . . . 22 + 4.4. Classifier Operation . . . . . . . . . . . . . . . . . . 24 + 4.5. Service Function Forwarder Operation . . . . . . . . . . 25 + 4.5.1. Processing With 'Gaps' in the SI Sequence . . . . . . 26 + 5. Selection in Service Function Paths . . . . . . . . . . . . . 27 + 6. Looping, Jumping, and Branching . . . . . . . . . . . . . . . 29 + 6.1. Protocol Control of Looping, Jumping, and Branching . . . 29 + 6.2. Implications for Forwarding State . . . . . . . . . . . . 30 + 7. Advanced Topics . . . . . . . . . . . . . . . . . . . . . . . 30 + 7.1. Correlating Service Function Path Instances . . . . . . . 30 + 7.2. Considerations for Stateful Service Functions . . . . . . 31 + 7.3. VPN Considerations and Private Service Functions . . . . 32 + 7.4. Flow Spec for SFC Classifiers . . . . . . . . . . . . . . 33 + 7.5. Choice of Data Plane SPI/SI Representation . . . . . . . 34 + 7.5.1. MPLS Representation of the SPI/SI . . . . . . . . . . 35 - 7.6. MPLS Label Swapping/Stacking Operation . . . . . . . . . 34 - 7.7. Support for MPLS-Encapsulated NSH Packets . . . . . . . . 35 - 8. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 35 - 8.1. Example Explicit SFP With No Choices . . . . . . . . . . 37 - 8.2. Example SFP With Choice of SFIs . . . . . . . . . . . . . 37 - 8.3. Example SFP With Open Choice of SFIs . . . . . . . . . . 38 - 8.4. Example SFP With Choice of SFTs . . . . . . . . . . . . . 38 - 8.5. Example Correlated Bidirectional SFPs . . . . . . . . . . 39 - 8.6. Example Correlated Asymmetrical Bidirectional SFPs . . . 39 - 8.7. Example Looping in an SFP . . . . . . . . . . . . . . . . 40 - 8.8. Example Branching in an SFP . . . . . . . . . . . . . . . 41 - 8.9. Examples of SFPs with Stateful Service Functions . . . . 41 - 8.9.1. Forward and Reverse Choice Made at the SFF . . . . . 42 - 8.9.2. Parallel End-to-End SFPs with Shared SFF . . . . . . 43 - 8.9.3. Parallel End-to-End SFPs with Separate SFFs . . . . . 45 - 8.9.4. Parallel SFPs Downstream of the Choice . . . . . . . 47 - 9. Security Considerations . . . . . . . . . . . . . . . . . . . 50 - 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 51 - 10.1. New BGP AF/SAFI . . . . . . . . . . . . . . . . . . . . 51 - 10.2. New BGP Path Attribute . . . . . . . . . . . . . . . . . 51 - 10.3. New SFP Attribute TLVs Type Registry . . . . . . . . . . 51 - 10.4. New SFP Association Type Registry . . . . . . . . . . . 52 - 10.5. New Service Function Type Registry . . . . . . . . . . . 53 + 7.6. MPLS Label Swapping/Stacking Operation . . . . . . . . . 35 + 7.7. Support for MPLS-Encapsulated NSH Packets . . . . . . . . 36 + 8. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 36 + 8.1. Example Explicit SFP With No Choices . . . . . . . . . . 38 + 8.2. Example SFP With Choice of SFIs . . . . . . . . . . . . . 38 + 8.3. Example SFP With Open Choice of SFIs . . . . . . . . . . 39 + 8.4. Example SFP With Choice of SFTs . . . . . . . . . . . . . 39 + 8.5. Example Correlated Bidirectional SFPs . . . . . . . . . . 40 + 8.6. Example Correlated Asymmetrical Bidirectional SFPs . . . 40 + 8.7. Example Looping in an SFP . . . . . . . . . . . . . . . . 41 + 8.8. Example Branching in an SFP . . . . . . . . . . . . . . . 42 + 8.9. Examples of SFPs with Stateful Service Functions . . . . 42 + 8.9.1. Forward and Reverse Choice Made at the 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 . . . . . 46 + 8.9.4. Parallel SFPs Downstream of the Choice . . . . . . . 48 + 9. Security Considerations . . . . . . . . . . . . . . . . . . . 51 + 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 52 + 10.1. New BGP AF/SAFI . . . . . . . . . . . . . . . . . . . . 52 + 10.2. New BGP Path Attribute . . . . . . . . . . . . . . . . . 52 + 10.3. New SFP Attribute TLVs Type Registry . . . . . . . . . . 52 + 10.4. New SFP Association Type Registry . . . . . . . . . . . 53 + 10.5. New Service Function Type Registry . . . . . . . . . . . 54 10.6. New Generic Transitive Experimental Use Extended - Community Sub-Types . . . . . . . . . . . . . . . . . . 54 - 10.7. New BGP Transitive Extended Community Types . . . . . . 54 - 10.8. SPI/SI Representation . . . . . . . . . . . . . . . . . 54 - 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 54 - 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 55 - 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 55 - 13.1. Normative References . . . . . . . . . . . . . . . . . . 55 - 13.2. Informative References . . . . . . . . . . . . . . . . . 56 - Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 56 + Community Sub-Types . . . . . . . . . . . . . . . . . . 55 + 10.7. New BGP Transitive Extended Community Types . . . . . . 55 + 10.8. SPI/SI Representation . . . . . . . . . . . . . . . . . 55 + 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 55 + 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 56 + 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 56 + 13.1. Normative References . . . . . . . . . . . . . . . . . . 56 + 13.2. Informative References . . . . . . . . . . . . . . . . . 57 + Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 57 1. Introduction As described in [RFC7498], the delivery of end-to-end services can require a packet to pass through a series of Service Functions (SFs) (e.g., WAN and application accelerators, Deep Packet Inspection (DPI) engines, firewalls, TCP optimizers, and server load balancers) in a specified order: this is termed "Service Function Chaining" (SFC). There are a number of issues associated with deploying and maintaining service function chaining in production networks, which @@ -693,22 +693,69 @@ 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 the SFP. 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 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 advertised (we say the SFIR-RD to avoid ambiguity). - Malformed SFP attributes, or those that are in error in some way, - MUST be handled as described in Section 6 of [RFC4271]. + Section 6 of [RFC4271] describes the handling of malformed BGP + 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 The Association TLV is an optional TLV in the SFP attribute. It MAY be present multiple times. Each occurrence provides an association with another SFP as advertised in another SFPR. The format of the Association TLV is shown in Figure 7 +--------------------------------------------+ | Type = 1 (1 octet) | @@ -2418,26 +2465,26 @@ 13.1. Normative References [I-D.ietf-idr-tunnel-encaps] Rosen, E., Patel, K., and G. Velde, "The BGP Tunnel Encapsulation Attribute", draft-ietf-idr-tunnel-encaps-11 (work in progress), February 2019. [I-D.ietf-mpls-sfc] Farrel, A., Bryant, S., and J. Drake, "An MPLS-Based 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] Malis, A., Bryant, S., Halpern, J., and W. Henderickx, "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. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, . [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, @@ -2455,20 +2502,25 @@ [RFC5575] Marques, P., Sheth, N., Raszuk, R., Greene, B., Mauch, J., and D. McPherson, "Dissemination of Flow Specification Rules", RFC 5575, DOI 10.17487/RFC5575, August 2009, . [RFC7432] Sajassi, A., Ed., Aggarwal, R., Bitar, N., Isaac, A., Uttaro, J., Drake, J., and W. Henderickx, "BGP MPLS-Based Ethernet VPN", RFC 7432, DOI 10.17487/RFC7432, February 2015, . + [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, + . + [RFC7665] Halpern, J., Ed. and C. Pignataro, Ed., "Service Function Chaining (SFC) Architecture", RFC 7665, DOI 10.17487/RFC7665, October 2015, . [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, .