<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<?rfc iprnotified="no" ?>
<?rfc strict="no" ?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-ietf-idr-flowspec-v2-02" ipr="trust200902" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" symRefs="true" sortRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.1 -->
  <front>
    <title abbrev="BGP FlowSpec v2">BGP Flow Specification Version 2 </title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-idr-flowspec-v2-02"/>
    <author fullname="Susan Hares" initials="S" surname="Hares">
      <organization>Hickory Hill Consulting</organization>
      <address>
        <postal>
          <street>7453 Hickory Hill</street>
          <city>Saline</city>
          <region>MI</region>
          <code>48176</code>
          <country>USA</country>
        </postal>
        <phone>+1-734-604-0332</phone>
        <email>shares@ndzh.com</email>
      </address>
    </author>
    <author fullname="Donald Eastlake" initials="D" surname="Eastlake">
      <organization>Futurewei Technologies</organization>
      <address>
        <postal>
          <street>2386 Panoramic Circle</street>
          <city>Apopka</city>
          <region>FL</region>
          <code>32703</code>
          <country>USA</country>
        </postal>
        <phone>+1-508-333-2270</phone>
        <email>d3e3e3@gmail.com</email>
      </address>
    </author>
    <author fullname="Chaitanya Yadlapalli" initials="C" surname="Yadlapalli">
      <organization>ATT</organization>
      <address>
        <postal>
          <street/>
          <city/>
          <region/>
          <code/>
          <country>USA</country>
        </postal>
        <email>cy098d@att.com</email>
      </address>
    </author>
    <author fullname="Sven Maduschke" initials="S" surname="Maduscke">
      <organization> Verizon</organization>
      <address>
        <postal>
          <street/>
          <city/>
          <region/>
          <code/>
          <country>DE</country>
        </postal>
        <email>sven.maduschke@de.verizon.com</email>
      </address>
    </author>
    <date year="2023"/>
    <area>Routing Area</area>
    <workgroup>IDR Working Group</workgroup>
    <keyword>RFC</keyword>
    <keyword>Request for Comments</keyword>
    <keyword>I-D</keyword>
    <keyword>Internet-Draft</keyword>
    <keyword>BGP Flow Specification</keyword>
    <abstract>
      <t>BGP flow specification version 1 (FSv1), defined in RFC 8955, RFC 8956, and 
	  RFC 9117 describes the distribution of traffic filter policy (traffic 
	  filters and actions) distributed via BGP.  Multiple applications have used 
	  BGP FSv1 to distribute traffic filter policy.  These applications include 
	  the following: mitigation of denial of service (DoS), enabling traffic 
	  filtering in BGP/MPLS VPNs, centralized traffic control of router firewall 
	  functions, and SFC traffic insertion. 
      </t>
      <t> During the deployment of BGP FSv1 a number of issues were detected due to
	  lack of consistent TLV encoding for rules for flow specifications, lack of 	  
	  user ordering of filter rules and/or actions, and lack of clear definition 
	  of interaction with BGP peers not supporting FSv1.  Version 2 of the BGP 
	  flow specification (FSv2) protocol addresses these features.  In order to 
	  provide a clear demarcation between FSv1 and FSv2, a different NLRI
		encapsulates FSv2. 	  
      </t>
    </abstract>
  </front>
  <middle>
    <section anchor="intro" numbered="true" toc="default">
      <name>Introduction</name>
      <t> 
	  Modern IP routers have the capability to forward traffic and to classify, 
	  shape, rate limit, filter, or redirect packets based on administratively 
	  defined policies. These traffic policy mechanisms allow the operator 
	  to define match rules that operate on multiple fields within header 
	  of an IP data packet.  The traffic policy allows actions 
	  to be taken upon a match to be associated with each match rule.  
	  These rules can be more widely defined as “event-condition-action” 
	  (ECA) rules where the event is always the reception of a packet.  
      </t>
      <t>BGP (<xref target="RFC4271" format="default"/>) flow specification as defined by
	   <xref target="RFC8955" format="default"/>, <xref target="RFC8956" format="default"/>,  
	   <xref target="RFC9117" format="default"/> specifies the distribution of traffic filter policy (traffic 
	   filters and actions) via BGP to a mesh of BGP peers (IBGP and EBGP peers). 
	   The traffic filter policy is applied when packets are received on a router 
	   with the flow specification function turned on. The flow specification 
	   protocol defined in <xref target="RFC8955" format="default"/>, <xref target="RFC8956" format="default"/>, and 
	    <xref target="RFC9117" format="default"/> will be called BGP 
		flow specification version 1 (BGP FSv1) in this draft.
      </t>
      <t> Some modern IP routers also include the abilities of firewalls which can 
	  match on a sequence of packet events based on administrative policy. These 
	  firewall capabilities allow for user ordering of match rules and user 
	  ordering of actions per match.  
      </t>
      <t>
	  Multiple deployed applications currently use BGP FSv1 to distribute traffic 
	  filter policy.  These applications include: 1) mitigation of Denial of 
	  Service (DoS), 2) traffic filtering in BGP/MPLS VPNS, and 3) centralized 
	  traffic control for networks utilizing SDN control of router firewall 
	  functions, 4) classifiers for insertion in an SFC, and 5) filters for SRv6 (segment routing v6).      
      </t>
      <t>During the deployment of BGP flow specification 
	  v1, the following issues were detected:  
      </t>
      <ul spacing="normal">
        <li>lack of consistent TLV encoding prevented extension of encodings,   </li>
        <li>inability to allow user defined order for filtering rules,</li>
        <li>inability to order actions to provide deterministic interactions 
	    or to allow users to define order for actions, and</li>
        <li>no clearly defined mechanisms for BGP peers which do 
	    not support flow specification v1.</li>
      </ul>
      <t>
	  Networks currently cope with some of these issues by limiting the type of 
	  traffic filter policy sent in BGP.  Current Networks do not have a good 
	  workaround/solution for applications that receive but do not understand FSv1 
	  policies.  
      </t>
      <t>
	  This document defines version 2 of the BGP flow specification protocol to 
	  address these shortcomings in BGP FSv1.  Version 2 of BGP flow specification 
	  will be denoted as BGP FSv2. 
      </t>
      <t>BGP FSv1 as defined in <xref target="RFC8955" format="default"/>, <xref target="RFC8956" format="default"/>, and 
	    <xref target="RFC9117" format="default"/> specified 2 SAFIs (133, 134) 
		to be used with IPv4 AFI (AFI = 1) and IPv6 AFI (AFI=2). 
      </t>
      <t>
	  This document specifies 2 new SAFIs (TBD1, TBD2) for FSv2 to be used with 5 AFIs   
	  (1, 2, 6, 25, and 31) to allow user-ordered lists of traffic match filters for user-ordered 
	  traffic match actions encoded in Communities (Wide or Extended). 
      </t>
      <t>
	  FSv1 and FSv2 use different AFI/SAFIs to send flow specification filters.  Since BGP  
	  route selection is performed per AFI/SAFI, this approach can be termed “ships in the night” based on AFI/SAFI. 
      </t>
      <t>
	  FSv1 is a critical component of deployed applications. Therefore, this 
	  specification defines how FSv2 will interact with BGP peers that support 
	  either FSv2, FSv1, FSv2 and FSv1,or neither of them.  
	  It is expected that a transition to FSv2 will occur over time as new 
	  applications require FSv2 extensibility and user-defined ordering for rules 
	  and actions or network operators tire of the restrictions of FSv1 such as error 
	  handling issues and restricted topologies. 
      </t>
      <t>
	 Section 2 contains the definition of Flow specification, a short review of FSv1 and an overview of FSv2.  
	 Section 3 contains the encoding rules for FSv2 and user-based encoding sent via BGP.  Section 4 describes how to 
	 validate FSv2 NLRI. Section 5 discusses how to order FSV2 rules.  Section 6 covers combining 
	 FSv2 user-ordered match rules and FSv1 rules.  Section 6 also discusses how to combine 
	 user-ordered actions, FSv1 actions, and default actions.  Sections 7-10 address an 
	 alternate security mechanism, considerations for IANA, security in deployments, and scalability aspirations. 
      </t>
      <section numbered="true" toc="default">
        <name>Definitions and Acronyms</name>
        <ul empty="true" spacing="normal">
          <li>AFI - Address Family Identifier</li>
          <li>AS - Autonomous System </li>
          <li>BGPSEC - secure BGP <xref target="RFC8205" format="default"/> updated by <xref target="RFC8206" format="default"/> </li>
          <li>BGP Session ephemeral state - state which does not survive the loss of BGP peer session.</li>
          <li>Configuration state - state which persist across a reboot of software module within 
		      a routing system or a reboot of a hardware routing device.</li>
          <li>DDOs - Distributed Denial of Service.</li>
          <li>Ephemeral state - state which does not survive the reboot of a software module,
		   or a hardware reboot. Ephemeral state can be ephemeral configuration state or 
		   operational state.</li>
          <li>FSv1 - Flow Specification version 1 [RFC8955] [RFC8956] </li>
          <li>FSv2 - Flow Specification version 2 (this document) </li>
          <li>NETCONF - The Network Configuration Protocol <xref target="RFC6241" format="default"/>.</li>
          <li>RESTCONF - The RESTCONF configuration Protocol <xref target="RFC8040" format="default"/> </li>
          <li>RIB - Routing Information Base.</li>
          <li> ROA -  Route Origin Authentication <xref target="RFC6482" format="default"/></li>
          <li>RR - Route Reflector.</li>
          <li> SAFI - Subsequent Address Family Identifier </li>
        </ul>
      </section>
      <section numbered="true" toc="default">
        <name>RFC 2119 language</name>
        <t>   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in BCP 14 <xref target="RFC2119" format="default"/>
          <xref target="RFC8174" format="default"/> when, and only when, they appear in all capitals as shown here.    
        </t>
      </section>
    </section>
    <section numbered="true" toc="default">
      <name>Flow Specification</name>
      <t>
 A BGP Flow Specification is an n-tuple containing one or more match criteria 
 that can be applied to IP traffic, traffic encapsulated in IP traffic or 
 traffic associated with IP traffic.  The following are
examples of such traffic: IP packet or an IP packet 
inside a L2 packet (Ethernet), an MPLS packet, and SFC flow.   
      </t>
      <t>
 A given Flow Specification NLRI may be associated with a set of path 
attributes depending on the particular application, and attributes within
that set may or may not include reachability information (e.g., NEXT_HOP). 
Extended Community or Wide Community attributes (well-known or AS-specific)
MAY be used to encode a set of pre-determined actions.
      </t>
      <t>
 A particular application is identified by a specific AFI/SAFI (Address 
 Family Identifier/Subsequent Address Family Identifier) and corresponds to a 
 distinct set of RIBs. Those RIBs should be treated independently of each 
 other in order to assure noninterference between distinct applications. 
      </t>
      <t>
 BGP processing treats the NLRI as a key to entries in AFI/SAFI BGP 
 databases.   Entries that are placed in the Loc-RIB are then associated with 
 a given set of semantics which are application dependent. Standard BGP 
 mechanisms such as update filtering by NLRI or by attributes such as AS_PATH or 
 large communities apply to the BGP Flow Specification defined NLRI-types.  
      </t>
      <t>
 Network operators can control the propagation of BGP routes by enabling or 
 disabling the exchange of routes for a particular AFI/SAFI pair on a 
 particular peering session.  As such, the Flow Specification may be 
 distributed to only a portion of the BGP infrastructure. 
      </t>
      <section numbered="true" toc="default">
        <name>Flow Specification v1  (FSv1) Overview</name>
        <t>
	  The FSv1 NLRI defined in <xref target="RFC8955" format="default"/> and <xref target="RFC8956" format="default"/> 
      include 13 match conditions encoded for the following AFI/SAFIs: 
        </t>
        <ul spacing="normal">
          <li>IPv4 traffic: AFI:1, SAFI:133 </li>
          <li>IPv6 Traffic: AFI:2,  SAFI:133 </li>
          <li>BGP/MPLS IPv4 VPN: AFI:1, SAFI: 134	 
	  </li>
          <li> BGP/MPLS IPv6 VPN: AFI:2, SAFI: 134</li>
        </ul>
        <t>If one considers the reception of the packet as an event,
	  then BGP FSv1 describes a set of 
	  Event-MatchCondition-Action (ECA) policies where: 
        </t>
        <ul spacing="normal">
          <li>event is the reception of a packet, </li>
          <li>condition stands for "match conditions" defined in the BGP NLRI as an n-tuple of component filters, and </li>
          <li>the action is either: the default condition (accept traffic), or a set of actions (1 or more)
	   	  defined in Extended BGP Community values <xref target="RFC4360" format="default"/>.
	  </li>
        </ul>
        <t>
	 The flow specification conditions and actions combine to make up FSv1 specification rules. Each FSv1 NLRI must 
	 have a type 1 component (destination prefix).  Extended Communities with FSv1 actions can be attached 
	 to a single NLRI or multiple NLRIs in a BGP message
        </t>
        <t>
	  Within an AFI/SAFI pair, FSv1 rules are ordered based on the components in 
	  the packet (types 1-13) ordered from left-most to right-most and within the 
	  component types by value of the component. Rules are inserted in the rule
	  list by component-based order where an FSv1 rule with existing component type has 
	  higher precedence than one missing a specific component type, 	  
        </t>
        <t>
	  Since FSv1 specifications (<xref target="RFC8955" format="default"/>, <xref target="RFC8956" format="default"/>, and 
	  <xref target="RFC9117" format="default"/>) specify that the FSv1 NLRI MUST have a destination prefix 
	 (as component type 1) embedded in the flow specification, the FSv1 rules with destination 
	 components are ordered by IP Prefix comparison rules for IPv4 (<xref target="RFC8955" format="default"/>)
     and IPv6 (<xref target="RFC8956" format="default"/>). <xref target="RFC8955" format="default"/>
	 specifies that more specific prefixes (aka longest match) have higher precedence than 
	 that of less specific prefixes and that for prefixes of the same length the lower IP number 
	 is selected (lowest IP value).  <xref target="RFC8955" format="default"/> specifies that if the 
	 offsets within component 1 are the same, then the longest match and lowest IP comparison rules from 
	 <xref target="RFC8955" format="default"/> apply.  If the offsets are different, then the lower offset has precedence.  
        </t>
        <t>
	  These rules provide a set of FSv1 rules ordered by IP Destination Prefix 
	  by longest match and lowest IP address. 	 <xref target="RFC8955" format="default"/>
	  also states that the requirement for a destination prefix component “MAY be relaxed by explicit configuration” 
	  Since the rule insertions are based on comparing component types between two rules in order, 
	  this means the rules without destination prefixes are inserted after all rules which 
	  contain destination prefix component.
        </t>
        <t>
	 The actions specified in FSv1 are:
        </t>
        <ul spacing="normal">
          <li>accept packet (default),</li>
          <li>traffic flow limitation by bytes (0x6), </li>
          <li>traffic-action (0x7),</li>
          <li>redirect traffic (0x8),</li>
          <li>mark traffic (0x9), and </li>
          <li>traffic flow limitation by packets (12, 0xC)</li>
        </ul>
        <t> Figure 1 shows a diagram of the FSv1 logical data structures
       with 5 rules.  If FSv1 rules have destination prefix components 
       (type=1) and FSv1 rule 5 does not have a destination prefix, 
        then FSv1 rule 5 will be inserted in the policy after rules 1-4.	   
</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
 
     +--------------------------------------+
     | Flow Specification (FS)              | 
     |  Policy                              | 
     +--------------------------------------+	
       	 ^               ^              ^
         |               |              | 
         |               |              |   
+--------^----+  +-------^-------+     +-------------+    
|   FS Rule 1 |  |   FS Rule 2   | ... |  FS rule 5  |
+-------------+  +---------------+     +-------------+
                    :          :        
                    :          :        
                 ...:          :........   
                 :                     :
       +---------V---------+      +----V-------------+
       |  Rule Condition   |      |   Rule Action    |
       |  in BGP NLRIs     |      | in BGP extended  |
       | AFIs: 1 and 2     |      | Communities      |
       | SAFI 133, 134     |      |                  | 
       +-------------------+      +------------------+
           :     :    :                 :      :    :
      .....:     .    :.....       .....:      .    :.....
      :          :         :       :           :         :
 +----V---+  +---V----+ +--V---+ +-V------+ +--V-----++--V---+
 |  Match |  | match  | |match | | Action | | action ||action|
 |Operator|  |Variable| |Value | |Operator| |variable|| Value|
 |*1      |  |        | |      | |(subtype| |        ||      |
 +--------+  +--------+ +------+ +--------+ +--------++------+
 
   *1 match operator may be complex. 
 
   Figure 2-1: BGP Flow Specification v1 Policy 
]]></artwork>
      </section>
      <section numbered="true" toc="default">
        <name>Flow Specification v2 (FSv2) Overview</name>
        <t>
Flow Specification v2 allows the user to order the flow specification rules and the actions 
associated with a rule. Each FSv2 rule may have one or more match conditions 
and one or more associated actions. 
</t>
        <t>
This FSv2 specification supports the components and actions for the following: 
</t>
        <ul spacing="normal">
          <li>IPv4 (AFI=1, SAFI=TBD1), 
</li>
          <li>IPv6 (AFI=2, SAFI=TBD2),
</li>
          <li>L2 (AFI=6, SAFI=TDB1),
</li>
          <li>BGP/MPLS IPv4 VPN: (AFI=1, SAFI=TBD2),
</li>
          <li> BGP/MPLS IPv6 VPN: (AFI=2, SAFI=TBD2),
</li>
          <li> BGP/MPLS L2VPN (AFI=25, SAFI=TDB2), 
</li>
          <li> SFC: (AFI=31, SAFI=TBD1), and 
</li>
          <li> SFC VPN (AFI=31, SAFI=TBD2).
</li>
        </ul>
        <t>The FSv2 specification for tunnel traffic is outside the 
scope of this specification. The FSv1 specification for tunneled 
traffic is in <xref target="I-D.ietf-idr-flowspec-nvo3" format="default"/>. 
</t>
        <t>FSv2 operates in the ships-in-the night model with FSv1 so network 
operators can manipulate which the distribution of FSv2 
and FSv1 using configuration parameters.  
Since the lack of deterministic ordering was an FSv1 problem, 
this specification provides rules and protocol features to keep 
filters in a deterministic order between FSv1 and FSv2. 
</t>
        <t>
The basic principles regarding ordering of flow specification filter rules are: 
</t>
        <ul empty="true" spacing="normal">
          <li>1) Rule-0 (zero) is defined to be 0/0 with the "permit-all" action. </li>
          <li>
            <t>2) FSv2 rules are ordered based on user-specified order. 
