Skip to main content

BGP Dissemination of L2 Flow Specification Rules
draft-ietf-idr-flowspec-l2vpn-13

The information below is for an old version of the document.
Document Type
This is an older version of an Internet-Draft whose latest revision state is "Active".
Authors Hao Weiguo , Donald E. Eastlake 3rd , Jim Uttaro , Stephane Litkowski , Shunwan Zhuang
Last updated 2019-12-31 (Latest revision 2019-11-03)
Replaces draft-hao-idr-flowspec-evpn
RFC stream Internet Engineering Task Force (IETF)
Formats
Additional resources Mailing list discussion
Stream WG state WG Document
Doc Shepherd Follow-up Underway, Other - see Comment Log
Document shepherd (None)
IESG IESG state I-D Exists
Consensus boilerplate Unknown
Telechat date (None)
Responsible AD (None)
Send notices to (None)
draft-ietf-idr-flowspec-l2vpn-13
INTERNET-DRAFT                                                    W. Hao
Intended Status: Proposed Standard                   Huawei Technologies
                                                             D. Eastlake
                                                  Futurewei Technologies
                                                               J. Uttaro
                                                                    AT&T
                                                            S. Litkowski
                                                           Cisco Systems
                                                               S. Zhuang
                                                     Huawei Technologies
Expires: June 30, 2020                                 December 31, 2019

            BGP Dissemination of L2 Flow Specification Rules
                    draft-ietf-idr-flowspec-l2vpn-13

Abstract
   This document defines a Border Gateway Protocol (BGP) Flow-spec
   extension to disseminate Ethernet Layer 2 (L2) and Layer 2 Virtual
   Private Network (L2VPN) traffic filtering rules either by themselves
   or in conjunction with L3 Flow-specs.  AFI/SAFI 6/133 and 25/134 are
   used for these purposes.  New component types and an extended
   community also are defined.

Status of This Document

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Distribution of this document is unlimited. Comments should be sent
   to the authors or the IDR Working Group mailing list <idr@ietf.org>.

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

   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
   http://www.ietf.org/1id-abstracts.html. The list of Internet-Draft
   Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

W. Hao, et al                                                   [Page 1]
INTERNET-DRAFT                                              L2 Flow Spec

Table of Contents

      1. Introduction............................................3
      1.1 Terminology............................................4

      2. Layer 2 Flow Specification Encoding.....................5
      2.1 L2 Component Types.....................................6
      2.1.1 Type 1 - Ethernet Type (EtherType)...................6
      2.1.2 Type 2 - Source MAC..................................7
      2.1.3 Type 3 - Destination MAC.............................7
      2.1.4 Type 4 - DSAP (Destination Service Access Point).....7
      2.1.5 Type 5 - SSAP (Source Service Access Point)..........7
      2.1.6 Type 6 - Control field in LLC........................7
      2.1.7 Type 7 - SNAP........................................8
      2.1.8 Type 8 - VLAN ID.....................................8
      2.1.9 Type 9 - VLAN PCP....................................8
      2.1.10 Type 10 - Inner VLAN ID.............................8
      2.1.11 Type 11 - Inner VLAN PCP............................9
      2.1.12 Type 12 - VLAN DEI..................................9
      2.1.13 Type 13 - Inner VLAN DEI............................9
      2.1.14 Type 14 - Source MAC Special Bits...................9
      2.1.15 Type 15 - Destination MAC Special Bits.............10
      2.2 Order of L2 Traffic Filtering Rules...................10

      3. L2VPN Flow Specification Encoding in BGP...............12
      3.1 Order of L2VPN Filtering Rules........................12

      4. Ethernet Flow Specification Traffic Actions............13
      4.1 VLAN-action...........................................13
      4.2 TPID-action...........................................15

      5. Flow Spec Validation...................................16

      6. IANA Considerations....................................17

      7. Security Considerations................................18
      8. Acknowledgements.......................................18
      9. Contributors...........................................18

      Normative References......................................19
      Informative References....................................20

W. Hao, et al                                                   [Page 2]
INTERNET-DRAFT                                              L2 Flow Spec

