Internet DRAFT - draft-vandevelde-idr-flowspec-path-redirect

draft-vandevelde-idr-flowspec-path-redirect







IDR Working Group                                   G. Van de Velde, Ed.
Internet-Draft                                             W. Henderickx
Intended status: Standards Track                          Alcatel-Lucent
Expires: September 18, 2016                                     K. Patel
                                                          A. Sreekantiah
                                                           Cisco Systems
                                                          March 17, 2016


                    Flowspec Indirection-id Redirect
             draft-vandevelde-idr-flowspec-path-redirect-02

Abstract

   Flow-spec 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-based forwarding but this mechanism is not always sufficient,
   particular if the redirected traffic needs to be steered into an
   engineered path or into a service plane.

   This document defines a new redirect-to-INDIRECTION_ID (32-bit or
   128-bit) flow-spec action to provide advanced redirection
   capabilities.  When activated, the flowspec Indirection-id is used to
   identify the next-hop redirect information within a router locallized
   Indirection-id table.  This allows a flowspec controller to signal
   redirection towards a next-hop IP address, a shortest path tunnel, a
   traffic engineered tunnel or a next-next-hop engineered tunnel
   interface.

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 at http://datatracker.ietf.org/drafts/current/.




Van de Velde, et al.   Expires September 18, 2016               [Page 1]

Internet-Draft      Flowspec Indirection-id Redirect          March 2016


   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 18, 2016.

Copyright Notice

   Copyright (c) 2016 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) 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  . . . . . . . . . . . . . . . . . . . . .   4
     3.1.  Redirection shortest Path tunnel  . . . . . . . . . . . .   4
     3.2.  Redirection to path-engineered tunnels  . . . . . . . . .   4
     3.3.  Redirection to Next-next-hop tunnels  . . . . . . . . . .   5
   4.  Redirect to INDIRECTION-ID Communities  . . . . . . . . . . .   6
   5.  Redirect using locallized INDIRECTION_ID Router Mapping . . .   7
   6.  Validation Procedures . . . . . . . . . . . . . . . . . . . .   8
   7.  Security Considerations . . . . . . . . . . . . . . . . . . .   8
   8.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .   8
   9.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   8
   10. References  . . . . . . . . . . . . . . . . . . . . . . . . .   8
     10.1.  Normative References . . . . . . . . . . . . . . . . . .   9
     10.2.  Informative References . . . . . . . . . . . . . . . . .   9
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .   9

1.  Introduction

   Flow-spec RFC5575 [2] 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.




Van de Velde, et al.   Expires September 18, 2016               [Page 2]

Internet-Draft      Flowspec Indirection-id Redirect          March 2016


   Every flow-spec route is effectively a rule, consisting of a matching
   part (encoded in the NLRI field) and an action part (encoded in one
   or more BGP extended community).  The flow-spec 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 for redirecting traffic towards an
   alternate destination is useful for DDoS mitigation but using this
   technology can be cumbersome when there is need to redirect the
   traffic onto an engineered traffic path.

   This draft proposes a new redirect-to-Indirection-id flow-spec action
   facilitating an anchor point for policy-based forwarding onto an
   engineered path or into a service plane.  The router consuming and
   utilizing the flowspec rule makes a local mapping between the
   flowspec signalled redirect Indirection-id and locally available
   redirection information referenced by the Indirection-id.  This
   locally available redirection information is derived from out-of-band
   programming or signalling.

   The redirect-to-Indirection-id is encoded in a newly defined BGP
   extended Indirection_ID community.

   The construction of the Indirection-id redirect table and the
   technology used to create an engineered path are out-of-scope of this
   document.

