[Docs] [txt|pdf] [Tracker] [Email] [Nits] [IPR]

Versions: 00 01 02 03 04 draft-ietf-idr-flow-spec

Network Working Group                                      Pedro Marques
INTERNET DRAFT                                             Nischal Sheth
Expiration Date: December 2003                     Juniper Networks, Inc
                                                           Robert Raszuk
                                                      Cisco Systems, Inc
                                                             Jared Mauch
                                                         Danny McPherson
                                                          Arbor Networks
                                                               June 2003

               Dissemination of flow specification rules


Status of this Memo

   This document is an Internet-Draft and is in full conformance with
   all provisions of Section 10 of RFC2026.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-

   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.''

   The list of current Internet-Drafts can be accessed at

   The list of Internet-Draft Shadow Directories can be accessed at


   This document specifies the procedures necessary for the distribution
   of flow specification rules both intra an inter-as. Additionally it
   defines its application for the purpose of traffic filtering in order
   to mitigate (distributed) denial of service attacks.

   The information is carried via the Border Gateway Protocol (BGP),
   thereby reusing protocol algorithms, operational experience and
   administrative processes such as inter-provider peering agreements.

draft-marques-idr-flow-spec-00.txt                              [Page 1]

Internet Draft     draft-marques-idr-flow-spec-00.txt          June 2003