1. Introduction

   Border Gateway Protocol (BGP) Flow-spec [RFC5575bis] is an extension
   to BGP that supports the dissemination of traffic flow specification
   rules and actions to be taken on packets in a specified flow.  It
   leverages the BGP Control Plane to simplify the distribution of ACLs
   (Access Control Lists).  Using the Flow-spec extension new filter
   rules can be injected to all BGP peers simultaneously without
   changing router configuration.  A typical application is to automate
   the distribution of traffic filter lists to routers for DDoS
   (Distributed Denial of Service) mitigation, access control, and
   similar applications.

   BGP Flow-spec [RFC5575bis] defines a BGP Network Layer Reachability
   Information (NLRI) format used to distribute traffic flow
   specification rules.  NLRI (AFI=1, SAFI=133) is for IPv4 unicast
   filtering.  NLRI (AFI=1, SAFI=134) is for IPv4 BGP/MPLS VPN filtering
   [RFC7432].  The Flow specification match part defined in [RFC5575bis]
   only includes L3/L4 information like IPv4 source/destination prefix,
   protocol, ports, and the like, so traffic flows can only be filtered
   based on L3/L4 information. This has been extended by [FlowSpecV6]
   which covers IPv6 (AFI=2) L3/L4.

   Layer 2 Virtual Private Networks (L2VPNs) have been deployed in an
   increasing number of networks.  Such networks also have requirements
   to deploy BGP Flow-spec to mitigate DDoS attack traffic.  Within an
   L2VPN network, both IP and non-IP Ethernet traffic maybe exist.  For
   IP traffic filtering, the VPN Flow specification rules defined in
   [RFC5575bis] and/or [FlowSpecV6], which include match criteria and
   actions, can still be used. Flow specification rules received via the
   new NLRI format apply only to traffic that belongs to the VPN
   instance(s) in which it is imported.  For non-IP Ethernet traffic
   filtering, Layer 2 related information like source/destination MAC
   and VLAN must be considered.

   There are different kinds of L2VPN networks like EVPN [RFC7432], BGP
   VPLS [RFC4761], LDP VPLS [RFC4762] and border gateway protocol (BGP)
   auto discovery [RFC6074].  Because the Flow-spec feature relies on
   the BGP protocol to distribute traffic filtering rules, it can only
   be incrementally deployed in those L2VPN networks where BGP has
   already been used for auto discovery and/or signaling purposes such
   as BGP-based VPLS [RFC4761], EVPN and LDP-based VPLS [RFC4762] with
   BGP auto-discovery [RFC6074].

   This draft defines new Flow-spec component types and two new extended
   communities to support L2 and L2VPN Flow-spec applications.  The
   Flow-spec rules can be enforced on all border routers or on some
   interface sets of the border routers.  SAFI=133 in [RFC5575bis] and
   [FlowSpecV6] is extended for AFI=6 as specified in Section 2 to cover
   L2 traffic filtering information and in Section 3 SAFI=134 is

W. Hao, et al                                                   [Page 3]
INTERNET-DRAFT                                              L2 Flow Spec

   extended for AFI=25 to cover the L2VPN environment.

1.1 Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in BCP
   14 [RFC2119] [RFC8174] when, and only when, they appear in all
   capitals, as shown here.

   The following acronyms are used in this document:

      AFI - Address Family Identifier

      ACL - Access Control List

      DDoS - Distributed Denial of Service

      EVPN - Ethernet VPN [RFC7432]

      L2 - Layer 2

      L2VPN - Layer 2 VPN

      L3 - Layer 3

      L3VPN - Layer 3 VPN

      NLRI - Network Layer Reachability Information

      PCP - Priority Code Point [802.1Q]

      SAFI - Subsequent Address Family Identifier

      TPID - Tag Protocol ID, typically a VLAN ID

      VLAN - Virtual Local Area Network

      VPLS - Virtual Private Line Service [RFC4762]

      VPN - Virtual Private Network

W. Hao, et al                                                   [Page 4]
INTERNET-DRAFT                                              L2 Flow Spec

