--- 1/draft-ietf-idr-flowspec-l2vpn-12.txt 2019-12-31 21:13:14.382092671 -0800 +++ 2/draft-ietf-idr-flowspec-l2vpn-13.txt 2019-12-31 21:13:14.426093789 -0800 @@ -2,31 +2,32 @@ 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: May 2, 2020 November 3, 2019 +Expires: June 30, 2020 December 31, 2019 - BGP Dissemination of L2VPN Flow Specification Rules - draft-ietf-idr-flowspec-l2vpn-12 + 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 Layer 2 Virtual Private Network (L2VPN) - Ethernet traffic filtering rules. AFI=25 SAFI=134 is used for this - purpose. New component types and an extended community also are - defined. + 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 . Internet-Drafts are working documents of the Internet Engineering @@ -37,315 +38,432 @@ 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. -INTERNET-DRAFT L2VPN Flow Spec +INTERNET-DRAFT L2 Flow Spec Table of Contents 1. Introduction............................................3 1.1 Terminology............................................4 - 2. Layer 2 Flow Specification Encoding in BGP..............5 - - 3. L2VPN Flow Specification Encoding in BGP................6 - 3.1 Order of Traffic Filtering Rules.......................8 + 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 - 4. Ethernet Flow Specification Traffic Actions............10 - 4.1 VLAN-action...........................................10 - 4.2 TPID-action...........................................12 + 3. L2VPN Flow Specification Encoding in BGP...............12 + 3.1 Order of L2VPN Filtering Rules........................12 - 5. Flow Spec Validation...................................13 + 4. Ethernet Flow Specification Traffic Actions............13 + 4.1 VLAN-action...........................................13 + 4.2 TPID-action...........................................15 - 6. IANA Considerations....................................14 - 7. Security Considerations................................15 + 5. Flow Spec Validation...................................16 - 8. Acknowledgements.......................................15 - 9. Contributors...........................................15 + 6. IANA Considerations....................................17 - Normative References......................................16 - Informative References....................................16 + 7. Security Considerations................................18 + 8. Acknowledgements.......................................18 + 9. Contributors...........................................18 - Authors' Addresses........................................17 + Normative References......................................19 + Informative References....................................20 -INTERNET-DRAFT L2VPN Flow Spec +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. The typical application is to - automate the distribution of traffic filter lists to routers for DDOS - (Distributed Denial of Service) mitigation, access control, etc. + 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. The Flow specification match part defined in [RFC5575bis] + 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] to - cover IPv6. + 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 Flow specification rules defined in + 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 need to be considered. + 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 L2VPN Flow-spec application. The Flow-spec - rules can be enforced on all border routers or on some interface sets - of the border routers. SAFI=134 in [RFC5575bis] and [FlowSpecV6] is - extended for AFI=25 as specified in Section 2 to cover traffic - filtering information in an L2VPN environment. + 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 -INTERNET-DRAFT L2VPN Flow Spec +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 + 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 + VLAN - Virtual Local Area Network VPLS - Virtual Private Line Service [RFC4762] VPN - Virtual Private Network -INTERNET-DRAFT L2VPN Flow Spec +INTERNET-DRAFT L2 Flow Spec -2. Layer 2 Flow Specification Encoding in BGP +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 the - SAFI=134 for AFI=25 and make it applicable to L2VPN applications. + 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. - The following change is specified: + 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). - "SAFI 134 for dissemination of L3VPN flow specification rules" in - [FlowSpecV6] is defined as "SAFI 134 for dissemination of VPN flow - specification rules" + 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. - The address family to which SAFI 134 refers is indicate by the AFI - value (AFI=1 for VPNv4, AFI=2 VPNv6 and AFI=25 for L2VPN). Such - extension is fully backwards compatible with existing implementation - and production deployments. + +-------------------------------+ + | 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 + +-------------------------------+ -INTERNET-DRAFT L2VPN Flow Spec + Figure 1: Flow Specification NLRI for L2 -3. L2VPN Flow Specification Encoding in BGP + The fields show in Figure 1 are further specified below: - The NLRI format for AFI=25/SAFI=134, as with the other VPN Flow-spec - AFI/SAFI pairs, consists of an overall length encoded as provided in - Section 4.1 of [RFC5575bis], then a fixed-length Route Distinguisher - field (8 octets), then a flow specification [RFC5575bis] [FlowSpecV6] - that may include the component types defined in this document. The - length field includes both the 8 octets of the Route Distinguisher as - well as the subsequent flow specification. + 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]. - +------------------------------+ - | length (0xnn or 0xfn nn) | - +------------------------------+ - | Route Distinguisher (8 bytes)| - +------------------------------+ - | NLRI value (variable) | - +------------------------------+ + 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. - 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. +INTERNET-DRAFT L2 Flow Spec - Besides the component types defined in [RFC5575bis] and [FlowSpecV6], - this document specifies the following additional component types for - L2 VPN Ethernet traffic filtering: + 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) - Type tbdA - Ethernet Type (EtherType) Encoding: - Defines a list of {operation, value} pairs used to match two-octet - field. op is encoded as specified in Section 4.2.3 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. + 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. - Type tbdB - Source MAC - Encoding: +INTERNET-DRAFT L2 Flow Spec - Defines the source MAC Address to match. +2.1.2 Type 2 - Source MAC - Type tbdC - Destination MAC - Encoding: + Encoding: - Defines the destination MAC Address to match. + 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: + + 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) - Type tbdD - DSAP (Destination Service Access Point) in LLC Encoding: -INTERNET-DRAFT L2VPN Flow Spec + 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]. - Defines a list of {operation, value} pairs used to match the - 1-octet DSAP in the 802.2 LLC (Logical Link Control Header). - Values are encoded as 1-octet quantities. op is encoded as - specified in Section 4.2.3 of [RFC5575bis]. +2.1.5 Type 5 - SSAP (Source Service Access Point) - Type tbdE - SSAP (Source Service Access Point) in LLC Encoding: - Defines a list of {operation, value} pairs used to match the - 1-octet SSAP in the 802.2 LLC. Values are encoded as 1-octet - quantities. op is encoded as specified in Section 4.2.3 of + 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]. - Type tbdF - Control field in LLC +2.1.6 Type 6 - Control field in LLC + Encoding: Defines a list of {operation, value} pairs used to match 1-octet - control field in the 802.2 LLC. Values are encoded as 1-octet - quantities. op is encoded as specified in Section 4.2.3 of + 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]. - Type tbdG - SNAP +INTERNET-DRAFT L2 Flow Spec + +2.1.7 Type 7 - SNAP + Encoding: - 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.3 of + 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]. - Type tbdH - VLAN ID +2.1.8 Type 8 - VLAN ID + Encoding: 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.3 of [RFC5575bis]. + 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. + In the virtual local-area network (VLAN) stacking case, the VLAN ID + is the outer VLAN ID. + +2.1.9 Type 9 - VLAN PCP - Type tbdI - VLAN PCP Encoding: - 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.3 of [RFC5575bis]. + 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]. -INTERNET-DRAFT L2VPN Flow Spec + In the virtual local-area network (VLAN) stacking case, the VLAN PCP + is outer VLAN PCP. - In the virtual local-area network (VLAN) stacking case, the VLAN - PCP is outer VLAN PCP. +2.1.10 Type 10 - Inner VLAN ID - Type tbdJ - Inner VLAN ID Encoding: 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.3 of [RFC5575bis]. + 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 - In single VLAN case, this component type MUST NOT be used. If it +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. - Type tbdK - Inner VLAN PCP +2.1.11 Type 11 - Inner VLAN PCP + Encoding: - 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.3 of [RFC5575bis]. + 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 single VLAN case, the component type MUST NOT be used. If it + In the single VLAN case, this component type MUST NOT be used. If it appears the match will fail. - Type tbdL - VLAN DEI +2.1.12 Type 12 - VLAN DEI + Encoding: 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. - Type tbdM - Inner VLAN DEI +2.1.13 Type 13 - Inner VLAN DEI + Encoding: - 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. + 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. -3.1 Order of Traffic Filtering Rules + In the single VLAN case, this component type MUST NOT be used. If it + appears the match will fail. - The original definition for the order of traffic filtering rules can - be reused with new consideration for the MAC Address offset. As long - as the offsets are equal, the comparison is the same, retaining +2.1.14 Type 14 - Source MAC Special Bits -INTERNET-DRAFT L2VPN Flow Spec + Encoding: - longest-prefix-match semantics. If the offsets are not equal, the - lowest offset has precedence, as this flow matches the most - significant bit. +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: + + 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. + +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; @@ -364,21 +482,64 @@ 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; } -INTERNET-DRAFT L2VPN Flow Spec +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. + +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 | @@ -400,33 +561,33 @@ +--------+------------------------+--------------------------+ | 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 t 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. + 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. -INTERNET-DRAFT L2VPN Flow Spec +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| +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ @@ -461,21 +622,21 @@ 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: -INTERNET-DRAFT L2VPN Flow Spec +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 | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ @@ -497,146 +658,170 @@ 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. -INTERNET-DRAFT L2VPN Flow Spec +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]. -INTERNET-DRAFT L2VPN Flow Spec +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 allocate 11 new values in the Flow-Spec - Component Type registry as follows: + 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 | - +--------+--------------------------+--------------------------+ - | tbdA | [this document] | Ethernet Type | - | tbdB | [this document] | Source MAC | - | tbdC | [this document] | Destination MAC | - | tbdD | [this document] | DSAP in LLC | - | tbdE | [this document] | SSAP in LLC | - | tbdF | [this document] | Control field in LLC | - | tbdG | [this document] | SNAP | - | tbdH | [this document] | VLAN ID | - | tbdI | [this document] | VLAN PCP | - | tbdJ | [this document] | Inner VLAN ID | - | tbdK | [this document] | Inner VLAN PCP | - | tbdL | [this document] | VLAN DEI | - | tbdM | [this document] | Inner VLAN DEI | - +--------+--------------------------+--------------------------+ + +------+-----------------------+------------------------------+ + | 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] -INTERNET-DRAFT L2VPN Flow Spec +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 thus may compromise security. + action to change the VLAN ID in a frame may thus compromise security. 8. Acknowledgements - The authors wish to acknowledge the important contributions of the - following: + 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 -INTERNET-DRAFT L2VPN Flow Spec +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, . + [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, . + [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, . [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, . [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, . [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, . - [FlowSpecOID] Uttaro, J., Alcaide, J., Filsfils, C.. Smith, D., + [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-09 (work in progress), November 2017. + 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-17, Work in progress, June 2019. + ietf-idr-rfc5575bis-18, Work in progress. + +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, . -INTERNET-DRAFT L2VPN Flow Spec + [RFC7042bis] Eastlake, D., and J. Abley, "IANA Considerations and + IETF Protocol and Documentation Usage for IEEE 802 + Parameters", draft-eastlake-rfc7042bis, Work in progress. + +INTERNET-DRAFT L2 Flow Spec Authors' Addresses Weiguo Hao Huawei Technologies 101 Software Avenue, Nanjing 210012 China Email: haoweiguo@huawei.com @@ -661,21 +846,21 @@ Email: slitkows.ietf@gmail.com Shunwan Zhuang Huawei Technologies Huawei Bld., No.156 Beiqing Rd. Beijing 100095 China Email: zhuangshunwan@huawei.com -INTERNET-DRAFT L2VPN Flow Spec +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