<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC0791 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.0791.xml">
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC3032 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3032.xml">
<!ENTITY RFC4271 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4271.xml">
<!ENTITY RFC4360 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4360.xml">
<!ENTITY RFC4760 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4760.xml">
<!ENTITY RFC5065 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5065.xml">
<!ENTITY RFC5701 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5701.xml">
<!ENTITY RFC6241 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6241.xml">
<!ENTITY RFC6482 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6482.xml">
<!ENTITY RFC7153 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7153.xml">
<!ENTITY RFC7606 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7606.xml">
<!ENTITY RFC8040 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8040.xml">
<!ENTITY RFC8174 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8205 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8205.xml">
<!ENTITY RFC8206 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8206.xml">
<!ENTITY RFC8300 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8300.xml">
<!ENTITY RFC8402 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8402.xml">
<!ENTITY RFC8955 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8955.xml">
<!ENTITY RFC8956 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8956.xml">
<!ENTITY RFC9015 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.9015.xml">
<!ENTITY RFC9117 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.9117.xml">
<!ENTITY RFC9015 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.9015.xml">
<!ENTITY RFC9184 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.9184.xml">
<!ENTITY RFC9582 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.9582.xml">
<!ENTITY I-D.ietf-idr-flowspec-v2 SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-idr-flowspec-v2.xml"> 
<!ENTITY I-D.ietf-idr-fsv2-ip-basic SYSTEM "https://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-idr-fsv2-ip-basic.xml">
<!ENTITY I-D.hares-idr-fsv2-more-ip-actions SYSTEM "https://xml.resource.org/public/rfc/bibxml3/reference.I-D.hares-idr-fsv2-more-ip-actions.xml">
<!ENTITY I-D.ietf-idr-flowspec-nvo3 SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-idr-flowspec-nvo3.xml">
<!ENTITY I-D.ietf-idr-flowspec-l2vpn SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-idr-flowspec-l2vpn.xml">
<!ENTITY I-D.ietf-idr-flowspec-interfaceset SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-idr-flowspec-interfaceset.xml">
<!ENTITY I-D.ietf-idr-flowspec-path-redirect SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-idr-flowspec-path-redirect.xml">
<!ENTITY I-D.ietf-idr-flowspec-srv6 SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-idr-flowspec-srv6.xml">
<!ENTITY I-D.ietf-idr-flowspec-network-slice-ts 
  SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-idr-flowspec-network-slice-ts.xml">
]>
<?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 consensus="yes" ?>
<rfc category="std" docName="draft-hares-idr-fsv2-more-ip-filters-05"  ipr="trust200902">
  <front>
    <title abbrev="FSv2 More IP Filters">BGP Flow Specification Version 2 - More IP Filters </title>
    <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="Nat Kao" initials="N" surname="Kao">
	   <address>
        <email>pyxislx@gmail.com</email>
		</address>
	</author> 
    <date year="2026" />
    <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>FSv2 More IP Filters </keyword>
	<abstract>
	   <t>The BGP flow specification version 2 (FSv2) for Basic IP 
       defines user ordering of filters along with FSv1 IP Filters and 
	   FSv1 actions. This draft defines the format for the Extended 
	   IP Filters for Flow Specification FSv2.   
	   </t>
    </abstract>
  </front>
  <middle>