2.  INDIRECTION_ID and INDIRECTION_ID Table

   An INDIRECTION_ID is an abstract number (32-bit or 128-bit value)
   used as identifier for a localised redirection decision. e.g.  When a
   BGP flowspec controller intends to redirect a flow using te redirect-
   to-INDIRECTION_ID action then it has the ability to redirect the flow
   to a destination abstracted as the INDIRECTION_ID.  The device
   receiving the BGP flowspec rule will use the INDIRECTION_ID to
   identify the next-hop and the relevant tunnel encapsulations that
   need to be pushed by a localised recursive lookup using information
   located within the INDIRECTION_ID table.

   The INDIRECTION_ID Table is a router localised table.  The table
   content is constructed out of INDIRECTION_IDs and corresponding
   redirect information which may be of rescursive or non-recursive
   nature.  When the redirect information is non-recursive, then the
   represented information MUST be sufficient to identify the local
   egress interface and the corresponding required encapsulations.
   However, if the information is recursive, then the represented
   information MUST be sufficient to identify the local egress interface
   and corresponding encapsulations using additional recursions.




Van de Velde, et al.   Expires September 18, 2016               [Page 3]

Internet-Draft      Flowspec Indirection-id Redirect          March 2016


3.  Use Case Scenarios

   This section describes use-case scenarios when deploying redirect-to-
   INDIRECTION_ID.

3.1.  Redirection shortest Path tunnel

   A first use-case is allowing a BGP Flowspec controller send a single
   flowspec policy message (redirect-to-INDIRECTION_ID#1) to many BGP
   flowspec consuming routers.  This message is instructing the Flowspec
   recipient routers to redirect traffic onto a tunnel to a single IP
   destination address.

   For this use-case scenario, each flowspec recipient router has a
   tunnel configured following the shortest path towards a tunnel IP
   destination address.  Each tunnel can have its own unique
   encapsulation associated.  Each tunnel is associated with an
   INDIRECTION_ID, and for this example it is on all recipient routers
   INDIRECTION_ID#1.  Both manual and orchestrated tunnel provisioning
   is supported, however for large scale deployment automation is
   advisable.

   When using this setup, a BGP flowspec controller can send a single
   BGP Flowspec NLRI with redirect-to-INDIRECTION_ID#1.  This BGP
   Flowspec NLRI is received by all recipient routers.  Each of the
   recipient routers performs a locallised recursive lookup for
   INDIRECTION_ID#1 in the INDIRECTION_ID Table and identifies the
   corresponding locallised tunnel redirect information.  This
   locallised tunnel information is now used to redirect traffic
   matching the Flowspec policy towards a tunnel, each potentially using
   its own unique tunnel encapsulation.

3.2.  Redirection to path-engineered tunnels

   A second use-case is allowing a BGP Flowspec controller send a single
   flowspec policy message (redirect-to-INDIRECTION_ID#2) to many BGP
   flowspec consuming routers.  This message is instructing the Flowspec
   recipient routers to redirect traffic onto a path engineered tunnel.

   For this use-case scenario, each flowspec recipient router has a path
   engineered tunnel configured.  Each tunnel can have its own unique
   encapsulation and engineered path associated.  Each tunnel is
   associated with an INDIRECTION_ID, and for this example it is on all
   recipient routers INDIRECTION_ID#2.  Both manual and orchestrated
   tunnel provisioning is supported, however for large scale deployment
   automation is advisable.





Van de Velde, et al.   Expires September 18, 2016               [Page 4]

Internet-Draft      Flowspec Indirection-id Redirect          March 2016


   A first example using this setup, is when a BGP flowspec controller
   sends a single BGP Flowspec NLRI with redirect-to-INDIRECTION_ID#2.
   This BGP Flowspec NLRI is received by all recipient routers.  Each of
   the recipient routers performs a locallised recursive lookup for
   INDIRECTION_ID#2 in the INDIRECTION_ID Table and identifies the
   corresponding locallised tunnel redirect information.  This
   locallised tunnel information is now used to redirect traffic
   matching the Flowspec policy towards a path engineered tunnel.

   A second example can be found in segment routed networks where path
   engineered tunnels can be setup by means of a controller signaling
   explicit paths to peering routers.  In such a case, the
   INDIRECTION_ID references to 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] [6]) used to
   associate with a explicit path and can be setup by a controller using
   BGP as specified in [I-D.sreekantiah-idr-segment-routing-te] [5] or
   using PCE as detailed in draft-ietf-pce-segment-routing [7].  When a
   BGP speaker receives a flow-spec route with a 'redirect to Binding
   SID' extended community, it installs a traffic filtering rule that
   matches the packets described by the NLRI field and redirects them to
   the explicit path associated with the Binding SID.  The explicit path
   is specified as a set/stack of segment identifiers as detailed in the
   previous documents.  The stack of segment identifiers is now imposed
   on packets matching the flow-spec rule to perform redirection as per
   the explicit path setup prior.  The encoding of the Binding SID value
   is specified in section 4, with the indirection field now encoding
   the associated value for the binding SID.