2. Layer 2 Flow Specification Encoding

   [RFC5575bis] defines SAFI 133 and SAFI 134, with AFI=1, for
   "dissemination of IPv4 flow specification rules" and "dissemination
   of VPNv4 flow specification rules", respectively.  [FlowSpecV6]]
   extends [RFC5575bis] to also allow AFI=2 thus making it applicable to
   both IPv4 and IPv6 applications.  This document further extends
   SAFI=133 for AFI=6 and SAFI=134 for AFI=25 to make them applicable to
   L2 and L2VPN applications. This document also provides for the
   optional inclusion of L3 flow specifications with the L2 flow
   specifications.

   This section specifies the L2 Flow Spec for AFI=6/SAFI=133. (SAFI=133
   is updated by the [FlowSpecV6] draft so as to not be restricted to
   the Layer of the AFI with which it operates.) To simplify
   assignments, a new registry is used for L2 Flow-spec. Since it is
   frequently desirable to also filter on L3/L4 fields, provision is
   made for their inclusion along with an indication of the L3 protocol
   involved (IPv4 or IPv6).

   The NLRI part of the MP_REACH_NLRI and MP_UNREACH_NLRI is encoded as
   a 1- or 2-octet total NLRI length field followed by several fields as
   described below.

            +-------------------------------+
            | total-length (0xnn or 0xfnnn) |  2 or 3 octets
            +-------------------------------+
            |             L3-AFI            |  2 octets
            +-------------------------------+
            |  L2-length (0xnn or 0xfnnn)   |  2 or 3 octets
            +-------------------------------+
            |           NLRI-value          |  variable
            +-------------------------------+

                 Figure 1: Flow Specification NLRI for L2

   The fields show in Figure 1 are further specified below:

      total-length: The length of the subsequent fields (L3 AFI,
         L2-length, and NRLI-vaue) encoded as provided in Section 4.1 of
         [RFC5575bis]. If this field is less than 4, which is the
         minimum valid value, then the NLRI is malformed in which case a
         NOTIFICATION message is sent and the BGP connection closed as
         provided in Section 6.3 of [RFC4271].

      L3-AFI: If no L3/L4 filtering is desired, this two octet field
         MUST be zero. Otherwise it indicates the L3 protocol involved
         by giving its AFI (0x0001 for IPv4 or 0x0002 for IPv6). If the
         receiver does not understand the value of this field, the
         MP_REACH or MP_UNREACH attribute is ignored.

W. Hao, et al                                                   [Page 5]
INTERNET-DRAFT                                              L2 Flow Spec

      L2-length: The length of the L2 components at the beginning of the
         NLRI-value field encoded as provided in Section 4.1 of
         [RFC5575bis].  If the value of this field indicates that the L2
         components extend beyond the total-length, the NLRI is
         malformed in which case a NOTIFICATION message is sent and the
         BGP connection closed as provided in Section 6.3 of [RFC4271].
         N2-length MAY be zero although, in that case, it would have
         been more efficient to encode the attribute as an L3 Flow spec
         unless it is desired to apply an L2 action (see Section 4). A
         null L2 Flow-spec always matches.

      NLRI-value: This consists of the L2 Flow Spec, of length
         L2-length, followed by an optionally present L3 Flow. The
         result can be treated in most ways as a single Flow spec,
         matching the intersection (AND) of all the components except
         that the components in the initial L2 region are interpreted as
         L2 components and the remainder as L3 components per the L3-AFI
         field. This is necessary because there are different registries
         for the L2, L3 IPv4, and L3 IPv6 component types. If the L3
         Flow-spec is null (length zero), it always matches.

2.1 L2 Component Types

   The L2 Flow-spec portion of NLRI-value consists of Flow-spec
   components as in [RFC5575bis] but using L2 components and types as
   specified below. All components start with a type octet followed by a
   length octet followed by any additional information needed. The
   length octet give the length, in octets, of the information after the
   length octet.  This structure applies to all new components to be
   defined in the L2 Flow-spec Component Registry (see Section 6) and to
   all existing components except Types 2 and 3 where the length is in
   bits.

2.1.1 Type 1 - Ethernet Type (EtherType)

   Encoding: <type (1 octet), length (1 octet), [op, value]+>

   Defines a list of {operation, value} pairs used to match the two-
   octet EtherType field.  op is encoded as specified in Section 4.2.1.1
   of [RFC5575bis]. Values are encoded as 2-octet quantities.  Ethernet
   II framing defines the two-octet Ethernet Type (EtherType) field in
   an Ethernet frame, preceded by destination and source MAC addresses,
   that identifies an upper layer protocol encapsulating the frame data.

W. Hao, et al                                                   [Page 6]
INTERNET-DRAFT                                              L2 Flow Spec

2.1.2 Type 2 - Source MAC

   Encoding: <type (1 octet), MAC Prefix length (1 octet), MAC Prefix>

   Defines the source MAC Address prefix to match encoded as in BGP
   UPDATE messages [RFC4271].  Prefix length is in bits and the MAC
   Prefix is fill out with unused bit to an integer number of octets.