</t>
            <ul spacing="normal">
              <li>The user-specified order is carried in the FSv2 NLRI and a 
numerical lower value takes precedence over a numerically higher value.  
For rules received with the same order value, the FSv1 rules apply 
(order by component type and then by value of the components).  
 </li>
            </ul>
          </li>
          <li>
            <t>3) FSv2 rules are added starting with Rule 1 and FSv1 rules are added after FSv2 rules 
</t>
            <ul spacing="normal">
              <li>For example, BGP Peer A has FSv2 data base with 10 FSv2 rules (1-10).  FSv1 user number
is configured to start at 301 so 10 FSv1 rules are added at 301-310. 
 </li>
            </ul>
          </li>
          <li>4) An FSv2 peer may receive BGP NLRI routes from a FSv1 peer or a BGP peer that does not support FSv1 or FSv2.  
The capabilities sent by a BGP peer indicate whether the AFI/SAFI can be received (FSv1 NLRI or FSv2 NLRI).
</li>
          <li>
            <t>5) Associate a chain of actions to rules based on user-defined action number (1-n).  (optional) 
</t>
            <ul spacing="normal">
              <li>If no actions are associated with a filter rule, the default is to drop traffic the filter rules match</li>
              <li>An action chain of 1-n actions can be associated with a set of filter rules can 
via Extended Communities or Wide Communities.  Only Wide Communities can associate a user-defined
order for the actions. Extended Community actions occur after actions with a 
user specified order (see section 5.2 for details).  
</li>
            </ul>
          </li>
        </ul>
        <t>
Figure 2-2 provides a logical diagram of the FSv2 structure
</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
 
       +--------------------------------+ 	
       |          Rule Group            | 
       +--------------------------------+			   
         ^          ^                  ^
         |          |---------         |
         |                   |         ------
         |                   |               |
+--------^-------+   +-------^-----+     +---^-----+
|      Rule1     |   |     Rule2   | ... |  Rule-n |
+----------------+   +-------------+     +---------+ 
                      :  :   :    :     
    :.................:  :   :    :
    :	       |.........:   :    :
 +--V--+    +--V--+          :    :        
 | name|    |order| .........:    :.....   
 +-----+    +-----+ :                  :
                    :                  :
   +----------------V----+  +-----V----------------+
   |Rule Match condition |  | Rule Action          |
   +---------------------+  +----------------------+
    :	   :     :    :       :      :   :   :   |
 +--V--+   :     :    :    +--V---+  :   :   :   V
 | Rule|   :     :    :    |action|  :   :   :  +-----------+
 | name|   :     :    :    |order |  :   :   :  |action name|
 +-----+   :     :    :    +------+  :   :   :  +-----------+
           :     :    :              :   :   :.............
           :     :    :              :   :                :     
      .....:     .    :.....       ..:   :......          :
      :          :         :       :           :          :
 +----V---+  +---V----+ +--V---+ +-V------+ +--V-----+ +--V---+
 |  Match |  | match  | |match | | Action | | action | |action|
 |Operator|  |variable| |Value | |Operator| |Variable| | Value|
 +--------+  +--------+ +------+ +--------+ +--------+ +------+

   Figure 2-2: BGP FSv2 Data storage
]]></artwork>
      </section>
    </section>
    <section numbered="true" toc="default">
      <name>FSv2 Filters and Actions</name>
      <t>
 The BGP FSv2 uses an NRLI with the format for
 AFIs for IPv4 (AFI = 1), IPv6 (AFI = 2), L2 (AFI = 6), L2VPN (AFI=25), and 
 SFC (AFI=31) with two following SAFIs to support transmission of the flow specification
 which supports user ordering of traffic filters and actions for IP traffic and 
 IP VPN traffic.
      </t>
      <t>
  This NLRI information is encoded using MP_REACH_NLRI and MP_UNREACH_NLRI attributes defined in
 <xref target="RFC4760" format="default"/>.  When advertising FSv2 NLRI, the length of the 
  Next-Hop Network Address MUST be set to 0. Upon reception, 
  the Network Address in the Next-Hop field MUST be ignored.  
      </t>
      <t>Implementations wishing to exchange flow specification rules MUST use 
BGP's Capability Advertisement facility to exchange the Multiprotocol Extension Capability Code 
(Code 1) as defined in <xref target="RFC4760" format="default"/>, and 
indicate a capability for FSv1,  FSv2 (Code TBD3), or both.  
</t>
      <t>The AFI/SAFI NLRI for BGP Flow Specification version 2 (FSv2) has the format:
      </t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
 +-------------------------------+
 |length (2 octets)              |
 +-------------------------------+
 | Sub-TLVs (variable)           |
 | +===========================+ |
 | | order (4 octets)          | |
 | +---------------------------+ |
 | | identifier (4 octets)     | |
 | +---------------------------+ | 
 | | type (2 octets)           | |
 | +---------------------------+ |
 | | length-Subtlv (2 octets)  | |
 | +---------------------------+ |
 | | value (variable)          | |
 | +===========================+ |
 +-------------------------------+
 
 
 Figure 3-1: FSv2 format
  ]]></artwork>
      <t>
  where:
      </t>
      <ul spacing="normal">
        <li>
          <t> length: length of field including all SubTLVs in octets. 
          </t>
          <ul spacing="normal">
            <li> The combined lengths of any FSv2 NLRI in the 
      MP_REACH_NLRI or MP_UNREACH_NLRI. The BGP NLRI length
      must be less than the packet size minus the other fields
	  (BGP header, BGP Path Attributes, and NLRI).  	  
  </li>
          </ul>
        </li>
        <li> order: flow-specification global rule order number (4 octets). </li>
        <li>identifier: identifier for the rule (used for NM/Logging) (4 octets)   </li>
        <li>
          <t> type: contains a type for FSv2 TLV format of the NRLI (2 octets) which can be: 
          </t>
          <ul spacing="normal">
            <li>0 - reserved, </li>
            <li>1 - IP Traffic Rules </li>
            <li>2-  L2 traffic rules</li>
            <li>3-  SFC Traffic rules </li>
            <li>4-  SFC VPN Traffic rules </li>
            <li>5 - BGP/MPLS VPN IP Traffic Rules </li>
            <li>6 - BGP/MPLS VPN L2 Traffic Rules </li>
          </ul>
        </li>
        <li> length-Subtlv: is the length of the value part of the Sub-TLV, 
  </li>
        <li>value: value depends on the subTLV (see sections below).</li>
      </ul>
      <section numbered="true" toc="default">
        <name>IP header SubTLV (type=1)</name>
        <t>
The format of the IP header TLV value field is shown in figure 3-2.  
The IP header for the VPN case is specified in section 3.5.      
</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
    +-------------------------------+
    | +--------------------------+  | 
    | | (subTLVs)+               |  |
    | +==========================+  |
    +-------------------------------+

      Figure 3-2 - IP Header TLV
]]></artwork>
        <t>Where: Each SubTLV has the format: 
</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
    +-------------------------------+
    |  SubTLV type (1 octet)        |
    +-------------------------------+
    |  length (1 octet)             |
    + ------------------------------+
    |  value (variable)             |
    +-------------------------------+
     Figure 3-3 – IP header SubTLV format 

]]></artwork>
        <t>
Where:
</t>
        <ul empty="true" spacing="normal">
          <li>SubTLV type: component values are defined in 
the "Flow Specification Component types" registry for IPv4 and IPv6 by 
<xref target="RFC8955" format="default"/>,
<xref target="RFC8956" format="default"/>, and <xref target="I-D.ietf-idr-flowspec-srv6" format="default"/>
          </li>
          <li>length: length of SubTLV (varies depending on SubTLV type).  
</li>
          <li>
            <t>value: dependent on the subTLV
</t>
            <ul spacing="normal">
              <li> For descriptions of value portions for components 1-13 see 
<xref target="RFC8955" format="default"/> and <xref target="RFC8956" format="default"/>. 
 For component 14 see <xref target="I-D.ietf-idr-flowspec-srv6" format="default"/>. 
 </li>
            </ul>
          </li>
        </ul>
        <t>Many of the components use the operators [numeric_op] and [bitmask_op] 
defined in <xref target="RFC8955" format="default"/>
        </t>
        <t>The list of valid SubTLV types appears in Table 2.  
</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Table 2 IP SubTLV Types for IP Filters 
SubTLV
-type   Definition
======  ============
   1 -  IP Destination prefix 
   2 -  IP Source prefix 
   3 –  IPv4 Protocol / IPv6 Upper Layer Protocol
   4 –  Port  
   5 –  Destination Port 
   6 –  Source Port
   7 –  ICMPv4 type / ICMPv6 type  
   8 –  ICMPv4 code / ICPv6 code 
   9 –  TCP Flags 
  10 –  Packet length
  11 –  DSCP (Differentiated Services Code Point)
  12 –  Fragment 
  13 –  Flow Label 
  14 -  TTL 
  15 –  Parts of SID 
  16 -  MPLS Match 1: Label in Label stack 
  17 -  MPLS Match 2: EXP bits in top Label
  250-  Filter Error handling 
 
]]></artwork>
        <t>
Ordering within the TLV in FSv2: The transmission of SubTLVs within a 
flow specification rule MUST be sent ascending order by SubTLV type.  
If the SubTLV types are the same, then the value fields are compared 
using mechanisms defined in <xref target="RFC8955" format="default"/>
and <xref target="RFC8956" format="default"/> and MUST be in ascending order.  
NLRIs having TLVs which do not follow the above ordering rules MUST be considered as
 malformed by a BGP FSv2 propagator. This rule prevents any ambiguities that arise
 from the multiple copies of the same NLRI from multiple BGP FSv2 propagators. 
 A BGP implementation SHOULD treat such malformed NLRIs as "Treat-as-withdraw" 
<xref target="RFC7606" format="default"/>.  
</t>
        <t>See <xref target="RFC8955" format="default"/>, <xref target="RFC8956" format="default"/>, and
<xref target="I-D.ietf-idr-flowspec-srv6" format="default"/>. for specific details. 
</t>
        <section numbered="true" toc="default">
          <name>IP Destination Prefix (type = 1)</name>
          <t>	IPv4 Name: IP Destination Prefix   (reference:  <xref target="RFC8955" format="default"/>) </t>
          <t>	IPv6 Name: IPv6 Destination Prefix (reference:  <xref target="RFC8956" format="default"/>) </t>
          <t/>
          <t>IPv4 length: Prefix length in bits 
</t>
          <t>IPv4 value: IPv4 Prefix (variable length)
</t>
          <t>IPv6 length: length of value 
</t>
          <t>IPv6 value: [offset (1 octet)] [pattern (variable)] [padding(variable)] 
</t>
          <t>If IPv6 length = 0 and offset = 0, then component matches every address.  
Otherwise, length must be offset "less than" length "less than" 129 or component is malformed. 
</t>
        </section>
        <section numbered="true" toc="default">
          <name>IP Source Prefix (type = 2)</name>
          <t>	IPv4 Name: IP Source Prefix      (reference:  <xref target="RFC8955" format="default"/>) </t>
          <t>	IPv6 Name: IPv6 Source Prefix  (reference: <xref target="RFC8956" format="default"/>) </t>
          <t/>
          <t>IPv4 length: Prefix length in bits </t>
          <t>IPv4 value: Source IPv4 Prefix (variable length)</t>
          <t>IPv6 length: length of value </t>
          <t>IPv6 value: [offset (1 octet)] [pattern (variable)][padding(variable)] 
</t>
          <t/>
          <t>
If IPv6 length = 0 and offset = 0, then component matches every address.  Otherwise, length must be offset &lt; length &lt; 129 
or component is malformed. 
</t>
        </section>
        <section numbered="true" toc="default">
          <name>IP Protocol (type = 3)</name>
          <t>	IPv4 Name: IP Protocol  IP Source Prefix  (reference:  <xref target="RFC8955" format="default"/>) </t>
          <t>	IPv6 Name: IPv6 Upper-Layer Protocol:   (reference: <xref target="RFC8956" format="default"/>) </t>
          <t/>
          <t>IPv4 length: variable </t>
          <t>IPv4 value: [numeric_op, value]+</t>
          <t/>
          <t>IPv6 length: variable </t>
          <t>IPv6 value: [numeric_op, value}+ </t>
          <t>where the value following each numeric_op is a single octet. </t>
        </section>
        <section numbered="true" toc="default">
          <name>Port (type = 4)</name>
          <t>	IPv4/IPv6 Name: Port    (reference:  <xref target="RFC8955" format="default"/>), <xref target="RFC8956" format="default"/>) </t>
          <t>Filter defines: a set of port values to match either destination port or source port. 
</t>
          <t/>
          <t>IPv4 length: variable </t>
          <t>IPv4 value: [numeric_op, value]+</t>
          <t/>
          <t>IPv6 length: variable </t>
          <t>IPv6 value: [numeric_op, value]+</t>
          <t/>
          <t>where the value following each numeric_op is a single octet. </t>
          <t>Note-1: (from FSV1) In the presence of the port component (destination or source port), 
only a TCP (port 6) or UDP (port 17) packet can match the entire flow specification. 
If the packet is fragmented and this is not the first fragment, then the system
may not be able to find the header.  At this point, the FSv2 filter may fail to 
detect the correct flow.  Similarly, if other IP options or the encapsulating 
security payload (ESP) is present, then the  node may not be able to describe the transport header
and the FSv2 filter may fail to detect the flow. 
</t>
          <t>The restriction in note-1 comes from the inheritance of the FSv1 filter component for port.  
If better resolution is desired, a new FSv2 filter should be defined. 
</t>
          <t>Note-2: FSv2 component only matches the first upper layer protocol value. 
</t>
        </section>
        <section numbered="true" toc="default">
          <name>Destination Port (type = 5)</name>
          <t>	IPv4/IPv6 Name: Destination Port    (reference:  <xref target="RFC8955" format="default"/>), <xref target="RFC8956" format="default"/>) </t>
          <t>Filter defines: a list of match filters for destination port for TCP or UDP within a received packet
</t>
          <t>Length: variable </t>
          <t> Component Value format: [numeric_op, value]+
</t>
        </section>
        <section numbered="true" toc="default">
          <name>Source Port (type = 6)</name>
          <t>	IPv4/IPv6 Name: Source Port (reference:  <xref target="RFC8955" format="default"/>), <xref target="RFC8956" format="default"/>)
          </t>
          <t>Filter defines: a list of match filters for source port for TCP or UDP within a received packet
</t>
          <t>IPv4/IPv6 length: variable </t>
          <t>IPv4/Ipv6 value: [numeric_op, value]+
</t>
        </section>
        <section numbered="true" toc="default">
          <name>ICMP Type (type = 7)</name>
          <t>	IPv4: ICMP Type (reference:  <xref target="RFC8955" format="default"/>)
</t>
          <t>	Filter defines: Defines: a list of match criteria for ICMPv4 type 
</t>
          <t>IPv6: ICMPv6 Type (reference: <xref target="RFC8956" format="default"/>) 
</t>
          <t>Filter defines: a list of match criteria for ICMPv6 type. 
</t>
          <t> </t>
          <t>IPv4/IPv6 length: variable</t>
          <t>IPv4/IPv6 value: [numeric_op, value]+ </t>
        </section>
        <section numbered="true" toc="default">
          <name>ICMP Code (type = 8)</name>
          <t>	IPv4: ICMP Type (reference:  <xref target="RFC8955" format="default"/>) </t>
          <t>	Filter defines: a list of match criteria for ICMPv4 code. 
</t>
          <t>IPv6: ICMPv6 Type (reference: <xref target="RFC8956" format="default"/>) </t>
          <t>Filter defines: a list of match criteria for ICMPv6 code. </t>
          <t> </t>
          <t>IPv4/IPv6 length: variable</t>
          <t>IPv4/IPv6 value: [numeric_op, value]+ </t>
        </section>
        <section numbered="true" toc="default">
          <name>TCP Flags (type = 9)</name>
          <t>	IPv4/IPv6: TCP Flags Code  (reference:  <xref target="RFC8955" format="default"/>)
</t>
          <t>Filter defines: a list of match criteria for TCP Control bits 
</t>
          <t> </t>
          <t>IPv4/IPv6 length: variable</t>
          <t>IPv4/IPv6 value: [bitmask_op, value]+ </t>
          <t/>
          <t>Note: a 2 octets bitmask match is always used for TCP-Flags </t>
        </section>
        <section numbered="true" toc="default">
          <name>Packet length (type = 10 (0x0A))</name>
          <t>	IPv4/IPv6: Packet Length (reference: <xref target="RFC8955" format="default"/>, <xref target="RFC8956" format="default"/>) 
</t>
          <t>	Filter defines: a list of match criteria for length of packet 
(excluding L2 header but including IP header). 
</t>
          <t>IPv4/IPv6 length: variable</t>
          <t>IPv4/IPv6 value: [numeric_op, value]+ </t>
          <t/>
          <t>Note:<xref target="RFC8955" format="default"/> uses either 1 or 2 octet values. 
</t>
        </section>
        <section numbered="true" toc="default">
          <name>DSCP (Differentiaed Services Code Point)(type = 11 (0x0B))</name>
          <t>	IPv4/IPv6: DSCP Code  (reference:  <xref target="RFC8955" format="default"/>,  <xref target="RFC8956" format="default"/>) 
</t>
          <t>	Filter defines: a list of match criteria for DSCP code values to match the
6-bit DSCP field.  
</t>
          <t> </t>
          <t>IPv4/IPv6 length: variable</t>
          <t>IPv4/IPv6 value: [numeric_op, value]+ </t>
          <t/>
          <t>Note: This component uses the Numeric Operator (numeric_op) described in
   <xref target="RFC8955" format="default"/> in section 4.2.1.1.  
   Type 11 component values MUST be encoded as single
   octet (numeric_op len=00). 
          </t>
          <t>The six least significant bits contain the DSCP value.  All other
   bits SHOULD be treated as 0.
          </t>
        </section>
        <section numbered="true" toc="default">
          <name>Fragment (type = 12 (0x0C))</name>
          <t>	IPv4/IPv6: Fragment  (reference:  <xref target="RFC8955" format="default"/>,  <xref target="RFC8956" format="default"/>) 
</t>
          <t>	Filter defines: a list of match criteria for specific IP fragments.
