IDR Working Group G. Van de Velde, Ed. Internet-Draft Nokia Intended status: Standards Track K. Patel Expires:March 3,June 23, 2018 Arrcus Z. Li Huawei TechnologiesAugust 30,December 20, 2017 Flowspec Indirection-id Redirectdraft-ietf-idr-flowspec-path-redirect-02draft-ietf-idr-flowspec-path-redirect-03 Abstract This document defines a new extended community known as flowspec redirect-to-indirection-id. This extended community triggers advanced redirection capabilities to flowspec clients. When activated, this flowspec extended community is used by a flowspec client to find thecorrectcorresponding next-hop information within alocalisedindirection-id mapping table. The functionality detailed in this document allows a network controller to decouple the BGP flowspec redirection instruction from theactualselected redirection pathselected.itself. Requirements Language The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [1]. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. 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 athttp://datatracker.ietf.org/drafts/current/.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 onMarch 3,June 23, 2018. Copyright Notice Copyright (c) 2017 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(http://trustee.ietf.org/license-info)(https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 2. indirection-id and indirection-id table . . . . . . . . . . . 3 3. Use Case Scenarios . . . . . . . . . . . . . . . . . . . . .43 3.1. Redirection shortest Path tunnel . . . . . . . . . . . .43 3.2. Redirection to path-engineered tunnels . . . . . . . . .54 3.3. Redirection to complex dynamically constructed tunnels .65 4.Redirect to indirection-idredirect-to-indirection-id Community . . . . . . . . . . . .76 5. Redirect using localised indirection-id mapping table . . . . 8 6. Validation Procedures . . . . . . . . . . . . . . . . . . . .98 7. Security Considerations . . . . . . . . . . . . . . . . . . . 9 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 9 9. Contributor Addresses . . . . . . . . . . . . . . . . . . . . 9 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 11.1. Normative References . . . . . . . . . . . . . . . . . . 11 11.2. Informative References . . . . . . . . . . . . . . . . . 11 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 1. Introduction Flowspec is an extension to BGP that allows for the dissemination of traffic flow specification rules. This has many possible applications but the primary one for many network operators is the distribution of traffic filtering actions for DDoS mitigation. The flow-spec standard RFC5575 [2] defines a redirect-to-VRF action for policy-basedforwardingforwarding, but this mechanism is not always sufficient, particularly if the redirected traffic needs to be steered onto an explicite path. Every flowspec policy route is effectively a rule, consisting ofa matching part (encodedtwo parts. The first part, encoded in the NLRIfield) and an action part (encodedfield, provides information about the traffic matching the policy rule. the second part, encoded in one or more BGP extendedcommunities).communities, provides policy instructions for traffic handling on the flowspec client. Theflow-specflowspec standard RFC5575 [2] defines widely-used filter actions such as discard and rate limit; it also defines a redirect-to-VRF action for policy-based forwarding. Using the redirect-to-VRF action to steer traffic towards an alternate destination is useful for DDoSmitigation butmitigation, however using thistechnologymethodology can be cumbersome when there is need to steer the traffic onto an explicitely defined traffic path. This draftproposesspecifies anewredirect-to-indirection-id flowspec action making use of a 32-bit indirection-idwithinusing a new extended community. Each indirection-id serves as anchor point, forpolicy- basedpolicy-based forwarding onto an explicite pathonby a flowspec client.A flowspec based indirection service plane can be create when a single 32-bit flowspec indirection-id maps towards a pool of explicite paths.2. indirection-id and indirection-id table The indirection-id is a 32-bit unsigned number, used as anchor point on a flowspecclient. The indirection-id is on a flowspec client the lookup key-value within a localised list of potential indirection paths. The indirection-id will allow the flowspecclientto steer traffic to a particular path or intofor policy-based forwarding onto anindirection service planeexplicite path bydoingarecursive key-value lookup.flowspec client. The indirection-id table is the tablecontaining an ordered listconstruct of indirection-idkey-values,values, ordered by indirection-idtype; where each key-value maps towards a particular path or set of paths. The indirection-id type MAY provide additional context about the indirection-id 32-bit value. The flowspec client MUST use the indirection-id as key-value within the indirection-id type corresponding indirection-idtype. Each entry in this tableto locate the explicite path and corresponding next-hop information.contains policy-based forwarding instructions. The configuration of the indirection-id table on a flowspec client is localised on each router and MAY happen out-of-band from BGPflowspec and is a localised construct on each router.flowspec. For some use-case scenarios the indirection-id type provides additional (maybe even fully sufficient) contexttowardsfor a flowspec clientto deduct automatic, without explicite out-of-band configuration, thefor policy based forwarding, making a localized indirection-idtable.table obsolete. For example, when the indirection-id refers to a MPLS segment routing node-id [6], thenindirection-id type can provide the flowspec client the awareness thatthe indirection-idisprovides sufficient information for a segment routingnode-id. For this example the indirection-id type allows the flowspec clients to do a recursivelookupusing traditional segment routing technology. To summarise, each indirection-id key-value entry inon theindirection- table maps recursively to sufficient next-hop information (parameters regarding encapsulation, egress-interface, QoS, etc...) to successfully indirect traffic accordingflowspeccontroller expectations.client. 3. Use Case Scenarios This section describes a few use-case scenarios when deployingredirect-to- indirection-id.redirect-to-indirection-id. 3.1. Redirection shortest Path tunnel Description: The first use-case describes an example where a single flowspec route is sent from a BGP flowspec controller to many BGP flowspec clients. This BGP flowspec route carries the redirect-to-indirection-id to all flowspec clients to redirect matching dataflows onto a shortest-path tunnel pointing towards a single remote destination.ForIn this first use-case scenario, each flowspec client receives flowspec routes. The received flowspec routes have the extendedredirect-to- indirection-idredirect-to-indirection-id community attached. Eachredirect-to-indirection-idredirect-to- indirection-id community embeds two relevant components: (1) 32-bit indirection-idkey-valueand (2) indirection-id type.The indirection-id type is used to identify the corresponding indirection-id table, and the actual 32-bit indirection-id key-value is used within the indirection-id table to locateThese two components provide thecorresponding next-hop information. The finite result of this operation isflowspec client with sufficienttunnel encapsulationinformation for policy based forwarding toforwardsteer and encapsulate thedata- packetdata-packet accordingly to aremoteshortest path tunnel to a remote end-point. Requirements: For redirect to shortest path tunnel it is required that the tunnel MUST beup-and-runningoperational and allow packets to beunidirectional exchangedsteered over the shortest path between tunnel head- and tail-end. Example: Indirection-ID community types to be used: o 0 (localised ID): When the intent is to use a localised Indirection-idtable on the flowspec client. This requires out- of-band configuration of the indirection-id tabletable, configured through out-of-band procedures. o 1 or 2 (NodeID): WhenID's): This type can be used when theintentgoal is to usea Segment RoutingMPLS basedIndirection-id table on the flowspec client. This requires thatSegment Routingis enabled ontowards a remote destination. In this use-case scenario the flowspecclient.rule contains a SR (Segment Routing) node SID to steer traffic towards. 3.2. Redirection to path-engineered tunnels Description: The second use-case describes an example where a single flowspec route is sent from a BGP flowspec controller to many BGP flowspec clients. This BGP flowspec route carriesthe redirect-to- indirection-id extended community to all flowspec clients with instructionspolicy information toredirect matching dataflows ontosteer traffic upon apath engineeredpath-engineered tunnel. It isexpectedassumed thateach ofthe path engineered tunnelsis instantiated by out-of-band configuration and can be uniquely identified by the combination of (1) indirection-id 32-bit key-value and (2) indirection-id type. For this second use-case scenario, each flowspec client receives flowspec routes. The flowspec routes have the extended redirect-to- indirection-id community attached. Each redirect-to-indirection-id community embeds two relevant components similar as explained in previous use-case. However the finite result of this operation is sufficient tunnel encapsulation information to forward and encapsulate the data-packet accordingly to a remote tunnel end-pointare configured usinga path engineered tunnel construction.out-of-band from BGP flowspec. Segment Routing Example: For this example the indirection-id typeinforms the flowspec client that the indirection-id 32-bit key-value referencespoints towards a Segment Routing Binding SID. The Binding SID is a segment identifier value (as per segment routing definitions in[I-D.draft-ietf-spring-segment- routing][I-D.draft-ietf-spring- segment-routing] [6]) used to associate an explicit path. The Binding SID and corresponding path engineered tunnelcanmay for example be setup by a controller using BGP as specified in[I-D.sreekantiah-idr-segment- routing-te][I-D.sreekantiah- idr-segment-routing-te] [5] or alternatly by using PCEP as detailed indraft-ietf-pce- segment-routingdraft-ietf-pce-segment-routing [7]. To conclude, when a BGP speaker at some point in time receives a flow-spec route with an extended'redirect-to- indirection-id''redirect-to-indirection-id' community, it installs atraffic filteringpolicy-based forwarding rulethat matches particularto redirect packetsand redirects themonto an explicit path associated with the corresponding Binding SID. The encoding of the Binding SID within the redirect-to-indirection-id extended community is specified in section 4. Requirements: For redirect to path engineered tunnels it is required that theengineeredtunnel MUST beactiveoperational and allow packets to beunidirectional exchangedsteered over the engineered path between tunnel head- and tail-end. Example: Indirection-ID community types to be used: o 0 (localised ID): When the intent is touse a localisedpolicy-based steer traffic using Indirection. The engineered path is configured through out- of-band procedures and uses the 32-bit Indirection-idtableas local anchor point on the local flowspec client.This requires out- of-band configuration of the indirection-id table.o62 or 3 (Binding Segment ID's): This type can be used when the goal is to use MPLS based Segment Routing towards an out-of-band configured explicite path. o 5 (Tunnel ID): When the intent is tousepolicy-based steer traffic using aSegment Routing basedglobal tunnel-id. The engineered path is configured through out-of-band procedures and uses the 32-bit Indirection-idtableas global anchor point on the local flowspec client.This requires out-of-band configuration of the Binding Segment IDs.3.3. Redirection to complex dynamically constructed tunnels Description: A third use-case describes the application and redirection towards complex dynamically constructed tunnels. For this use-case a BGP flowspec controller injects a single flowspec route with two'redirect-to- indirection-id'unique 'redirect-to-indirection-id' communities attached, each community tagged with a differentTable-ID (TID).Sequence-ID (S-ID). A flowspec client may use theTable-ID (TID)Sequence-ID (S-ID) to sequence the flowspec redirect information. A common use-case scenario would for example be the dynamic construction of Segment Routing Central Egress Path Engineered tunnel [4] or next-next-hop tunnels. Segment Routing Example: i.e. a classic Segment Routing example using complex tunnels is found in DDoS mitigation and traffic offload. Suspicious traffic (e.g. dirty traffic flows) may besteeredpolicy-based routed into a purpose built Segment Routing Central Egress Path Engineered tunnel [4]. For this complex dynamic redirect tunnel construction, a firstredirect-to-indirection-idredirect-to- indirection-id (i.e.TID=0) isS-ID=0) may be used to redirect traffic into a tunnel towards aparticlarparticular egress router, while a secondredirect-to-indirection-idredirect- to-indirection-id (i.e.TID=1)S-ID=1) is used to steer traffic beyond the particular egress router towards a pre-identified interface/peer.For this DDoS use-case, in its simplest embodiment, the flowspec client must dynamically append 2 MPLS Segment Routing labels. A first MPLS Segment Routing label (the outer label) to steer the packet to the egress node (and hence use a shortest path tunnel), while a second MPLS label (matching redirect-to-indirection-id with TID=1), the inner label, to steer on the egress router the original packet to a pre-defined interface/peer. The basicFrom data-plane perspective, the principlesaredocumented by[4].[4] are valid for this use case scenario. Requirements: To achieve redirection towards complex dynamically constructed tunnels,for each flowspec route, multiple indirection-ids, each using a unique Tunnel IDvarious indirection-id communities arepushedimposed upona giventhe flowspecpolicy rule. Itroute and are sequenced using the Sequence ID (S-ID). For redirect to complex dynamic engineered tunnels it is required thatthere is synchronisation established betweenthedata-plane and control-plane of all relevant devices involved. Each complex dynamically constructedtunnel MUST be operational and allow packets to beunidirectional exchangedsteered over the engineered path betweentunnel head- and tail-end before it can be used to redirect traffic.tunnel head- and tail-end. Example: Indirection-ID community types to be used: o 0 (localised ID) withTID:S-ID: When the intent is touseconstruct alocalised Indirection-id table,dynamic engineered tunnel, thenthe TID (Table-ID)a sequence of localised indirection-ids may be used. The Sequence ID (S-ID) MUST be used to sequence multiple redirect-to-indirection-id actions to construct a more complex path engineered tunnel. Theorderconstruction ofsequencing the redirection information MUST be identified by usingtheTID field. 4. Redirect tolocalised indirection-id table is done out-of-band and is outside scope of this document. 4. redirect-to-indirection-id Community This document defines a new BGP extended community known as a Redirect-to-indirection-id extended community. This extended community is a new transitive extended community with the Type and the Sub-Type field to be assigned by IANA. The format of this extended community is show in Figure 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 | Sub-Type | Flags(1 octet)| Indirection ID| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Generalized indirection_id | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 1 The meaning of the extended community fields are as follows: Type: 1 octet to be assigned by IANA. Sub-Type: 1 octet to be assigned by IANA. Flags: 1 octet field. Following Flags are defined. 0 1 0 1 2 3 4 5 6 7 +-+-+-+-+-+-+-+-+ | RES |TIDS-ID |C| +-+-+-+-+-+-+-+-+ Figure 2 The least-significant Flag bit is defined as the 'C' (or copy) bit. When the 'C' bit is set the redirection applies to copies of the matching packets and not to the original traffic stream. The'TID''S-ID' field identifies a 4 bitTable-idSequence ID field. This field is used to providethea flowspec client an indication how and where to sequence the receivedindirection-ids to redirecting traffic. TIDindirection-ids. The Sequence ID value 0 indicates thatTable-idSequence ID field is NOT set and SHOULD be ignored. A single flowspec rule MUST NOT have more as one indirection-id per S-ID. On a flowspec client the indirection-id with lowestTIDS-ID MUST beprocessedimposed first foraany given flowspecroute.entry. All bits other than the 'C' and'TID''S-ID' bits MUST be set to 0 by the originating BGP speaker and ignored by receiving BGP speakers. Indirection ID: 1 octet value. This draft defines followingindirection_idindirection-id Types: 0 - Localised ID (The flowspec client uses the received indirection-id to lookupthe redirectionforwarding informationinwithin the localised indirection-id table. The allocation and programming of the localised indirection-idtable.)table is outside scope of the document) 1 - Node ID(The flowspec client uses the receivedwith SID/index in MPLS-based Segment Routing (This means indirection-id is mapped to an MPLS label using the index as aSegment Routingglobal offset in the SID/label space) 2 - Node ID with SID/label in MPLS-based Segment Routing (This means indirection-id is mapped toredirect traffic towards) 6an MPLS label using the label as global label) 3 - Binding Segment ID(The flowspec client uses the receivedwith SID/index in MPLS-based Segment Routing (This means indirection-id is mapped to an MPLS binding label using the index as aSegment Routingglobal offset in the SID/label space) [I-D.draft-ietf-spring-segment-routing] [6] 4 - Binding Segment ID with SID/label in MPLS-based Segment Routing (This means indirection-id is mapped toredirect traffic towards)an MPLS binding label using the index as a global offset in the SID/label space) [I-D.draft-ietf-spring-segment-routing] [6] 5 - Tunnel ID (Tunnel ID is a global value in a network single administrative domain identifying tunnel information. The allocation of the Tunnel ID is out of the scope of the document.) 5. Redirect using localised indirection-id mapping table When a BGP flowspec client receives a flowspec policy route with a redirect-to-indirection-id extended community attached and the route represents the best BGP path, it will install a flowspectraffic filteringpolicy-based forwarding rule matching theIPtupples described by the flowpsec NLRI field and consequently redirects the flow (C=0) or copies the flow (C=1) using the information identified by the 'redirect-to- indirection-id' community. 6. Validation Procedures The validation check described in RFC5575 [2] and revised in [3] SHOULD be applied by defaulttoby a flowspec client, for receivedflow-specflowspec policy routeswithcontaining a'redirect to indirection-id''redirect-to-indirection-id' extended community. This means that a flow-spec route with a destination prefix subcomponent SHOULD NOT be accepted from an EBGP peer unless that peer also advertised the best path for the matching unicast route. While it MUST NOT happen, and is seen asinvallidinvalid combination, it is possible from asemenaticssemantics perspective to have multiple clashing redirect actions defined within a single flowspec rule. For best and consistantRFC5575 flowspec redirect behaviorwith legacy implementations, the redirect functionality as documented by RFC5575 MUSTnotNOT be broken, and hence when a clash occurs, then RFC5575 based redirectSHOULDMUST take priority. Additionally, if the'redirect to indirection-id''redirect-to-indirection-id' does not result in a valid redirection, then the flowspec rulemustMUST be processed as if the'redirect to indirection-id''redirect-to-indirection-id' community was not attached to the flowspec route and MUST provide an indication within the BGP routing table that the respective'redirect to indirection-id''redirect-to-indirection-id' resulted in an invalid redirection action. 7. Security Considerations A system using 'redirect-to-indirection-id' extended community can cause during the redirect mitigation of a DDoS attack result in overflow of traffic received by the mitigation infrastructure. 8. Acknowledgements This document received valuable comments and input from IDR working group including Adam Simpson, Mustapha Aissaoui, Jan Mertens, Robert Raszuk, Jeff Haas, Susan Hares and Lucy Yong. 9. Contributor Addresses Below is a list of other contributing authors in alphabetical order: Arjun Sreekantiah Cisco Systems 170 W. Tasman Drive San Jose, CA 95134 USA Email: asreekan@cisco.com Nan Wu Huawei Technologies Huawei Bld., No. 156 Beiquing Rd Beijing 100095 China Email: eric.wu@huawei.com Shunwan Zhuang Huawei Technologies Huawei Bld., No. 156 Beiquing Rd Beijing 100095 China Email: zhuangshunwan@huawei.com Wim Henderickx Nokia Antwerp BE Email: wim.henderickx@nokia.com Figure 3 10. IANA Considerations This document requests a new type and sub-type for theRedirect toredirect-to- indirection-id Extended community from the "Transitive Extended community" registry. The Type name shall be"Redirect to"Redirect-to- indirection-id Extended Community" and the Sub-type name shall be 'Flow-spec Redirect to 32-bit Path-id'. In addition, this document requests IANA to create a new registry forRedirect to indirection-idredirect-to-indirection-id Extended Community INDIRECTION-IDs as follows: Under "Transitive Extended Community:" Registry: "Redirect Extended Community indirection_id" Reference: [RFC-To-Be] Registration Procedure(s): First Come, First Served Registry: "Redirect Extended Community indirection_id" Value Code Reference 0 Localised ID [RFC-To-Be] 1 Node ID [RFC-To-Be]6 Tunnel ID (Tunnel2 Binding ID)[RFC-To-Be] 3 Tunnel ID [RFC-To-Be] Figure 4 11. References 11.1. Normative References [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997, <http://xml.resource.org/public/rfc/html/rfc2119.html>. [2] 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, <https://www.rfc-editor.org/info/rfc5575>. 11.2. Informative References [3] Uttaro, J., Filsfils, C., Alcaide, J., and P. Mohapatra, "Revised Validation Procedure for BGP Flow Specifications", January 2014. [4] Filsfils, C., Previdi, S., Aries, E., Ginsburg, D., and D. Afanasiev, "Segment Routing Centralized Egress Peer Engineering", October 2015. [5] Sreekantiah, A., Filsfils, C., Previdi, S., Sivabalan, S., Mattes, P., and S. Lin, "Segment Routing Traffic Engineering Policy using BGP", October 2015. [6] Filsfils, C., Previdi, S., Decraene, B., Litkowski, S., Shakir, R., Bashandy, A., Horneffer, M., Henderickx, W., Tantsura, J., Crabbe, E., Milojevic, I., and S. Ytti, "Segment Routing Architecture", December 2015. [7] Sivabalan, S., Medved, M., Filsfils, C., Litkowski, S., Raszuk, R., Bashandy, A., Lopez, V., Tantsura, J., Henderickx, W., Hardwick, J., Milojevic, I., and S. Ytti, "PCEP Extensions for Segment Routing", December 2015. Authors' Addresses Gunter Van de Velde (editor) Nokia Antwerp BE Email: gunter.van_de_velde@nokia.com Keyur Patel Arrcus USA Email: keyur@arrcus.com Zhenbin Li Huawei Technologies Huawei Bld., No. 156 Beiquing Rd Beijing 100095 China Email: lizhenbin@huawei.com