2.1.3 Type 3 - Destination MAC

   Encoding: <type (1 octet), MAC Prefix length (1 octet), MAC Prefix>

   Defines the destination MAC Address to match encoded as in BGP UPDATE
   messages [RFC4271]. Prefix length is in bits and the MAC Prefix is
   fill out with unused bit to an integer number of octets.

2.1.4 Type 4 - DSAP (Destination Service Access Point)

   Encoding: <type (1 octet), length (1 octet), [op, value]+>

   Defines a list of {operation, value} pairs used to match the 1-octet
   DSAP in the IEEE 802.2 LLC (Logical Link Control Header).  Values are
   encoded as 1-octet quantities.  op is encoded as specified in Section
   4.2.1.1 of [RFC5575bis].

2.1.5 Type 5 - SSAP (Source Service Access Point)

   Encoding: <type (1 octet), length (1 octet), [op, value]+>

   Defines a list of {operation, value} pairs used to match the 1-octet
   SSAP in the IEEE 802.2 LLC.  Values are encoded as 1-octet
   quantities. op is encoded as specified in Section 4.2.1.1 of
   [RFC5575bis].

2.1.6 Type 6 - Control field in LLC

   Encoding: <type (1 octet), length (1 octet), [op, value]+>

   Defines a list of {operation, value} pairs used to match 1-octet
   control field in the IEEE 802.2 LLC.  Values are encoded as 1-octet
   quantities. op is encoded as specified in Section 4.2.1.1 of
   [RFC5575bis].

W. Hao, et al                                                   [Page 7]
INTERNET-DRAFT                                              L2 Flow Spec

2.1.7 Type 7 - SNAP

   Encoding: <type (1 octet), length (1 octet), [op, value]+>

   Defines a list of {operation, value} pairs used to match 5-octet SNAP
   (Sub-Network Access Protocol) field.  Values are encoded as 5-octet
   quantities. op is encoded as specified in Section 4.2.1.1 of
   [RFC5575bis].

2.1.8 Type 8 - VLAN ID

   Encoding: <type (1 octet), length (1 octet), [op, value]+>

   Defines a list of {operation, value} pairs used to match VLAN ID.
   Values are encoded as 2-octet quantities, where the four most
   significant bits are zero and the 12 least significant bits contain
   the VLAN value. op is encoded as specified in Section 4.2.1.1 of
   [RFC5575bis].

   In the virtual local-area network (VLAN) stacking case, the VLAN ID
   is the outer VLAN ID.

2.1.9 Type 9 - VLAN PCP

   Encoding: <type (1 octet), length (1 octet), [op, value]+>

   Defines a list of {operation, value} pairs used to match 3-bit VLAN
   PCP fields [802.1Q].  Values are encoded using a single octet, where
   the five most significant bits are zero and the three least
   significant bits contain the VLAN PCP value. op is encoded as
   specified in Section 4.2.1.1 of [RFC5575bis].

   In the virtual local-area network (VLAN) stacking case, the VLAN PCP
   is outer VLAN PCP.

2.1.10 Type 10 - Inner VLAN ID

   Encoding: <type (1 octet), length (1 octet), [op, value]+>

   Defines a list of {operation, value} pairs used to match the inner
   VLAN ID using for virtual local-area network (VLAN) stacking or Q-in-
   Q use.  Values are encoded as 2-octet quantities, where the four most
   significant bits are zero and the 12 least significant bits contain
   the VLAN value. op is encoded as specified in Section 4.2.1.1 of

W. Hao, et al                                                   [Page 8]
INTERNET-DRAFT                                              L2 Flow Spec

   [RFC5575bis].

   In the single VLAN case, this component type MUST NOT be used. If it
   appears the match will fail.

2.1.11 Type 11 - Inner VLAN PCP

   Encoding: <type (1 octet), length (1 octet), [op, value]+>

   Defines a list of {operation, value} pairs used to match 3-bit inner
   VLAN PCP fields [802.1Q] using for virtual local-area network (VLAN)
   stacking or Q in Q use.  Values are encoded using a single octet,
   where the five most significant bits are zero and the three least
   significant bits contain the VLAN PCP value. op is encoded as
   specified in Section 4.2.1.1 of [RFC5575bis].

   In the single VLAN case, this component type MUST NOT be used. If it
   appears the match will fail.