</t>
          <t> </t>
          <t>Length: variable</t>
          <t>Component Value format: [bitmask_op, value]+</t>
          <t>Bitmask values are:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
      0    1   2   3   4   5   6  7	
    +---+---+---+---+---+---+---+---+ 
    | 0 | 0 | 0 | 0 |LF |FF |IsF| DF| 
    +---+---+---+---+---+---+---+---+ 
                 Figure 3-4
]]></artwork>
          <t> Where:
</t>
          <ul empty="true" spacing="normal">
            <li> DF (don't fragment): match If IP header flags bit 1 (DF) is 1.
</li>
            <li>IsF(is a fragment other than first: match if IP header fragment offset is not 0. 
</li>
            <li> FF (First Fragment): Match if <xref target="RFC0791" format="default"/> IP Header Fragment offset is zero and Flags Bit-2 (MF) is 1.
</li>
            <li>LF (last Fragment): Match if [RFC7091] IP header Fragment is not 0 And Flags bit-2 (MF) is 0
</li>
            <li>0: MUST be sent in NLRI encoding as 0, and MUST be ignored during reception. 
</li>
          </ul>
        </section>
        <section numbered="true" toc="default">
          <name>Flow Label(type = 13 (0xOD))</name>
          <t>	IPv4/IPv6: Fragment  (reference:  <xref target="RFC8956" format="default"/>) 
</t>
          <t>	Filter defines: a list of match criteria for 20-bit Flow Label in the IPv6 header field.   
</t>
          <t> </t>
          <t>Length: variable</t>
          <t>Component Value format: [numeric_op, value]+
</t>
        </section>
        <section numbered="true" toc="default">
          <name>TTL (type=14 (0x0E))</name>
          <t>TTL: Defines matches for 8-bit TTL field in IP header
</t>
          <t>Encoding: &lt;[numeric_op, value]+&gt;
</t>
          <t>where: value is a 1 octet value for TTL.
</t>
          <t>ordering: by full value of number_op concatenated with value </t>
          <t>conflict: none</t>
          <t>reference: draft-bergeon-flowspec-ttl-match-00.txt </t>
        </section>
        <section numbered="true" toc="default">
          <name>Parts of SID (type = 15 (0xF))</name>
          <t>	IPv6: Service Identifier Matches (reference: <xref target="I-D.ietf-idr-flowspec-srv6" format="default"/>
          </t>
          <t>	Filter defines: a list of match bit match criteria for some combinations of the
LOC (location), FUNCT (function) and ARG (arguments) fields in the SID or or whole SID.     
</t>
          <t> </t>
          <t>Length: variable</t>
          <t>Component Value format: [type, LOC-Len, FUNCT-Len, ARG-Len, [op, value]+]
</t>
          <t>where:
</t>
          <ul spacing="normal">
            <li>type (1 octet):  This indicates the new component type (TBD1, which is to be assigned by IANA).
</li>
            <li>LOC-Len (1 octet):  This indicates the length in bits of LOC  in SID.
</li>
            <li>FUNCT-Len (1 octet):  This indicates the length in bits of FUNCT in SID.
</li>
            <li>ARG-Len (1 octet):  This indicates the length in bits of ARG in SID.
</li>
            <li>[op, value]+:  This contains a list of {operator, value} pairs that are used to match some parts of SID. 
</li>
          </ul>
          <t>The total of three lengths (i.e., LOC length + FUNCT length + ARG
length) MUST NOT be greater than 128.  If it is greater than 128, an
error occurs and it is treated as a withdrawal [RFC7606] and
[RFC4760].
</t>
          <t>The operator (op) byte is encoded as:
</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
      0   1   2   3   4   5   6   7
    +---+---+---+---+---+---+---+---+
    | e | a | field type|lt |gt |eq |
    +---+---+---+---+---+---+---+---+
            Figure 3-5

]]></artwork>
          <t>where: 
</t>
          <ul empty="true" spacing="normal">
            <li>where the behavior of each operator bit has clear similarity with that
of [RFC8955]'s Numeric Operator field. 
</li>
            <li>e (end-of-list bit):  Set in the last {op, value} pair in the sequence.
</li>
            <li>a - AND bit: If unset, the previous term is logically ORed with the
current one.  If set, the operation is a logical AND.  It should be
unset in the first operator byte of a sequence.  The AND operator has
higher priority than OR for the purposes of evaluating logical
expressions.
</li>
            <li>
              <t>field type: 
</t>
              <ul spacing="normal">
                <li>000: SID's LOC
</li>
                <li>001: SID's FUNCT
</li>
                <li>010: SID's ARG
</li>
                <li>011: SID's LOC:FUNCT (the concatenation of the LOC and FUNCTION fields) 
</li>
                <li>100: SID's FUNCT:ARG (the concatenation of the FUNCTION and ARG fields) 
</li>
                <li>101: SID's LOC:FUNCT:ARG (the concatenation of the FUNCTION and ARG fields) 
</li>
              </ul>
            </li>
            <li>Note: For an unknown field type, Error Handling is to "treat as withdrawal" [RFC7606]
and [RFC4760].
</li>
            <li>lt: less than comparison between data' and value'.
</li>
            <li>gt: greater than comparison between data' and value'.
</li>
            <li>eq: equality between data' and value'.
</li>
          </ul>
          <t>The data' and value' used in lt, gt and eq are indicated by the field
type in an operator and the value field following the operator.
</t>
          <t>The length of the value field depends on the field type and is 
the length of the SID parts being matched (see Table 3, Figure 3-6) 
in bytes, rounded up if that length is not a multiple of 8. 
</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
         Table 3 - SID Parts fields 

       +-----------------------+------------------------------+
       | Field Type            | Value                        |
       +=======================+==============================+
       | SID's LOC             | value of LOC bits            |
       +-----------------------+------------------------------+
       | SID's FUNCT           | value of FUNCT bits          |
       +-----------------------+------------------------------+
       | SID's ARG             | value of ARG bits            |
       +-----------------------+------------------------------+
       | SID's LOC:FUNCT       | value of LOC:FUNCT bits      |
       +-----------------------+------------------------------+
       | SID's FUNCT:ARG       | value of FUNCT:ARG bits      |
       +-----------------------+------------------------------+
       | SID's LOC:FUNCT:ARG   | value of LOC:FUNCT:ARG bits  |
       +-----------------------+------------------------------+
                          

]]></artwork>
          <artwork name="" type="" align="left" alt=""><![CDATA[
        ------------------ SID,  128 bits ----------------
       /                                                  \ 
      +-----------+-----------+-----------+----------------+
      |    LOC    |   FUNCT   |    ARG    |      ...       |
      +-----------+-----------+-----------+----------------+
       \         / \         / \         / \              /
          j bits     k bits       m bits    128-j-k-m bits
       \                     /
         LOC:FUNCT, j+k bits
                   \                     /
                     FUNCT:ARG, k+m bits
       \                                 /
         -- LOC:FUNCT:ARG, j+k+m bits –

                              Figure 3-6

]]></artwork>
        </section>
        <section numbered="true" toc="default">
          <name>MPLS Label Match1 (type=16, 0x10)</name>
          <dl newline="false" spacing="normal">
            <dt>Type MPLS Label Match 1 (0x16)</dt>
            <dd>
              <dl newline="false" spacing="normal">
                <dt/>
                <dd>Function: This match1 applies to MPLS Label field on the label stack. 
	</dd>
                <dt/>
                <dd>reference: <xref target="I-D.ietf-idr-flowspec-mpls-match" format="default"/>
                </dd>
                <dt/>
                <dd>Encoding:
	&lt;type(1 octet), length(1 octet), [operator,value]+&gt;.
	</dd>
                <dt/>
                <dd>It contains a set of {operator, value} pairs that are used for 
	the matching filter.
	</dd>
                <dt/>
                <dd>
                  <t>The operator byte is encoded as:
                  </t>
                  <artwork name="" type="" align="left" alt=""><![CDATA[
	  0   1   2   3   4   5   6   7
    +---+---+---+---+---+---+---+---+
    | e | a | i |  pos  |   Resv    |
    +---+---+---+---+---+---+---+---+
	         Figure 3-7 
	]]></artwork>
                </dd>
                <dt/>
                <dd>
                  <t>where:
                  </t>
                  <dl newline="false" spacing="normal">
                    <dt>e - end of list bit: </dt>
                    <dd> Set in the last {op, value} pair in the list.
	</dd>
                    <dt>a - AND bit: </dt>
                    <dd> If unset, the previous term is logically ORed with
	the current one. If set, the operation is a logical AND. 
	It should be unset in the first operator byte of a sequence.  
	The AND operator has higher priority than OR for the purposes of 
	evaluating logical expressions.  
	</dd>
                    <dt>i - before bit: </dt>
                    <dd>If unset, apply matching filter before 
	MPLS label data plane action; if set, apply matching filter after 
	MPLS label data plane action.
	</dd>
                    <dt>pos - the label position indication bits:</dt>
                    <dd>
                      <t> whose
    meaning for various values is shown below: 	
                      </t>
                      <dl newline="false" spacing="normal">
                        <dt>00:any position on the label stack</dt>
                        <dd> -  the presented 
	label value is used to match any label on the label stack.
	When applying it, at least one label on the stack MUST match the value 
	</dd>
                        <dt>01:top label indication- </dt>
                        <dd> the presented 
	label value MUST be used to match the top label on the label stack.  
	</dd>
                        <dt>10: bottom label indication- </dt>
                        <dd> the presented label 
     value MUST match the bottom label on the label stack. 
	 When it is clear, the present label value can match to any label on the label stack
	</dd>
                        <dt>11: reserved value - </dt>
                        <dd> - This value is reserved and MUST
	not be sent in the packet. 
	</dd>
                      </dl>
                    </dd>
                  </dl>
                </dd>
                <dt/>
                <dd>
                  <t> The value field is encoded as:
                  </t>
                  <artwork name="" type="" align="left" alt=""><![CDATA[
	                     1                   2
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3  
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                Label                          |        
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
	             Figure 3-8 
	]]></artwork>
                </dd>
              </dl>
            </dd>
            <dt>Reference: </dt>
            <dd/>
          </dl>
        </section>
        <section numbered="true" toc="default">
          <name>MPLS Label Match 2: Experimental bits match on top label (Type=17 (0x11))</name>
          <dl newline="false" spacing="normal">
            <dt>Type (16) MPLS Label Match 2: EXP bits </dt>
            <dd>
              <dl newline="false" spacing="normal">
                <dt/>
                <dd>Function: MPLS Match2 applies to MPLS Label experiment bits (EXP) on 
	the top label in the label stack. </dd>
                <dt/>
                <dd>reference: <xref target="I-D.ietf-idr-flowspec-mpls-match" format="default"/>
                </dd>
                <dt/>
                <dd>
                  <t>Encoding:  &lt;type (1 octet), [op, value]+&gt;
                  </t>
                  <dl newline="false" spacing="normal">
                    <dt/>
                    <dd>[op,value] - Defines a list of {operation, value} pairs used to 
	match 3-bit exp field on the top label of packets <xref target="RFC3032" format="default"/>. 
	</dd>
                    <dt/>
                    <dd>Values are encoded using a single byte, where the five most significant 
	bits are zero and the three least significant bits contain the exp value.
	</dd>
                  </dl>
                </dd>
              </dl>
            </dd>
          </dl>
        </section>
        <section numbered="true" toc="default">
          <name>Filter Error handling  (Type=250 (0xFA)</name>
          <dl newline="false" spacing="normal">
            <dt>Type Filter Error handling(0xFA)</dt>
            <dd>
              <dl newline="false" spacing="normal">
                <dt/>
                <dd>Function: This function suggests additional 
	for unknown types and missing fields. 
	</dd>
                <dt/>
                <dd>reference: none 
    </dd>
                <dt/>
                <dd>Encoding:
	&lt;type(1 octet), length(1 octet), T-Err (1 octet), (M-Err (1 octet)    
	</dd>
                <dt/>
                <dd>It contains a set of {operator, value} pairs that are used for 
	the matching filter.
	</dd>
                <dt/>
                <dd>
                  <t> T-Err - specifies handling of unknown type. The values for this 
	type are:  
                  </t>
                  <dl newline="false" spacing="normal">
                    <dt/>
                    <dd> Disable AFI/SAFI
	</dd>
                    <dt/>
                    <dd> Treat as withdrawl 
	</dd>
                    <dt/>
                    <dd> Ignore MP)REACH_NLRI attribute 
    </dd>
                    <dt/>
                    <dd> Ignore filter component (Sub-TLV) 
	</dd>
                  </dl>
                </dd>
                <dt/>
                <dd> M-Error - specifies the handling of a missing field
	with values of: (TBD). 
	</dd>
              </dl>
            </dd>
          </dl>
          <artwork name="" type="" align="left" alt=""><![CDATA[
	  0   1   2   3   4   5   6   7   8	  9	 10  11  12  13  14  15
    +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
    |            T-Err              |  M-error                      |
    +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
	         Figure 3-8b 
	]]></artwork>
        </section>
      </section>
      <section numbered="true" toc="default">
        <name>Encoding of FSV2 Actions (type=2)</name>
        <t>The FSv2 actions may be sent in an Extended Community or a Wide Community. 
</t>
        <t>
The Extended Community encodes the Flow Specification actions in the Extended Community format 
<xref target="RFC4360" format="default"/>.
</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[

  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  Type high    |  Type low(*)  |                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+          Value (6 octets)     |
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                              Figure 3-9
]]></artwork>
        <t>
The Wide Community definition for FSv2 actions is as follows: 
</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |             Type=1            |    Flags  |C|T|   Reserved    |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |            Length             |<sequence of FSv2-Action-TLV>+ |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                           Figure 3-10 

]]></artwork>
        <t>
where FSv2-Action-TLV is defined as: 
</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
  FSv2-Action-TLV  
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 | action order                  |   Chain-ID                    | 
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |          <action-subTLVs>                                     |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
                           Figure 3-11

]]></artwork>
        <t>
Where action-SubTLVs have the format: 
</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
 action-SubTLVs 
  
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  SubTLV type (2 octet)        |   length type (2 octet)       |       
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  value (variable)             |
 +-------------------------------+

                          Figure 3-12 

]]></artwork>
        <t>where: 
        </t>
        <ul empty="true" spacing="normal">
          <li>action-order: is the user defined order of the action within the list </li>
          <li>chain ID: is a 2-byte identifier for an action chain </li>
          <li>length - is the length of the TLV</li>
          <li>value - contains a sequence of action SubTLVs. </li>
        </ul>
        <t>Each Action SubTLV has the format:     
        </t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
    +-------------------------------+
    |  SubTLV type (2 octet)        |
    +-------------------------------+
    |  length (2 octet)             |
    +-------------------------------+
    |  value (variable)             |
    +-------------------------------+
            
       Figure 3-14 

  ]]></artwork>
        <t>Where: 
        </t>
        <ul spacing="normal">
          <li>SubTLV type: values are action type values shown in Table 4 below. 
  </li>
          <li>length: is the length of the action SubTLV
  </li>
          <li>Value is specific to the SubTLV
  </li>
        </ul>
        <artwork name="" type="" align="left" alt=""><![CDATA[
  
 Table 4 – FSv2 Action types  
  
 Action   Description
 ======   ===========  
   00     reserved
   01     ACO:  action chain operation
   02     TAIS: traffic actions per interface group 
   06     TRB:  traffic rate limited by bytes 
   07     TA: traffic action (terminal/sample) 
   08     RDIP: Redirect IPv4
   09     TM: mark DSCP value 
   10     TBA (to be assigned) 
   11     TBA (to be assigned) 
   12     TRP: traffic rate limited by packets  
   13     RDIPv6: redirect to IPv6
   14     TISFC: SFC Classifier Info (moved from OD to OE)
   15     RDIID: redirect to Indirection-id (move from 0x00) 
   16     MPLSLA: MPLS label action    
   17-21  TBA (to be assigned) 
   22     VLAN: VLAN-Action (0x16)[draft-ietf-idr-flowspec-l2vpn-17]
   23     TPID: TPID-Action (0x17)[draft-ietf-idr-flowspec-l2vpn-17]
   24-254 TBA (to be assigned)
   255    reserved 

          Figure 3-15  
  ]]></artwork>
        <t/>
        <t>Ordering of actions within a rule: 
        </t>
        <ul empty="true" spacing="normal">
          <li> The actions are first stored in user-defined order. If multiple actions exist
  for a single action order value, then the actions will be ordered by action type followed by value. 
 </li>
          <li>Action specifications must include descriptions of order comparison for the values within the action.   
 </li>
        </ul>
        <section numbered="true" toc="default">
          <name>Action Chain operation (ACO) (1, 0x01)</name>
          <t>SubTLV: 0x01 
          </t>
          <t>Length: variable 
          </t>
          <t>Value:
          </t>
          <ul empty="true" spacing="normal">
            <li>AC-failure-type - byte that determines the action on failure  
 </li>
            <li>AC-failure-value - variable depending on AC-failure-type. 
 </li>
          </ul>
          <t>Actions may succeed or fail and an Action chain must deal with it.  
 The default value stored for an action chain that does not have this action chain is “stop on failure”.
</t>
          <t>where:
          </t>
          <ul empty="true" spacing="normal">
            <li>
              <t>AC-Failure types are:  
              </t>
              <ul spacing="normal">
                <li>0x00 - default - stop on failure  
 </li>
                <li>0x01 - continue on failure (best effort on actions)
 </li>
                <li>0x02 - conditional stop on failure - depending on AC-Failure-value 
 </li>
                <li>0x03 - rollback - do all or nothing - depending in AC-Failure-value 
 </li>
              </ul>
            </li>
            <li>AC-Failure values:  TBD</li>
          </ul>
          <t>Interactions with other actions: Interactions with all other Actions  </t>
          <t>Ordering within Action type: By AC-Failure type  </t>
        </section>
        <section numbered="true" toc="default">
          <name>Traffic Actions per interface set (TAIS) (2, 0x02)</name>
          <t>SubTLV: 0x02
          </t>
          <t> Length:  8 octets (6 in extended community) 
          </t>
          <t> Value field: [4-octet-AS] [GroupID 2-octet] [action 2-octet]
          </t>
          <t>where:
          </t>
          <ul empty="true" spacing="normal">
            <li>
              <t>Group-ID: identifier for group in 2 octets (14 lower bits)
</t>
              <ul spacing="normal">
                <li>Note: Extended Community format will have 2 bits for action.  </li>
              </ul>
            </li>
            <li>
              <t> Action: determines inbound or outbound action where:
</t>
              <ul spacing="normal">
                <li>Outbound(0x1): FSv2 rule MUST be applied in outbound
        Direction to interface set identified by
        Group-ID.