1. Introduction

   For several applications, it may be necessary to exchange control
   information pertaining to aggregated traffic flow definitions which
   cannot be expressed using destination address prefixes only.

   An aggregated traffic flow is considered to be an n-tuple consisting
   on several matching criteria such as source and destination address
   prefixes, IP protocol and transport protocol port numbers.

   The intention of this document is to define a general procedure to
   encode such flow specification rules as a BGP NLRI which can be
   reused for several different control applications. Additionally, we
   define the required mechanisms to utilize this definition to the
   problem of immediate concern to the authors: intra and inter provider
   distribution of traffic filtering rules to filter (Distributed)
   Denial of Service (DoS) attacks.

   The choice of BGP as the carrier of this control information is
   justified by the fact that the key issues in terms of complexity are
   problems which are common to unicast route distribution and have
   already been solved in the current environment.

   From an algorithmic perspective, the main problem that presents
   itself is the distributed loop-free distribution of <key, attribute>
   pairs. The key, in this particular instance, being a flow

   From an operational perspective, the utilization of BGP as the
   carrier for this information, allows a network service provider to
   reuse both internal route distribution infrastructure (e.g.: route
   reflector or confederation design) and existing external
   relationships (e.g.: inter-domain BGP sessions to a customer

   While it is certainly possible to address this problem using other
   mechanisms the authors believe that this solution offers the
   substantial advantage of being an incremental addition to deployed

draft-marques-idr-flow-spec-00.txt                              [Page 2]

Internet Draft     draft-marques-idr-flow-spec-00.txt          June 2003

2. Flow specifications

   A flow specification is an n-tuple consisting on several matching
   criteria that can be applied to IP traffic. A given IP packet is said
   to match the defined flow if it matches all the specified criteria.

   A given flow may be associated with a set of attributes, depending on
   the particular application, such attributes may or may not include
   reachability information (i.e. NEXT_HOP). Well-known or AS-specific
   community attributes can be used to encode a set of predeterminate

   A particular application is identified by a specific (AFI, SAFI) pair
   and corresponds to a distinct set of RIBs. Those RIBs should be
   treated independently from each other in order to assure non-
   interference between distinct applications.

   BGP itself treats the NLRI as an opaque key to an entry in its
   databases. Entries that are placed in the Loc-RIB are then associated
   with a given set of semantics which is application dependent. This is
   consistent with existing BGP applications. For instance IP unicast
   routing (AFI=1, SAFI=1) and IP multicast reverse-path information
   (AFI=1, SAFI=2) are handled by BGP without any particular semantics
   being associated with them until installed in the Loc-RIB.

   Standard BGP policy mechanisms, such as UPDATE filtering by NLRI
   prefix and community matching, SHOULD apply to the newly defined
   NLRI-type. Network operators can also control propagation of such
   routing updates by enabling or disabling the exchange of a particular
   (AFI, SAFI) pair on a given BGP peering session.

3. Dissemination of Information

   We define a "Flow Specification" NLRI type that may include several
   components such as destination prefix, source prefix, protocol,
   ports, etc. This NLRI is treated as an opaque bit string prefix by
   BGP. Each bit string identifies a key to a database entry which a set
   of attributes can be associated with.

   This NLRI information is encoded using MP_REACH_NLRI and
   MP_UNREACH_NLRI attributes as defined in [BGP-MP]. Whenever the
   corresponding application does not require Next Hop information, this
   shall be encoded as a 0 octet length Next Hop in the MP_REACH_NLRI
   attribute and ignored on receipt.

   The NLRI field of the MP_REACH_NLRI and MP_UNREACH_NLRI is encoded as
   a two byte NLRI length value in octets followed by a variable length

draft-marques-idr-flow-spec-00.txt                              [Page 3]

Internet Draft     draft-marques-idr-flow-spec-00.txt          June 2003

   NLRI value.

      |    NLRI length (2 octets)    |
      |    NLRI value  (variable)    |

   The Flow Specification NLRI-type consists of several optional
   subcomponents. A specific packet is considered to match the flow
   specification when it matches the intersection (AND) of all the
   components present in the specification.

   The following component types are defined:

      Type 1 - Destination Prefix

         Encoding: <type (1 octet), prefix length (1 octet), prefix>

         Defines the destination prefix to match. Prefixes are encoded
         as in BGP UPDATE messages, a length in bits is followed by
         enough octets to contain the prefix information.

      Type 2 - Source Prefix

         Encoding: <type (1 octet), prefix-length (1 octet), prefix>

         Defines the source prefix to match.

      Type 3 - Protocol

         Encoding: <type (1 octet), IP protocol (1 octet)>

         Defines the IP protocol value to match.

      Type 4 - Port

         Encoding: <type (1 octet), TCP/UDP port (2 octets)>

         Defines the TCP/UDP port to match as source OR destination.

      Type 5 - Destination port

         Encoding: <type (1 octet), TCP/UDP port (2 octets)>

         Defines the destination TCP/UDP port to match.

      Type 6 - Source port

draft-marques-idr-flow-spec-00.txt                              [Page 4]

Internet Draft     draft-marques-idr-flow-spec-00.txt          June 2003

         Encoding: <type (1 octet), TCP/UDP port (2 octets)>

         Defines the source TCP/UDP port to match.

      Type 7 - ICMP type

         Encoding: <type (1 octet),  icmp type(1 octet)>

         Defines the source icmp type to match.

      Type 8 - Packet length

         Encoding: <type (1 octet),  IP packet length (2 octets)>

         Match on the total IP packet length (excluding L2 but including
         IP header).

   Flow specification components must follow strict type ordering. A
   given component type may or may not be present in the specification,
   but if present it MUST precede any component of higher numeric type

   If a given component type within a prefix in unknown, the prefix in
   question cannot be used for traffic filtering purposes by the
   receiver. Since a Flow Specification as the semantics of a logical
   AND of all components, if a component is FALSE by definition it
   cannot be applied. However for the purposes of BGP route propagation
   this prefix should still be transmitted since BGP route distribution
   is independent on NLRI semantics.

   Flow specification components are to be interpreted as a bit match at
   a given packet offset. When more than one component in a flow
   specification tests the same packet offset the behavior is

   The <type, value> encoding is chosen in order to account for future

   An example of a Flow Specification encoding for: "all packets to
   10.0.1/24 and TCP port 25".

        destination  proto   port
      01 18 0a 01 01 03 06 04 00 19

   This constitutes a NLRI with an NLRI length of 10 octets.

   Implementations wishing to exchange flow specification rules MUST use

draft-marques-idr-flow-spec-00.txt                              [Page 5]

Internet Draft     draft-marques-idr-flow-spec-00.txt          June 2003

   BGP's Capability Advertisement facility to exchange the Multiprotocol
   Extension Capability Code (Code 1) as defined in [BGP-MP].  The (AFI,
   SAFI) pair carried in the Multiprotocol Extension capability MUST be
   the same as the one used to identify a particular application that
   uses this NLRI-type.

4. Traffic filtering

   Traffic filtering policies where traditionally considered to be
   relatively static.  The popularity of traffic-based denial of service
   (DoS) attacks, which often requires the network operator to be able
   to use traffic filters for detection and mitigation, brings with it
   requirements that are not fully satisfied by existing tools.

   Several techniques are currently used to control traffic filtering of
   DoS attacks.  Among those, one of the most common is to inject
   unicast route advertisements corresponding to a destination prefix
   being attacked. One variant of this technique marks such route
   advertisements with a community that gets translated into a discard
   next-hop by the receiving router. Other variants, attract traffic to
   a particular node that serves as a deterministic drop point.

   Using unicast routing advertisements to distribute traffic filtering
   information has the advantage of using the existing infrastructure
   and inter-as communication channels. This can allow, for instance,
   for a service provider to accept filtering requests from customers
   for address space they own.

   There are several drawbacks, however. An issue that is immediately
   apparent is the granularity of filtering control: only destination
   prefixes may be specified. Another area of concern is the fact that
   filtering information is intermingled with routing information.

   The mechanism defined in this document is designed to address these
   limitations. We use the flow specification NLRI defined above to
   convey information about traffic filtering rules for traffic that
   should be discarded.

   This mechanism is designed to, primarily, allow an upstream
   autonomous system to perform inbound filtering, in their ingress
   routers of traffic that a given downstream AS wishes to drop.

   In order to achieve that goal, we define an application specific NLRI
   identifier (AFI=1, SAFI=TBD) along with specific sematic rules.  BGP
   routing updates containing this identifier use the flow specification
   NLRI encoding to convey particular aggregated flows that require
   special treatment.

draft-marques-idr-flow-spec-00.txt                              [Page 6]

Internet Draft     draft-marques-idr-flow-spec-00.txt          June 2003

5. Validation procedure

   Flow specifications received from a BGP peer and which are accepted
   in the respective Adj-RIB-In are used as input to the route selection
   process. Although the forwarding attributes of two routes for the
   same Flow Specification prefix may be the same, BGP is still required
   to perform its path selection algorithm in order to select the
   correct set of attributes to advertise.

   The first step of the BGP Route Selection procedure [BGP-BASE]
   (section 9.1.2) is to exclude from the selection procedure routes
   that are considered non-feasible. In the context of IP routing
   information this step is used to validate that the NEXT_HOP attribute
   of a given route is resolvable.

   The concept can be extended, in the case of Flow Specification NLRI,
   to allow other validation procedures.

   A flow specification NLRI SHOULD be validated such that it is
   considered unfeasible if it contains an non-empty AS_PATH and that
   AS_PATH does not match the AS_PATH of the best match unicast route
   that includes the specified destination address prefix.

   The underlying concept is that the neighboring AS that advertises the
   best unicast route for a destination is allowed to advertise flow
   spec information that conveys a less or equally specific destination

   The neighboring AS is the immediate destination of the traffic
   described by the Flow Specification. If it requests these flows to be
   dropped that request can be honored without concern that it
   represents a denial of service in itself. Supposedly, the traffic is
   being dropped by the downstream autonomous-system and there is no
   added value in carrying the traffic to it.

   BGP implementations MUST also enforce that the AS_PATH attribute of a
   route received via eBGP contains the neighboring AS in the left-most
   position of the AS_PATH attribute. While this rule is optional in the
   BGP specification, it becomes necessary to enforce it for security

draft-marques-idr-flow-spec-00.txt                              [Page 7]

Internet Draft     draft-marques-idr-flow-spec-00.txt          June 2003

6. Traffic Filtering Actions

   The default action for a traffic filtering flow specification is to
   discard IP traffic that matches that particular rule.

   In some situations, a network operator may choose, to monitor a
   particular aggregated flow while still forwarding the affected
   packets. This action is specified by tagging the respective flow
   specifications with the well-known community of value TBD.

   Other actions such as rate-limiting or policy-based routing may be
   employed as well, although further discussions of these actions is
   considered beyond the scope of this document.

7. Monitoring

   Traffic filtering applications require monitoring and traffic
   statistics facilities. While this is an implementation specific
   choice, implementations SHOULD provide:

      - A mechanism to log the packet header of filtered traffic,

      - A mechanism to count the number of drops matching a given Flow
        Specification rule.

8. Security considerations

   Inter-provider routing is based on a web of trust. Neighboring
   autonomous-systems are trusted to advertise valid reachability
   information. If this trust model is violated, a neighboring
   autonomous system may cause a denial of service attack by advertising
   reachability information for a given prefix for which it does not
   provide service.

   As long as traffic filtering rules are restricted to match the
   corresponding unicast routing paths for the relevant prefixes, the
   security characteristics of this proposal are equivalent to the
   existing security properties of BGP unicast routing.

   Where it not the case, this would open the door to further denial of
   service attacks.

draft-marques-idr-flow-spec-00.txt                              [Page 8]

Internet Draft     draft-marques-idr-flow-spec-00.txt          June 2003

9. Acknowledgments

   The authors would like to thank Yakov Rekhter, Dennis Ferguson and
   Chris Morrow for their comments.

10. References

   [BGP-BASE] Y. Rekhter, T. Li, S. Hares, "A Border Gateway Protocol 4
   (BGP-4)", draft-ietf-idr-bgp4-20.txt, 03/03

   [BGP-MP] T. Bates, R. Chandra, D. Katz, Y. Rekhter, "Multiprotocol
   Extensions for BGP-4", RFC2858.

11. Authors' Addresses

Pedro Marques
Juniper Networks
1194 N. Mathilda Ave.
Sunnyvale, CA 94089
E-mail: roque@juniper.net

Nischal Sheth
Juniper Networks
1194 N. Mathilda Ave.
Sunnyvale, CA 94089
E-mail: roque@juniper.net

Robert Raszuk
Cisco Systems, Inc.
Al. Jerozolimskie 146C
02-305 Warsaw, Poland
Email: rraszuk@cisco.com

Jared Mauch
8285 Reese Lane
Ann Arbor, MI, 48103-9753
Email: jmauch@verio.net | jared@puck.nether.net

Danny McPherson
Arbor Networks
Email: danny@arbor.net

draft-marques-idr-flow-spec-00.txt                              [Page 9]

Html markup produced by rfcmarkup 1.129d, available from https://tools.ietf.org/tools/rfcmarkup/