2.1.12 Type 12 - VLAN DEI

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

   This type tests the DEI bit in the VLAN tag. If op is zero, it
   matches if and only if the DEI bit is zero. If op is non-zero, it
   matches if and only if the DEI bit is one.

2.1.13 Type 13 - Inner VLAN DEI

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

   This type tests the DEI bit in the inner VLAN tag. If op is zero, it
   matches if and only if the DEI bit is zero. If op is non-zero, it
   matches if and only if the DEI bit is one.

   In the single VLAN case, this component type MUST NOT be used. If it
   appears the match will fail.

2.1.14 Type 14 - Source MAC Special Bits

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

W. Hao, et al                                                   [Page 9]
INTERNET-DRAFT                                              L2 Flow Spec

   This type tests the bottom nibble of the top octet of the Source MAC
   address. The two low order bits of that nibble have long been the
   local bit (0x2) and the group addressed bit (0x1). However, recent
   changes in IEEE 802 have divided the local address space into 4
   quadrants specified by the next two bits (0x4 and 0x8) [RFC7042bis].
   This type permits testing, for example, that a MAC is group addressed
   or is a local address in a particular quadrant. The encoding is as
   given in Section 4.2.1.2 of [RFC5575bis].

2.1.15 Type 15 - Destination MAC Special Bits

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

   As discussed in Section 2.1.14 but for the Destination MAC Address.