</li>
                <li>Inbound (0x2): FSv2 rule MUST be applied in inbound
  Direction to interface set identified by Group-ID. 
</li>
              </ul>
            </li>
          </ul>
          <t/>
          <t>Value ordering: AS, then Group ID, then Action bytes. 
          </t>
          <t>Conflict: with any bi-direction action such as
          </t>
          <ol spacing="normal" type="1"><li>traffic rate limited by bytes, or 
 </li>
            <li>traffic rate limited by packets.          
 </li>
          </ol>
          <t>Reference: <xref target="I-D.ietf-idr-flowspec-interfaceset" format="default"/>
          </t>
        </section>
        <section numbered="true" toc="default">
          <name>Traffic rate limited by bytes (TRB) (6, 0x06)</name>
          <t> SubTLV:0x06 
          </t>
          <t>Length: 8 octets   
          </t>
          <t> Value field:[4-octet-AS] [float (4 bytes)]
          </t>
          <t>where: 
          </t>
          <ul empty="true" spacing="normal">
            <li>
              <t>[4-octet-AS]:4 byte AS number
              </t>
              <ul spacing="normal">
                <li>If FSv1 passes the lower 2 bytes of 4 byte AS number, 
    use [TBD6] as higher 2 bytes to identify. 
</li>
                <li>Open issue : TBD6 can be either be chosen 
to match the common 2-byte to 4-byte or 
a unique value.  Feedback is needed from WG and authors. 
</li>
              </ul>
            </li>
            <li>
              <t>Float: maximum byte rate in IEEE 32-bit floating point [IEEE.754.19895 format]
  in bytes per second. 
              </t>
              <ul spacing="normal">
                <li>A value of 0 should result in all traffic
   for the particular flow to be discarded.    
</li>
                <li>On encoding the traffic-rate-packets MUST NOT be negative.</li>
                <li>On decoding, negative values MUST BE treated as zero (discard all traffic).</li>
              </ul>
            </li>
          </ul>
          <t>Value ordering: AS then float value</t>
          <t>Action Conflict: traffic-rate-packets</t>
          <t>reference: <xref target="RFC8955" format="default"/>
          </t>
        </section>
        <section numbered="true" toc="default">
          <name>Traffic Action (TA)(7, 0x07)</name>
          <t> SubTLV: 0x07 </t>
          <t> Length: 1 </t>
          <t>Value field: [1-octet action] </t>
          <t>where the traffic action values are:
          </t>
          <ul empty="true" spacing="normal">
            <li>1 = Terminal flow specification action 
 </li>
            <li>2 = Sample - enables sampling and logging 
 </li>
            <li>3 = Terminal action + sample   
 </li>
          </ul>
          <t>Value ordering: By traffic action values</t>
          <t>Conflicts/Interactions: duplication of packets also occurs in: 
          </t>
          <ul empty="true" spacing="normal">
            <li> Redirect to IPv4 (action 0x08), </li>
            <li> Redirect to IPv6 (action 0x0D (13)), </li>
            <li> Redirect to SFC  (action 0xOE (14)) </li>
            <li> Redirect to Indirection-ID (action 0xF (15)</li>
          </ul>
        </section>
        <section numbered="true" toc="default">
          <name>Redirect to IPv4 (RDIPv4)(8,0x08)</name>
          <t>  SubTLV: 0x08 </t>
          <t>  Length: 12 octets </t>
          <t>Value field: </t>
          <t>[4-byte-AS] [IPv4 address (4 octets] [ID (4 octets)] [Flag (1 octet)]
          </t>
          <t>where:
          </t>
          <ul empty="true" spacing="normal">
            <li>4-octet-AS - is a 4-byte AS in a Route Target </li>
            <li>IPv4 address - is an IP Address in RT </li>
            <li>ID - the 4-octet value set by user </li>
            <li>
              <t>Flag is 1 octet value with the following definitions:
              </t>
              <ul spacing="normal">
                <li>0 - reserved </li>
                <li>1 - copy and redirect copy </li>
              </ul>
            </li>
          </ul>
          <t/>
          <t>Value ordering: 4-octet AS, then IP address, then ID (lowest to highest) with:
          </t>
          <ul empty="true" spacing="normal">
            <li> No AS specified uses AS value of zero.</li>
            <li>No IP specified uses IP value of zero. </li>
            <li>No ID specified uses ID value of zero. </li>
          </ul>
          <t>Conflicts/Interactions: Any redirection or traffic sampling found in:
          </t>
          <ul empty="true" spacing="normal">
            <li>Traffic Action (action 0x07), </li>
            <li> Redirect to IPv6 (action 0x0D (13)), </li>
            <li> Redirect to SFC  (action 0xOE (14)) </li>
            <li> Redirect to Indirection-ID (action 0xF (15)</li>
          </ul>
          <t>reference: <xref target="RFC8955" format="default"/>, draft-ietf-idr-flowspec-ip-02.txt
          </t>
        </section>
        <section numbered="true" toc="default">
          <name>Traffic marking (TM) (9, 0x09)</name>
          <t>SubTLV: 0x09 </t>
          <t>Length: 1 octet </t>
          <t>Value: DSCP field with the 2 left most bits zero </t>
          <t>
The DSCP field format is: 
          </t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
     0  1  2  3  4  5  6  7
   +--+--+--+--+--+--+--+--+
   |R |R |   DSCP bits     |
   +--+--+--+--+--+--+--+--+

        Figure 3-16 

 ]]></artwork>
          <t>where: 
</t>
          <ul empty="true" spacing="normal">
            <li>R - reserved bits (set to zero to send, ignored upon reception and set to zero. 
</li>
            <li>DSCP - 6 bits of DSCP values 
</li>
          </ul>
          <t>Ordering within Value: Based on DSCP value
</t>
          <t>Conflicts: none</t>
          <t>reference: <xref target="RFC8955" format="default"/>
          </t>
        </section>
        <section numbered="true" toc="default">
          <name>Traffic rate limited by packets (TRP) (12, 0xC)</name>
          <t>SubTLV:12 (0xC) </t>
          <t>Length: 8 </t>
          <t>Value field:  [4-octet-AS] [float (4 octet)] </t>
          <t>Where:
</t>
          <ul empty="true" spacing="normal">
            <li>4-octet AS - is the AS setting this value </li>
            <li>
              <t>Float – specifies maximum rate in IEEE 32-bit format [IEEE.754.185] in packets per second.  
</t>
              <ul spacing="normal">
                <li> A traffic rate of zero should result
  in all packets being discard. </li>
                <li>On encoding the traffic-rate-packets MUST NOT be negative.</li>
                <li>On decoding, negative values MUST BE treated as zero (discard all traffic).</li>
              </ul>
            </li>
          </ul>
          <t>Ordering within Value: Based on DSCP value
</t>
          <t>Conflicts: Traffic rate limited by bytes (0x06)</t>
          <t>reference: <xref target="RFC8955" format="default"/>
          </t>
        </section>
        <section numbered="true" toc="default">
          <name>Traffic redirect to IPv6 (RDIPv6) (13, 0xD)</name>
          <t>SubTLV: 13 (0xD) </t>
          <t>Length: 24 octets </t>
          <t>Value field: [4-octet-as] [IPv6-address (16 octets)] [local administrator (2 octets] 
 		     [Flag (1 octets)]
</t>
          <t>where: 
</t>
          <ul empty="true" spacing="normal">
            <li>4-octet-AS - is the AS requesting action in 4-byte AS format, 
</li>
            <li>IPv6-address - is the redirection IPv6 address
</li>
            <li>Local administrator - 2 bytes assigned by network administrator.
</li>
            <li>
              <t>lag (1 octet) with the following definitions: 
</t>
              <ul spacing="normal">
                <li>0 - reserved
</li>
                <li>1 - copy and redirect copy
</li>
              </ul>
            </li>
          </ul>
          <t>
          </t>
          <t>Ordering within Value: AS, then IPv6, the flag (low to high) </t>
          <t>Conflicts/Interactions: Any redirection or traffic sampling found in:
          </t>
          <ul empty="true" spacing="normal">
            <li>Traffic Action (action 0x07) , </li>
            <li> Redirect to IPv4 (action 0x08 (8)), </li>
            <li> Redirect to SFC  (action 0xOE (14)) </li>
            <li> Redirect to Indirection-ID (action 0xF (15)</li>
          </ul>
        </section>
        <section numbered="true" toc="default">
          <name>Traffic insertion in SFC (TISFC)(14, 0xE)</name>
          <t>SubTLV:14 (0xE)</t>
          <ul empty="true" spacing="normal">
            <li>Note: replace IANA 0xD FSv1 with FSv2 OxE. </li>
          </ul>
          <t>Length: 6 octets</t>
          <t>Value field:  [SPI (3 octets)][SI (1 octet)][SFT (2 octet)] </t>
          <t>where: 
</t>
          <ul empty="true" spacing="normal">
            <li>SPI - is the service path identifier</li>
            <li>SI - is the service index</li>
            <li>SFT - is the service function type. </li>
          </ul>
          <t/>
          <t>Value ordering: SPI, then SI, then SFT (lowest to highest)</t>
          <t>Conflicts/Interactions: Any redirection or traffic sampling found in:
          </t>
          <ul empty="true" spacing="normal">
            <li>Traffic Action (action 0x07) , </li>
            <li> Redirect to IPv4 (action 0x08 (8)), </li>
            <li> Redirect to IPv6  (action 0xOD (13)) </li>
            <li> Redirect to Indirection-ID (action 0xF (15)</li>
          </ul>
          <t>Reference: <xref target="RFC9015" format="default"/></t>
        </section>
        <section numbered="true" toc="default">
          <name>Flow Specification Redirect to Indirection-ID (RDIID) (15, 0x0F)</name>
          <t>
SubTLV: 15 (0x0F) 
</t>
          <ul empty="true" spacing="normal">
            <li>note: current value is 0x00 for FSv1  </li>
          </ul>
          <t>Length: 6 octets </t>
          <t>Value field:
</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
[Flags (1 octet)] [ID-Type (1 octet)][Generalized-ID (4 octets)] 

     Figure 3-17

]]></artwork>
          <t>where:
</t>
          <ul empty="true" spacing="normal">
            <li>
              <t>Flags: are defined as: 
</t>
              <ul spacing="normal">
                <li>
                  <t>[S-ID]: sequence number for indirection IDs (3 bits).
</t>
                  <ul spacing="normal">
                    <li>Value of zero means sequence is not set and all other
S-ID values should be ignored 
</li>
                  </ul>
                </li>
                <li> [C] - copy packets matching this ID 
</li>
              </ul>
            </li>
            <li>
              <t>ID-Type: type of indirection ID with following values:
</t>
              <ul spacing="normal">
                <li>0 - localized ID 
</li>
                <li>1 - Node with SID/index in MPLS SR 
</li>
                <li>2 - Node with SID/label in MPLS SR </li>
                <li>3 - Node with Binding Segment ID with SID/Index
</li>
                <li>4 - Node with Binding Segment ID with SID/Label  
</li>
                <li>5 - Tunnel ID 
</li>
              </ul>
            </li>
            <li> Generalized-ID (G-ID): indirection value  
</li>
          </ul>
          <t/>
          <t>Value Ordering: first indirection ID, then Generalized ID</t>
          <t>Action Value ordering: ID-Type by value (lowest to highest)</t>
          <t>Conflicts/Interactions: Any redirection or traffic sampling found in:
          </t>
          <ul empty="true" spacing="normal">
            <li>Traffic Action (action 0x07), </li>
            <li> Redirect to IPv4 (action 0x08 (8)), </li>
            <li> Redirect to IPv6 (action 0x0D, (13)</li>
            <li> Redirect to SFC  (action 0xOE (14)) </li>
          </ul>
          <t>reference: <xref target="I-D.ietf-idr-flowspec-path-redirect" format="default"/>
          </t>
        </section>
        <section numbered="true" toc="default">
          <name>MPLS Label Action (MPLSLA)(16, 0x10)</name>
          <t>Function: MPLS Label actions
</t>
          <t>SubTLV: 16 (0x10) </t>
          <t> Length: 6 octets </t>
          <t> Value: 
</t>
          <ul empty="true" spacing="normal">
            <li>[action (1 octet) </li>
            <li>[order  (1 octet) </li>
            <li>[Label Stack Entry (4 octets)] </li>
          </ul>
          <t>where Action: 
</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
+------+------------------------------------------------------------+
|Action| Function                                                   |
+------+------------------------------------------------------------+
|  0   | Push the MPLS tag                                          |
+------+------------------------------------------------------------+
|  1   | Pop the outermost MPLS tag in the packet                   |
+------+------------------------------------------------------------+
|  2   | Swap the MPLS tag with the outermost MPLS tag in the packet|
+------+------------------------------------------------------------+
| 3~15 | Reserved                                                   |
+------+------------------------------------------------------------+

                    Figure 3-18
]]></artwork>
          <artwork name="" type="" align="left" alt=""><![CDATA[
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1		  
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
 |                Label                  | Exp |S|       TTL     |  
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
 
              Figure 3-19 - Label Stack Entry
 
 ]]></artwork>
          <t>Action Value ordering: ID-Type, then value (lowest to highest)</t>
          <t>Value Ordering: order, action, label, Exp </t>
          <t>Conflicts/Interactions: Any redirection for IP before MPLS 
          </t>
          <ul empty="true" spacing="normal">
            <li>Traffic Action (action 0x07), </li>
            <li> Redirect to IPv4 (action 0x08 (8)), </li>
            <li> Redirect to IPv6 (action 0x0D, (13)</li>
            <li> Redirect to SFC  (action 0xOE (14)) </li>
          </ul>
          <t>reference: <xref target="I-D.ietf-idr-bgp-flowspec-label" format="default"/>
          </t>
        </section>
        <section numbered="true" toc="default">
          <name>VLAN action (VLAN) (22, 0x16)</name>
          <t>Function: Rewrite inner or outer VLAN header </t>
          <t>SubTLV: 22 (0x16) </t>
          <t>Length: 6 octets </t>
          <t>Value:  
</t>
          <ul empty="true" spacing="normal">
            <li>[Rewrite-actions (2 octets)]</li>
            <li>[vlan-PCP-DE-1 (2 octets)]</li>
            <li>[vlan-PCP-DE-2 [2 octets)] </li>
          </ul>
          <t>where: 
</t>
          <ul empty="true" spacing="normal">
            <li>Rewrite-actions - is as follows:
</li>
          </ul>
          <artwork name="" type="" align="left" alt=""><![CDATA[

     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      |
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

                           Figure 3-20
]]></artwork>
          <ul empty="true" spacing="normal">
            <li>PO1: Pop action.  If the PO1 flag is one, it indicates the outermost
     VLAN should be removed.
</li>
            <li> PU1: Push action.  If PU1 is one, it indicates VLAN ID1 will be
    added, the associated Priority Code Point (PCP and Drop Eligibility 
     Indicator (DEI) are PCP1 and DE1.
</li>
            <li> SW1: Swap action.  If the SW1 flag is one, it indicates the outer
    VLAN and inner VLAN should be swapped.
</li>
            <li>PO2: Pop action.  If the PO2 flag is one, it indicates the outermost
   VLAN should be removed.
</li>
            <li>PU2: Push action.  If PU2 is one, it indicates VLAN ID2 will be
   added, the associated PCP and DEI are PCP2 and DE2.
</li>
            <li>SW2: Swap action.  If the SW2 flag is one, it indicates the outer
   VLAN and inner VLAN should be swapped.
</li>
            <li>RI1 and RI2: Rewrite inner VLAN action.  If the RIx flag is one
   where "x" is "1" or "2"), it indicates the inner VLAN should be
   replaced by a new VLAN where the new VLAN is VLAN IDx and the
   associated PCP and DEI are PCPx and DEx.  If the VLAN IDx is 0, the
   action is to only modify the PCP and DEI value of the inner VLAN.
</li>
            <li>RO1 and RO2: Rewrite outer VLAN action.  If the ROx flag is one
(where "x" is "1" or "2"), it indicates the outer VLAN should be
replaced by a new VLAN where the new VLAN is VLAN IDx and the
associated PCP and DEI are PCPx and DEx.  If the VLAN IDx is 0, the
action is to only modify the PCP and DEI value of the outer VLAN.
</li>
            <li>Resv: Reserved for future use.  MUST be sent as zero and ignored on
     receipt.
</li>
          </ul>
          <t>Value ordering: rewrite-actions, VLAN1, VLAN2, PCP-DE1, PCP-DE2
</t>
          <t>Conflicts: TIPD Action 
</t>
          <t>reference: <xref target="I-D.ietf-idr-flowspec-l2vpn" format="default"/>
          </t>
        </section>
        <section numbered="true" toc="default">
          <name>TPID action (TPID) (23, 0x17)</name>
          <t>Function: Replace Inner or outer TP 
</t>
          <t>SubTLV: 23 (0x17) </t>
          <t> Length: 6 octets </t>
          <t> Value: 
</t>
          <ul empty="true" spacing="normal">
            <li>[Rewrite-actions (2 octets)] </li>
            <li>[TP-ID-1 (2 octets)] </li>
            <li>[TP-ID-2 (2 octets)] </li>
          </ul>
          <t> Where: rewrite-actions are bitmask (2 octets) 
    with 2 actions as follows: 
</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[

        0                                           15
      +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
      |TI|TO|                     Resv                |
      +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

                Figure 3-21 
]]></artwork>
          <t>TI: Mapping inner Tag Protocol (TP) ID (typically a VLAN) 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.
</t>
          <t>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.
</t>
          <t>
Resv: Reserved for future use.  MUST be sent as zero and ignored on
     receipt
</t>
          <t>Value Ordering: rewrite-actions, TP-ID-1, TP-ID-2 </t>
          <t>Conflicts: VLAN action </t>
          <t>reference:<xref target="I-D.ietf-idr-flowspec-l2vpn" format="default"/>
          </t>
        </section>
      </section>
      <section numbered="true" toc="default">
        <name>Extended Community vs. Action SubTLV formats</name>
        <t>
The SubTLV format is used for the Wide communities 
and for the action subTLVs in the NLRI. 
</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Sub-TLV  Action Action SubTLV      Extended Community
type     Name   format             format
=======  =====  ===============    ====================
 1       ACO    type: 1 (0x01)      not applicable (n/a) 
                length:variable
				 
 2       TAIS   type: 2 (0x02)      type: 0x0702 or 0x4702
                length:8            length: 6 
                [4-octet-as]         [4-octet-AS] 
                [group-3-octet]      [flags-group]
                [flags-1-octet]        (2 octets) 
				 
 3-5     reserved


		

Sub-TLV Action Action SubTLV      Extended Community
type    Name   format             format
======= =====  ===============    ====================				
 6       TRB    type:6 (0x06)       type:8006
                length:8            length: 6 octets
                [4-byte-AS]          [2-byte-AS]
                [float (4 octets)]   [float (4 octets)]
				 
 7       TA     type:7              type:8007
                length:1            length:6 octets
                flags: (1 octet)    flags (6 octets)

				                    
 8       RDIPv4 type:8              type:8008
                length: 12          length: 6 octets 
                [4-byte-AS]          [AS-2-octets]
                [IPv4-address]       [IPv4 address]
                                    type:8108
                                    length: 6 octets 
                                     [IPv4 address]
                                     [ID-2 octets] 
                                    type:8208
                                    length: 6 octets
                                     [AS-4-octets]
                                     [ID-2-octets]
									
9       TM      type:9              type:8009
                length:1            length: 6 octets
                DSCP: 1 octet        DSCP: 1 octet


10              type:10 (0X0A)     TBA 

11              type:11 (0x0B)     TBA 

12      TRP     type:12 (0x0C)     type: 0x800C   	
                length: 8 octets   length: 6 octets
                [4-byte-AS]         [2-byte-AS]
                [float-4-octet]     [float-4-octet]

13      RDIPv6 	type:13 (0x0D)     type:0x000C
                length:22          length: 18 octets
                [4-byte-AS]         [IPv6-address (16)]
                [IPv6-address (16)] [local-admin (2)]
                [local-admin (2)]
				


Sub-TLV Action Action SubTLV      Extended Community
type    Name   format             format
======= =====  ===============    ====================

14      TISFC   type:14 (0x0E)      type: 0xD (FSv1)
                                    type: 0xE (FSv2)
                length:6            length:6  				
                SPI (3 octets)       SPI (3 octets) 
                SI (1 octet)         SI (1 octet)
                SFT (2 octets)       SFT (2 octets)				

15      RDIID   type:15 (0x0F)      type: 0900 (FSv1)
                length: 6           length 6 
                flags (1)            flags (1)
                ID-type (1)          ID type (1)
                G-ID (4 octets)      G-ID (4-octets)
				
16      MPLSLA  type:16 (0x10)
				
16-21   TBA - 


				                    
22      VLAN    type:22 (0x16)      Type: (TBD)
                length:6            length:6
                [rewrite-action(2)]  [rewrite-actions (2)]
                [vlan-pcp-de-1 (2)]  [vlan-pcp-de-1 (2)]
                [vlan-pcp-de-2 (2)]	 [vlan-pcp-de-2 (2)]	

23      TPID    type:23 (0x17)      Type: (TBD)
                length:6            length:6 
                [rewrite-action(2)] [rewrite-actions (2)]
                [TP-ID-1 (2)]       [TP-ID-1 (2)]
                [TP-ID-2 (2)]       [TP-ID-2 (2)]				
						
]]></artwork>
      </section>
      <section numbered="true" toc="default">
        <name>L2 Traffic Rules</name>
        <t>The format of the L2 header TLV value field is shown in Figure 3-22.
The AFI/SAFI field includes the AFI (2 octets), SAFI (1 octet).

</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
       +-------------------------------+
       | +--------------------------+  |
       | | AFI/SAFI field (3)       |  |
       | +--------------------------+  |
       | | L3 AFI (2)               |  |
       | +--------------------------+  |
       | | L2 filter length (2)     |  |
       | +--------------------------+  |
       | | (SubTLVs)+ (L2 then L3)  |  |
       | +--------------------------+  |
       +-------------------------------+
         Figure 3-22 -L2 Header TLV value
]]></artwork>
        <t>Where: 
