<?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" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.18 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-cui-idr-content-filter-flowspec-02" category="info" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.22.0 -->
  <front>
    <title>Packet Content Filter for BGP FlowSpec</title>
    <seriesInfo name="Internet-Draft" value="draft-cui-idr-content-filter-flowspec-02"/>
    <author initials="Y." surname="Cui" fullname="Yong Cui">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <region>Beijing</region>
          <code>100084</code>
          <country>China</country>
        </postal>
        <email>cuiyong@tsinghua.edu.cn</email>
        <uri>http://www.cuiyong.net/</uri>
      </address>
    </author>
    <author initials="Y." surname="Gao" fullname="Yujia Gao">
      <organization>Zhongguancun Laboratory</organization>
      <address>
        <postal>
          <region>Beijing</region>
          <code>100094</code>
          <country>China</country>
        </postal>
        <phone>+86-185-1028-7458</phone>
        <email>gaoyj@zgclab.edu.cn</email>
      </address>
    </author>
    <author initials="S." surname="Hares" fullname="Susan Hares">
      <organization>Hickory Hill Consulting</organization>
      <address>
        <postal>
          <street>7453 Hickory Hill</street>
          <city>Saline</city>
          <region>Michigan</region>
          <code>48176</code>
          <country>United States of America</country>
        </postal>
        <phone>+1-734-604-0332</phone>
        <email>shares@ndzh.com</email>
      </address>
    </author>
    <date year="2024" month="July" day="19"/>
    <area>Security</area>
    <workgroup>IETF</workgroup>
    <keyword>DDoS Mitigation, BGP flow specification</keyword>
    <abstract>
      <?line 122?>

<t>The BGP Flow Specification enables the distribution of traffic filter policies (traffic filters and actions) via BGP, facilitating DDoS traffic filtering. 
However, the traffic filterer in FSv1 and FSv2 predominantly focuses on IP header fields, which may not adequately address new types of DDoS attack traffic characterized by constant patterns within the packet content. 
This document introduces a new flow specification filter type designed for packet content filtering. 
The match field includes otype, offset value, content-length, and content, encoded in the Flowspec NLRI. 
This new filter aims to augment DDoS defense capabilities.</t>
    </abstract>
  </front>
  <middle>
    <?line 130?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>BGP flow specification describes the distribution of traffic filter policies through BGP, allowing for efficient traffic management and DDoS attack mitigation. 
Existing versions, FSv1 and FSv2, primarily offer n-tuple matching conditions for policy enforcement, enabling actions such as packet dropping, re-directing, or limitation, etc.
These filter rules can be propagated to all BGP peers simultaneously without necessitating router configuration changes. 
Despite their utility, existing filters reliance on IP header fields for traffic filtering is increasingly inadequate for new kinds of DDoS attack. DDoS attacks such as ACK flood, UDP flood, ICMP flood and HTTP flood attacks, etc, have been found to potentially characterise a fixed content in the packet.</t>
      <t>This document delineates a new flow specification filter type that facilitates packet content filtering, leveraging otype, offset value, content-length, and content within the Flowspec NLRI to enhance DDoS defense mechanisms.</t>
      <section anchor="terminology">
        <name>Terminology</name>
        <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>
        <!-- # Body [REPLACE] -->