<section anchor="intro" title="Introduction">
      <t> Version 2 of BGP flow specification (FSv2) has a series of 
	  foundational documents (<xref target="I-D.ietf-idr-fsv2-ip-basic"></xref>, 
	  this document, <xref target="I-D.hares-idr-fsv2-more-ip-actions"></xref>, 
	  and [draft-hares-idr-fsv2-non-ip]) plus drafts on specific filter components, 
	  actions, or groups of filter components and actions. 
	  </t>
	  <t>The remainder of this introductory section provides a introduction to 
	  FSv2. </t>
 	  <t> Section 2 contains a description of the format of the FSv2 NLRI with 	  
	 the Extended IP Filters TLV. The Extended IP Filters TLV 
	 allows the user to specify new IP Filters components and a group of 
	 IP Filter components. </t>
     <t> 	 
	 The concept of a group of filter components allows an BGP peer originating 
	 a FSv2 NLRI with the Extended IP Filter TLV to pass what components the 
	 originating BGP Peer expects will be supported by the BGP Peers receiving 
     the FSv2 Extended Filter TLV. The group field is designed to aid upgrades
     to additional component by providing a simple check the FSv2 component 
     range passed in the Extended Filters TLV. Groups can be register with IANA
	 in either a FCFS range or IETF Consensus range. Section 2 also provides 
	 templates for defining: a) new components to be passed in the 
	 Extended IP Filter group and b) new Extended IP Filter groups. 
    </t>
     <t> 	 
	Section 4 provides information on Validation and Error handling for the 
	Extended Filters TLV. Section 5 contains manageability considerations for 
	FSv2 with Extended IP Filters TLV. Section 6 contains IANA considerations 
	and section 6 contains security considerations.  
	</t> 
	<section title="FSv2 background">
	  <t> FSv2 specifies new user-ordered filters that will be used with the IPv4 (AFI=1) and 
	  IPv6 (AFI=2) 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 (Extended or Community Path attribute).  The first SAFI (TBD1) 
	  is used for IP forwarding, and the second SAFI (TBD2) will be used with VPNs. The supported 
	  AFI/SAFI combinations in FSV2 are:
	  <list style="symbols">
	  <t> IPV4 (AFI=1, SAFI=TBD1), </t>
	  <t> IPv6 (AFI=2, SAFI=TBD1), </t>
	  <t> L2   (AFI=6, SAFI=TBD1), </t>
	  <t> SFC  (AFI=31, SAFI=TBD1), </t>
	  <t> BGP/MPLS IPv4 VPN (AFI=1, SAFI=TBD2), </t> 
	  <t> BGP/MPLS IPV6 VPN (AFI=2, SAFI=TBD2), </t>
	  <t> BGP/MPLS L2VPN (AFI=25, SAFI=TBD2), and </t>
      <t> SFC VPN (AFI=31, SAFI=TBD2)</t>
      </list> 	  
	 </t>
	 <t>A FSv2 is compliant if it implements FSv2 Basic IP forwarding functions only one AFI/SAFI pair.  For example, an implementation 
	 could implement just the the FSv2 IPv4 for IP forwarding (AFI=1, SAFI=TBD1).
	 </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>FSv2 is defined as a series of specifications. Only the FSv2 IP Basic forwarding functions are 
	  mandatory for all FSv2 implementations.  Below is a list of planned specification:   
	  <dl> 
	  <dt> FSv2 IP Basic (<xref target="I-D.ietf-idr-fsv2-ip-basic"></xref>):</dt><dd> This specification 
	  defines the FSv2 NLRI that allows user ordering of filters plus in a IP Basic TLV which only supports
	  FSv1 components. FSv2 actions are implemented in Extended Communities (FSv2-EC). One or more FSv2-EC 
	  actions can be attached to a single filter component. If multiple FSv2-EC actions are attached, 
      the implementations SHOULD support the procedures for categorization of actions and failure actions. 
	  </dd> 
	  <dt> FSv2 IP Extended Filters (draft-hares-idr-fsv2-ip-more-filters):</dt><dd> This document defines 
	  the Extended IP Filters TLV to allow easy addition of FSv2 filters.  
      </dd>  	  
	  <dt>FSv2 Individual drafts for IP Extended Filters:</dt><dd> These drafts should utilize the template given 
      in section 2.2  Current proposals for Extended IP Filters can request component identifier(s) be 
	  included in this draft's BGP FSv2 Component registry list. Grouping of Extended IP Filter can 
	  be registered in the Extended IP Filter Groups (see section 2.3).  	  
	  </dd>
	  <dt>FSv2 IP Extended Actions (<xref target="I-D.hares-idr-fsv2-more-ip-actions"></xref>):</dt> <dd> This 
      document defines a FSV2 TLV for the for the BGP Community Path Attribute, and a protocols for 
	  combining FSv2 Extended Community (FSv2-EC) Actions with FSv2 Community Path Attributes. 	  
	  </dd> 
	  <dt>FSv2 Individual drafts for FSv2 Actions:</dt><dd> These drafts may define FSv2 actions in 
	  Extended Communities and/or FSv2 actions in the FSv2 TLV of the BGP Community Attribute.
	  </dd> 
	  <dt>Non-IP Filters (draft-hares-idr-fsv2-non-ip]:</dt> <dd> defines the template for 
      FSv2 non-IP filters for MPLS, L2 traffic, SFC, and tunnel traffic, and FSV2 non-IP actions.
	  </dd>
	  <dt>Individual drafts on Non-IP Filters:</dt> <dd> IDR drafts for non-ip functions passed in 
	  BGP FSv2 includes: MPLS ([draft-hares-idr-fsv2-mpls]), L2VPN (<xref target="I-D.ietf-idr-flowspec-l2vpn"></xref>), and 
	  NV03 (<xref target="I-D.ietf-idr-flowspec-nvo3"></xref>). </dd> 
	  </dl> 
	  </t>
	 </section>
	<section title="Definitions and Acronyms">
	  <dl>
  		  <dt>AFI: </dt><dd>Address Family Identifier</dd>
		  <dt>AS: </dt><dd> Autonomous System </dd>
  		  <dt>BGP Session ephemeral state: </dt><dd>state which does not survive the loss of BGP peer session.</dd>
		  <dt>BGP Configuration state: </dt><dd> state which persist across a reboot of software module within 
		      a routing system or a reboot of a hardware routing device.</dd>
		  <dt>DDOS: </dt> <dd>Distributed Denial of Service.</dd>
		  <dt>Ephemeral state: </dt><dd>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.</dd>
		   <dt>FS: </dt><dd> Flow Specification. </dd> 
		  <dt>FSv1: </dt><dd>Flow Specification version 1 <xref target="RFC8955"></xref> <xref target="RFC8956"></xref></dd>
  		  <dt>FSv2: </dt><dd>Flow Specification version 2 <xref target="I-D.ietf-idr-fsv2-ip-basic"></xref>, [this document]. </dd>
          <dt>FS-EC: </dt><dd> Flow Specification Extended Community </dd>
          <dt>FSv1-EC: </dt><dd> FSv1 Extended Community that signals actions that occur after a filter match </dd>
          <dt>FSv2-EC: </dt><dd> FSv2 Extended Community that signals actions that occur after a filter match.  FSv2-EC are preformed 
              with either a default order of processing or signal the FSv2-EC are performed in implementation order. </dd>
		  <dt>NETCONF: </dt><dd>The Network Configuration Protocol <xref target="RFC6241"></xref>.</dd>
		  <dt>RESTCONF: </dt><dd>The RESTCONF configuration Protocol <xref target="RFC8040"></xref>. </dd>
		  <dt>RIB: </dt><dd>Routing Information Base.</dd>
		  <dt>ROA: </dt><dd>Route Origin Authentication <xref target="RFC9582"></xref></dd>
		  <dt>RR: </dt><dd> Route Reflector.</dd>
		  <dt>SAFI: </dt><dd>Subsequent Address Family Identifier. </dd>
        </dl>
    </section>
	<section title="Requirements Language">
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
          "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT
          RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be
          interpreted as described in BCP 14 <xref target="RFC2119"/>
          <xref target="RFC8174"/> when, and only when, they appear in
          all capitals, as shown here.</t>
     </section>