</t>
        <ul empty="true" spacing="normal">
          <li>AFI/SAFI field has AFI is 6 (IEEE 802) and SAFI is TBD1.
</li>
          <li>L3 AFI is zero if the filter test only L2 fields, otherwise it is
 or 2 depending on whether the filter L3 tests after the L2
	 header are for IPv4 or IPv6.
</li>
          <li>L2 filter length is the length of the L2 SubTLVs in bytes. These
         are followed by the L3 SubTLVs is the L3 AFI field is non-zero.
</li>
        </ul>
        <t>Each L2 SubTLV has the format shown in Figure 3-23. (The L3 SubTLVs
   are as defined in Section 4.1.)
</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
	Each SubTLV has the format: 
    
    +-------------------------------+
    |  SubTLV type (1 octet)        |
    +-------------------------------+
    |  length (1 octet)             |
    + ------------------------------+
    |  value (variable)             |
    +-------------------------------+
             Figure 3-23   
 
]]></artwork>
        <t>
SubTLV type: A component type value defined in the “L2 Flow Specification Component Types” registry for L2 by 
[draft-ietf-idr-flowspec-l2vpn). 
</t>
        <t>Where the SubTLVs have the following component types: 
</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Component Types Table 

Component 
type      Description
=======   ==================
1          EtherType
2          Source MAC
3          Destination MAC
4          DSAP (destination service access point)
5          SSAP (source service access point) 
6          control field in LLC
7          SNAP 
8          VLAN ID 
9          VPAN PCP
10         Inner VLAN ID
11         Inner VLAN PCP
12         VLAN DEI
13         VLAN DEI
14         Source MAC special bits
15         Destination MAC special bits 

   Table 4 – L2 VPN components 

]]></artwork>
        <t>See <xref target="I-D.ietf-idr-flowspec-l2vpn" format="default"/> for 
the details on the format and value fields for each component. 
</t>
        <t>Value ordering: Ordering of L2 FSv2 rules will be by user-defined order of the rule.  For 
FSv2 filters within the same rule, the ordering will be by component number 
and then by value within the component.  See 
 <xref target="I-D.ietf-idr-flowspec-l2vpn" format="default"/> for the ordering of the 
 values within the component. 
</t>
        <t>L2 VPN filtering using SAFI TBD2 is specified in section 3.6. 
</t>
        <t>reference: <xref target="I-D.ietf-idr-flowspec-l2vpn" format="default"/>
        </t>
      </section>
      <section numbered="true" toc="default">
        <name>SFC Traffic Rules</name>
        <t>The FSv2 filters allow for filtering of the SFC NLRI family of routes.  The 
traffic NLRIs filtered are from SFC AFI/SAFI (AFI = 31, SAFI=9).  
</t>
        <t>
The FSv2 filters provide this filtering with SFC AFI (AFI=31) and
 SAFI for FSv2 filters (SAFI = TB1). 
</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
    +--------------------------------------+
    | +---------------------------------+  |
    | | Tunneled AFI/SAFI field         |  |
    | +---------------------------------+  | 
    | |                                 |  |
    | | <subTLVs>+                      |  |
    | +---------------------------------+  |
    +--------------------------------------+

              Figure 3-24
 
]]></artwork>
        <t>Each SubTLV has the format: 
</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
    +-------------------------------+
    |  SubTLV type (1 octet)        |
    +-------------------------------+
    |  length (1 octet)             |
    + ------------------------------+
    |  value (variable)             |
    +-------------------------------+
     Figure 3-25 – Tunneled SubTLV format 

]]></artwork>
        <t>The components listed are: 
</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
   1 = SFIR RD Type (types 1, 2, 3) 
   2 = SFIR RD Value 
   3 = SFIR Pool ID 
   4 = SFIR MPLS context/label 
   5 = SFPR SPI
   6 = SPF attribute fields  
   
    Table 6 – SFC Filter types 

]]></artwork>
        <t>Ordering is by: User-defined rule order, component number, and then value within component. 
</t>
        <t>reference: <xref target="RFC9015" format="default"/>, [TBD] 
</t>
      </section>
      <section numbered="true" toc="default">
        <name>BGP/MPLS VPN IP Traffic Rules</name>
        <t> The format of the match filter for BGP/MPLS VPN IP traffic 
is very similar to the format for non-VPN IP traffic as defined 
in Section 3.1 except that the SAFI is TBD2 and the initial NLRI header 
has an 8-byte Route Distinguisher added to it as shown in Figure 3-26. 
The SubTLV format and filter components formats remain the same.
</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
       +-------------------------------+
       | +--------------------------+  |
       | | AFI/SAFI field (3)       |  |
       | +--------------------------+  |
       | | Route Distinguisher (8)  |  |
       | +--------------------------+  |
       | | (subTLVs)+               |  |
       | +--------------------------+  |
       +-------------------------------+

         Figure 3-26: VPN IP Filter Header

]]></artwork>
      </section>
      <section numbered="true" toc="default">
        <name>BGP/MPLS VPN L2 Traffic Rules</name>
        <t>
The format of the match filter for BGP/MPLS VPN IP traffic is very 
similar to the format for non-VPN L2 traffic as defined in Section 3.4 
except that the SAFI is TBD2 and the initial NLRI header has an 8-byte Route 
Distinguisher added to it right after the AFI/SAFI as shown in Figure 3-27 
The SubTLV format and filter components formats remain the same.
</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[

       +-------------------------------+
       | +--------------------------+  |
       | | AFI/SAFI field (3)       |  |
       | +--------------------------+  |
       | | Route Distinguisher (8)  |  |
       | +--------------------------+  |
       | | L3 AFI (2)               |  |
       | +--------------------------+  |
       | | L2 filter length (2)     |  |
       | +--------------------------+  |
       | | (subTLVs)+               |  |
       | +--------------------------+  |
       +-------------------------------+

         Figure 3-27: VPN L2 Filter Header

]]></artwork>
      </section>
      <section numbered="true" toc="default">
        <name>Encoding of Actions passed in Wide Communities</name>
        <t>The BGP FSv2 actions are passed in a 
Wide Community attribute with a BGP Wide Community container 
(type 01) <xref target="I-D.ietf-idr-wide-bgp-communities" format="default"/>
with community of FSv2 Actions (TBD4) and Wide Community 
attributes of Target TLV, Exclude TLVs, 
and Parameter TLVs.  The Parameter MUST contains 
an FSv2 Atom which contains a sequence of Action TLVs.  
</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
  
  BGP Wide Community Container 
   with FSv2 actions 
 
 +----------------------------+
 | Community: FSv2-actions    |
 | (community value = TBD4)   |    
 +----------------------------+
 | Source AS number           |
 +----------------------------+
 | Context AS number          |
 +----------------------------+
 | Target or Exclude TLVs     + 
 | (optional)                 |
 +----------------------------+
 | Parameter TLV with         |
 | FSv2 atom                  |
 +----------------------------+
  figure 3-28 - BGP 
]]></artwork>
        <artwork name="" type="" align="left" alt=""><![CDATA[
 +----------------------------+
 |   FSv2 Actions atom-id     |
 +----------------------------+
 |  length (2 octets)         |
 +----------------------------+
 | <Action-Sub-TLVs>+         |
 +----------------------------+
 
 Figure 3-29 - Flow Specification
 with IDs for Wide Community Actions 
  ]]></artwork>
        <t>
where: 
</t>
        <ul empty="true" spacing="normal">
          <li>Atom-id: (TBD5) </li>
          <li>length: variable depending on SubTLVS</li>
          <li>Action Sub-TLVs as defined above</li>
        </ul>
      </section>
    </section>
    <section numbered="true" toc="default">
      <name>Validation of FSv2 NLRI</name>
      <t>The validation of FSv2 NLRI adheres to the combination of rules for general 
BGP FSv1 NLRI found in <xref target="RFC8955" format="default"/>, <xref target="RFC8956" format="default"/>,
<xref target="RFC9117" format="default"/>, and the specific 
additions made for SFC NLRI <xref target="RFC9015" format="default"/>, and L2VPN NLRI 
<xref target="I-D.ietf-idr-flowspec-l2vpn" format="default"/>.
</t>
      <t>To provide clarity, the full validation process for flow specification 
routes (FSv1 or FSv2) is described in this section rather 
than simply referring to the relevant portions of these RFCs.  
Validation only occurs after BGP UPDATE message reception and 
the FSv2 NLRI and the path attributes relating to FSv2 (Extended
community and Wide Community) have been determined to be well-formed.  Any 
MALFORMED FSv2 NRLI is handled as a “TREAT as WITHDRAW” <xref target="RFC7606" format="default"/>. 
</t>
      <section numbered="true" toc="default">
        <name>Validation of FS NLRI (FSv1 or FSv2)</name>
        <t>
Flow specifications received from a BGP peer that are accepted in the
respective Adj-RIB-In are used as input to the route selection process.
Although the forwarding attributes of the two routes for tbe same 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. 
</t>
        <t>The first step of the BGP Route selection procedure (section 9.1.2 of 
<xref target="RFC4271" format="default"/> is to exclude from the selection procedure routes that are 
considered unfeasible. In the context of IP routing information, this 
is used to validate that the NEXT_HOP Attribute of a given route is 
 resolvable.  
        </t>
        <t>The concept can be extended in the case of the Flow Specification NLRI to allow other validation procedures. 
</t>
        <t>The FSv2 validation process validates the FSv2 NLRI with following unicast 
routes received over the same AFI (1 or 2) but different SAFIs:
</t>
        <ul spacing="normal">
          <li>Flow specification routes (FSv1 or FSv2) received over SAFI=133 will be validated against SAFI=1, 
</li>
          <li>Flow Specification routes (FSv1 or FSv2) received over SAFI=134 will be validated against SAFI=128, and
</li>
          <li>Flow Specification routes (FSv1 or FSv2) [AFI =1, 2] received over SAFI=77 will be validated 
using only the Outer Flow Spec against SAFI = 133. 
</li>
        </ul>
        <t>The FSv2 validates L2 FSv2 NLRI with the following L2 routes received over the 
same AFI (25), but a different SAFI:
</t>
        <ul spacing="normal">
          <li>Flow specification routes (FSv1 or FSv2)received over SAFI=135 are validated against SAFI=128. 
</li>
        </ul>
        <t>In the absence of explicit configuration, a Flow specification NLRI (FSv1 or FSv2) 
MUST be validated such that it is considered feasible if and only if 
all of the conditions are true:
</t>
        <ul empty="true" spacing="normal">
          <li>a) A destination prefix component is embedded in the Flow Specification, </li>
          <li>
            <t>b) One of the following conditions holds true:
</t>
            <ul spacing="normal">
              <li> 1.	The originator of the Flow Specification 
matches the originator of the best-math unicast route for the destination prefix 
embedded in the flow specification (this is the unicast route 
with the longest possible prefix length covering the destination 
prefix embedded in the flow specification).
</li>
              <li>
                <t>2.	The AS_PATH attribute of the flow specification is empty or 
contains only an AS_CONFED_SEQUENCE segment <xref target="RFC5065" format="default"/>.
</t>
                <ul spacing="normal">
                  <li>2a.This condition should be enabled by default. </li>
                  <li>2b.This condition may be disabled by explicit configuration on a BGP Speaker, </li>
                  <li>2c.As an extension to this rule, a given non-empty AS_PATH 
(besides AS_CONFED_SEQUENCE segments) MAY be permitted by policy].</li>
                </ul>
              </li>
            </ul>
          </li>
          <li>c)	There are no "more-specific" unicast routes when compared 
with the flow destination prefix that have been received from a different 
neighbor AS than the best-match unicast route, which has been 
determined in rule b. 
</li>
        </ul>
        <t>However, part of rule a may be relaxed by explicit configuration, permitting Flow 
Specifications that include no destination prefix component.  If such is the 
case, rules b and c are moot and MUST be disregarded. 
</t>
        <t>By “originator” of a BGP route, we mean either the address of the originator 
in the ORIGINATOR_ID Attribute [RFC4456] or the source address of the BGP
peer, if this path attribute is not present.  
</t>
        <t>A BGP implementation MUST enforce that the AS in the left-most position of the 
AS_PATH attribute of a Flow Specification Route (FSv1 or FSv2) received via 
the Exterior Border Gateway Protocol (eBGP) matches the AS in the left-most
position of the AS_PATH attribute of the best-match unicast route for the 
destination prefix embedded in the Flow Specification (FSv1 or FSv2) NLRI. 
</t>
        <t>The best-match unicast route may change over time independently of the Flow 
Specification NLRI (FSv1 or FSv2). Therefore, a revalidation of the Flow 
Specification MUST be performed whenever unicast routes change.  
Revalidation is defined as retesting rules a to c as described above. 
</t>
      </section>
      <section numbered="true" toc="default">
        <name>Validation of Flow Specification Actions</name>
        <t> Flow Specifications may be mapped to actions using Extended Communities or a 
Wide Communities. The FSv2 actions in Extended Communities and Wide communities 
can be associated with large number of NLRIs. 
</t>
        <t>
The ordering of precedence for these actions in the case when 
the user-defined order is the same follows 
the precedence of the FSv2 NLRI action TLV values (lowest to highest). 
User-defined order is the same when the order value for action is the same. 
All Extended Community actions MUST be translated to
the user-defined order data format for internal comparison. 
By default, all Extended Community actions SHOULD be translated
to a single value. 
</t>
        <t>
Actions may conflict, duplicate, or complement other actions. An 
example of conflict is the packet rate limiting by byte and by packet.
An example of a duplicate is the request to copy or sample a packet under
one of the redirect functions (RDIPv4, RDIPv6, RDIID, )
Each FSv2 actions in this document defines the potential conflicts or duplications. 
Specifications for new FSv2 actions outside of this specification MUST
specify interactions or conflicts with any FSv2 actions (that appear in this specification or 
subsequent specifications).  
</t>
        <t>Well-formed syntactically correct actions should be linked to a 
filtering rule in the order the actions should be taken.  
If one action in the ordered list fails, the default procedure is 
for the action process for this rule to stop and flag the error via system management.  
By explicit configuration, the action processing may continue after errors.
</t>
        <t>Implementations MAY wish to log the actions taken by FS actions (FSv1 or FSv2).    
</t>
      </section>
      <section numbered="true" toc="default">
        <name>Error handling and Validation</name>
        <t>The following two error handling rules must be followed by 
all BGP speakers which support FSv2:
</t>
        <ul spacing="normal">
          <li>FSv2 NLRI having TLVs which do not have the correct lengths or syntax must be considered MALFORMED.  
</li>
          <li>FSv2 NLRIs having TLVs which do not follow the above ordering rules described in 
section 4.1 MUST be considered as malformed by a BGP FSv2 propagator.
</li>
        </ul>
        <t>
The above two rules prevent any ambiguity that arises from the multiple copies of 
the same NLRI from multiple BGP FSv2 propagators. 
</t>
        <t>A BGP implementation SHOULD treat such malformed NLRIs as ‘Treat-as-withdraw’ 