</section>
    </section>
    <section anchor="definitions-and-acronyms">
      <name>Definitions and Acronyms</name>
      <ul spacing="normal">
        <li>
          <t>DDoS: Distributed Denial of Service</t>
        </li>
        <li>
          <t>NLRI: Network Layer Reachability Information</t>
        </li>
        <li>
          <t>FSv1: Flow Specification Version 1, defined in <xref target="RFC8955"/> and <xref target="RFC8956"/></t>
        </li>
        <li>
          <t>FSv2: Flow Specification Version 2 define in [draft-hares-idr-flowspec-v2-ddos-00]</t>
        </li>
      </ul>
    </section>
    <section anchor="the-packet-content-filter-for-fsv1">
      <name>The Packet Content Filter for FSv1</name>
      <t>This document specifies a new flow specification filter type that is encoded in the BGP FS NLRI and we follow the FSv1 definition format. The packet content filter is defined as follows:</t>
      <t>Type TBD – Packet-Content</t>
      <t>Encoding:&lt; type (1 octet), value&gt;</t>
      <t>The value field is encoded using ptype, otype, offset, content-length, content and mask.</t>
      <t>Encoding: &lt; ptype (4 bits), otype (4 bits), offset (2 octets), content-length (1 octets), content (Variable), mask (Variable)&gt;</t>
      <section anchor="ptype-field">
        <name>Ptype Field</name>
        <t>The ptype is defined as a 4-bit unsigned integer that defines the packet type via AFI, because some filters are added to hardware that are IPv4 or IPv6 specific.</t>
        <artwork><![CDATA[
+-------+-----------------------------+
| Value | Description of Ptype        |
+-------+-----------------------------+
| 1     | IPv4                        |
| 2     | IPv6                        |
+-------+-----------------------------+
]]></artwork>
        <t>Figure 1： Ptype field</t>
      </section>
      <section anchor="otype-and-offset-fields">
        <name>Otype and Offset Fields</name>
        <t>The otype and offset fields define the starting position of the packet content used for matching.</t>
        <t>To avoid the effect of variable header length on the offset, we use the hierarchical way like [draft-khare-idr-bgp-flowspec-payload-match-08]. The Otype is defined as a 4-bit unsigned integer. The detail are as follows:</t>
        <artwork><![CDATA[
+-------+-----------------------------+
| Value | Description of Otype        |
+-------+-----------------------------+
| 0     | IP Header                   |
| 1     | IP Payload                  |
| 2     | TCP/UDP Payload             |
+-------+-----------------------------+
]]></artwork>
        <t>Figure 2： Otype field</t>
        <t>Otype 0 is defined as the start of the IP header. Otype 1 is defined as the start of the data portion of the IP header after the IP options. Otype 2 is defined as the start of the TCP or UDP data. Type 2 will only be used if it is the Layer 4 transport protocol is TCP (6) or UDP (17). For other IP protocols, type 1 or type 2 can be used.</t>
        <t>The offset is defined as a 2-octet unsigned integer that specifies the count of octets to be bypassed from the otype's starting position to match the packet content. 
It is worth noting that packet fragmentation will cause the offset value to change, so it is not enough to filter the fragmented packets through the packet content filter. One possible way is to filter the first packet through the payload filter, and then use its header information along with the fragment filter to filter the subsequent packets.</t>
        <t>Example:</t>
        <ul spacing="normal">
          <li>
            <t>By setting otype 0 and an offset of 0, the match is configured to start precisely at the beginning of the IP header.</t>
          </li>
          <li>
            <t>By setting otype 1 and an offset of 2, the match will start two octets past the initial data portion of the IP header, skipping over any IP options. This configuration, for example, in UDP packets, specifically targets the start of the destination port information.</t>
          </li>
          <li>
            <t>By setting otype 2 and an offset of 10, the match will start ten octets into the content of the TCP/UDP packet.</t>
          </li>
        </ul>
      </section>
      <section anchor="content-length-content-and-mask-fields">
        <name>Content-length, Content and Mask Fields</name>
        <t>The content-length is a one octet unsigned integer field that contains the length of the value field in octets.
Content and mask fields have a same length which defined by the content-length.</t>
        <t>The content provides a string to be matched. 