2.2 Order of L2 Traffic Filtering Rules

   L2 Flow-specs take precedence over L3 Flow-specs. Between two L2
   Flow-specs, precedence is determined as specified in this section
   after this paragraph. If the L2 Flow-specs are the same, then the L3
   Flow-specs are compared as specified in [RFC5575bis or [FlowSpecV6]
   as appropriate. Note: if the L3-AFI fields are different between two
   L2 Flow-specs, they will never match the same packet so it will not
   be necessary to prioritize two Flow-specs with different L3-AFI
   values.

   The original definition for the order of traffic filtering rules can
   be reused for L2 with new consideration for the MAC Address offset.
   As long as the offsets are equal, the comparison is the same,
   retaining longest-prefix-match semantics.  If the offsets are not
   equal, the lowest offset has precedence, as this flow matches the
   most significant bit.

W. Hao, et al                                                  [Page 10]
INTERNET-DRAFT                                              L2 Flow Spec

   Pseudocode:
   flow_rule_L2_cmp (a, b)
   {
       comp1 = next_component(a);
       comp2 = next_component(b);
       while (comp1 || comp2) {
           // component_type returns infinity on end-of-list
           if (component_type(comp1) < component_type(comp2)) {
               return A_HAS_PRECEDENCE;
           }
           if (component_type(comp1) > component_type(comp2)) {
               return B_HAS_PRECEDENCE;
           }

           if (component_type(comp1) == MAC_DESTINATION || MAC_SOURCE) {
               common = MIN(MAC Address length (comp1),
                        MAC Address length (comp2));
               cmp = MAC Address compare(comp1, comp2, common);
               // not equal, lowest value has precedence
               // equal, longest match has precedence
           } else {
               common =
                  MIN(component_length(comp1), component_length(comp2));
               cmp = memcmp(data(comp1), data(comp2), common);
               // not equal, lowest value has precedence
               // equal, longest string has precedence
           }
       }
       return EQUAL;
   }

W. Hao, et al                                                  [Page 11]
INTERNET-DRAFT                                              L2 Flow Spec

3. L2VPN Flow Specification Encoding in BGP

   The NLRI format for AFI=25/SAFI=134 (L2VPN), as with the other VPN
   Flow-spec AFI/SAFI pairs, is the same as the non-VPN Flow-Spec but
   with the addition of a Route Distinguisher to identify the VPN to
   which the Flow-spec is to be applied.

   In addition, the IANA entry for SAFI 134 is slightly generalized as
   specified at the beginning of Section 6.

   The NLRI format is as follows:

            +-------------------------------+
            | total-length (0xnn or 0xfnnn) |  2 or 3 octets
            +-------------------------------+
            |      Route Distinguisher      |  8 octets
            +-------------------------------+
            |            L3-AFI             |  2 octets
            +-------------------------------+
            |  L2-length (0xnn or 0xfnnn)   |  2 or 3 octets
            +-------------------------------+
            |           NLRI-value          |  variable
            +-------------------------------+

                Figure 2: Flow Specification NLRI for L2VPN

   The fields in Figure 2, other than the Route Distinguisher, are
   encoded as specified in Section 2 except that the minimum value for
   total-length is 12.

   Flow specification rules received via this NLRI apply only to traffic
   that belongs to the VPN instance(s) into which it is imported.  Flow
   rules are accepted as specified in Section 5.

3.1 Order of L2VPN Filtering Rules

   The order between L2VPN filtering rules is determined as specified in
   Section 2.2. Note that if the Route Distinguisher is different
   between two L2VPN filtering rules, they will never both match the
   same packet so they need not be prioritized.

W. Hao, et al                                                  [Page 12]
INTERNET-DRAFT                                              L2 Flow Spec

4. Ethernet Flow Specification Traffic Actions

   The default action for a layer 2 traffic filtering flow specification
   is to accept traffic that matches that particular rule.  The
   following extended community values per [RFC5575bis] can be used to
   specify particular actions in an L2 VPN network:

       +--------+--------------------+----------------------------+
       |  type  | extended community |          encoding          |
       +--------+--------------------+----------------------------+
       | 0x8006 | traffic-rate       | 2-octet as#, 4-octet float |
       | 0x8007 | traffic-action     | bitmask                    |
       | 0x8008 | redirect           | 6-octet Route Target       |
       | 0x8009 | traffic-marking    | DSCP value                 |
       +--------+--------------------+----------------------------+

   Redirect: The action should be redefined to allow the traffic to be
   redirected to a MAC or IP VRF routing instance that lists the
   specified route-target in its import policy.

   Besides the above extended communities, this document also specifies
   the following BGP extended communities for Ethernet flows to extend
   [RFC5575bis]:

      +--------+------------------------+--------------------------+
      | type   | extended community     |   encoding               |
      +--------+------------------------+--------------------------+
      |  TBD1  | VLAN-action            |   bitmask                |
      |  TBD2  | TPID-action            |   bitmask                |
      +--------+------------------------+--------------------------+

4.1 VLAN-action

   The VLAN-action extended community, as shown in the diagram below,
   consists of 6 octets that include action Flags, two VLAN IDs, and the
   associated PCP and DEI values.  The action Flags fields are further
   divided into two parts which correspond to the first action and the
   second action respectively. Bit 0 to bit 7 give the first action
   while bit 8 to bit 15 give the second action.  The bits of PO, PU,
   SW, RI and RO in each part represent the action of Pop, Push, Swap,
   Rewrite inner VLAN and Rewrite outer VLAN respectively.  Through this
   method, more complicated actions also can be represented in a single
   VLAN-action extended community, such as SwapPop, PushSwap, etc.  For
   example, SwapPop action is the sequence of two actions, the first
   action is Swap and the second action is Pop.

W. Hao, et al                                                  [Page 13]
INTERNET-DRAFT                                              L2 Flow Spec

     0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
   |PO1|PU1|SW1|RI1|RO1| Resv      |PO2|PU2|SW2|RI2|RO2| Resv      |
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
   | VLAN ID1                                      |PCP1       |DE1|
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
   | VLAN ID2                                      |PCP2       |DE2|
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

   PO1: Pop action.  If the PO1 flag is one, it indicates the outmost
   VLAN should be removed.

   PU1: Push action.  If PU1 is one, it indicates VLAN ID1 will be
   added, the associated PCP and DEI are PCP1 and DE1.

   SW1: Swap action.  If the SW1 flag is one, it indicates the outer
   VLAN and inner VLAN should be swapped.

   PO2: Pop action.  If the PO2 flag is one, it indicates the outmost
   VLAN should be removed.

   PU2: Push action.  If PU2 is one, it indicates VLAN ID2 will be
   added, the associated PCP and DEI are PCP2 and DE2.

   SW2: Swap action.  If the SW2 flag is one, it indicates the outer
   VLAN and inner VLAN should be swapped.

   RI1 and RI2: Rewrite inner VLAN action.  If the RI flag is one, it
   indicates the inner VLAN should be replaced by a new VLAN where the
   new VLAN is VLAN ID1 and the associated PCP and DEO are PCP1 and DE1.
   If the VLAN ID1 is 0, the action is to only modify the PCP and DEI
   value of the inner VLAN.

   RO1 and RO2: Rewrite outer VLAN action.  If the RO flag is one, it
   indicates the outer VLAN should be replaced by a new VLAN where the
   new VLAN is VLAN ID and the associated PCP and DEI are PCP2 and DE2.
   If the VLAN ID2 is 0, the action is to only modify the PCP and DEI
   value of the outer VLAN.

   Resv, R1, and R2: Reserved for future use.  MUST be sent as zero and
   ignored on receipt.

   Giving an example below: if the action of PUSH Inner VLAN 10 with PCP
   value 5 DEI value 0 and Outer VLAN 20 with PCP value 6 DEI value 0 is
   needed, the format of the VLAN-action extended community is as
   follows:

W. Hao, et al                                                  [Page 14]
INTERNET-DRAFT                                              L2 Flow Spec

        0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
      +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
      |0 |1 |0 |0 |0 |0 |0 |0 |0 |1 |0 |0 |0 |0 |0 |0 |
      +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
      | 10                                |1 |0 |1 |0 |
      +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
      | 20                                |1 |1 |0 |0 |
      +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

4.2 TPID-action

   The TPID-action extended community consists of 6 octets which
   includes the fields of action Flags, TPID1 and TPID2.

        0                                           15
      +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
      |TI|TO|                     Resv                |
      +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
      |                    TP ID1                     |
      +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
      |                    TP ID2                     |
      +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

   TI: Mapping inner TP ID action.  If the TI flag is one, it indicates
   the inner TP ID should be replaced by a new TP ID, the new TP ID is
   TP ID1.

   TO: Mapping outer TP ID action.  If the TO flag is one, it indicates
   the outer TP ID should be replaced by a new TP ID, the new TP ID is
   TP ID2.

   Resv: Reserved for future use.  MUST be sent as zero and ignored on
   receipt.

W. Hao, et al                                                  [Page 15]
INTERNET-DRAFT                                              L2 Flow Spec

5. Flow Spec Validation

   Flow-specs received over AFI=25/SAFI=134 are validated against
   routing reachability received over AFI=25/SAFI=128 as modified to
   conform to [FlowSpecOID].

W. Hao, et al                                                  [Page 16]
INTERNET-DRAFT                                              L2 Flow Spec

6. IANA Considerations

   IANA is requested to change the description for SAFI 134 [RFC5575bis]
   to read as follows and to change the reference for it to [this
   document]:

      134  VPN dissemination of flow specification rules

   IANA is requested to create an L2 Flow Spec Component Type registry
   on the Flow Spec Component Types registries web page as follows:

      Name:  L2 Flow Spec Component Types
      Reference: [this document]
      Registration Procedures:
                  0  Reserved
              1-127  Specification Required
            128-255  First Come First Served

   Initial contents:
      +------+-----------------------+------------------------------+
      | type |       Reference       |         description          |
      +------+-----------------------+------------------------------+
      |   0  |  [this document]      |  Reserved                    |
      |   1  |  [this document]      |  Ethernet Type               |
      |   2  |  [this document]      |  Source MAC                  |
      |   3  |  [this document]      |  Destination MAC             |
      |   4  |  [this document]      |  DSAP in LLC                 |
      |   5  |  [this document]      |  SSAP in LLC                 |
      |   6  |  [this document]      |  Control field in LLC        |
      |   7  |  [this document]      |  SNAP                        |
      |   8  |  [this document]      |  VLAN ID                     |
      |   9  |  [this document]      |  VLAN PCP                    |
      |  10  |  [this document]      |  Inner VLAN ID               |
      |  11  |  [this document]      |  Inner VLAN PCP              |
      |  12  |  [this document]      |  VLAN DEI                    |
      |  13  |  [this document]      |  Inner VLAN DEI              |
      |  14  |  [this document]      |  Source MAC Special Bits     |
      |  15  |  [this document]      |  Destination MAC Special Bits|
      |16-254|  [this document]      |  unassigned                  |
      | 255  |  [this document]      |  reserved                    |
      +------+-----------------------+------------------------------+

   IANA is requested to assign two values from the "BGP Extended
   Communities Type - extended, transitive" registry [suggested value
   provided in square brackets]:

       Type value      Name                      Reference
      ------------    ------------------------  ---------------
      TBD1[0x080A]    Flow spec VLAN action     [this document]
      TBD2[0x080B]    Flow spec TPID action     [this document]