</section> 
<section title="Extending the IP Filters  ">
<t>
The format of the FSv2 NLRI field for IP Filters is defined in
<xref target="I-D.ietf-idr-fsv2-ip-basic"></xref>. 
This format includes a common header with fields for
user specified order, dependency filter chain, and a TLV
for filter components (type, length, value). 
</t>
<t>  
This section defines the use of the dependency filter chain (section 2.1) 
in the NLRI and the format of the Extended IP Filters TLV (section 2.2).
The Extended IP Filter group provides a flexible means to define which 
components are supported by the Extended IP Filter TLV.  Four Extended 
Filter Component groups are defined in section 2.3, but additional 
may be defined via an IANA Registry.  The ordering of Filters is by 
user define order number, then component, then value within a component. 
Section 2.4 provides the rules for ordering for FSv2 NLRI with 
IP Basic Filters and Extended IP Filters. Section 2.5 provides 
a template for new Extended IP Components. 
</t>
<section title="Dependency Filter Chain in FSv2 NLRI Header">
 <t>FSv2 filters may be distributed in multiple 
 BGP UPDATE packets. The format of the FSv2 NLRI is 
 shown in Figure 2-1.  In FSv2, the user can define the 
 order of the filters by an including an order in the 
 FSV2 NLRI prior to the filter. 
 FSv2 also defines an optional dependency filter chain to allow
 the filter chains to be identified across all FSV2
 Filter chains. This information may be installed from 
 BGP data based into firewalls. 