3.3.  Redirection to Next-next-hop tunnels

   A Third use-case is allowing a BGP Flowspec controller send a single
   flowspec policy message (redirect-to-INDIRECTION_ID#3) to many BGP
   flowspec consuming routers.  This message is instructing the Flowspec
   recipient routers to redirect traffic onto a shortest or engineered
   path to a tunnel end-point and onwards to the next-hop-interface on
   this end-point.  This type of tunnel is used for example for Segment
   Routing Central Egress Path Engineering [4].

   For this use-case scenario, each flowspec recipient router constructs
   redirect information using two tunnel components.  The first
   component is a shortest or engineered path towards a network egress
   router.  The second component is the interface used on this network
   egress router to which the redirected traffic needs to be steered
   upon.  The combination of these two components allows steering
   towards the next-hop of the egress router, allowing for example the
   Central Egress Path Engineering using BGP Flowspec [4].




Van de Velde, et al.   Expires September 18, 2016               [Page 5]

Internet-Draft      Flowspec Indirection-id Redirect          March 2016


   The redirection towards a next-next-hop tunnel can be done by using
   either a single INDIRECTION_ID representing the combined path to the
   egress router and steering the traffic to the egress interface, or by
   using individual INDIRECTION_IDs each representing a tunnel component
   (One INDIRECTION_ID value to identify the path towards the egress
   router and another INDIRECTION_ID value to identify the egress
   interface on this egress router towards the next-next-hop).  When
   using individual INDIRECTION_IDs it is required to use INDIRECTION_ID
   community Tunnel IDs (TID) each identifying a component of the
   complete redirect path attached to the NLRI.

   i.e. when using next-next-hop tunnels, a BGP flowspec controller can
   send a single BGP Flowspec NLRI with redirect-to-INDIRECTION_ID#3.
   This BGP Flowspec NLRI is received by all recipient routers.  Each of
   the recipient routers performs a locallised recursive lookup for
   INDIRECTION_ID#3 in the INDIRECTION_ID Table and identifies the
   corresponding locallised tunnel redirect information (=path to the
   egress router and the next-hop egress interface on this router).
   Traffic matching the flowspec policy is redirected towards the
   recursively found redirection information.

4.  Redirect to INDIRECTION-ID Communities

   This document defines a new BGP extended community.  The extended
   communities have a type indicating they are transitive and IPv4-
   address-specific or IPv6-address-specific, depending on whether the
   INDIRECTION_ID is 32-bit or 128-bit.  The sub-type value [to be
   assigned by IANA] indicates that the global administrator and local
   administrator fields encode a flow-spec 'redirect to INDIRECTION_ID'
   action.  In the new extended community the 4-byte or 16-byte global
   administrator field encodes the 32-bit or 128-bit INDIRECTION_ID's
   providing the INDIRECTION_ID to allow a local to the router mapping
   reference to an engineered Path.  The 2-byte local administrator
   field is formatted as shown in Figure 1.


                      0                   1
                      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
                     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     |          Reserved     |B|TID|C|
                     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+



                                 Figure 1

   In the local administrator field the least-significant bit is defined
   as the 'C' (or copy) bit.  When the 'C' bit is set the redirection



Van de Velde, et al.   Expires September 18, 2016               [Page 6]

Internet-Draft      Flowspec Indirection-id Redirect          March 2016


   applies to copies of the matching packets and not to the original
   traffic stream.

   The 'TID' field identifies a 2 bit Table-id field.  This field is
   used to provide the router consuming the flowspec rule an indication
   how and where to use the INDIRECTION_ID when redirecting traffic.

   Bit 2 is defined to be the 'B' (Binding) bit.  When the 'B' bit is
   set, the value encoded in the global administrator field is a Binding
   Segment Identifier value the use of which is detailed in section 3.2.

   All bits other than the 'C', 'TID' and 'B' bits in the local
   administrator field MUST be set to 0 by the originating BGP speaker
   and ignored by receiving BGP speakers.

5.  Redirect using locallized INDIRECTION_ID Router Mapping

   When a BGP speaker receives a flow-spec route with a 'redirect to
   INDIRECTION_ID' extended community and this route represents the one
   and only best path, it installs a traffic filtering rule that matches
   the packets described by the NLRI field and redirects them (C=0) or
   copies them (C=1) towards the INDIRECTION_ID local recursed Path.
   The BGP speaker is expected to do a local INDIRECTION_ID Table lookup
   to identify the redirection information.

   The router local INDIRECTION_ID table contains a list of
   INDIRECTION_ID's each mapped to redirect information.  The redirect
   information can be non-recursive (i.e. there is only one option
   available in the INDIRECTION_ID Table) or recursive (i.e.  L3 VPN, L2
   VPN, a pre-programmed routing topology, etc... ).

   o  When the redirect information is non-recursive then the packet is
      redirected based upon the information found in the Table.

   o  In case of a next-hop tunnel, the traffic matching the flowspec
      rule is redirected to the next-hop tunnel.  This tunnel could be
      instantiated through various means (i.e. manual configuration,
      PCEP, RSVP-TE, WAN Controller, Segment Routing, etc...).

   o  In case of redirection to a local next-hop interface, the traffic
      matching the flowspec rule is redirected to the local next-hop
      interface.

   o  In case the INDIRECTION_ID Table lookup results in redirect
      information identifying an additional layer of recursion, then
      this will trigger the flow to be redirected based upon an
      additional routing lookup within the realm of the additional layer
      of recursion.



Van de Velde, et al.   Expires September 18, 2016               [Page 7]

Internet-Draft      Flowspec Indirection-id Redirect          March 2016


6.  Validation Procedures

   The validation check described in RFC5575 [2] and revised in [3]
   SHOULD be applied by default to received flow-spec routes with a
   '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.

   It is possible from a semenatics perspective to have multiple
   redirect actions defined within a single flowspec rule.  When a BGP
   flowspec NLRI has a 'redirect to INDIRECTION_ID' extended community
   attached resulting in valid redirection then it MUST take priority
   above all other redirect actions emposed.  However, if the 'redirect
   to INDIRECTION_ID' does not result in a valid redirection, then the
   flowspec rule must be processed as if the 'redirect to
   INDIRECTION_ID' community was not attached to the flowspec route and
   MUST provide an indication within the BGP routing table that the
   '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 an
   overflow of traffic being 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.  IANA Considerations

   This document requests a new sub-type from the "Transitive IPv4-
   Address-Specific" extended community registry.  The sub-type name
   shall be 'Flow-spec Redirect to 32-bit Path-id'.

   This document requests a new sub-type from the "Transitive IPv6-
   Address-Specific" extended community registry.  The sub-type name
   shall be 'Flow-spec Redirect to 128-bit Path-id'.

10.  References







Van de Velde, et al.   Expires September 18, 2016               [Page 8]

Internet-Draft      Flowspec Indirection-id Redirect          March 2016


10.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,
              <http://www.rfc-editor.org/info/rfc5575>.

10.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)
   Alcatel-Lucent
   Antwerp
   BE

   Email: gunter.van_de_velde@alcatel-lucent.com








Van de Velde, et al.   Expires September 18, 2016               [Page 9]

Internet-Draft      Flowspec Indirection-id Redirect          March 2016


   Wim Henderickx
   Alcatel-Lucent
   Antwerp
   BE

   Email: wim.henderickx@alcatel-lucent.com


   Keyur Patel
   Cisco Systems
   170 W. Tasman Drive
   San Jose, CA  95134
   USA

   Email: keyupate@cisco.com


   Arjun Sreekantiah
   Cisco Systems
   170 W. Tasman Drive
   San Jose, CA  95134
   USA

   Email: asreekan@cisco.com



























Van de Velde, et al.   Expires September 18, 2016              [Page 10]