W. Hao, et al                                                  [Page 17]
INTERNET-DRAFT                                              L2 Flow Spec

7. Security Considerations

   For General BGP Flow-spec Security Considerations, see [RFC5575bis].

   VLAN tagging identifies Layer 2 communities which are commonly
   expected to be isolated except when higher layer connection is
   provided, such as Layer 3 routing. The ability of the Flow-spec VLAN
   action to change the VLAN ID in a frame may thus compromise security.

8. Acknowledgements

   The authors wish to acknowledge the important contributions and
   suggestions of the following:

      Hannes Gredler, Xiaohu Xu, Zhenbin Li, Lucy Yong, and Feng Dong.

9. Contributors

   Qiandeng Liang
   Huawei Technologies
   101 Software Avenue, Yuhuatai District
   Nanjing 210012
   China

   Email: liangqiandeng@huawei.com

W. Hao, et al                                                  [Page 18]
INTERNET-DRAFT                                              L2 Flow Spec

Normative References

   [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
             Requirement Levels", BCP 14, RFC 2119, DOI
             10.17487/RFC2119, March 1997, <https://www.rfc-
             editor.org/info/rfc2119>.

   [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, <https://www.rfc-
             editor.org/info/rfc4271>.

   [RFC4761] Kompella, K., Ed. and Y. Rekhter, Ed., "Virtual Private LAN
             Service (VPLS) Using BGP for Auto-Discovery and Signaling",
             RFC 4761, DOI 10.17487/RFC4761, January 2007,
             <https://www.rfc-editor.org/info/rfc4761>.

   [RFC4762] Lasserre, M., Ed. and V. Kompella, Ed., "Virtual Private
             LAN Service (VPLS) Using Label Distribution Protocol (LDP)
             Signaling", RFC 4762, DOI 10.17487/RFC4762, January 2007,
             <https://www.rfc-editor.org/info/rfc4762>.

   [RFC6074] Rosen, E., Davie, B., Radoaca, V., and W. Luo,
             "Provisioning, Auto-Discovery, and Signaling in Layer 2
             Virtual Private Networks (L2VPNs)", RFC 6074, DOI
             10.17487/RFC6074, January 2011, <https://www.rfc-
             editor.org/info/rfc6074>.

   [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119
             Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May
             2017, <https://www.rfc-editor.org/info/rfc8174>.

   [FlowSpecOID] Uttaro, J., Alcaide, J., Filsfils, C. Smith, D.,
             Mohapatra, P., draft-ietf-idr-bgp-flowspec-oid, work in
             progress.

   [FlowSpecV6] McPherson, D., Raszuk, R., Pithawala, B.,
             akarch@cisco.com, a., and S. Hares, "Dissemination of Flow
             Specification Rules for IPv6", draft-ietf-idr-flow-spec-
             v6-10. Work in progress.

   [RFC5575bis] Hares, S., Loibl, C., Raszuk, R., McPherson, D., Bacher,
             M., "Dissemination of Flow Specification Rules", draft-
             ietf-idr-rfc5575bis-18, Work in progress.

W. Hao, et al                                                  [Page 19]
INTERNET-DRAFT                                              L2 Flow Spec

Informative References

   [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, <https://www.rfc-editor.org/info/rfc7432>.

   [RFC7042bis] Eastlake, D., and J. Abley, "IANA Considerations and
             IETF Protocol and Documentation Usage for IEEE 802
             Parameters", draft-eastlake-rfc7042bis, Work in progress.

W. Hao, et al                                                  [Page 20]
INTERNET-DRAFT                                              L2 Flow Spec

Authors' Addresses

      Weiguo Hao
      Huawei Technologies
      101 Software Avenue,
      Nanjing  210012
      China

      Email: haoweiguo@huawei.com

      Donald E. Eastlake, 3rd
      Futurewei Technologies
      2386 Panoramic Circle
      Apopka, FL 32703
      USA

      Tel: +1-508-333-2270
      Email: d3e3e3@gmail.com

      James Uttaro
      AT&T

      Email: uttaro@att.com

      Stephane Litkowski
      Cisco Systems, Inc.

      Email: slitkows.ietf@gmail.com

      Shunwan Zhuang
      Huawei Technologies
      Huawei Bld., No.156 Beiqing Rd.
      Beijing  100095
      China

      Email: zhuangshunwan@huawei.com

W. Hao, et al                                                  [Page 21]
INTERNET-DRAFT                                              L2 Flow Spec

Copyright, Disclaimer, and Additional IPR Provisions

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

W. Hao, et al                                                  [Page 22]