</t>
<t>
 <figure>
 <artwork>
 +-------------------------------+
 | NLRI length (2 octets)        |
 +-------------------------------+
 |    TLVs+                      |
 | +===========================+ |
 | | order (4 octets)          | |
 | +---------------------------+ |
 | | Dependent filter chain    | | 
 | |(type, chain ID, count,    | |
 | | item) (8 octets)          | |
 | +---------------------------+ | 
 | + FSv2 Filter type          + |
 | | (2 octets)                | |
 | +---------------------------+ |
 | + length TLVs (2 octet)     + |
 | + --------------------------+ |
 | + value (variable)          + |
 | +---------------------------+ |
 +-------------------------------+

  Figure 2-1 - FSv2 NLRI with Extended IP Filter type. 
</artwork>
 </figure>
</t>
<t> Where: 
<dl> 
  <dt>order: </dt> <dd>4 octet field for the FSv21 user defined order of the filter with a 
   a value of 1-n.  The value of zero is invalid </dd>  
  <dt>Dependent Filters Chain: </dt><dd> 8 octets for identifying a chain of 
   FSv2 filters that must be deployed at the same time. (See figure 2-2 for 
   details.)  If the dependency filters chain type field is zero, there 
   is no dependency filter chain defined. </dd>
  <dt>FSv2 Filter type: </dt><dd> 2 octet field for the FSv2 filter type. 
  The Extended IP Filter type value is 2. </dd>
  <dt>length: </dt><dd>2 octet field for the length of the value field. 
  </dd>
  <dt>value field: </dt><dd>variable length field defined per FSv2 filter type. 
  The value field for the Extended IP Filter rules has the format 
  shown in Figure 2-3. </dd>
  </dl>
</t>
 <t>
 The dependency filter chain has the following components: 
 <figure>
 <artwork>
    +-------------------------------+
    |  Version  (1 octet)           |
    +-------------------------------+
    |  chain id (3 octets)          |
    +-------------------------------+
    |  Count of items (2 octets)    |
    + ------------------------------+
    |  Item (2 octets)              |
    +-------------------------------+
	
  Figure 2-2 – IP header SubTLV format  
</artwork>
</figure>
</t>
<t>
where: 
<dl>
  <dt>Version: </dt><dd> This 1 octet field defines the version of the filter chain.  
   Valid values are 1-0xFF.  Value 0 identifies that there is "No dependency filter chain".
   In this case the remaining 7 bytes (chain id, count of items, and item) are also zero.  
   </dd>
   <dt>Chain ID: </dt><dd> This 3 octet field identifies the filter chain. 
   Valid values include 0x00001 to 0xFFFFFF with the value zero (0x000000) being reserved. 
   </dd>
   <dt>Count of items: </dt><dd>This 2 octet field contains the
   count of item on this filter dependency chains.
   Valid values are 0x0001 to 0xFFFF with the value of zero being reserved.  
   </dd>
   <dt>Item: </dt><dd> This (2 octets): filter sequence number on chain 
      Valid values are 0x0001 to 0xFFFF with the value of zero being reserved. 
   </dd>
 </dl>
</t>  
</section>