<xref target="RFC7606" format="default"/>
        </t>
        <t>
An implementation for a BGP speaker supporting both FSv1 and FSv2 MUST 
support the error handling for both FSv1 and FSv2. 
</t>
      </section>
    </section>
    <section numbered="true" toc="default">
      <name>Ordering for Flow Specification v2 (FSv2)</name>
      <t>Flow Specification v2 allows the user to order flow specification rules and 
the actions associated with a rule. Each FSv2 rule has one or more match 
conditions and one or more actions associated with that match condition. 
</t>
      <t>This section describes how to order FSv2 filters received from a peer prior 
to transmission to another peer. The same ordering should be used for the 
ordering of forwarding filtering installed based on only FSv2 filters.  
</t>
      <t>Section 7.0 describes how a BGP peer that supports FSv1 and FSv2 should
order the flow specification filters during the installation of these flow  
specification filters into FIBs or firewall engines in routers. 
</t>
      <t>The BGP distribution of FSv1 NLRI and FSv2 NLRI and their associated path 
attributes for actions (Wide Communities and Extended Communities) is 
“ships-in-the-night” forwarding of different AFI/SAFI information. This 
recommended ordering provides for deterministic ordering of filters sent by 
the BGP distribution. 
</t>
      <section numbered="true" toc="default">
        <name>Ordering of FSv2 NLRI Filters</name>
        <t>The basic principles regarding ordering of rules are simple: 
</t>
        <ul empty="true" spacing="normal">
          <li>
            <t>1) Rule-0 (zero) is defined to be 0/0 with the “permit-all” action 
</t>
            <ul spacing="normal">
              <li>BGP peers which do not support flow specification permit traffic for 
routes received.  Rule-0 is defined to be "permit-all" for 0/0 which 
is the normal case for filtering for routes received by BGP. 
</li>
              <li>By configuration option, the "permit-all" may be set to "deny-all" if 
traffic rules on routers used as BGP must have a "route" AND a 
firewall filter to allow traffic flow.
</li>
            </ul>
          </li>
          <li>2) FSv2 rules are ordered based on the user-defined order numbers 
specified in the FSv2 NLRI (rules 1-n).  </li>
          <li>
            <t>3) If multiple FSv2 NLRI have the same user-defined order, then the filters are 
ordered by type of FSv2 NRLI filters (see Table 1, section 4) with 
lowest numerical number have the best precedence. 
</t>
            <ul spacing="normal">
              <li>For the same user-defined order and the same value for the FSv2 
filters type, then the filters are ordered by FSv2 the component type 
for that FSv2 filter type (see Tables 3-6) with the lowest number 
having the best precedence.  
</li>
              <li>For the same user-defined order, the same value of FSv2 Filter Type, 
and the same value for the component type, then the filters are 
ordered by value within the component type.  Each component type 
defines value ordering. 
</li>
              <li>
                <t>For component types inherited from the FSv1 component types, there are 
the following two types of comparisons: 
</t>
                <ul spacing="normal">
                  <li>FSv1 component value comparison for the IP prefix values, 
compares the length of the two prefixes.  If the length is 
different, the longer prefix has precedence.  If the length is 
the same, the lower IP number has precedence. 
</li>
                  <li>For all other FSv1 component types, unless specified, the 
component data is compared using the memcmp() function defined 
by [ISO_IEC_9899].  For strings with the same length, the lowest 
string memcmp() value has precedence. For strings of different 
lengths, the common prefix is compared. If the common string 
prefix is not equal, then the string with the lowest string 
prefix has higher precedence.  If the common prefix is equal,
the longest string is considered to have higher precedence 
</li>
                </ul>
              </li>
            </ul>
          </li>
        </ul>
        <t>Notes:
</t>
        <ul spacing="normal">
          <li>Since the user can define rules that re-order these value comparisons, 
this order is arbitrary and set to provide a deterministic default. 
</li>
        </ul>
      </section>
      <section numbered="true" toc="default">
        <name>Ordering of the Actions</name>
        <t>The FSv2 specification allows for actions to be associated by:  
</t>
        <ul empty="true" spacing="normal">
          <li>a) a Wide Community path attribute, or 
</li>
          <li>b) an Extended Community path attribute. </li>
        </ul>
        <t>Actions may be ordered by user-defined action order number from 1-n (where n 
is 2**16-2 and the value 2**16-1 is reserved. 
</t>
        <t>Byy default, extended community actions are associated with default order number 32768 [0x8000] 
or a specific configured value for the FSv2 domain.  
</t>
        <t>Action user-order number zero is defined to have an Action type of “Set Action Chain operation” (ACO) 
(value 0x01) that defines the default action chain process. 
For details on “set action chain operation” see section 3.2.1 or section 5.2.1 below. 
</t>
        <t>If the user-defined action number for two actions are the same, then the 
actions are ordered by FSv2 action types (see Table 3 for a list of action 
types).  If the user-defined action number and the FSv2 action types are the 
same, then the order must be defined by the FSv2 action. 
</t>
        <section numbered="true" toc="default">
          <name>Action Chain Operation (ACO)</name>
          <t>The “Action Chain Operation” (ACO) changes the way the actions after the 
current action in an action chain are handled after a failure.  If no action chain operations 
are set, then the default action of “stop upon failure” (value 0x00) will be 
used for the chain.  
</t>
          <section numbered="true" toc="default">
            <name>Example 1 - Default ACO</name>
            <t>Use Case 1: Rate limit to 600 packets per second  </t>
            <t>Description: The provider will support 600 packets per second 
All Packets sampled for reporting purposes and packet streams 
over 600 packets per second will be dropped. 
</t>
            <t> Suppose BGP Peer A has a   
</t>
            <ul spacing="normal">
              <li> a Wide Community action with user-defined order 10 with Traffic Sampling</li>
              <li> a Wide Community action with user-defined order 11 from AS 2020 
that limits packet-based rate limit of 600 packets per second. 
</li>
              <li>an Extended Community from AS 2020 that 
does limits packet-based rate limit of 50 packets per second.    
</li>
            </ul>
            <t>The FSv2 data base would store the following action chain: 
</t>
            <ul spacing="normal">
              <li>
                <t>at user-defined action order 10
</t>
                <ul spacing="normal">
                  <li>A user action of type 7 (traffic action) with values of Sampling and logging.  
</li>
                </ul>
              </li>
              <li>
                <t> at user-defined action order 11
</t>
                <ul spacing="normal">
                  <li> a user action type of 12 (packet-based rate limit) with values of AS 2020 and float value 
for 600 packets per second (pps)  
</li>
                </ul>
              </li>
              <li>at user-defined action order 32768 (0x8000) with type 12 and values of 
A user action of type 12 with values of AS 2020 and float value of 50 packets/second.  
</li>
            </ul>
            <t>Normal action: 
</t>
            <ul empty="true" spacing="normal">
              <li>The match on the traffic would cause a sample of the traffic (probably with
packet rate saved in logging) followed by a rate limit to 600 pps. 
The Extended community action would further limit the rate 
to 50 packets per second. </li>
            </ul>
            <t>When does the action chain stop? 
</t>
            <ul empty="true" spacing="normal">
              <li>The default process for the action chain is to stop on failure. 
If there is no failure, then all three actions would occur. 
This is probably not what the user wants. 
</li>
              <li>If there is failure at action 10 (sample and log), then 
there would be no rate limiting per packet (actions 11 and action 32768).  
</li>
              <li>If there is failure at action 11 (rate limit to packet 600), 
then there would be no rate limiting per packet (action 32768). 
</li>
            </ul>
            <t> The different options for Action chain ordering (ACO) have been 
worked on with NETCONF/RESTCONF configuration and actions. 
</t>
          </section>
          <section numbered="true" toc="default">
            <name>Example 2: Redirect traffic over limit to processing via SFC</name>
            <t>
Use case 2:  Redirect traffic over limit to processing via SFC. 
</t>
            <t>
Description: The normal function is for traffic over the limit to 
be forwarded for offline processing and reporting to a customer. 
</t>
            <t>Suppose we have the following 4 actions defined for a match: 
</t>
            <ul spacing="normal">
              <li> Sent
 Redirect to indirection ID (0x01) with user-defined match 2 attached in wide community, 
</li>
              <li> Traffic rate limit by bytes (0x07) with user-defined match 1 attached in wide community,  
</li>
              <li> Traffic sample (0x07) sent in extended community, and 
</li>
              <li> SF classifier Info (0x0E) sent in extended community. 
</li>
            </ul>
            <t>These 4 filters rate limit a potential DDoS attack by: a) redirect the 
packet to indirection ID (for slower speed processing), sample to local 
hardware, and forward the attack traffic via a SFC to a data collection box. 
</t>
            <t>The FSv2 action list for the match would look like this 
</t>
            <ul empty="true" spacing="normal">
              <li>Action 0: Operation of action chain (0x01) (stop upon failure)</li>
              <li>Action 1: Traffic Rate limit by byte (0x07)</li>
              <li>Action 2: Redirect to Redirection ID (0x0F) </li>
              <li>Action 32768 (0x8000) Traffic Action (0x07) Sample </li>
              <li>Action 32768 (0x8000) SFC Classifier: (0xE)</li>
            </ul>
            <t>If the redirect to a redirection ID fails, then Traffic Sample and sending the data to 
an SFC classifier for forwarding via SFC will not happen. The traffic is limited, 
but not redirect away from the network and a sample sent to DDOS processing 
via a SFC classifier. 
</t>
            <t>Suppose the following 5 actions were defined for a 
FSV2 filter: 
</t>
            <ul spacing="normal">
              <li>Set Action Chain Operation (ACO) (0x01) to continue on failure (ox01) 
at user-order 2 attached in wide community,   
</li>
              <li>redirect to indirection ID (0x0F) at user-order 2 attached in wide community, 
</li>
              <li>traffic rate limit by bytes (0x07)with user-order 1 attached in wide community,  
</li>
              <li>Traffic sample (0x07) attached via extended community, and 
</li>
              <li>SFC classifier Info (0x0E) attached in extended community. 
</li>
            </ul>
            <t>The FSv2 action list for the match would look like this:
</t>
            <ul empty="true" spacing="normal">
              <li>Action 00: Operation of action chain (0x01) (stop upon failure)
</li>
              <li>Action 01:Traffic Rate limit by byte (0x07)
</li>
              <li>Action 02:Set Action Chain Operation (ACO) (0x01) (continue on failure)
</li>
              <li>Action 02: Redirect to Redirection ID (0F)
</li>
              <li>Action 32768 (0x8000): Traffic Action (0x07) Sample 
</li>
              <li>Action 32768 (0x8000): SFC classifier (0x0E) forward via SFC [to DDoS classifier]
</li>
            </ul>
            <t>
If the redirect to a redirection ID fails, 
the action chain will continue on to sample the data and enact SFC classifier actions. 
</t>
          </section>
        </section>
        <section numbered="true" toc="default">
          <name>Summary of FSv2 ordering</name>
          <t>Operators should use user-defined ordering to clearly specify the actions
desired upon a match.  The FSv2 actions default ordering is specified to  
provide deterministic order for actions which have the same user-defined 
order and same type.
</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[

FS Action                          Value Order 
(lowest value to highest)          (lowest to highest) 
================================   ==============================
0x01: ACO: Action chain operation  Failure flag
0x02: TAIS:Traffic actions per     AS, then Group-ID, then Action ID 
       Interface group		 
	   
0x03-0x05 to be assigned           TBD
0x06: TRB: Traffic rate limit      AS, then float value 
      by bytes 
0x07: TA: Traffic Action           traffic action value 	
0x08: RDIP: Redirect to IP 	       AS, then IP Address, then ID
0x09: TM: Traffic Marking          DSCP value (lowest to highest)
0x0A: AL2: Associated L2 Info. 	   TBD 
0x0B: AET: Associated E-tree Info. TBD   
0x0C: TRP: Traffic Rate limit      AS, then float value 
         by bytes 
0x0D: RDIPv6: Traffic               
        Redirect to IPv6           AS, IPv6 value, then local Admin
0x0E: TISFC: Traffic insertion 
     to SFC                        SPI, then SI, the SFT
0xOF: Redirect to
          Indirection-ID           ID-type, then Generalized-ID
		  
0x10: MPLSLA: MPLS Label stack     order, action, label, Exp   
0x16 – VLAN action                 rewrite-actions, VALN1, VLAN2,
                                   PCP-DE1, PCP-DE2
0x17 – TPID action                 rewrite actions, TP-ID-1, TP-ID-2 
       	
		 Figure 6-1
]]></artwork>
        </section>
      </section>
    </section>
    <section numbered="true" toc="default">
      <name>Ordering of FS filters for BGP Peers support FSv1 and FSv2</name>
      <t>
FSv2 allows the user to order flow specification rules and the actions 
associated with a rule. Each FSv2 rule has one or more match conditions and 
one or more actions associated with each rule. 
</t>
      <t>FSv1 and FSv2 filters are sent as different AFI/SAFI pairs so 
FSv1 and FSv2 operate as ships-in-the-night.  Some BGP peers 
in an AS may support both FSv1 and FSv2.  Other BGP peers may support
FSv1 or FSv2.  Some BGP will not support FSv1 or FSV2.  A coherent 
flow specification technology must have consistent best practices
for ordering the FSv1 and FSv2 filter rules. 
</t>
      <t>One simple rule captures the best practice:  Order the FSv1 filters after
the FSv2 filter by placing the FSv1 filters after the FSv2 filters.  
</t>
      <t>To operationally make this work, all flow specification filters should be 
included the same data base with the FSv1 filters being assigned a user-
defined order beyond the normal size of FSv2 user-ordered values. 
A few examples, may help to illustrate this best practice. 
</t>
      <t>Example 1: User ordered numbering - 
Suppose you might have 1,000 rules for the FSv2 filters.  Assign all the 
FSv1 user defined rules to 1,001 (or better yet 2,000).  The FSv1 rules 
will be ordered by the components and component values. 
</t>
      <t>
Example 2: Storage of actions - 
All FSv1 actions are defined ordered actions in FSv2.  Translate your FSv1 
actions into FSv2 ordered actions for storing in a common FSv1-FSv2 flow 
specification data base. 
</t>
      <t>Example 3: Mixed Flow Specification Support - 
</t>
      <ul empty="true" spacing="normal">
        <li>Suppose an FSv2 peer (BGP Peer A) has the capability to send either FSv1 or FSv2.
  BGP Peer A peers with BGP Peers B, C, D and E.  
</li>
        <li>BGP Peer B can only send FSv1 routes (NLRI + Extended Community). 
BGP Peer C can send FSv2 routes (NLRI + path attributes (wide community or extended community or none)).  
BGP Peer D cannot send any FS routes.  BGP E can send FSv2 and FSv1 routes
</li>
        <li>BGP Peer A sends FSv1 routes in its databases to BGP B.  
Since the FSv2 NLRI cannot be sent to the FSv1 peer, only the FSv1 NLRI is sent. 
BGP Peer A sends to BGP C the FSv2 routes in its database (configured or received).  
</li>
        <li>BGP peer A would not send the FSv1 NLRI or FSv2 NLRI to BGP Peer D.  
The BGP Peer D does not support for these NLRI.   
</li>
        <li>BGP Peer A sends the NLRI for both FSv1 and FSv2 to BGP Peer E.  
</li>
      </ul>
      <artwork name="" type="" align="left" alt=""><![CDATA[
      +---------+                       +---------+
      |    A    |=======================|    C    |
      |FSv1+FSv2|.                   . .|  FSv2   |
      +---------+ .                 .   +---------+
       ||  |   \   .               .      .     ||
       ||  |    \   . . . . . . . . .     .     ||
       ||  |     \               .   .    .     ||
       ||  |      \-----\      .      .   .     ||
       ||  |             \    .        .  .     ||
      +---------+       +------+       +-----+  ||
      |    E    |-------|  B   |. . . .|  D  |  ||
      |FSv1+FSv2|       | FSv1 |       |no FS|  ||
      +---------+       +------+       +-----+  ||
        ||     .                         .      ||
        ||     . . . . . . . . . . . . . .      ||
        ||                                      ||
        |========================================|
   
        Double line = FSv2
        Single line = FSv1
        Dotted line = BGP peering with no FlowSpec

         Figure 6-2: FSv1 and FVs2 Peering

]]></artwork>
    </section>
    <section numbered="true" toc="default">
      <name>Scalability and Aspirations for FSv2</name>
      <t>Operational issues drive the deployment of BGP flow specification as a quick 
and scalable way to distribute filters.  The early operations accepted the 
fact validation of the distribution of filter needed to be done outside of 
the BGP distribution mechanism.  Other mechanisms (NETCONF/RESTCONF or PCEP) 
have reply-request protocols.  
</t>
      <t>These features within BGP have not changed. BGP still does not have an 
action-reply feature. 
</t>
      <t>NETCONF/RESTCONF latest enhancements provide action/response features which 
scale.  The combination of a quick distribution of filters via BGP and a 
long-term action in NETCONF/RESTCONF that ask for reporting of the
installation of FSv2 filters may provide the best scalability.  
</t>
      <t>The combination of NETCONF/RESTCONF network management protocols and BGP focuses each 
protocol on the strengths of scalability.  
</t>
      <t>FSv2 will be deployed in webs of BGP peers which have some BGP peers passing 
FSv1, some BGP peers passing FSv2, some BGP peers passing FSv1 and FSv2, and 
some BGP peers not passing any routes. 
</t>
      <t>The TLV encoding and deterministic behaviors of FSv2 will not deprecate the 
need for careful design of the distribution of flow specification filters in 
this mixed environment.  The needs of networks for flow specification are 
different depending on the network topology and the deployment technology 
for BGP peers sending flow specification.  
</t>
      <t>Suppose we have a centralized RR connected to DDoS processing sending out 
flow specification to a second tier of RR who distribute the information to 
targeted nodes. This type of distribution has one set of needs for FSv2 and 
the transition from FSv1 to FSv2
</t>
      <t>Suppose we have Data Center with a 3-tier backbone trying to distribute DDoS 
or other filters from the spine to combinational nodes, to the leaf BGP 
nodes.  The BGP peers may use RR or normal BGP distribution. This deployment
has another set of needs for FSv2 and the transition from FSv1 to FSV2. 
</t>
      <t>Suppose we have a corporate network with a few AS sending DDoS filters using 
basic BGP from a variety of sites. Perhaps the corporate network will be 
satisfied with FSv1 for a long time. 
</t>
      <t>These examples are given to indicate that BGP FSv2, like so many BGP 
