<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" docName="draft-liang-lsr-isis-flowspec-extensions-01" category="std" ipr="trust200902" obsoletes="" updates="" xml:lang="en" symRefs="true" sortRefs="true" tocInclude="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.1 -->
  <!-- Generated by id2xml 1.5.0 on 2022-10-20T14:29:54Z -->
	<front>
    <title abbrev="ISIS FlowSpec">IS-IS Extensions for Flow Specification</title>
    <seriesInfo name="Internet-Draft" value="draft-liang-lsr-isis-flowspec-extensions-01"/>
    <author initials="Q." surname="Liang" fullname="Qiandeng Liang">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <street>101 Software Avenue, Yuhuatai District</street>
          <street>Nanjing  210012</street>
          <street>China</street>
        </postal>
        <email>liangqiandeng@huawei.com</email>
      </address>
    </author>
    <author initials="H." surname="Shi" fullname="Hang Shi">
      <organization>Huawei Technologies</organization>
      <address>
        <email>shihang9@huawei.com</email>
      </address>
    </author>
    <author initials="Q." surname="Gao" fullname="Qiangzhou Gao">
      <organization>Huawei</organization>
      <address>
        <email>gaoqiangzhou@huawei.com</email>
      </address>
    </author>
    <author initials="K." surname="Patel" fullname="Keyur Patel">
      <organization>Cisco Systems</organization>
      <address>
        <postal>
          <street>170 W. Tasman Drive</street>
          <street>San Jose  CA 95124 95134</street>
          <street>US</street>
        </postal>
        <email>keyupate@cisco.com</email>
      </address>
    </author>
    <author initials="Z." surname="Li" fullname="Zhenqiang Li">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <street>Beijing</street>
          <street>China</street>
        </postal>
        <email>li_zhenqiang@hotmail.com</email>
      </address>
    </author>
    <date year="2023" month="April" day="24"/>
    <workgroup>LSR Working Group</workgroup>
    <abstract>
      <t>
   Dissemination of the Traffic flow information was first introduced in
   the BGP protocol <xref target="RFC5575" format="default"/>.  FlowSpec rules are used to distribute
   traffic filtering rules that are used to filter Denial-of-Service
   (DoS) attacks.  For the networks that only deploy IS-IS or IS-IS
   variant, it is required that IS-IS is extended to distribute Flow
   Specification or FlowSpec rules.</t>
      <t>
   This document discusses the use cases for distributing flow
   specification (FlowSpec) routes using IS-IS.  Furthermore, this
   document defines a new IS-IS FlowSpec Reachability TLV encoding
   format that can be used to distribute FlowSpec rules, its validation
   procedures for imposing the filtering information on the routers, and
   a capability to indicate the support of FlowSpec functionality.</t>
    </abstract>
    <note>
      <name>Requirements 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 <xref target="RFC2119" format="default"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="sect-1" numbered="true" toc="default">
      <name>Introduction</name>
      <t>
   <xref target="RFC5575" format="default"/> defines Border Gateway Protocol protocol extensions that
   can be used to distribute traffic flow specifications.  One
   application of this encoding format is to automate inter-domain
   coordination of traffic filtering, such as what is required in order
   to mitigate (distributed) denial-of-service attacks.</t>
      <t>
   For the networks deploying only IS-IS or IS-IS variant, it is
   expected to extend IS-IS to distribute FlowSpec rules.  This document
   discusses use cases for distributing FlowSpec rules using IS-IS.
   Furthermore, this document also defines a new IS-IS FlowSpec
   Reachability TLV encoding format that can be used to distribute
   FlowSpec entries to specific routers in the campus network, its
   validation procedures for imposing the filtering information on the
   routers, and a capability to indicate the support of FlowSpec
   functionality.</t>
      <t>
   The semantic content of the FlowSpec extensions defined in this
   document are identical to the corresponding extensions to BGP
   (<xref target="RFC5575" format="default"/> and <xref target="I-D.ietf-idr-flow-spec-v6" format="default"/>).  In order to avoid
   repetition, this document only concentrates on those parts of
   specification where IS-IS is different from BGP.  The IS-IS FlowSpec
   extensions defined in this document can be used to mitigate the
   impacts of DoS attacks.</t>
    </section>
    <section anchor="sect-2" numbered="true" toc="default">
      <name>Terminology</name>
      <t>
   This section contains definitions for terms used frequently
   throughout this document.  However, many additional definitions can
   be found in <xref target="ISO-10589" format="default"/> and <xref target="RFC5575" format="default"/>.</t>
      <dl newline="false" spacing="normal" indent="3">
        <dt/>
        <dd>
      Flow Specification (FlowSpec): A flow specification is an n-tuple
      consisting of several matching criteria that can be applied to IP
      traffic.  Each FlowSpec consists of a set of filters and a set of
      actions.</dd>
      </dl>
    </section>
    <section anchor="sect-3" numbered="true" toc="default">
      <name>Use Cases for IS-IS based FlowSpec Distribution</name>
      <section anchor="sect-3.1" numbered="true" toc="default">
        <name>Anti-DDOS</name>
        <t>
   For the networks using IS-IS or IS-IS variant, for example, the
   campus network or DC network, it is expected to extend IS-IS to
   distribute FlowSpec rules as shown in Figure 1.  In this network, the
   traffic analyzer could be deployed to inject the FlowSpec rules into
   Router A.  Router A creates FlowSpec entries according to the
   FlowSpec rules, then the FlowSpec entries would be distributed to the
   other routers in this domain using IS-IS.  Consequently, the attack
   traffic could be blocked or the suspicious traffic could be limited
   to a low rate as early as possible.</t>
        <figure anchor="ure-anti-ddos-in-is-is-network">
          <name>Anti-DDOS in IS-IS Network</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
                   +--------+
                   |Traffic |
               +---+Analyzer|
               |   +--------+
               |
               |FlowSpec
               |
               |
            +--+-------+           +----------+        +--------+
            | Router A +-----------+ Router B +--------+Attacker|
            +----------+           +----------+        +--------+

                  |                     |                  |
                  |   IS-IS FlowSpec    |  Attack Traffic  |
                  |                     |                  |
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="sect-4" numbered="true" toc="default">
      <name>IS-IS Extensions for FlowSpec Rules</name>
      <t>
   This document defines a new IS-IS TLV, i.e. the FlowSpec reachability
   TLV (TLV type: TBD1), to describe the FlowSpec rules.  An LSP (Link
   State Protocol) Data Unit [ISO-10589] can carry one or more FlowSpec
   reachability TLVs.</t>
      <t>
   Each FlowSpec Reachability TLV carries a FlowSpec entry.  The
   FlowSpec entry consists of a FlowSpec Filters sub-TLV and one or more
   corresponding FlowSpec Action sub-TLVs.</t>
      <dl newline="true" spacing="normal" indent="0">
        <dt>The FlowSpec Reachability TLV is defined below in Figure 2:</dt>
        <dd/>
      </dl>
      <figure anchor="ure-flowspec-reachability-tlv">
        <name>FlowSpec Reachability TLV</name>
        <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 (TBD1)  |    Length     |    Flags      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |               FlowSpec Entry (variable)                       |
    +                                                               +
    ~                                                               ~
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>
      <dl newline="false" spacing="normal" indent="3">
        <dt/>
        <dd>
      Type: 1 octet.  Type code is TBD1.</dd>
      </dl>
      <dl newline="false" spacing="normal" indent="3">
        <dt/>
        <dd>
      Length: 1 octet.  The length field defines the length of the value
      portion in octets (thus a TLV with no value portion would have a
      length of 0).</dd>
      </dl>
      <dl newline="false" spacing="normal" indent="3">
        <dt/>
        <dd>
      Value: variable.  The value field contains a "Flags" field and a
      FlowSpec entry, which consists of a FlowSpec filters sub-TLV and
      one or more corresponding FlowSpec action sub-TLVs.  The size of
      the FlowSpec entry cannot be greater than 253.  In most scenarios,
      using one FlowSpec entry is sufficient.  If the injected FlowSpec
      rule is too complex that the IS-IS router has to use more than 253
      octets to encode it into a FlowSpec entry, the IS-IS router should
      reject it.  It is strongly recommended that the FlowSpec rule
      provider should split or revise the complex FlowSpec rule to a
      suitable one for the IS-IS routers.</dd>
      </dl>
      <ul empty="true" spacing="normal">
        <li>
          <dl newline="true" spacing="normal" indent="0">
            <dt>Flags: One octet Field identifying Flags</dt>
            <dd/>
          </dl>
        </li>
      </ul>
      <artwork name="" type="" align="left" alt=""><![CDATA[
                              0 1 2 3 4 5 6 7
                             +-+-+-+-+-+-+-+-+
                             | Reserved    |L|
                             +-+-+-+-+-+-+-+-+
]]></artwork>
      <dl newline="false" spacing="normal" indent="3">
        <dt/>
        <dd>
      The least significant bit L is defined as a Leaking enable bit.
      If set, the FlowSpec Reachability TLV SHOULD be flooded across the
      entire routing domain.  If the L flag is not set, the FlowSpec
      Reachability TLV MUST NOT be leaked between levels.  This bit MUST
      NOT be altered during the TLV leaking.  This Flags may be modified
      by the IS-IS Speaker according to a local policy.</dd>
      </dl>
      <section anchor="sect-4.1" numbered="true" toc="default">
        <name>FlowSpec Filters sub-TLV</name>
        <t>
   IS-IS FlowSpec filters sub-TLV is one component of FlowSpec entry,
   carried in the FlowSpec reachability TLV.  It is defined below in
   Figure 3.</t>
        <figure anchor="ure-is-is-flowspec-filters-sub-tlv">
          <name>IS-IS FlowSpec Filters sub-TLV</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
                   0                   1
                   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
                  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                  |     Type      |    Length     |
                  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                  |     Flags     |               |
                  +-+-+-+-+-+-+-+-+               +
                  ~      Filters (variable)       ~
                  +                               +
                  |             ...               |
]]></artwork>
        </figure>
        <t>
   Type: the TLV type (Type Code: TBD2 for IPv4 FlowSpec filters, TBD3
   for IPv6 FlowSpec filters)</t>
        <t>
   Length: the size of the value field in octets, it cannot be greater
   than 253.</t>
        <dl newline="true" spacing="normal" indent="0">
          <dt>Flags: One octet Field identifying Flags</dt>
          <dd/>
        </dl>
        <artwork name="" type="" align="left" alt=""><![CDATA[
                           0 1 2 3 4 5 6 7
                          +-+-+-+-+-+-+-+-+
                          | Reserved    |S|
                          +-+-+-+-+-+-+-+-+
]]></artwork>
        <t>
   The least significant bit S is defined as a strict filter check bit.
   If set, strict validation rules outlined in the validation section
   <xref target="sect-4.1.2" format="default"/> need to be enforced.</t>
        <t>
   Filters: the same as "flow-spec filter components" defined in
   <xref target="RFC5575" format="default"/> and <xref target="I-D.ietf-idr-flow-spec-v6" format="default"/>.</t>
        <ul empty="true" spacing="normal">
          <li>
            <dl newline="true" spacing="normal" indent="0">
              <dt>Table 1: IS-IS Supported FlowSpec Filter Component Types</dt>
              <dd/>
            </dl>
          </li>
        </ul>
        <table align="center">
          <thead>
            <tr>
              <th align="left"> Type</th>
              <th align="left"> Description</th>
              <th align="left"> RFC/ WG draft</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">1 </td>
              <td align="left">Destination IPv4 Prefix Destination IPv6 Prefix</td>
              <td align="left">RFC5575 I-D.ietf-idr-flow-spec-v6</td>
            </tr>
            <tr>
              <td align="left">2 </td>
              <td align="left">Source IPv4 Prefix Source IPv6 Prefix</td>
              <td align="left">RFC5575 I-D.ietf-idr-flow-spec-v6</td>
            </tr>
            <tr>
              <td align="left">3 </td>
              <td align="left">IP Protocol Next Header</td>
              <td align="left">RFC5575 I-D.ietf-idr-flow-spec-v6</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">Port</td>
              <td align="left">RFC5575</td>
            </tr>
            <tr>
              <td align="left">5</td>
              <td align="left">Destination port</td>
              <td align="left">RFC5575</td>
            </tr>
            <tr>
              <td align="left">6</td>
              <td align="left">Source port</td>
              <td align="left">RFC5575</td>
            </tr>
            <tr>
              <td align="left">7</td>
              <td align="left">ICMP type</td>
              <td align="left">RFC5575</td>
            </tr>
            <tr>
              <td align="left">8</td>
              <td align="left">ICMP code</td>
              <td align="left">RFC5575</td>
            </tr>
            <tr>
              <td align="left">9</td>
              <td align="left">TCP flags</td>
              <td align="left">RFC5575</td>
            </tr>
            <tr>
              <td align="left">10</td>
              <td align="left">Packet length</td>
              <td align="left">RFC5575</td>
            </tr>
            <tr>
              <td align="left">11</td>
              <td align="left">DSCP</td>
              <td align="left">RFC5575</td>
            </tr>
            <tr>
              <td align="left">12</td>
              <td align="left">Fragment</td>
              <td align="left">RFC5575</td>
            </tr>
            <tr>
              <td align="left">13</td>
              <td align="left">Flow Label</td>
              <td align="left">I-D.ietf-idr-flow-spec-v6</td>
            </tr>
          </tbody>
        </table>
        <section anchor="sect-4.1.1" numbered="true" toc="default">
          <name>Order of Traffic Filtering Rules</name>
          <t>
   With traffic filtering rules, more than one rule may match a
   particular traffic flow.  The order of applying the traffic filter
   rules is the same as described in Section 5.1 of <xref target="RFC5575" format="default"/> and in
   Section 3.1 of <xref target="I-D.ietf-idr-flow-spec-v6" format="default"/>.</t>
        </section>
        <section anchor="sect-4.1.2" numbered="true" toc="default">
          <name>Validation Procedure</name>
          <t>
   <xref target="RFC5575" format="default"/> defines a validation procedure for BGP FlowSpec rules, and
   <xref target="I-D.ietf-idr-bgp-flowspec-oid" format="default"/> describes a modification to the
   validation procedure defined in <xref target="RFC5575" format="default"/> for the dissemination of
   BGP flow specifications.  The IS-IS FlowSpec should support similar
   features to mitigate the unnecessary or invalid application of
   traffic filter rules.  The IS-IS FlowSpec validation procedure is
   described as follows.</t>
          <t>
   When a router receives a FlowSpec rule including a destination prefix
   filter from its neighbor router, it should consider the prefix filter
   as a valid filter unless the S bit in the flags field of Filter TLV
   is set.  If the S bit is set, then the FlowSpec rule is considered
   valid if and only if:</t>
          <dl newline="false" spacing="normal" indent="3">
            <dt/>
            <dd>
      The originator of the FlowSpec rule matches the originator of the
      best-match unicast route for the destination prefix embedded in
      the FlowSpec.</dd>
          </dl>
          <t>
   The former rule allows any centralized controller to originate the
   prefix filter and advertise it within a given IS-IS network.  The
   latter rule, also known as a Strict Validation rule, allows strict
   checking and enforces that the originator of the FlowSpec filter is
   also the originator of the destination prefix.</t>
          <t>
   When multiple equal-cost paths exist in the routing table entry, each
   path could end up having a separate set of FlowSpec rules.</t>
          <t>
   When a router receives a FlowSpec rule not including a destination
   prefix filter from its neighbor router, the validation procedure
   described above is not applicable.</t>
          <t>
   The FlowSpec filter validation state is used by an IS-IS speaker when
   the filter is considered for an installation in its FIB.  An IS-IS
   speaker MUST flood IS-IS LSP containing a FlowSpec Reachability TLV
   as per the entries defined in [ISO-10589] regardless of the
   validation state of the prefix filters.</t>
        </section>
      </section>
      <section anchor="sect-4.2" numbered="true" toc="default">
        <name>FlowSpec Action sub-TLV</name>
        <t>
   There are one or more FlowSpec Action TLVs associated with a FlowSpec
   Filters TLV.  Different FlowSpec Filters TLV could have the same
   FlowSpec Action TLVs.  The following IS-IS FlowSpec action TLVs,
   except Redirect, are same as defined in <xref target="RFC5575" format="default"/>.</t>
        <t>
   Redirect: IPv4 or IPv6 address.  This target IP address MUST
   correspond to a tunnel in the current IS-IS router, if not, the
   "redirect to IP" action is invalid, and if the flowspec entry has no
   other action, the flowspec entry is invalid and wouldn't be installed
   . If the IS-IS router doesn't have a valid route for the target IP,
   the "redirect to IP" action is also invalid.</t>
        <dl newline="true" spacing="normal" indent="0">
          <dt>Table 2: BGP FlowSpec Actions</dt>
          <dd/>
        </dl>
        <table align="center">
          <thead>
            <tr>
              <th align="left"> type</th>
              <th align="left"> FlowSpec Action</th>
              <th align="left"> RFC/WG draft</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x8006</td>
              <td align="left">traffic-rate</td>
              <td align="left">RFC5575</td>
            </tr>
            <tr>
              <td align="left">0x8007</td>
              <td align="left">traffic-action</td>
              <td align="left">RFC5575</td>
            </tr>
            <tr>
              <td align="left">0x8108</td>
              <td align="left">redirect-to-IPv4</td>
              <td align="left"><xref target="I-D.ietf-idr-flowspec-redirect-rt-bis"/></td>
            </tr>
            <tr>
              <td align="left">0x800b</td>
              <td align="left">redirect-to-IPv6</td>
              <td align="left">I-D.ietf-idr-flow-spec-v6</td>
            </tr>
            <tr>
              <td align="left">0x8009</td>
              <td align="left">traffic-marking</td>
              <td align="left">RFC5575</td>
            </tr>
          </tbody>
        </table>
        <section anchor="sect-4.2.1" numbered="true" toc="default">
          <name>Traffic-rate</name>
          <dl newline="true" spacing="normal" indent="0">
            <dt>Traffic-rate TLV is encoded as:</dt>
            <dd/>
          </dl>
          <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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |      TBD4     |       4       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                          Traffic-rate                         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Traffic-rate: the same as defined in [RFC5575].
]]></artwork>
        </section>
        <section anchor="sect-4.2.2" numbered="true" toc="default">
          <name>Traffic-action</name>
          <dl newline="true" spacing="normal" indent="0">
            <dt>Traffic-action TLV is encoded as:</dt>
            <dd/>
          </dl>
          <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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |     TBD5      |      2        |        Reserved           |S|T|
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