<section title="Extended IP Filters TLV">
<t> 
The Extended IP Filters TLV has a type value of TBD1 with 
a variable length.  The Extended IP Filters value field has 
the form shown in Figure 2-3 where:
<dl>
<dt>FSv2 Extended Filters Group: </dt> <dd> is a 2 octet field indicating the 
group of components supported.  Three groups are defined in this document.
Additional groups may be defined by registering the group in the 
FSv2 Extended IP Filter group registry (see IANA registry policy in 
section 6.2), but those groups are outside the scope of this document. 
</dd>
<dt>Components+: </dt><dd> This field is a sequence of FSv2 Components
with the format shown in figure 2-4.  
</dd>
</dl>
</t>
 <t>
<figure>
<artwork>
    Extended Filters value field 
 +-------------------------------+
 |  +--------------------------+ |
 |  |  Components+ (variable)  | |
 |  +--------------------------+ |	
 +-------------------------------+

 Figure 2-3 - Extended IP Filters TLV
</artwork>
</figure>
</t>
<t>Each Component is a sequence of TLVs with the format
<figure>
<artwork>
  +-------------------------------+
  |  Component Type (2 octets)    |
  +-------------------------------+
  |  Component length (2 octets)  |
  + ------------------------------+
  |  Component value (variable)   |
  +-------------------------------+
  
  Figure 2-4 – Component format 