Based on the information provided by equipment vendors and operators, 8 octets is usually sufficient for the identification of DDoS attacks.</t>
        <t>Mask is a string containing 0 and 1, where 1 represents what will be matched and 0 represents characters that can be ignored.</t>
        <t>The content and mask are operated AND by bit to get the final content of the packet that needs to be matched.</t>
      </section>
      <section anchor="example-of-encoding">
        <name>Example of Encoding</name>
        <t>An example of a FlowSpec NLRI encoding for:"all packets to 192.0.2.0/24 and have fixed content 5858 in the tcp payload with offset of 0".</t>
        <table>
          <thead>
            <tr>
              <th align="left">length</th>
              <th align="left">destination</th>
              <th align="left">packet content</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x0b</td>
              <td align="left">01 18 c0 00 02</td>
              <td align="left">TBD 40 12 00 00 02 58 58 ff ff</td>
            </tr>
          </tbody>
        </table>
        <t>An example of a FlowSpec NLRI encoding for:"all packets to 192.0.2.0/24 and have fixed content 5858 in the tcp payload with offset of 0".</t>
        <table>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Description</th>
              <th align="left"> </th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x0f</td>
              <td align="left">length</td>
              <td align="left">15 octets (if len&lt;240, 1 octet)</td>
            </tr>
            <tr>
              <td align="left">0x01</td>
              <td align="left">type</td>
              <td align="left">Type 1 - Destination Prefix</td>
            </tr>
            <tr>
              <td align="left">0x18</td>
              <td align="left">length</td>
              <td align="left">24 bits</td>
            </tr>
            <tr>
              <td align="left">0xc0</td>
              <td align="left">prefix</td>
              <td align="left">192</td>
            </tr>
            <tr>
              <td align="left">0x00</td>
              <td align="left">prefix</td>
              <td align="left">0</td>
            </tr>
            <tr>
              <td align="left">0x02</td>
              <td align="left">prefix</td>
              <td align="left">2</td>
            </tr>
            <tr>
              <td align="left">TBD</td>
              <td align="left">type</td>
              <td align="left">Type TBD - Packet Content</td>
            </tr>
            <tr>
              <td align="left">0x40</td>
              <td align="left">length</td>
              <td align="left">64 bits</td>
            </tr>
            <tr>
              <td align="left">0x12</td>
              <td align="left">ptype, otype</td>
              <td align="left">IPv4, TCP payload</td>
            </tr>
            <tr>
              <td align="left">0x0000</td>
              <td align="left">offset</td>
              <td align="left">0 octets</td>
            </tr>
            <tr>
              <td align="left">0x02</td>
              <td align="left">content-length</td>
              <td align="left">2 octets</td>
            </tr>
            <tr>
              <td align="left">0x5858</td>
              <td align="left">content</td>
              <td align="left">0x5858</td>
            </tr>
            <tr>
              <td align="left">0xffff</td>
              <td align="left">mask</td>
              <td align="left">0xffff</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="the-packet-content-filter-for-fsv2">
      <name>The Packet Content Filter for FSv2</name>
      <section anchor="filter-encoding">
        <name>Filter Encoding</name>
        <t>To adapt to the updates of flowSpec, this document also gives the definition of the packet content filters in FSv2. The formate is as same as the NLRI formate for extented IP filters, as shown in Figure 3:</t>
        <artwork><![CDATA[
+--------------------------------+
| NLRI length (2 octets)         |
+--------------------------------+
| TLVs+                          |
| +============================+ |
| | order (4 octets)           | |
| +----------------------------+ |
| | identifier (4 octets)      | |
| +----------------------------+ |
| | FSv2 Filter type = 2       | |
| +----------------------------+ |
| | length TLVs (2 octet)      | |
| +----------------------------+ |
| +----------------------------+ |
| + +------------------------+ + |
| + |FSv2 filters version    | + |
| + +------------------------+ + |
| + | Sub-TLVs               | + |
| + +------------------------+ + |
| +----------------------------+ |
+--------------------------------+
]]></artwork>
        <t>Figure 3： NLRI formate for extented IP filters</t>
        <t>The formate of Sub-TLVs is showns in Figure 4:</t>
        <artwork><![CDATA[
+----------------------------+
|  Component Type (1 octet)  |
+----------------------------+
|  Length (1 octet)          |
+ ---------------------------+
|  Value (variable)          |
+----------------------------+
]]></artwork>
        <t>Figure 4: formate for Sub-TLV</t>
        <t>The defination of packet content filter in sub-TLV formate are as follows:</t>
        <artwork><![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
                                +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                |Component Type | Component Len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PType | Otype |             Offset            | Content Length|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Content                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Mask                                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <t>Figure 5: Defination of the packet content filter</t>
        <t>where fileds have the same length as FSv1.</t>
        <t>Encoding: &lt; ptype (4 bits), otype (4 bits), offset (2 octets), content-length (1 octets), content (Variable), mask (Variable)&gt;</t>
      </section>
      <section anchor="filter-ordering-rule">
        <name>Filter Ordering Rule</name>
        <t>Compared to FSv1, FSv2 adds filter ordering function. According to the defination of ordering rules 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"/> and <xref target="RFC8956"/> and MUST be in ascending order.</t>
        <t>However, due to multiple fields in the value of the packet content filter, the mechanisms defined in <xref target="RFC8955"/> and <xref target="RFC8956"/> do not apply. To give the default ordering rules of packet content filters, this document gives the defination as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>Filters with a larger content-length are implemented first.</t>
          </li>
          <li>
            <t>If they have the same content-length, compare otype and the larger type is implemented first.</t>
          </li>
          <li>
            <t>If they have the same content-lengte and otype, compare offset and the larger value will be implemented first.</t>
          </li>
          <li>
            <t>If they have the same content-length, otype, and offset, compare the content as a binary string using the memcmp() function as deﬁned by [ISO_IEC_9899]. The common preﬁx is compared. If the common preﬁx is not equal, the string with the lower preﬁx has higher precedence.</t>
          </li>
        </ol>
        <t>When there are multiple component exist in multiple NLRI, determine the order of the packet content filters according to the above ordering rules.</t>
      </section>
      <section anchor="use-cases">
        <name>Use Cases</name>
        <t>Here is a use case for ordering rules with multiple NLRI and multiple components. There are five components, with the same destination IP and user order, each of which contains a packet content filter with different values:</t>
        <artwork><![CDATA[
User-Order – 10  

FSv2 – NLRI with Extended IP Filters

Component 1 - Destination IP + Packet content filter (otype 0, offset 50, content-length 2, content 0x1111) - Rate Limit 

Component 2 - Destination IP + Packet content filter (otype 0, offset 50, content-length 3, content 0x111122) – Discard 

Component 3 - Destination IP + Packet content filter (otype 2, offset 70, content-length 2, content 0x1111) - Rate Limit

Component 4 - Destination IP + Packet content filter (otype 2, offset 70, content-length 3, content 0x111122) – Discard 

Component 5 - Destination IP + Packet content filter (otype 2, offset 70, content-length 3, content 0x111133) - Rate Limit
]]></artwork>
        <t>The rules will be installed as:</t>
        <artwork><![CDATA[
User-Order – 10

Component 4 - Destination IP + Packet content filter (otype 2, offset 70, content-length 3, content 0x111122) – Discard

Component 5 - Destination IP + Packet content filter (otype 2, offset 70, content-length 3, content 0x111133) - Rate Limit

Component 2 - Destination IP + Packet content filter (otype 0, offset 50, content-length 3, content 0x111122) – Discard

Component 3 - Destination IP + Packet content filter (otype 2, offset 70, content-length 2, content 0x1111) - Rate Limit

Component 1 - Destination IP + Packet content filter (otype 0, offset 50, content-length 2, content 0x1111) - Rate Limit
]]></artwork>
      </section>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>In accordance with the procedures outlined for managing the "Flow Spec Component Types" registry, IANA is hereby requested to assign a new Type Value. 
This assignment is sought from the First Come First Served range, as detailed below:</t>
      <artwork><![CDATA[
+------------+---------------------------+---------------+
| Type Value | Name                      | Reference     |
+------------+---------------------------+---------------+
| TBD        | Packet Content filter     | this document |
+------------+---------------------------+---------------+
]]></artwork>
      <t>The introduction of the "Packet Content filter" Type Value is purposed to expand the capability of BGP FSv1 by enabling more granular control over traffic filtering.</t>
      <t>This is especially pertinent for addressing complex patterns within packet content that are characteristic of Distributed Denial of Service (DDoS) attacks and other security challenges. 
The proposed Packet Content filter facilitate the specification of detailed criteria for traffic matching, including but not limited to, content inspection at specific packet offsets. In the following update we will add the definition of FSv2.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>No new security issues are introduced to the BGP protocol by this specification</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC8955">
        <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">
        <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="RFC2119">
        <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="RFC8174">
        <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>
    </references>
    <?line 397?>

<section numbered="false" anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>We wish to thank Susan Hares, Jeffery Hass and Li Yang for their valuable comments and suggestions on this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
Z7LJBBcNjNtR7X0Yktf/AZ4Tdq1rRwAA

-->

</rfc>