protocols, needs to be carefully tuned to aid the mitigation services within 
the network. This protocol suite starts the migration toward better tools 
using FSv2, but it does not end it.  With FSv2 TLVs and deterministic 
actions, new operational mechanisms can start to be understood and utilized.  
</t>
      <t>This FSv2 specification is merely the start of a revolution of work – not the end. 
</t>
    </section>
    <section numbered="true" toc="default">
      <name>Optional Security Additions</name>
      <t>This section discusses the optional BGP Security additions for BGP-FS v2
relating to BGPSEC <xref target="RFC8205" format="default"/> and ROA <xref target="RFC6482" format="default"/>. 
</t>
      <section numbered="true" toc="default">
        <name>BGP FSv2 and BGPSEC</name>
        <t> Flow specification v1 (<xref target="RFC8955" format="default"/> and <xref target="RFC8956" format="default"/>)
do not comment on how BGP Flow specifications to be passed BGPSEC <xref target="RFC8205" format="default"/>
  BGP Flow Specification v2 can be passed in BGPSEC, but it is not required. 
        </t>
        <t>FSv1 and FSv2 may be sent via BGPSEC. 
        </t>
      </section>
      <section numbered="true" toc="default">
        <name>BGP FSv2 with ROA</name>
        <t>
  BGP FSv2 can utilize ROAs in the validation. If BGP FSv2 is 
  used with BGPSEC and ROA, the first thing is to validate the 
  route within BGPSEC and second to utilize BGP ROA to validate
  the route origin. 
        </t>
        <t> The BGP-FS peers using both ROA and BGP-FS validation 
  determine that a BGP Flow specification is valid
  if and only if one of the following cases: 
        </t>
        <ul spacing="normal">
          <li>
            <t>If the BGP Flow Specification NLRI has a IPv4 or 
  IPv6 address in destination address match
  filter and the following is true:
            </t>
            <ul spacing="normal">
              <li>A BGP ROA has been received to validate the originator, and</li>
              <li>The route is the best-match unicast route for the destination
  prefix embedded in the match filter; or </li>
            </ul>
          </li>
          <li>
            <t>If a BGP ROA has not been received that matches the 
  IPv4 or IPv6 destination address in the destination filter, the 
  match filter must abide by the <xref target="RFC8955" format="default"/> and
  <xref target="RFC8956" format="default"/> validation rules as follows:  
            </t>
            <ul spacing="normal">
              <li>The originator match of the flow specification matches the
  originator of the best-match unicast route for the destination
  prefix filter embedded in the flow specification", and
  </li>
              <li>No more specific unicast routes exist when compared with the 
   flow destination prefix that have been received from a different
   neighboring AS than the best-match unicast route, which has been 
   determined in step A.
   </li>
            </ul>
          </li>
        </ul>
        <t>
  The best match is defined to be the longest-match NLRI with the highest preference. 
</t>
      </section>
    </section>
    <section anchor="IANA" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>This section complies with <xref target="RFC7153" format="default"/>.
      </t>
      <section numbered="true" toc="default">
        <name>Flow Specification V2 SAFIs</name>
        <t> IANA is requested to assign two SAFI Values in the 
   registry at https://www.iana.org/assignments/safi-namespace 
   from the Standard Action Range as follows: 
        </t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
      Value   Description      Reference
     -----   -------------    ---------------
      TBD1   BGP FSv2        [this document] 
      TBD2   BGP FSv2 VPN    [this document]

   ]]></artwork>
      </section>
      <section numbered="true" toc="default">
        <name>BGP Capability Code</name>
        <t>
   IANA is requested to assign a Capability Code from the registry at 
   https://www.iana.org/assignments/capability-codes/ from the IETF Review
   range as follows:
        </t>
        <artwork name="" type="" align="left" alt=""><![CDATA[                                                    
   Value   Description            Reference       Controller
   -----  ---------------------  ---------------  ----------
    TBD3  Flow Specification V2  [this document]  IETF
  ]]></artwork>
      </section>
      <section numbered="true" toc="default">
        <name>Filter IP Component types</name>
        <t>IANA is requested to indicate [this draft] as a reference on the 
   following assignments in the Flow Specification Component Types 
   Registry: 
        </t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Value  Description         Reference        