</artwork>
</figure>
</t>
<t>
Where:
<dl>
<dt>Component type: </dt><dd>is a 1 octet specify the component type. 
</dd>
<dt>Component length: </dt><dd> is a 2 octet value specifying the component length. 
</dd>
<dt>Component value: </dt><dd>is a variable field defined per component. 
</dd>
</dl> 
</t>
<t> 
The valid components for the Extended IP Filters defined by 
this specification are listed in table 2-1 below. 
These components include the following: 
<dl>
<dt> IP Basic components: </dt> <dd> Components 1-13 are defined in 
<xref target="I-D.ietf-idr-fsv2-ip-basic"></xref>.
</dd>
<dt>TTL </dt><dd> Filter on Time to Live in IPv4 packet or 
maximum hop limit in IPv6 packets.  This is defined in 
draft-hares-idr-fsv2-TTL-filter</dd>
<dt> SID function </dt> <dd> SID in segment routing header (SRH) in the IPv6 packet 
(per <xref target="I-D.ietf-idr-flowspec-srv6"></xref>) </dd>
<dt> NRP ID</dt> <dd> NRP ID in Next Hop header in IPv6 packet 
(per <xref target="I-D.ietf-idr-flowspec-network-slice-ts"></xref> </dd> 
</dl> 
</t>
<t>
<figure>
<artwork>

           Table 2-1 (ordering by frame) 
 
 Components for Extended IP Filters TLV  
          
Component ID       Extended IP Filters Components 
 DEC / HEX         for IP Extended Filters version 2
-----------------  ----------------------------------
 00-15 /0x00-0x0F  Reserved for IP Basic TLV components 
 16-31 /0x10-0x10  Reserved for global headers 
 32-50 /0x20-0x32  Reserved for MPLS
 51-63 /0x33-0x3F  Reservd for L2 Traffic 
 64-80 /0x40-0x50  Reserved for SFC Traffic
 81-100/0x51-0x64  Reserved for Tunneled (L3/L2) traffic
101-120/0x65-0s78  Reserved for srv6 
 101   /0x65       SRv6 
 102   /0x66       NRP ID in IPv6 Header 
 
 256  /0x100       TTL-Pre
 270  /0x10E       IP Destination prefix 
 280  /0x118       IP Source prefix
 290  /0x122       IPv4 Protocol or 
                   IPv6 Upper Layer Protocol
 300   /0x12C      Port  
 310 – /0x136      Destination Port 
 320 – /0x140      Source Port
 330 – /0x14A      ICMPv4 type or ICMPv6 type  
 340 – /0x154      ICMPv4 code or ICMPv6 code 
 350 – /0x15E      TCP Flags 
 360 – /0x168      Packet length
 370 – /0x172      DSCP  
 380 – /0x17C      Fragment 
 390 – /0x186      Flow Label 
 400 - /0x190      TTL-Post
 410 - /0x19A      Payload 

</artwork>
</figure>
</t>
</section>

<section title="Ordering within FSv2 NLRI in Update Packet">
<t>The transmission of TLVs within a FSv2 NLRI SHOULD be sent via ascending 
user order (see the first 4 bytes of the FSv2 NLRI). Order is set by local configuration 
of the BGP Peer originating the FSv2 packet. 
</t>
<t> Within a single order value, the TLVs should be ordered by ascending FSv2 Filter type.    
The FSv2 Filter types which MUST be supported for the Extended IP Filter support
are Filter Type IP Basic (type = 256) and Filter Type Extended IP Filters (type = 280).  
Other FSv2 Filter types MAY be supported, but the support of those filter types 
is outside the scope of this document. 
</t> 
<t> Within the same order value and IP Basic Filter Type value, the components should 
be ordered by ascending numerical order of the component type value. 
If there are multiple filters with the same order value, IP Basic Filter type TLV, 
and component type, the order of the filters is defined by the component.
</t>
<t> Within the same order value and Extended IP Basic Type value, the filters should 
be ordered by group and then by component value.  If there are multiple filters with
the same order value, IP Extended Filter Type TLV, group value, and component type, 
the order of the filters is defined by the component. 
</t> 
<t>if the order of the filters is defined by the component, the value fields for 
components 1-13 are defined in <xref target="I-D.ietf-idr-fsv2-ip-basic"></xref>, <xref target="RFC8955"></xref>
and <xref target="RFC8956"></xref>.  The filters MUST be stored with the value fields in ascending order.  
</t>
<t>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 "session reset" 
<xref target="RFC7606"></xref>.  
</t>
</section> 
<section title="Template for Extended IP Components">
<t>
<dl>
<dt>Summary: </dt><dd> One line title summary </dd>
<dt>Component type: </dt><dd> The numerical value for component type. 
If the component value has not been assigned by IANA, this value should 
be in the form TBDx where x is a number (1..N). 
</dd> 
<dt>Description: </dt><dd> Description of what component does. 
</dd>
<dt>What field component targets in IPv4 packet: </dt><dd> The specific field  or 
fields the compnent filters. If the field filter is in the IPv6 packet, 
then this field is left (n/a). </dd>
<dt>What field Filter targets in IPv6 packet: </dt><dd> The specific field  or 
fields the compnent filters. If the field filter is in the IPv4 packet, 
then this field is left (n/a). </dd>
<dt> Length: </dt><dd> Describe the length or possible lengths of this field. 
</dd>
<dt> Encoding of Component Value field </dt> <dd>This is the encoding of the 
value in FSv2 NLRI. The best descriptions combine a diagram plus a description. 
</dd> 
<dt>Ordering within component: </dt><dd> The mechanism to order if multiple 
components of the same type occur. 
</dd> 
<dt>Conflicts with other filters: </dt><dd> Describe what other filters this 
component could interfere with. </dd>  
<dt>Example encoding: </dt><dd> Provide one simple example of 
the encoding of a filter for the component. 
</dd> 
<dt>references: </dt><dd>earlier documents which defined this filter. 
</dd>
</dl>
</t>
</section> 
</section> 
 
<section title="Validation and Error Handling">
<t>Validation of the FSv2 NLRI follows the rules from 
section 4.1 of <xref target="I-D.ietf-idr-fsv2-ip-basic"></xref>. 
For ease of reference to this validation procedure, 
the implementer might consider the following facts: 
<list style="symbol">
<t> Extended IP filters are passed as either IPv4 
(AFI=1, SAFI=TBD1), IPv6 (AFI=2, SAFI=TBD1), 
IPv4 VPN (AFI=1, SAFI=TBD2), IPv6 VPN (AFI=2, SAFI=TBD2).  
or (AFI=2) SAFI=TBD1 or SAFI=TBD2.  </t>
<t> IP Extended filters sent in SAFI=TBD1 are validated against SAFI=1.  To be specific, 
(AFI=1, SAFI=TBD1) is validated against (AFI=1, SAFI=1), 
and (AFI=2, SAFI=TBD1) is validasted against (AFI=2, SAFI=1).</t>
<t> IP Extended filters sent in SAFI=TBD2  are validated against SAFI=128.  
To be specific, (AFI=1, SAFI=TBD2) is validated against (AFI=1, SAFI=128) AND
(AFI=2, SAFI=TBD2) is validated against (AFI=2, SAFI=128).  </t>
</list>
</t>
<t> Validation of the FSv2 NLRI follows the rules from 
section 4.2 of <xref target="I-D.ietf-idr-fsv2-ip-basic"></xref>
apply to the FSV2 NLRI filters. For ease of reference to 
this section, implementers might consider the following facts:
<list>
<t>FSv2 defines a Rule-0 for 0/0 with "permit-all" action. 
<list> 
<t>By default, FSv2 (and FSv1) restrict the flow from permit all. 
By configuration, Rule-0 could be set to 0/0 with "permit-none" 
and filters could have the benefit of allowing traffic.  If this 
configuration knob is set, then it MUST be used in a Limited Domain 
of cooperating networks. </t> 
</list>
</t>
<t> FSv2 rules are ordered by ascending user order number,
FSv2 Filter type, FSv2 component type, and FSv2 component value.
<list>
<t>This ordering rules means that multiple FSv2 filter rules 
with the same user order number of ordered by ascending FSv2 filter types 
(IP Basic (0x01) and Extended IP Filters (0x02)).  If the FSv2 filter 
has the same user order and Filter type, then the order 
is by ascending FSv2 component type numbers.  Finally, if 
FSv2 filters have the same user order, Flter type, component type, 
then the filter is ordered by the component value.    
</t>
</list>
</t> 
<t>Order is deterministic, but arbitrary.  Users may 
use the user ordering and dependency chain to establish more complex
relationships. </t>
</list>
</t> 
<t> The following two error handling rules stated in 
Section 4.1.3 of <xref target="I-D.ietf-idr-fsv2-ip-basic"></xref>
 must be followed by all BGP speakers:
<list style="symbols">
<t>1) FSv2 NLRI having TLV which do not have the correct 
length or syntax  must be considered MALFORMED.
Syntax is defined as having each field within NLRI header  
(order, dependent filters chain and within the  
FSv2 TLV (IP Basic TLV or Extended TLV) header, and each 
component. Any MALFORMED FSv2 NLRI is handled as "session reset"
per <xref target="RFC7606"></xref>.</t>
<t>2) Any FSV2 NLRI which do not follow the ordering rules  
described in section 4 <xref target="I-D.ietf-idr-fsv2-ip-basic"></xref> 
for filters is considered MALFORMED. </t>
</list>
</t>
<t> Actions are transmitted on Extended Communities (EC) for 
FSv2 basic actions (FSv2-EC) or BGP Community path attribute (CPA) 
with FSv2 TLV (FSv2-CPA). The following rules MUST be followed
by the FSv2 actions: 
<list style="symbols"> 
<t>If BGP Community Path Attribute is not supported, then FSv2-EC MUST be ordered by FSv2 default order 
(see <xref target="I-D.ietf-idr-fsv2-ip-basic"></xref>) if one of the two conditions is not present:
<list style="symbols">
<t>Implement configuration knob that implementation specific order
is set </t>
<t>Action Chain Order (ACO) FSV2-EC is attached with the 
Action dependency set to implementation specific </t>
</list>
</t>  
<t>If a BGP Community Path Attribute with a FSv2 TLV (FSv2-CPA)is supported and attached 
in an invalid form, then the FSv2-CPA is ignored and not forwarded. </t>
<t>If BGP Community Path Attribute with a FSv2 TLV (FSv2-CPA) is supported and 
a valid FSv2-CPA is attached, then the FSv2-CPA takes precedence over FSv2-EC. 
The BGP Community Path attribute allows for user ordering with 
user order values of [1-N]. By default, the FSv2-EC follow the FSv2-CP actions 
(N+1) with all FSv2-EC on the same user order number.  Early deployments
of FSv2-CPA may want to reverse this order (first FSv2-EC, then BGP Community Path attribute). 
If so, FSv2-EC should be defined as [action order 0] by configuration knob. 
</t>
</list>
</t>  
</section> 
<section title="Manageability">
<t>FSv1 is a key part of many existing networks. 
The introduction of FSv2 is expected to be a phased process.
where FSv1 is replaced slowly.  One potential way this might 
occur is the following: 
<list>
<t>FSv2 IP basic filters replaces FSv1 Filters 
<list>
<t>A FSv2 implementation may simply configure FSv2 with the same IP Basic components 
as used in FSv1, and a user order of 1 for FSv2.  FSv1 could
be configured with a default user order of 10. 
</t>
</list>
</t>
<t>Actions in Extended Communities (EC) to done one of the following things:   
<list>
<t>Use Existing Communities in the FSv2 order 
</t> 
<t>Send a ACO community to signal the order is implementation specific 
(see <xref target="I-D.ietf-idr-fsv2-ip-basic"></xref> indicating 
implementation specific ordering. </t>
<t>Configure a Limited Domain of BGP speakers with policy that specifies 
the same Extended Community support (ACO does the same thing). 
</t>
</list> 
</t>
</list> 
</t>
<t>(editorial comments): Open issue. We need a discussion of deploying new TLVs 
within FSv2. Potential options are: 
<list>
<t> a) Open capabilities on AFI/SAFI, </t>
<t> b) Next-Hop capabilities within a domain or within a group,  </t>
<t> c) something else </t> 
</list> 
</t> 
</section> 
<section anchor="IANA" title="IANA Considerations">
   <t>This section complies with <xref target="RFC7153"></xref>.
   </t>
   <section title="Flow Spec Component types">
   <t>IANA is requested to indicate [this draft] as a reference on the 
   following range assignments in the Flow Spec Component Types Registry
    Designated experts will assign individual values. 
   </t>
   <t>
   <figure>
   <artwork>
 Component ID       Space allocation             FSv2 Reference
 ------------      -------------------------   ---------------
 0                 Reserved                     [this document]
 1-13              FSv1 components              [draft-ietf-idr-fsv2-ip-basic]   
 14-31             before L2 group filters      [this document]
 50-99             L2 Traffic filters           [this document] 
 100-149           MPLS                         [this document] 
 150-255           SFC                          [this document] 
 256               TTL-Pre FSv1 filters         [this document] 
 257-279           FSv1 filters                 [this document] 
 280-400           Extended Filters             [this document] 
 400-above         Reserved                     [this document] 
  </artwork> 
   </figure>
   </t>
   </section>
   </section>
 <section title="Security Considerations">
   <t>The use of ROA improves on <xref target="RFC8955"></xref>
   by checking to see of the route origination. This check can improve the 
   validation sequence for a multiple-AS environment.  
   </t>
   <t>The use of the reduced validation within an AS <xref target="RFC9117"></xref>
   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 title="Normative References">
	  &RFC0791;
      &RFC2119;
      &RFC4271;
	  &RFC4360;
	  &RFC4760;
	  &RFC5065;
	  &RFC5701;
	  &RFC6482;
	  &RFC7153;
	  &RFC7606;
	  &RFC8174;
	  &RFC8955;
	  &RFC8956;
	  &RFC9015;
	  &RFC9117;
	  &RFC9184;
	  &RFC9582;
	  &I-D.ietf-idr-flowspec-l2vpn;
	  &I-D.ietf-idr-flowspec-nvo3; 
	  &I-D.ietf-idr-fsv2-ip-basic;
	  &I-D.ietf-idr-flowspec-srv6;
	</references>
	<references title="Informative References">
    &RFC3032;
	&RFC6241; 
	&RFC8040;
	&RFC8205;
	&RFC8206;
	&RFC8300;
	&RFC8402; 
	&I-D.ietf-idr-flowspec-v2;
	&I-D.hares-idr-fsv2-more-ip-actions; 
	&I-D.ietf-idr-flowspec-network-slice-ts;
	 </references>
  </back>
</rfc>