S flag and T flag: the same as defined in [RFC5575].
]]></artwork>
        </section>
        <section anchor="sect-4.2.3" numbered="true" toc="default">
          <name>Traffic-marking</name>
          <dl newline="true" spacing="normal" indent="0">
            <dt>Traffic-marking TLV is encoded as:</dt>
            <dd/>
          </dl>
          <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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |      TBD6     |      2        |     Reserved      | DSCP Value|
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

DSCP value: the same as defined in [RFC5575].
]]></artwork>
        </section>
        <section anchor="sect-4.2.4" numbered="true" toc="default">
          <name>Redirect-to-IP</name>
          <dl newline="true" spacing="normal" indent="0">
            <dt>Redirect-to-IPv4 is encoded as:</dt>
            <dd/>
          </dl>
          <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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |      TBD7     |      6        |     Reserved                |C|
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                      IPv4 Address                             |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Redirect to IPv6 TLV is encoded as:

     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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |      TBD8     |       18      |     Reserved                |C|
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |                      IPv6 Address                             |
    |                                                               |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

IPv4/6 Address: the redirection target IP address.
]]></artwork>
          <t>
   'C' (or copy) bit: when the 'C' bit is set, the redirection applies
   to copies of the matching packets and not to the original traffic
   stream <xref target="I-D.ietf-idr-flowspec-redirect-ip" format="default"/>.</t>
        </section>
      </section>
    </section>
    <section anchor="sect-5" numbered="true" toc="default">
      <name>Redistribution of FlowSpec Rules</name>
      <t>
   An implementation MAY provide an option for an IS-IS speaker to
   announce a redistributed FlowSpec route within an IS-IS domain
   regardless of being installed in its local FIB.  An implementation
   MAY impose an upper bound on number of FlowSpec entries that an IS-IS
   router MAY advertise.</t>
    </section>
    <section anchor="sect-6" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>
   This document defines the following new IS-IS TLV types, which need
   to be reflected in the IS-IS TLV codepoint registry.</t>
      <section anchor="sect-6.1" numbered="true" toc="default">
        <name>FlowSpec Reachability TLV</name>
        <table align="center">
          <thead>
            <tr>
              <th align="left"> Type</th>
              <th align="left"> Description</th>
              <th align="left"> IIH</th>
              <th align="left"> LSP</th>
              <th align="left"> SNP</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD1</td>
              <td align="left">The FlowSpec Reachability TLV</td>
              <td align="left">n</td>
              <td align="left">y</td>
              <td align="left">n</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sect-6.2" numbered="true" toc="default">
        <name>FlowSpec Filters sub-TLVs</name>
        <table align="center">
          <thead>
            <tr>
              <th align="left"> Type</th>
              <th align="left"> Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD2</td>
              <td align="left">IPv4 FlowSpec filters sub-TLV</td>
            </tr>
            <tr>
              <td align="left">TBD3</td>
              <td align="left">IPv6 FlowSpec filters sub-TLV</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sect-6.3" numbered="true" toc="default">
        <name>FlowSpec Filter Component Types</name>
        <table align="center">
          <thead>
            <tr>
              <th align="left"> Type</th>
              <th align="left"> Description</th>
              <th align="left"> RFC/ WG draft</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">1 </td>
              <td align="left">Destination IPv4 Prefix Destination IPv6 Prefix</td>
              <td align="left">RFC5575 I-D.ietf-idr-flow-spec-v6</td>
            </tr>
            <tr>
              <td align="left">2 </td>
              <td align="left">Source IPv4 Prefix Source IPv6 Prefix</td>
              <td align="left">RFC5575 I-D.ietf-idr-flow-spec-v6</td>
            </tr>
            <tr>
              <td align="left">3 </td>
              <td align="left">IP Protocol Next Header</td>
              <td align="left">RFC5575 I-D.ietf-idr-flow-spec-v6</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">Port</td>
              <td align="left">RFC5575</td>
            </tr>
            <tr>
              <td align="left">5</td>
              <td align="left">Destination port</td>
              <td align="left">RFC5575</td>
            </tr>
            <tr>
              <td align="left">6</td>
              <td align="left">Source port</td>
              <td align="left">RFC5575</td>
            </tr>
            <tr>
              <td align="left">7</td>
              <td align="left">ICMP type</td>
              <td align="left">RFC5575</td>
            </tr>
            <tr>
              <td align="left">8</td>
              <td align="left">ICMP code</td>
              <td align="left">RFC5575</td>
            </tr>
            <tr>
              <td align="left">9</td>
              <td align="left">TCP flags</td>
              <td align="left">RFC5575</td>
            </tr>
            <tr>
              <td align="left">10</td>
              <td align="left">Packet length</td>
              <td align="left">RFC5575</td>
            </tr>
            <tr>
              <td align="left">11</td>
              <td align="left">DSCP</td>
              <td align="left">RFC5575</td>
            </tr>
            <tr>
              <td align="left">12</td>
              <td align="left">Fragment</td>
              <td align="left">RFC5575</td>
            </tr>
            <tr>
              <td align="left">13</td>
              <td align="left">Flow Label</td>
              <td align="left">I-D.ietf-idr-flow-spec-v6</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sect-6.4" numbered="true" toc="default">
        <name>FlowSpec Action sub-TLVs</name>
        <t>
   This document defines a group of FlowSpec actions.  The following TLV
   types need to be assigned:</t>
        <dl newline="false" spacing="normal" indent="3">
          <dt/>
          <dd>
      Type TBD4 - traffic-rate</dd>
        </dl>
        <dl newline="false" spacing="normal" indent="3">
          <dt/>
          <dd>
      Type TBD5 - traffic-action</dd>
        </dl>
        <dl newline="false" spacing="normal" indent="3">
          <dt/>
          <dd>
      Type TBD6 - traffic-marking</dd>
        </dl>
        <dl newline="false" spacing="normal" indent="3">
          <dt/>
          <dd>
      Type TBD7 - redirect to IPv4</dd>
        </dl>
        <dl newline="false" spacing="normal" indent="3">
          <dt/>
          <dd>
      Type TBD8 - redirect to IPv6</dd>
        </dl>
      </section>
    </section>
    <section anchor="sect-7" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>
   This extension to IS-IS does not change the underlying security
   issues inherent in the existing IS-IS.  Implementations must assure
   that malformed TLV and Sub-TLV permutations do not result in errors
   which cause hard IS-IS failures.</t>
    </section>
    <section anchor="sect-8" numbered="true" toc="default">
      <name>Acknowledgement</name>
      <t>
   The authors would like to thank Jiangjie You, Peng Fan, Jeff Haas for their contributions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="ISO-10589" quoteTitle="true" derivedAnchor="ISO-10589">
          <front>
            <title>Information technology -- Telecommunications and information exchange between systems -- Intermediate System to Intermediate System intra-domain routeing information exchange protocol for use in conjunction with the protocol for providing the connectionless-mode network service (ISO 8473)</title>
            <seriesInfo name="ISO/IEC" value="10589:2002, Second Edition"/>
            <author>
              <organization abbrev="ISO" showOnFrontPage="true">International Organization for Standardization</organization>
            </author>
            <date month="November" year="2002"/>
          </front>
        </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="RFC5575" target="https://www.rfc-editor.org/info/rfc5575" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5575.xml">
          <front>
            <title>Dissemination of Flow Specification Rules</title>
            <author fullname="P. Marques" initials="P." surname="Marques"/>
            <author fullname="N. Sheth" initials="N." surname="Sheth"/>
            <author fullname="R. Raszuk" initials="R." surname="Raszuk"/>
            <author fullname="B. Greene" initials="B." surname="Greene"/>
            <author fullname="J. Mauch" initials="J." surname="Mauch"/>
            <author fullname="D. McPherson" initials="D." surname="McPherson"/>
            <date month="August" year="2009"/>
            <abstract>
              <t>This document defines a new Border Gateway Protocol Network Layer Reachability Information (BGP NLRI) encoding format that can be used to distribute traffic flow specifications. This allows the routing system to propagate information regarding more specific components of the traffic aggregate defined by an IP destination prefix.</t>
              <t>Additionally, it defines two applications of that encoding format: one that can be used to automate inter-domain coordination of traffic filtering, such as what is required in order to mitigate (distributed) denial-of-service attacks, and a second application to provide traffic filtering in the context of a BGP/MPLS VPN service.</t>
              <t>The information is carried via the BGP, thereby reusing protocol algorithms, operational experience, and administrative processes such as inter-provider peering agreements. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5575"/>
          <seriesInfo name="DOI" value="10.17487/RFC5575"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="I-D.ietf-idr-bgp-flowspec-oid" target="https://www.ietf.org/archive/id/draft-ietf-idr-bgp-flowspec-oid-02.txt" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-idr-bgp-flowspec-oid-02.xml">
          <front>
            <title>Revised Validation Procedure for BGP Flow Specifications</title>
            <author fullname="Jim Uttaro" initials="J." surname="Uttaro"/>
            <author fullname="Clarence Filsfils" initials="C." surname="Filsfils"/>
            <author fullname="David Smith" initials="D." surname="Smith"/>
            <author fullname="Juan Alcaide" initials="J." surname="Alcaide"/>
            <author fullname="Prodosh Mohapatra" initials="P." surname="Mohapatra"/>
            <date day="17" month="January" year="2014"/>
            <abstract>
              <t>This document describes a modification to the validation procedure defined in RFC 5575 for the dissemination of BGP flow specifications. RFC 5575 requires that the originator of the flow specification matches the originator of the best-match unicast route for the destination prefix embedded in the flow specification. This allows only BGP speakers within the data forwarding path (such as autonomous system border routers) to originate BGP flow specifications. Though it is possible to disseminate such flow specifications directly from border routers, it may be operationally cumbersome in an autonomous system with a large number of border routers having complex BGP policies. The modification proposed herein enables flow specifications to be originated from a centralized BGP route controller.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-idr-bgp-flowspec-oid-02"/>
        </reference>
        <reference anchor="I-D.ietf-idr-flow-spec-v6" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-idr-flow-spec-v6-06.xml" target="http://www.ietf.org/internet-drafts/draft-ietf-idr-flow-spec-v6-06.txt">
          <front>
            <title>Dissemination of Flow Specification Rules for IPv6</title>
            <author initials="R" surname="Raszuk" fullname="Robert Raszuk">
              <organization/>
            </author>
            <author initials="B" surname="Pithawala" fullname="Burjiz Pithawala">
              <organization/>
            </author>
            <author initials="D" surname="McPherson" fullname="Danny McPherson">
              <organization/>
            </author>
            <author initials="A" surname="Andy" fullname="Andy">
              <organization/>
            </author>
            <date month="November" day="10" year="2014"/>
            <abstract>
              <t>Dissemination of Flow Specification Rules [RFC5575] provides a protocol extension for propagation of traffic flow information for the purpose of rate limiting or filtering.  The [RFC5575] specifies those extensions for IPv4 protocol data packets.  This specification extends the current [RFC5575] and defines changes to the original document in order to make it also usable and applicable to IPv6 data packets.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-idr-flow-spec-v6-06"/>
        </reference>
        <reference anchor="I-D.ietf-idr-flowspec-redirect-ip" target="https://www.ietf.org/archive/id/draft-ietf-idr-flowspec-redirect-ip-02.txt" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-idr-flowspec-redirect-ip-02.xml">
          <front>
            <title>BGP Flow-Spec Redirect to IP Action</title>
            <author fullname="James Uttaro" surname="James Uttaro"/>
            <author fullname="Jeffrey Haas" surname="Jeffrey Haas"/>
            <author fullname="Matthieu Texier" surname="Matthieu Texier"/>
            <author fullname="Andy Karch" surname="Andy Karch"/>
            <author fullname="Saikat Ray" surname="Saikat Ray"/>
            <author fullname="Adam Simpson" surname="Adam Simpson"/>
            <author fullname="Wim Henderickx" surname="Wim Henderickx"/>
            <date day="5" month="February" year="2015"/>
            <abstract>
              <t>Flow-spec is an extension to BGP that allows for the dissemination of traffic flow specification rules. This has many possible applications but the primary one for many network operators is the distribution of traffic filtering actions for DDoS mitigation. The flow-spec standard [RFC 5575] defines a redirect-to-VRF action for policy-based forwarding but this mechanism can be difficult to use, particularly in networks without L3 VPN infrastructure. This draft defines a new redirect-to-IP flow-spec action that provides a simpler method of policy-based forwarding. The details of the action, including the IPv4 or IPv6 target address, are encoded in newly defined BGP extended communities.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-idr-flowspec-redirect-ip-02"/>
        </reference>
        <reference anchor="I-D.ietf-idr-flowspec-redirect-rt-bis" target="https://www.ietf.org/archive/id/draft-ietf-idr-flowspec-redirect-rt-bis-05.txt" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-idr-flowspec-redirect-rt-bis-05.xml">
          <front>
            <title>Clarification of the Flowspec Redirect Extended Community</title>
            <author fullname="Jeffrey Haas" surname="Jeffrey Haas"/>
            <date day="27" month="July" year="2015"/>
            <abstract>
              <t>This document updates RFC 5575 ("Dissemination of Flow Specification Rules") to clarify the formatting of the BGP Flowspec Redirect Extended Community.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-idr-flowspec-redirect-rt-bis-05"/>
        </reference>
      </references>
    </references>
  </back>
</rfc>