-----  ------------------- ------------------------
 1     Destination filter  [RFC8955][RFC8956][this document] 
 2     Source Prefix       [RFC8955][RFC8956][this document] 
 3     IP Protocol         [RFC8955][RFC8956][this document] 
 4     Port                [RFC8955][RFC8956][this document]   
 5     Destination Port    [RFC8955][RFC8956][this document] 
 6     Source Port         [RFC8955][RFC8956][this document] 
 7     ICMP Type [v4 or v6][RFC8955][RFC8956][this document] 
 8     ICMP Code [v4 or v6][RFC8955][RFC8956][this document] 
 9     TCP Flags [v4]      [RFC8955][RFC8956][this document] 
 10    Packet Length       [RFC8955][RFC8956][this document] 
 11    DSCP marking        [RFC8955][RFC8956][this document] 
 12    Fragment            [RFC8955][RFC8956][this document] 
 13    Flow Label          [RFC8956][this document] 
 14    TTL                 [this document]
 15    Partial SID         [draft-ietf-idr-flowspec-srv6]
                           [this document] 
 16    MPLS Label Match 1  [this document] 
                           [draft-ietf-idr-flowspec-mpls-match]
 17    MPLS Label Match 2  [this document]  
                           [draft-ietf-idr-flowspec-mpls-match]
 
   ]]></artwork>
      </section>
      <section numbered="true" toc="default">
        <name>FSV2 NLRI TLV Types</name>
        <t>IANA is requested to create the following two new registries 
      on a new "Flow Specification v2 TLV Types” web page.  
        </t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
   Name: BGP FSv2 TLV types 
   Reference: [this document]
   Registration Procedures: 0x01-0x3FFF Standards Action.

    Type          Use                     Reference
   -----          ---------------         ---------------
    0x00          Reserved                [this document]
    0x01          IP traffic rules        [this document]
    0x02          FSv2 Actions            [this document]
    0x03          L2 traffic rules        [this document]
    0x04          tunnel traffic rules    [this document]
    0x05          SFC AFI filter rules    [this document] 
    0x06          BGP/MPLS VPN IP 
                   traffic rules          [this document]
    0x07          BGP/MPLS VPN L2 
                    traffic rules         [this document]
    0x08-0x3FFF   Unassigned              [this document]
    0x4000-0x7FFF Vendor specific         [this document]
    0x8000-0xFFFF Reserved                [this document]

   ]]></artwork>
        <artwork name="" type="" align="left" alt=""><![CDATA[
   
   Name: BGP FSv2 Action types 
   Reference: [this document]
   Registration Procedure: 0x01-0x3FFF Standards Action.

    Type     Use                           Reference
   -----  ---------------                 ---------------
   0x00   Reserved                        [this document]
   0x01   ACO: Action Chain Operation 	  [this document]
   0x02   TAIS: Traffic actions per 
          interface group                 [this document]
   0x03   Unassigned                      [this document]
   0x04   Unassigned                      [this document]		 
   0x05   Unassigned                      [this document]
   0x06   TRB: traffic rate 
           limited by bytes                [this document]
   0x07   TA: Traffic action 
          (terminal/sample)               [this document]  
   0x08   RDIPv4: redirect IPv4           [this document] 
   0x09   TM: traffic marking (DSCP)      [this document] 
   0x0A   AL2: associate L2 Information   [this document] 
   0x0B   AET: associate E-Tree 
           information                    [this document]  
   0x0C   TRP: traffic rate 
           limited by packets             [this document] 
   0x0D   RDIPv6: Redirect to IPv6        [this document]    
   0x0E   TISFC: Traffic insertion 
           to SFC                         [this document]
   0x0F   RDIID: Redirect 
           to indirection-iD              [this document]
   0x10   MPLS Label Action               [this document]
   0x11   unassigned                      [this document]
   0x12   unassigned                      [this document]
   0x13   unassigned                      [this document]
   0x14   unassigned                      [this document]
   0x15   unassigned                      [this document]
   0x16   VLAN action                     [this document]
   0x17   TIPD action                     [this document]
   0x18-
   0x3ff  Unassigned                      [this document]
   0x4000-
   0x7fff Vendor assigned                 [this document]
   0x8000-
   0xFFFF Reserved                        [this document]
   ]]></artwork>
      </section>
      <section numbered="true" toc="default">
        <name>Wide Community Assignments</name>
        <t>
   IANA is requested to assign values in the 
   BGP Community Container Atom Type Registry
        </t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
   Name                    Type value 
   -----                   -----------
   FSv2 action atom        TBD5
   
   ]]></artwork>
        <t>   
   IANA is requested to assign values from the 
   Registered Type 1 BGP Wide Community Types: 
        </t>
        <artwork name="" type="" align="left" alt=""><![CDATA[

   Name                    type Value 
   ------                  -----------
   FSv2 Actions            TBD4 
   
   ]]></artwork>
      </section>
    </section>
    <section numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>The use of ROA improves on <xref target="RFC8955" format="default"/>
   by checking to see of the route origination. This check can improve the 
   validation sequence for a multiple-AS environment.  
      </t>
      <t>&gt;The use of BGPSEC  <xref target="RFC8205" format="default"/> to secure the packet
   can increase security of BGP flow specification information sent in the packet.  
      </t>
      <t>The use of the reduced validation within an AS <xref target="RFC9117" format="default"/>
   can provide adequate validation for distribution of flow specification within a single 
   autonomous system for prevention of DDoS. 
      </t>
      <t>Distribution of flow filters may provide insight into traffic being sent within 
   an AS, but this information should be composite information that does not reveal the
   traffic patterns of individuals. 
      </t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC0791" target="https://www.rfc-editor.org/info/rfc791" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.0791.xml">
          <front>
            <title>Internet Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel"/>
            <date month="September" year="1981"/>
          </front>
          <seriesInfo name="STD" value="5"/>
          <seriesInfo name="RFC" value="791"/>
          <seriesInfo name="DOI" value="10.17487/RFC0791"/>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized.  This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC3032" target="https://www.rfc-editor.org/info/rfc3032" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3032.xml">
          <front>
            <title>MPLS Label Stack Encoding</title>
            <author fullname="E. Rosen" initials="E." surname="Rosen"/>
            <author fullname="D. Tappan" initials="D." surname="Tappan"/>
            <author fullname="G. Fedorkow" initials="G." surname="Fedorkow"/>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <author fullname="D. Farinacci" initials="D." surname="Farinacci"/>
            <author fullname="T. Li" initials="T." surname="Li"/>
            <author fullname="A. Conta" initials="A." surname="Conta"/>
            <date month="January" year="2001"/>
            <abstract>
              <t>This document specifies the encoding to be used by an LSR in order to transmit labeled packets on Point-to-Point Protocol (PPP) data links, on LAN data links, and possibly on other data links as well.  This document also specifies rules and procedures for processing the various fields of the label stack encoding. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3032"/>
          <seriesInfo name="DOI" value="10.17487/RFC3032"/>
        </reference>
        <reference anchor="RFC4271" target="https://www.rfc-editor.org/info/rfc4271" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4271.xml">
          <front>
            <title>A Border Gateway Protocol 4 (BGP-4)</title>
            <author fullname="Y. Rekhter" initials="Y." role="editor" surname="Rekhter"/>
            <author fullname="T. Li" initials="T." role="editor" surname="Li"/>
            <author fullname="S. Hares" initials="S." role="editor" surname="Hares"/>
            <date month="January" year="2006"/>
            <abstract>
              <t>This document discusses the Border Gateway Protocol (BGP), which is an inter-Autonomous System routing protocol.</t>
              <t>The primary function of a BGP speaking system is to exchange network reachability information with other BGP systems. This network reachability information includes information on the list of Autonomous Systems (ASes) that reachability information traverses. This information is sufficient for constructing a graph of AS connectivity for this reachability from which routing loops may be pruned, and, at the AS level, some policy decisions may be enforced.</t>
              <t>BGP-4 provides a set of mechanisms for supporting Classless Inter-Domain Routing (CIDR). These mechanisms include support for advertising a set of destinations as an IP prefix, and eliminating the concept of network "class" within BGP. BGP-4 also introduces mechanisms that allow aggregation of routes, including aggregation of AS paths.</t>
              <t>This document obsoletes RFC 1771. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4271"/>
          <seriesInfo name="DOI" value="10.17487/RFC4271"/>
        </reference>
        <reference anchor="RFC4360" target="https://www.rfc-editor.org/info/rfc4360" xml:base="https://www.rfc-editor.org/refs/bibxml/reference.RFC.4360.xml">
          <front>
            <title>BGP Extended Communities Attribute</title>
            <author initials="S." surname="Sangli" fullname="S. Sangli">
              <organization/>
            </author>
            <author initials="D." surname="Tappan" fullname="D. Tappan">
              <organization/>
            </author>
            <author initials="Y." surname="Rekhter" fullname="Y. Rekhter">
              <organization/>
            </author>
            <date year="2006" month="February"/>
            <abstract>
              <t>This document describes the "extended community" BGP-4 attribute.  This attribute provides a mechanism for labeling information carried in BGP-4.  These labels can be used to control the distribution of this information, or for other applications.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4360"/>
          <seriesInfo name="DOI" value="10.17487/RFC4360"/>
        </reference>
        <reference anchor="RFC4760" target="https://www.rfc-editor.org/info/rfc4760" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4760.xml">
          <front>
            <title>Multiprotocol Extensions for BGP-4</title>
            <author fullname="T. Bates" initials="T." surname="Bates"/>
            <author fullname="R. Chandra" initials="R." surname="Chandra"/>
            <author fullname="D. Katz" initials="D." surname="Katz"/>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <date month="January" year="2007"/>
            <abstract>
              <t>This document defines extensions to BGP-4 to enable it to carry routing information for multiple Network Layer protocols (e.g., IPv6, IPX, L3VPN, etc.).  The extensions are backward compatible - a router that supports the extensions can interoperate with a router that doesn't support the extensions. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4760"/>
          <seriesInfo name="DOI" value="10.17487/RFC4760"/>
        </reference>
        <reference anchor="RFC5065" target="https://www.rfc-editor.org/info/rfc5065" xml:base="https://www.rfc-editor.org/refs/bibxml/reference.RFC.5065.xml">
          <front>
            <title>Autonomous System Confederations for BGP</title>
            <author initials="P." surname="Traina" fullname="P. Traina">
              <organization/>
            </author>
            <author initials="D." surname="McPherson" fullname="D. McPherson">
              <organization/>
            </author>
            <author initials="J." surname="Scudder" fullname="J. Scudder">
              <organization/>
            </author>
            <date year="2007" month="August"/>
            <abstract>
              <t>The Border Gateway Protocol (BGP) is an inter-autonomous system routing protocol designed for Transmission Control Protocol/Internet Protocol (TCP/IP) networks.  BGP requires that all BGP speakers within a single autonomous system (AS) must be fully meshed.  This represents a serious scaling problem that has been well documented in a number of proposals.</t>
              <t>This document describes an extension to BGP that may be used to create a confederation of autonomous systems that is represented as a single autonomous system to BGP peers external to the confederation, thereby removing the "full mesh" requirement.  The intention of this extension is to aid in policy administration and reduce the management complexity of maintaining a large autonomous system.</t>
              <t>This document obsoletes RFC 3065.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5065"/>
          <seriesInfo name="DOI" value="10.17487/RFC5065"/>
        </reference>
        <reference anchor="RFC6482" target="https://www.rfc-editor.org/info/rfc6482" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6482.xml">
          <front>
            <title>A Profile for Route Origin Authorizations (ROAs)</title>
            <author fullname="M. Lepinski" initials="M." surname="Lepinski"/>
            <author fullname="S. Kent" initials="S." surname="Kent"/>
            <author fullname="D. Kong" initials="D." surname="Kong"/>
            <date month="February" year="2012"/>
            <abstract>
              <t>This document defines a standard profile for Route Origin Authorizations (ROAs).  A ROA is a digitally signed object that provides a means of verifying that an IP address block holder has authorized an Autonomous System (AS) to originate routes to one or more prefixes within the address block. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6482"/>
          <seriesInfo name="DOI" value="10.17487/RFC6482"/>
        </reference>
        <reference anchor="RFC7153" target="https://www.rfc-editor.org/info/rfc7153" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7153.xml">
          <front>
            <title>IANA Registries for BGP Extended Communities</title>
            <author fullname="E. Rosen" initials="E." surname="Rosen"/>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <date month="March" year="2014"/>
            <abstract>
              <t>This document reorganizes the IANA registries for the type values and sub-type values of the BGP Extended Communities attribute and the BGP IPv6-Address-Specific Extended Communities attribute.  This is done in order to remove interdependencies among the registries, thus making it easier for IANA to determine which codepoints are available for assignment in which registries.  This document also clarifies the information that must be provided to IANA when requesting an allocation from one or more of these registries.  These changes are compatible with the existing allocations and thus do not affect protocol implementations.  The changes will, however, impact the "IANA Considerations" sections of future protocol specifications.  This document updates RFC 4360 and RFC 5701.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7153"/>
          <seriesInfo name="DOI" value="10.17487/RFC7153"/>
        </reference>
        <reference anchor="RFC7606" target="https://www.rfc-editor.org/info/rfc7606" xml:base="https://www.rfc-editor.org/refs/bibxml/reference.RFC.7606.xml">
          <front>
            <title>Revised Error Handling for BGP UPDATE Messages</title>
            <author initials="E." surname="Chen" fullname="E. Chen" role="editor">
              <organization/>
            </author>
            <author initials="J." surname="Scudder" fullname="J. Scudder" role="editor">
              <organization/>
            </author>
            <author initials="P." surname="Mohapatra" fullname="P. Mohapatra">
              <organization/>
            </author>
            <author initials="K." surname="Patel" fullname="K. Patel">
              <organization/>
            </author>
            <date year="2015" month="August"/>
            <abstract>
              <t>According to the base BGP specification, a BGP speaker that receives an UPDATE message containing a malformed attribute is required to reset the session over which the offending attribute was received. This behavior is undesirable because a session reset would impact not only routes with the offending attribute but also other valid routes exchanged over the session.  This document partially revises the error handling for UPDATE messages and provides guidelines for the authors of documents defining new attributes.  Finally, it revises the error handling procedures for a number of existing attributes.</t>
              <t>This document updates error handling for RFCs 1997, 4271, 4360, 4456, 4760, 5543, 5701, and 6368.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7606"/>
          <seriesInfo name="DOI" value="10.17487/RFC7606"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8955" target="https://www.rfc-editor.org/info/rfc8955" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8955.xml">
          <front>
            <title>Dissemination of Flow Specification Rules</title>
            <author fullname="C. Loibl" initials="C." surname="Loibl"/>
            <author fullname="S. Hares" initials="S." surname="Hares"/>
            <author fullname="R. Raszuk" initials="R." surname="Raszuk"/>
            <author fullname="D. McPherson" initials="D." surname="McPherson"/>
            <author fullname="M. Bacher" initials="M." surname="Bacher"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>This document defines a Border Gateway Protocol Network Layer Reachability Information (BGP NLRI) encoding format that can be used to distribute (intra-domain and inter-domain) traffic Flow Specifications for IPv4 unicast and IPv4 BGP/MPLS VPN services. This allows the routing system to propagate information regarding more specific components of the traffic aggregate defined by an IP destination prefix.</t>
              <t>It also specifies BGP Extended Community encoding formats, which can be used to propagate Traffic Filtering Actions along with the Flow Specification NLRI. Those Traffic Filtering Actions encode actions a routing system can take if the packet matches the Flow Specification.</t>
              <t>This document obsoletes both RFC 5575 and RFC 7674.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8955"/>
          <seriesInfo name="DOI" value="10.17487/RFC8955"/>
        </reference>
        <reference anchor="RFC8956" target="https://www.rfc-editor.org/info/rfc8956" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8956.xml">
          <front>
            <title>Dissemination of Flow Specification Rules for IPv6</title>
            <author fullname="C. Loibl" initials="C." role="editor" surname="Loibl"/>
            <author fullname="R. Raszuk" initials="R." role="editor" surname="Raszuk"/>
            <author fullname="S. Hares" initials="S." role="editor" surname="Hares"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>"Dissemination of Flow Specification Rules" (RFC 8955) provides a Border Gateway Protocol (BGP) extension for the propagation of traffic flow information for the purpose of rate limiting or filtering IPv4 protocol data packets.</t>
              <t>This document extends RFC 8955 with IPv6 functionality. It also updates RFC 8955 by changing the IANA Flow Spec Component Types registry.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8956"/>
          <seriesInfo name="DOI" value="10.17487/RFC8956"/>
        </reference>
        <reference anchor="RFC9015" target="https://www.rfc-editor.org/info/rfc9015" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9015.xml">
          <front>
            <title>BGP Control Plane for the Network Service Header in Service Function Chaining</title>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <author fullname="J. Drake" initials="J." surname="Drake"/>
            <author fullname="E. Rosen" initials="E." surname="Rosen"/>
            <author fullname="J. Uttaro" initials="J." surname="Uttaro"/>
            <author fullname="L. Jalil" initials="L." surname="Jalil"/>
            <date month="June" year="2021"/>
            <abstract>
              <t>This document describes the use of BGP as a control plane for networks that support service function chaining. The document introduces a new BGP address family called the "Service Function Chain (SFC) Address Family Identifier / Subsequent Address Family Identifier" (SFC AFI/SAFI) with two Route Types. One Route Type is originated by a node to advertise that it hosts a particular instance of a specified service function. This Route Type also provides "instructions" on how to send a packet to the hosting node in a way that indicates that the service function has to be applied to the packet. The other Route Type is used by a controller to advertise the paths of "chains" of service functions and give a unique designator to each such path so that they can be used in conjunction with the Network Service Header (NSH) defined in RFC 8300.</t>
              <t>This document adopts the service function chaining architecture described in RFC 7665.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9015"/>
          <seriesInfo name="DOI" value="10.17487/RFC9015"/>
        </reference>
        <reference anchor="RFC9117" target="https://www.rfc-editor.org/info/rfc9117" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9117.xml">
          <front>
            <title>Revised Validation Procedure for BGP Flow Specifications</title>
            <author fullname="J. Uttaro" initials="J." surname="Uttaro"/>
            <author fullname="J. Alcaide" initials="J." surname="Alcaide"/>
            <author fullname="C. Filsfils" initials="C." surname="Filsfils"/>
            <author fullname="D. Smith" initials="D." surname="Smith"/>
            <author fullname="P. Mohapatra" initials="P." surname="Mohapatra"/>
            <date month="August" year="2021"/>
            <abstract>
              <t>This document describes a modification to the validation procedure defined for the dissemination of BGP Flow Specifications. The dissemination of BGP Flow Specifications as specified in RFC 8955 requires that the originator of the Flow Specification match the originator of the best-match unicast route for the destination prefix embedded in the Flow Specification. For an Internal Border Gateway Protocol (iBGP) received route, the originator is typically a border router within the same autonomous system (AS). The objective is to allow only BGP speakers within the data forwarding path to originate BGP Flow Specifications. Sometimes it is desirable to originate the BGP Flow Specification from any place within the autonomous system itself, for example, from a centralized BGP route controller. However, the validation procedure described in RFC 8955 will fail in this scenario. The modification proposed herein relaxes the validation rule to enable Flow Specifications to be originated within the same autonomous system as the BGP speaker performing the validation. Additionally, this document revises the AS_PATH validation rules so Flow Specifications received from an External Border Gateway Protocol (eBGP) peer can be validated when such a peer is a BGP route server.</t>
              <t>This document updates the validation procedure in RFC 8955.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9117"/>
          <seriesInfo name="DOI" value="10.17487/RFC9117"/>
        </reference>
        <reference anchor="I-D.ietf-idr-wide-bgp-communities" target="https://datatracker.ietf.org/doc/html/draft-ietf-idr-wide-bgp-communities-11" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-idr-wide-bgp-communities.xml">
          <front>
            <title>BGP Community Container Attribute</title>
            <author fullname="Robert Raszuk" initials="R." surname="Raszuk">
              <organization>Arrcus</organization>
            </author>
            <author fullname="Jeffrey Haas" initials="J." surname="Haas">
              <organization>Juniper Networks</organization>
            </author>
            <author fullname="Andrew Lange" initials="A." surname="Lange">
              <organization>Nokia</organization>
            </author>
            <author fullname="Bruno Decraene" initials="B." surname="Decraene">
              <organization>Orange</organization>
            </author>
            <author fullname="Shane Amante" initials="S." surname="Amante">
              <organization>Apple, Inc.</organization>
            </author>
            <author fullname="Paul Jakma" initials="P." surname="Jakma">
              <organization>Huawei Ireland Research Centre</organization>
            </author>
            <date day="9" month="March" year="2023"/>
            <abstract>
              <t>Route tagging plays an important role in external BGP [RFC4271] relations, in communicating various routing policies between peers. It is also a common best practice among operators to propagate various additional information about routes intra-domain. The most common tool used today to attach various information about routes is through the use of BGP communities [RFC1997]. This document defines a new encoding that enhances and simplifies what can be accomplished with BGP communities. This specification's most important addition is the ability to specify and advertise an operator's parameters for execution. It also provides an extensible platform for any future community encoding requirements.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-idr-wide-bgp-communities-11"/>
        </reference>
        <reference anchor="I-D.ietf-idr-flowspec-l2vpn" target="https://datatracker.ietf.org/doc/html/draft-ietf-idr-flowspec-l2vpn-21" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-idr-flowspec-l2vpn.xml">
          <front>
            <title>BGP Dissemination of L2 Flow Specification Rules</title>
            <author fullname="Hao Weiguo" initials="H." surname="Weiguo">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Donald E. Eastlake 3rd" initials="D. E." surname="Eastlake">
              <organization>Futurewei Technologies</organization>
            </author>
            <author fullname="Stephane Litkowski" initials="S." surname="Litkowski">
              <organization>Cisco Systems, Inc.</organization>
            </author>
            <author fullname="Shunwan Zhuang" initials="S." surname="Zhuang">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="24" month="April" year="2023"/>
            <abstract>
              <t>This document defines a Border Gateway Protocol (BGP) Flow Specification (flowspec) 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 flowspecs. AFI/ SAFI 6/133 and 25/134 are used for these purposes. New component types and two extended communities are also defined.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-idr-flowspec-l2vpn-21"/>
        </reference>
        <reference anchor="I-D.ietf-idr-flowspec-nvo3" target="https://datatracker.ietf.org/doc/html/draft-ietf-idr-flowspec-nvo3-17" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-idr-flowspec-nvo3.xml">
          <front>
            <title>BGP Dissemination of Flow Specification Rules for Tunneled Traffic</title>
            <author fullname="Donald E. Eastlake 3rd" initials="D. E." surname="Eastlake">
              <organization>Futurewei Technologies</organization>
            </author>
            <author fullname="Hao Weiguo" initials="H." surname="Weiguo">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Shunwan Zhuang" initials="S." surname="Zhuang">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Zhenbin Li" initials="Z." surname="Li">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Rong Gu" initials="R." surname="Gu">
              <organization>China Mobile</organization>
            </author>
            <date day="4" month="January" year="2023"/>
            <abstract>
              <t>This draft specifies a Border Gateway Protocol (BGP) Network Layer Reachability Information (NLRI) encoding format for flow specifications (RFC 8955) that can match on a variety of tunneled traffic. In addition, flow specification components are specified for certain tunneling header fields.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-idr-flowspec-nvo3-17"/>
        </reference>
        <reference anchor="I-D.ietf-idr-flowspec-srv6" target="https://datatracker.ietf.org/doc/html/draft-ietf-idr-flowspec-srv6-03" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-idr-flowspec-srv6.xml">
          <front>
            <title>BGP Flow Specification for SRv6</title>
            <author fullname="Zhenbin Li" initials="Z." surname="Li">
              <organization>Huawei</organization>
            </author>
            <author fullname="Lei Li" initials="L." surname="Li">
              <organization>Huawei</organization>
            </author>
            <author fullname="Huaimo Chen" initials="H." surname="Chen">
              <organization>Futurewei</organization>
            </author>
            <author fullname="Christoph Loibl" initials="C." surname="Loibl">
              <organization>Next Layer Communications</organization>
            </author>
            <author fullname="Gyan Mishra" initials="G. S." surname="Mishra">
              <organization>Verizon Inc.</organization>
            </author>
            <author fullname="Yanhe Fan" initials="Y." surname="Fan">
              <organization>Casa Systems</organization>
            </author>
            <author fullname="Yongqing Zhu" initials="Y." surname="Zhu">
              <organization>China Telecom</organization>
            </author>
            <author fullname="Lei Liu" initials="L." surname="Liu">
              <organization>Fujitsu</organization>
            </author>
            <author fullname="Xufeng Liu" initials="X." surname="Liu">
              <organization>Volta Networks</organization>
            </author>
            <date day="6" month="April" year="2023"/>
            <abstract>
              <t>This document proposes extensions to BGP Flow Specification for SRv6 for filtering packets with a SRv6 SID that matches a sequence of conditions.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-idr-flowspec-srv6-03"/>
        </reference>
        <reference anchor="I-D.ietf-idr-flowspec-interfaceset" target="https://datatracker.ietf.org/doc/html/draft-ietf-idr-flowspec-interfaceset-05" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-idr-flowspec-interfaceset.xml">
          <front>
            <title>Applying BGP flowspec rules on a specific interface set</title>
            <author fullname="Stephane Litkowski" initials="S." surname="Litkowski">
              <organization>Individual</organization>
            </author>
            <author fullname="Adam Simpson" initials="A." surname="Simpson">
              <organization>Nokia</organization>
            </author>
            <author fullname="Keyur Patel" initials="K." surname="Patel">
              <organization>Arrcus, Inc</organization>
            </author>
            <author fullname="Jeffrey Haas" initials="J." surname="Haas">
              <organization>Juniper Networks</organization>
            </author>
            <author fullname="Lucy Yong" initials="L." surname="Yong">
              <organization>Huawei</organization>
            </author>
            <date day="18" month="November" year="2019"/>
            <abstract>
              <t>The BGP Flow Specification (flowspec) Network Layer Reachability Information (BGP NLRI) extension (draft-ietf-idr-rfc5575bis) is used to distribute traffic flow specifications into BGP. The primary application of this extension is the distribution of traffic filtering policies for the mitigation of distributed denial of service (DDoS) attacks. By default, flow specification filters are applied on all forwarding interfaces that are enabled for use by the BGP flowspec extension. A network operator may wish to apply a given filter selectively to a subset of interfaces based on an internal classification scheme. Examples of this include "all customer interfaces", "all peer interfaces", "all transit interfaces", etc. This document defines BGP Extended Communities (RFC4360) that allow such filters to be selectively applied to sets of forwarding interfaces sharing a common group identifier. The BGP Extended Communities carrying this group identifier are referred to as the BGP Flowspec "interface-set" Extended Communities.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-idr-flowspec-interfaceset-05"/>
        </reference>
        <reference anchor="I-D.ietf-idr-flowspec-path-redirect" target="https://datatracker.ietf.org/doc/html/draft-ietf-idr-flowspec-path-redirect-12" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-idr-flowspec-path-redirect.xml">
          <front>
            <title>Flowspec Indirection-id Redirect</title>
            <author fullname="Gunter Van de Velde" initials="G." surname="Van de Velde">
              <organization>Nokia</organization>
            </author>
            <author fullname="Keyur Patel" initials="K." surname="Patel">
              <organization>Arrcus</organization>
            </author>
            <author fullname="Zhenbin Li" initials="Z." surname="Li">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="24" month="November" year="2022"/>
            <abstract>
              <t>This document defines a new extended community known as "FlowSpec Redirect to indirection-id Extended Community". This extended community triggers advanced redirection capabilities to flowspec clients. When activated, this flowspec extended community is used by a flowspec client to retrieve the corresponding next-hop and encoding information within a localised indirection-id mapping table. The functionality detailed in this document allows a network controller to decouple the BGP flowspec redirection instruction from the operation of the available paths.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-idr-flowspec-path-redirect-12"/>
        </reference>
        <reference anchor="I-D.ietf-idr-flowspec-mpls-match" target="https://datatracker.ietf.org/doc/html/draft-ietf-idr-flowspec-mpls-match-02" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-idr-flowspec-mpls-match.xml">
          <front>
            <title>BGP Flow Specification Filter for MPLS Label</title>
            <author fullname="Lucy Yong" initials="L." surname="Yong">
              <organization>Huawei</organization>
            </author>
            <author fullname="Susan Hares" initials="S." surname="Hares">
              <organization>Huawei</organization>
            </author>
            <author fullname="liangqiandeng" initials="" surname="liangqiandeng">
              <organization>Huawei</organization>
            </author>
            <author fullname="Jianjie You" initials="J." surname="You">
              <organization>Huawei</organization>
            </author>
            <date day="20" month="October" year="2022"/>
            <abstract>
              <t>This draft proposes BGP flow specification rules that are used to filter MPLS labeled packets.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-idr-flowspec-mpls-match-02"/>
        </reference>
        <reference anchor="I-D.ietf-idr-bgp-flowspec-label" target="https://datatracker.ietf.org/doc/html/draft-ietf-idr-bgp-flowspec-label-02" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-idr-bgp-flowspec-label.xml">
          <front>
            <title>Carrying Label Information for BGP FlowSpec</title>
            <author fullname="liangqiandeng" initials="" surname="liangqiandeng">
              <organization>Huawei</organization>
            </author>
            <author fullname="Susan Hares" initials="S." surname="Hares">
              <organization>Huawei</organization>
            </author>
            <author fullname="Jianjie You" initials="J." surname="You">
              <organization>Huawei</organization>
            </author>
            <author fullname="Robert Raszuk" initials="R." surname="Raszuk">
              <organization>Nozomi</organization>
            </author>
            <author fullname="Dan Ma" initials="D." surname="Ma">
              <organization>Cisco Systems</organization>
            </author>
            <date day="20" month="October" year="2022"/>
            <abstract>
              <t>This document specifies a method in which the label mapping information for a particular FlowSpec rule is piggybacked in the same Border Gateway Protocol (BGP) Update message that is used to distribute the FlowSpec rule. Based on the proposed method, the Label Switching Routers (LSRs) (except the ingress LSR) on the Label Switched Path (LSP) can use label to indentify the traffic matching a particular FlowSpec rule; this facilitates monitoring and traffic statistics for FlowSpec rules.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-idr-bgp-flowspec-label-02"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC6241" target="https://www.rfc-editor.org/info/rfc6241" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6241.xml">
          <front>
            <title>Network Configuration Protocol (NETCONF)</title>
            <author fullname="R. Enns" initials="R." role="editor" surname="Enns"/>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman"/>
            <date month="June" year="2011"/>
            <abstract>
              <t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices.  It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages.  The NETCONF protocol operations are realized as remote procedure calls (RPCs).  This document obsoletes RFC 4741. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6241"/>
          <seriesInfo name="DOI" value="10.17487/RFC6241"/>
        </reference>
        <reference anchor="RFC8040" target="https://www.rfc-editor.org/info/rfc8040" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8040.xml">
          <front>
            <title>RESTCONF Protocol</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8040"/>
          <seriesInfo name="DOI" value="10.17487/RFC8040"/>
        </reference>
        <reference anchor="RFC8205" target="https://www.rfc-editor.org/info/rfc8205" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8205.xml">
          <front>
            <title>BGPsec Protocol Specification</title>
            <author fullname="M. Lepinski" initials="M." role="editor" surname="Lepinski"/>
            <author fullname="K. Sriram" initials="K." role="editor" surname="Sriram"/>
            <date month="September" year="2017"/>
            <abstract>
              <t>This document describes BGPsec, an extension to the Border Gateway Protocol (BGP) that provides security for the path of Autonomous Systems (ASes) through which a BGP UPDATE message passes.  BGPsec is implemented via an optional non-transitive BGP path attribute that carries digital signatures produced by each AS that propagates the UPDATE message.  The digital signatures provide confidence that every AS on the path of ASes listed in the UPDATE message has explicitly authorized the advertisement of the route.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8205"/>
          <seriesInfo name="DOI" value="10.17487/RFC8205"/>
        </reference>
        <reference anchor="RFC8206" target="https://www.rfc-editor.org/info/rfc8206" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8206.xml">
          <front>
            <title>BGPsec Considerations for Autonomous System (AS) Migration</title>
            <author fullname="W. George" initials="W." surname="George"/>
            <author fullname="S. Murphy" initials="S." surname="Murphy"/>
            <date month="September" year="2017"/>
            <abstract>
              <t>This document discusses considerations and methods for supporting and securing a common method for Autonomous System (AS) migration within the BGPsec protocol.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8206"/>
          <seriesInfo name="DOI" value="10.17487/RFC8206"/>
        </reference>
      </references>
    </references>
  </back>
</rfc>
