<?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-ospf-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:41:27Z -->
	<front>
    <title abbrev="OSPF FlowSpec">OSPF Extensions for Flow Specification</title>
    <seriesInfo name="Internet-Draft" value="draft-liang-lsr-ospf-flowspec-extensions-01"/>
    <author initials="Q." surname="Liang" fullname="Qiandeng Liang">
      <organization>Huawei Technologies</organization>
      <address>
        <email>liangqiandeng@huawei.com</email>
      </address>
    </author>
    <author initials="Q." surname="Gao" fullname="Qiangzhou Gao">
      <organization>Huawei Technologies</organization>
      <address>
        <email>gaoqiangzhou@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="K." surname="Patel" fullname="Keyur Patel">
      <organization>Cisco Systems</organization>
      <address>
        <postal>
          <street>170 W. Tasman Drive</street>
          <street>San Jose, CA  95134</street>
          <street>USA</street>
        </postal>
        <email>keyupate@cisco.com</email>
      </address>
    </author>
    <author initials="A." surname="Lindem" fullname="Acee Lindem">
      <organization>Cisco Systems</organization>
      <address>
        <postal>
          <street>301 Midenhall Way</street>
          <street>Cary, NC  27519</street>
          <street>USA</street>
        </postal>
        <email>acee@cisco.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 routes are used to distribute
   traffic filtering rules used to filter Denial-of-Service
   (DoS) attacks. For networks that only deploy an IGP (Interior
   Gateway Protocol) (e.g., OSPF), it is required that the IGP is
   extended to distribute Flow Specification or FlowSpec routes.</t>
      <t>
   This document discusses use cases for distributing flow
   specification (FlowSpec) routes using OSPF.  Furthermore, this
   document defines a OSPF FlowSpec Opaque Link State Advertisement
   (LSA) encoding format that can be used to distribute FlowSpec routes,
   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.  <xref target="RFC5575" format="default"/>
   allows flow specifications received from an external autonomous
   system to be forwarded to a given BGP peer.  However, in order to
   block the attack traffic more effectively, it is better to distribute
   the BGP FlowSpec routes to the customer network, which is much closer
   to the attacker.</t>
      <t>
   For the networks deploying only an IGP (e.g., OSPF), it is expected
   to extend the IGP (OSPF in this document) to distribute FlowSpec
   routes.  This document discusses the use cases for distributing
   FlowSpec routes using OSPF.  Furthermore, this document also defines
   a new OSPF FlowSpec Opaque Link State Advertisement (LSA) <xref target="RFC5250" format="default"/>
   encoding format that can be used to distribute FlowSpec routes to the
   edge routers in the customer 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 OSPF is different from BGP.  The OSPF 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="RFC5250" 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, including filters and actions.  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 OSPF based FlowSpec Distribution</name>
      <t>
   For the networks deploying only an IGP (e.g., OSPF), it is expected
   to extend the IGP (OSPF in this document) to distribute FlowSpec
   routes, because when the FlowSpec routes are installed in the
   customer network, they are closer to the attacker than when they are
   installed in the provider network.  Consequently, the attack traffic
   could be blocked or the suspicious traffic could be limited to a low
   rate as early as possible.</t>
      <t>
   The following sub-sections discuss the use cases for OSPF based
   FlowSpec route distribution.</t>
      <section anchor="sect-3.1" numbered="true" toc="default">
        <name>OSPF Campus Network</name>
        <t>
   For networks not deploying BGP, for example, the campus network using
   OSPF, it is expected to extend OSPF to distribute FlowSpec routes as
   shown in Figure 3.  In this kind of network, the traffic analyzer
   could be deployed with a router, then the FlowSpec routes from the
   traffic analyzer need to be distributed to the other routers in this
   domain using OSPF.</t>
        <figure anchor="ure-ospf-campus-network">
          <name>OSPF Campus Network</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
              +--------+
              |Traffic |
              +---+Analyzer|
              |   +--------+
              |
              |FlowSpec
              |
              |
              +--+-------+           +----------+        +--------+
              | Router A +-----------+ Router B +--------+Attacker|
              +----------+           +----------+        +--------+

              |                     |                  |
              |    OSPF FlowSpec    |  Attack Traffic  |
              |                     |                  |
]]></artwork>
        </figure>
      </section>
      <section anchor="sect-3.2" numbered="true" toc="default">
        <name>BGP/MPLS VPN</name>
        <t>
   <xref target="RFC5575" format="default"/> defines a BGP NLRI encoding format to distribute traffic
   flow specifications in BGP deployed network.  However, in the BGP/
   MPLS VPN scenario, the IGP (e.g., IS-IS, or OSPF) is used between the
   PE (Provider Edge) and CE (Customer Edge) in many deployments.  In
   order to distribute the FlowSpec routes to the customer network, the
   IGP needs to support FlowSpec route distribution.  The FlowSpec
   routes are usually generated by the traffic analyzer or the traffic
   policy center in the network.  Depending on the location of the
   traffic analyzer deployment, two different distribution scenarios are
   discussed below.</t>
        <section anchor="sect-3.2.1" numbered="true" toc="default">
          <name>Traffic Analyzer Deployed in Provider Network</name>
          <t>
   The traffic analyzer (also acting as the traffic policy center) could
   be deployed in the provider network as shown in Figure 1.  If the
   traffic analyzer detects attack traffic from the customer network
   VPN1, it would generate the FlowSpec routes for preventing DoS
   attacks.  FlowSpec routes with a Route Distinguisher (RD) in the
   Network Layer Reachability information (NRLI) corresponding to VPN1
   are distributed from the traffic analyzer to the PE1 to which the
   traffic analyzer is attached.  If the traffic analyzer is also a BGP
   speaker, it can distribute the FlowSpec routes using BGP <xref target="RFC5575" format="default"/>.
   Then the PE1 distributes the FlowSpec routes further to the PE2.
   Finally, the FlowSpec routes need to be distributed from PE2 to the
   CE2 using OSPF, i.e., to the customer network VPN1.  As an attacker
   is more likely in the customer network, FlowSpec routes installed
   directly on CE2 could mitigate the impact of DoS attacks better.</t>
          <figure anchor="ure-traffic-analyzer-deployed-in-provider-network">
            <name>Traffic Analyzer deployed in Provider Network</name>
            <artwork name="" type="" align="left" alt=""><![CDATA[
      +--------+
      |Traffic |
      +---+Analyzer|                      -----------
      |   +--------+                   //-           -\\
      |                             ///                 \\\
      |FlowSpec                    /                       \
      |                          //                         \\
      |                         |                             |
      +--+--+       +-----+        | +-----+       +--------+    |
      | PE1 +-------+ PE2 +-------+--+ CE2 +-------+Attacker|     |
      +-----+       +-----+       |  +-----+       +--------+     |
      |                               |
      |              |           |    |                |       |
      | BGP FlowSpec | OSPF FlowSpec  |  Attack Traffic|       |
      |              |            \\  |                |     //
      \                       /
      \\\      VPN1       ///
      \\--         --//
      ---------
]]></artwork>
          </figure>
        </section>
        <section anchor="sect-3.2.2" numbered="true" toc="default">
          <name>Traffic Analyzer Deployed in Customer Network</name>
          <t>
   The traffic analyzer (also acting as the traffic policy center) could
   be deployed in the customer network as shown in Figure 2.  If the
   traffic analyzer detects attack traffic, it would generate FlowSpec
   routes to prevent associated DoS attacks.  Then the FlowSpec routes
   would be distributed from the traffic analyzer to the CE1 using OSPF
   or another policy protocol (e.g., RESTful API over HTTP).
   Furthermore, the FlowSpec routes need to be distributed throughout
   the provider network via PE1/PE2 to CE2, i.e., to the remote customer
   network VPN1 Site1.  If the FlowSpec routes installed on the CE2, it
   could block the attack traffic as close to the source of the attack
   as possible.</t>
          <figure anchor="ure-traffic-analyzer-deployed-in-customer-network">
            <name>Traffic Analyzer deployed in Customer Network</name>
            <artwork name="" type="" align="left" alt=""><![CDATA[
+--------+
|Traffic |
+---+Analyzer|
|   +--------+                                     --------
|                                              //--        --\\
|FlowSpec                                    //                \\
|                                           /                    \
|                                         //                      \\
+--+--+        +-----+       +-----+        | +-----+      +--------+
| CE1 +--------+ PE1 +-------+ PE2 +--------+-+ CE2 +------+Attacker|
+-----+        +-----+       +-----+        | +-----+      +--------+
|                            |
|               |             |          |     |                |
| OSPF FlowSpec | BGP FlowSpec| OSPF FlowSpec  | Attack Traffic |
|               |             |          |     |                |
|                          |
\\                      //
\    VPN1 Site1      /
\\                //
\\--        --//
--------
]]></artwork>
          </figure>
        </section>
        <section anchor="sect-3.2.3" numbered="true" toc="default">
          <name>Policy Configuration</name>
          <t>
   The CE or PE could deploy local filtering policies to filter OSPF
   FlowSpec rules, for example, deploying a filtering policy to filter
   the incoming OSPF FlowSpec rules in order to prevent illegal or
   invalid FlowSpec rules from being applied.</t>
          <t>
   The PE should configure FlowSpec importing policies to control
   importing action between the BGP IP/VPN FlowSpec RIB and the OSPF
   Instance FlowSpec RIB.  Otherwise, the PE couldn't transform a BGP
   IP/VPN FlowSpec rule to an OSPF FlowSpec rule or transform an OSPF
   FlowSpec rule to a BGP IP/VPN FlowSpec rule.</t>
        </section>
      </section>
    </section>
    <section anchor="sect-4" numbered="true" toc="default">
      <name>OSPF Extensions for FlowSpec Rules</name>
      <section anchor="sect-4.1" numbered="true" toc="default">
        <name>FlowSpec LSA</name>
        <section anchor="sect-4.1.1" numbered="true" toc="default">
          <name>OSPFv2 FlowSpec Opaque LSA</name>
          <t>
   This document defines a new OSPFv2 flow specification Opaque Link
   State Advertisement (LSA) encoding format that can be used to
   distribute traffic flow specifications.  This new OSPF FlowSpec
   Opaque LSA is extended based on <xref target="RFC5250" format="default"/>.</t>
          <dl newline="true" spacing="normal" indent="0">
            <dt>The OSPFv2 FlowSpec Opaque LSA is defined below in Figure 4:</dt>
            <dd/>
          </dl>
          <figure anchor="ure-ospfv2-flowspec-opaque-lsa">
            <name>OSPFv2 FlowSpec Opaque LSA</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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           LS Age              |   Options     |   LS Type     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Opaque Type  |                Opaque ID                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Advertising Router                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      LS sequence number                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         LS checksum           |           Length              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |                              TLVs                             |
   +                                                               +
   |                              ...                              |
]]></artwork>
          </figure>
          <dl newline="false" spacing="normal" indent="3">
            <dt/>
            <dd>
      LS age: the same as defined in <xref target="RFC2328" format="default"/>.</dd>
          </dl>
          <dl newline="false" spacing="normal" indent="3">
            <dt/>
            <dd>
      Options: the same as defined in <xref target="RFC2328" format="default"/>.</dd>
          </dl>
          <dl newline="false" spacing="normal" indent="3">
            <dt/>
            <dd>
      LS type: A type-11 or type-10 Opaque-LSA SHOULD be originated.
      Since the type-11 LSA has the same flooding scope as a type-5 LSA
      as stated in <xref target="RFC5250" format="default"/>, it will not be flooded into stub areas or
      NSSAs (Not-So-Stubby Areas).  When stub or NSSA areas are
      encountered in the scenario of flow spec, we may have to make our
      choice, either making peace with it and filtering the DoS traffic
      at ABRs or generating a new type-10 Opaque-LSA into stub/NSSA
      areas, which may aggravate the burden of devices in that area.</dd>
          </dl>
          <dl newline="false" spacing="normal" indent="3">
            <dt/>
            <dd>
      Opaque type: OSPF FlowSpec Opaque LSA (Type Code: TBD1).</dd>
          </dl>
          <dl newline="false" spacing="normal" indent="3">
            <dt/>
            <dd>
      Opaque ID: the same as defined in <xref target="RFC5250" format="default"/>.</dd>
          </dl>
          <dl newline="false" spacing="normal" indent="3">
            <dt/>
            <dd>
      Advertising Router: the same as defined in <xref target="RFC2328" format="default"/>.</dd>
          </dl>
          <dl newline="false" spacing="normal" indent="3">
            <dt/>
            <dd>
      LS sequence number: the same as defined in <xref target="RFC2328" format="default"/>.</dd>
          </dl>
          <dl newline="false" spacing="normal" indent="3">
            <dt/>
            <dd>
      LS checksum: the same as defined in <xref target="RFC2328" format="default"/>.</dd>
          </dl>
          <dl newline="false" spacing="normal" indent="3">
            <dt/>
            <dd>
      Length: the same as defined in <xref target="RFC2328" format="default"/>.</dd>
          </dl>
          <dl newline="false" spacing="normal" indent="3">
            <dt/>
            <dd>
      TLVs: one or more TLVs MAY be included in a FlowSpec Opaque LSA to
      carry FlowSpec information.</dd>
          </dl>
          <t>
   The variable TLVs section consists of one or more nested Type/Length/
   Value (TLV) tuples.  Nested TLVs are also referred to as sub-TLVs.
   The format of each TLV is shown in Figure 5:</t>
          <figure anchor="ure-tlv-format">
            <name>TLV Format</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                |        Length                 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                           Values...                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>
          <t>
   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).  The TLV
   is padded to 4-octet alignment; padding is not included in the length
   field (so a 3-octet value would have a length of 3, but the total
   size of the TLV would be 8 octets).  Nested TLVs are also 32-bit
   aligned.  For example, a 1-octet value would have the length field
   set to 1, and 3 octets of padding would be added to the end of the
   value portion of the TLV.</t>
          <t>
   If FlowSpec Opaque LSA is Type-11 Opaque LSA, it is not flooded into
   Stub and NSSA areas.  As the traffic accessing a network segment
   outside Stub and NSSA areas would be aggregated to the ABR, FlowSpec
   rules could be applied on the ABR instead of disseminating them into
   Stub and NSSA areas.</t>
        </section>
        <section anchor="sect-4.1.2" numbered="true" toc="default">
          <name>OSPFv3 FlowSpec LSA</name>
          <t>
   This document defines a new OSPFv3 flow specification LSA encoding
   format that can be used to distribute traffic flow specifications.
   This new OSPFv3 FlowSpec LSA is extended based on <xref target="RFC5340" format="default"/>.</t>
          <dl newline="true" spacing="normal" indent="0">
            <dt>The OSPFv3 FlowSpec LSA is defined below in Figure 6:</dt>
            <dd/>
          </dl>
          <figure anchor="ure-ospfv3-flowspec-lsa">
            <name>OSPFv3 FlowSpec LSA</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
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |           LS Age              |            LS Type            |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                          Link State ID                        |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                      Advertising Router                       |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                      LS sequence number                       |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |         LS checksum           |           Length              |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                                                               |
  +                                                               +
  |                              TLVs                             |
  +                                                               +
  |                              ...                              |
]]></artwork>
          </figure>
          <dl newline="false" spacing="normal" indent="3">
            <dt/>
            <dd>
      LS age: the same as defined in <xref target="RFC5340" format="default"/>.</dd>
          </dl>
          <dl newline="false" spacing="normal" indent="3">
            <dt/>
            <dd>
      LS type: the same as defined in <xref target="RFC5340" format="default"/>.  The format of the LS
      type is as follows:</dd>
          </dl>
          <figure anchor="ure-lsa-type">
            <name>LSA Type</name>
            <artwork name="" type="" align="left" alt=""><![CDATA[
             0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
             +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
             |U |S2|S1|           LSA Function Code          |
             +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
]]></artwork>
          </figure>
          <dl newline="false" spacing="normal" indent="3">
            <dt/>
            <dd>
      In this document, the U bit should be set indicating that the
      OSPFv3 FlowSpec LSA should be flooded even if it is not
      understood.  For the area scope, the S1 bit should be set and the
      S2 should be clear.  For the AS scope, the S1 bit should be clear
      and the S2 bit should be set.  A new LSA Function Code (TBD2)
      needs to be defined for OSPFv3 FlowSpec LSA.  To facilitate inter-
      area reachability validation, any OSPFv3 router originating AS
      scoped LSAs is considered an AS Boundary Router (ASBR).</dd>
          </dl>
          <dl newline="false" spacing="normal" indent="3">
            <dt/>
            <dd>
      Link State ID: the same as defined in <xref target="RFC5340" format="default"/>.</dd>
          </dl>
          <dl newline="false" spacing="normal" indent="3">
            <dt/>
            <dd>
      Advertising Router: the same as defined in <xref target="RFC5340" format="default"/>.</dd>
          </dl>
          <dl newline="false" spacing="normal" indent="3">
            <dt/>
            <dd>
      LS sequence number: the same as defined in <xref target="RFC5340" format="default"/>.</dd>
          </dl>
          <dl newline="false" spacing="normal" indent="3">
            <dt/>
            <dd>
      LS checksum: the same as defined in <xref target="RFC5340" format="default"/>.</dd>
          </dl>
          <dl newline="false" spacing="normal" indent="3">
            <dt/>
            <dd>
      Length: the same as defined in <xref target="RFC5340" format="default"/>.</dd>
          </dl>
          <dl newline="false" spacing="normal" indent="3">
            <dt/>
            <dd>
      TLVs: one or more TLVs MAY be included in a OSPFv3 FlowSpec LSA to
      carry FlowSpec information.</dd>
          </dl>
        </section>
      </section>
      <section anchor="sect-4.2" numbered="true" toc="default">
        <name>OSPF FlowSpec Filters TLV</name>
        <t>
   The FlowSpec Opaque LSA carries one or more FlowSpec Filters TLVs and
   corresponding FlowSpec Action TLVs.  The OSPF FlowSpec Filters TLV is
   defined below in Figure 8.</t>
        <figure anchor="ure-ospf-flowspec-filters-tlv">
          <name>OSPF FlowSpec Filters 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                |        Length                 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    Flags      |         Filters (variable)                    ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   ~                        Filters (variable)                     ~
   +                                                               +
   |                             ...                               |
]]></artwork>
        </figure>
        <t>
   Type: the TLV type (Type Code: TBD3)</t>
        <t>
   Length: the size of the value field in octets</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
   <xref target="sect-4.2.2" format="default"/> need to be enforced.</t>
        <t>
   Filters: the same as "flow-spec NLRI value" defined in <xref target="RFC5575" format="default"/> and
   <xref target="I-D.ietf-idr-flow-spec-v6" format="default"/>.</t>
        <dl newline="true" spacing="normal" indent="0">
          <dt>Table 1: OSPF Supported FlowSpec Filters</dt>
          <dd/>
        </dl>
        <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>
            <tr>
              <td align="left">14</td>
              <td align="left">Interface-Set</td>
              <td align="left">Described Below</td>
            </tr>
          </tbody>
        </table>
        <section anchor="sect-4.2.1" numbered="true" toc="default">
          <name>Interface-Set TLV</name>
          <t>
   The Interface-Set TLV is used to limit the FlowSpec rules to a set of
   interfaces configured locally with the specified Group ID.  The
   Interface-Set TLV was inspired by</t>
          <t>
   <xref target="I-D.litkowski-idr-flowspec-interfaceset" format="default"/> and uses similar encodings.
   The Autonomous System (AS) number is not required since OSPF usage is
   within a single AS.</t>
          <dl newline="true" spacing="normal" indent="0">
            <dt>The Interface-Set 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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     TBD, 14 Suggested         |             4                 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |O|I|    Flags                  |       Group ID                |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          <t>
   O : if set, the flow specification rule MUST be applied in outbound
   direction to the interface set referenced by the specified Group ID.</t>
          <t>
   I : if set, the flow specification rule MUST be applied in input
   direction to the interface set referenced by the specified Group ID</t>
          <t>
   Both flags can be set at the same time in the interface-set extended
   community leading to flow rule to be applied in both directions.  An
   interface-set TLV with both flags set to zero MUST be treated as an
   error and as consequence, the FlowSpec update MUST be ignore and an
   error should be logged.</t>
          <t>
   The Group Identifier is coded as a 16-bit number (values goes from 0
   to 65535).</t>
          <t>
   Multiple instances of the interface-set community may be present in a
   Flow-Spec rule.  This may appear if the flow rule need to be applied
   to multiple set of interfaces.</t>
        </section>
        <section anchor="sect-4.2.2" 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.2.3" 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 OSPF FlowSpec should support similar
   features to mitigate the unnecessary application of traffic filter
   rules.  The OSPF 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 OSPF 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 a speaker when the
   filter is considered for an installation in its FIB.  An OSPF speaker
   MUST flood OSPF FlowSpec LSA as per the rules defined in <xref target="RFC2328" format="default"/>
   regardless of the validation state of the prefix filters.</t>
        </section>
      </section>
      <section anchor="sect-4.3" numbered="true" toc="default">
        <name>OSPF FlowSpec Action 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 OSPF FlowSpec action TLVs,
   except Redirect, are same as defined in <xref target="RFC5575" format="default"/>.</t>
        <t>
   Redirect: IPv4 or IPv6 address.  This IP address may correspond to a
   tunnel, i.e., the redirect allows the traffic to be redirected to a
   directly attached next-hop or a next-hop requiring a route lookup.</t>
        <table anchor="tab-traffic-filtering-actions-in-rfc5575-etc." align="center">
          <name>Traffic Filtering Actions in [RFC5575], etc.</name>
          <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">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.3.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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     TBD5,0x8006 suggested     |             4                 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                          Traffic-rate                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

]]></artwork>
<t>Traffic-rate: the same as defined in [RFC5575].</t>
        </section>
        <section anchor="sect-4.3.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
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     TBD6, 0x8007 suggested    |             2                 |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |         Reserved          |S|T|                               |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


]]></artwork> <t>S flag and T flag: the same as defined in [RFC5575].</t>
        </section>
        <section anchor="sect-4.3.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
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     TBD7, 0x8009 suggested    |             2                 |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     Reserved      | DSCP Value|                               |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

]]></artwork>
    <t>DSCP value: the same as defined in [RFC5575].</t>
        </section>
        <section anchor="sect-4.3.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
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     TBD8, 0x8108 suggested    |             6                 |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                      IPv4 Address                             |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     Reserved                |C|                               |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          <t>
Redirect to IPv6 TLV is encoded as (Only for OSPFv3): </t>
<artwork name="" type="" align="left" alt=""><![CDATA[
   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     TBD9, 0x800b suggested    |             18                |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                                                               |
  |                      IPv6 Address                             |
  |                                                               |
  |                                                               |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     Reserved                |C|                               |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          <t>
   IPv4/6 Address: the redirection target address. </t>
   <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 anchor="sect-4.4" numbered="true" toc="default">
        <name>Capability Advertisement</name>
        <t>
   This document defines a capability bit for OSPF Router-Information
   LSA <xref target="RFC7770" format="default"/> as FlowSpec Capability Advertisement bit.  When set,
   the OSPF router indicates its ability to support the FlowSpec
   functionality.  The FlowSpec Capability Advertisement bit has a value
   to be assigned by IANA from OSPF Router Functional Capability Bits
   Registry [I-D.ietf-ospf-rfc4970bis].</t>
      </section>
    </section>
    <section anchor="sect-5" numbered="true" toc="default">
      <name>Redistribution of FlowSpec Routes</name>
      <t>
   In certain scenarios, FlowSpec routes MAY get redistributed from one
   protocol domain to another; specifically from BGP to OSPF and vice-
   versa.  When redistributed from BGP, the OSPF speaker SHOULD generate
   an Opaque LSA for the redistributed routes and announce it within an
   OSPF domain.  An implementation MAY provide an option for an OSPF
   speaker to announce a redistributed FlowSpec route within a OSPF
   domain regardless of being installed in its local FIB.  An
   implementation MAY impose an upper bound on number of FlowSpec routes
   that an OSPF router MAY advertise.</t>
    </section>
    <section anchor="sect-6" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>
   This document defines a new OSPFv2 Opaque LSA, i.e., OSPFv2 FlowSpec
   Opaque LSA (Type Code: TBD1), which is used to distribute traffic
   flow specifications.</t>
      <t>
   This document defines a new OSPFv3 LSA, i.e., OSPFv3 FlowSpec LSA
   (LSA Function Code: TBD2), which is used to distribute traffic flow
   specifications.</t>
      <t>
   This document defines OSPF FlowSpec Filters TLV (Type Code: TBD3),
   which is used to describe the filters.</t>
      <t>
   This document defines a new FlowSpec capability which need to be
   advertised in an RI Opaque LSA.  A new informational capability bit
   needs to be assigned for OSPF FlowSpec feature (FlowSpec Bit: TBD4).</t>
      <t>
   This document defines a new Router LSA bit known as a FlowSpec
   Capability Advertisement bit.  This document requests IANA to assign
   a bit code type for FlowSpec Capability Advertisement bit from the
   OSPF Router Functional Capability Bits registry.</t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
          Type 1 - Destination IPv4/IPv6 Prefix
          Type 2 - Source IPv4/IPv6 Prefix
          Type 3 - IP Protocol/Next Header
          Type 4 - Port
          Type 5 - Destination port
          Type 6 - Source port
          Type 7 - ICMP type
          Type 8 - ICMP code
          Type 9 - TCP flags
          Type 10 - Packet length
          Type 11 - DSCP
          Type 12 - Fragment
          Type 13 - Flow Label
          Type 14 - Interface-Set
]]></artwork>
      <t>
   This document defines a group of FlowSpec actions.  The following TLV
   types need to be assigned:</t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
          Type 0x8006(TBD5) - traffic-rate
          Type 0x8007(TBD6) - traffic-action
          Type 0x8009(TBD7) - traffic-marking
          Type 0x8108(TBD8) - redirect to IPv4
          Type 0x800b(TBD9) - redirect to IPv6
]]></artwork>
    </section>
    <section anchor="sect-7" numbered="true" toc="default">
      <name>Security considerations</name>
      <t>
   This extension to OSPF does not change the underlying security issues
   inherent in the existing OSPF.  Implementations must assure that
   malformed TLV and Sub-TLV permutations do not result in errors which
   cause hard OSPF failures.</t>
    </section>
    <section anchor="sect-8" numbered="true" toc="default">
      <name>Acknowledgement</name>
      <t>
   The authors would also like to thank Jianjie You, Nan Wu, Peng Fan, Burjiz Pithawala, Rashmi
   Shrivastava and Mike Dubrovsky for their contribution to the original
   version of the document.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <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="RFC2328" target="https://www.rfc-editor.org/info/rfc2328" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2328.xml">
          <front>
            <title>OSPF Version 2</title>
            <author fullname="J. Moy" initials="J." surname="Moy"/>
            <date month="April" year="1998"/>
            <abstract>
              <t>This memo documents version 2 of the OSPF protocol.  OSPF is a link- state routing protocol. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="54"/>
          <seriesInfo name="RFC" value="2328"/>
          <seriesInfo name="DOI" value="10.17487/RFC2328"/>
        </reference>
        <reference anchor="RFC5250" target="https://www.rfc-editor.org/info/rfc5250" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5250.xml">
          <front>
            <title>The OSPF Opaque LSA Option</title>
            <author fullname="L. Berger" initials="L." surname="Berger"/>
            <author fullname="I. Bryskin" initials="I." surname="Bryskin"/>
            <author fullname="A. Zinin" initials="A." surname="Zinin"/>
            <author fullname="R. Coltun" initials="R." surname="Coltun"/>
            <date month="July" year="2008"/>
            <abstract>
              <t>This document defines enhancements to the OSPF protocol to support a new class of link state advertisements (LSAs) called Opaque LSAs. Opaque LSAs provide a generalized mechanism to allow for the future extensibility of OSPF. Opaque LSAs consist of a standard LSA header followed by application-specific information. The information field may be used directly by OSPF or by other applications. Standard OSPF link-state database flooding mechanisms are used to distribute Opaque LSAs to all or some limited portion of the OSPF topology.</t>
              <t>This document replaces RFC 2370 and adds to it a mechanism to enable an OSPF router to validate Autonomous System (AS)-scope Opaque LSAs originated outside of the router's OSPF area. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5250"/>
          <seriesInfo name="DOI" value="10.17487/RFC5250"/>
        </reference>
        <reference anchor="RFC5340" target="https://www.rfc-editor.org/info/rfc5340" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5340.xml">
          <front>
            <title>OSPF for IPv6</title>
            <author fullname="R. Coltun" initials="R." surname="Coltun"/>
            <author fullname="D. Ferguson" initials="D." surname="Ferguson"/>
            <author fullname="J. Moy" initials="J." surname="Moy"/>
            <author fullname="A. Lindem" initials="A." surname="Lindem"/>
            <date month="July" year="2008"/>
            <abstract>
              <t>This document describes the modifications to OSPF to support version 6 of the Internet Protocol (IPv6). The fundamental mechanisms of OSPF (flooding, Designated Router (DR) election, area support, Short Path First (SPF) calculations, etc.) remain unchanged. However, some changes have been necessary, either due to changes in protocol semantics between IPv4 and IPv6, or simply to handle the increased address size of IPv6. These modifications will necessitate incrementing the protocol version from version 2 to version 3. OSPF for IPv6 is also referred to as OSPF version 3 (OSPFv3).</t>
              <t>Changes between OSPF for IPv4, OSPF Version 2, and OSPF for IPv6 as described herein include the following. Addressing semantics have been removed from OSPF packets and the basic Link State Advertisements (LSAs). New LSAs have been created to carry IPv6 addresses and prefixes. OSPF now runs on a per-link basis rather than on a per-IP-subnet basis. Flooding scope for LSAs has been generalized. Authentication has been removed from the OSPF protocol and instead relies on IPv6's Authentication Header and Encapsulating Security Payload (ESP).</t>
              <t>Even with larger IPv6 addresses, most packets in OSPF for IPv6 are almost as compact as those in OSPF for IPv4. Most fields and packet- size limitations present in OSPF for IPv4 have been relaxed. In addition, option handling has been made more flexible.</t>
              <t>All of OSPF for IPv4's optional capabilities, including demand circuit support and Not-So-Stubby Areas (NSSAs), are also supported in OSPF for IPv6. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5340"/>
          <seriesInfo name="DOI" value="10.17487/RFC5340"/>
        </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-03.txt" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-idr-bgp-flowspec-oid-03.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="21" month="March" year="2016"/>
            <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-03"/>
        </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-07.xml" target="http://www.ietf.org/internet-drafts/draft-ietf-idr-flow-spec-v6-07.txt">
          <front>
            <title>Dissemination of Flow Specification Rules for IPv6</title>
            <author initials="D" surname="McPherson" fullname="Danny McPherson">
              <organization/>
            </author>
            <author initials="R" surname="Raszuk" fullname="Robert Raszuk">
              <organization/>
            </author>
            <author initials="B" surname="Pithawala" fullname="Burjiz Pithawala">
              <organization/>
            </author>
            <author initials="a" surname="akarch@cisco.com" fullname="akarch@cisco.com">
              <organization/>
            </author>
            <author initials="S" surname="Hares" fullname="Susan Hares">
              <organization/>
            </author>
            <date month="March" day="19" year="2016"/>
            <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-07"/>
          <format type="PDF" target="http://www.ietf.org/internet-drafts/draft-ietf-idr-flow-spec-v6-07.pdf"/>
        </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.litkowski-idr-flowspec-interfaceset" target="https://www.ietf.org/archive/id/draft-litkowski-idr-flowspec-interfaceset-03.txt" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-litkowski-idr-flowspec-interfaceset-03.xml">
          <front>
            <title>Applying BGP flowspec rules on a specific interface set</title>
            <author fullname="Stephane Litkowski" surname="Stephane Litkowski"/>
            <author fullname="Adam Simpson" surname="Adam Simpson"/>
            <author fullname="Keyur Patel" surname="Keyur Patel"/>
            <author fullname="Jeff Haas" surname="Jeff Haas"/>
            <date day="8" month="December" year="2015"/>
            <abstract>
              <t>BGP Flow-spec is an extension to BGP that allows for the dissemination of traffic flow specification rules. The primary application of this extension is DDoS mitigation where the flowspec rules are applied in most cases to all peering routers of the network. This document will present another use case of BGP Flow-spec where flow specifications are used to maintain some access control lists at network boundary. BGP Flowspec is a very efficient distributing machinery that can help in saving OPEX while deploying/updating ACLs. This new application requires flow specification rules to be applied only on a specific subset of interfaces and in a specific direction. The current specification of BGP Flow-spec does not detail where the flow specification rules need to be applied. This document presents a new interface-set flowspec action that will be used in complement of other actions (marking, rate-limiting ...). The purpose of this extension is to inform remote routers on where to apply the flow specification. This extension can also be used in a DDoS mitigation context where a provider wants to apply the filtering only on specific peers.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-litkowski-idr-flowspec-interfaceset-03"/>
        </reference>
        <reference anchor="RFC7770" target="https://www.rfc-editor.org/info/rfc7770" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7770.xml">
          <front>
            <title>Extensions to OSPF for Advertising Optional Router Capabilities</title>
            <author fullname="A. Lindem" initials="A." role="editor" surname="Lindem"/>
            <author fullname="N. Shen" initials="N." surname="Shen"/>
            <author fullname="JP. Vasseur" initials="JP." surname="Vasseur"/>
            <author fullname="R. Aggarwal" initials="R." surname="Aggarwal"/>
            <author fullname="S. Shaffer" initials="S." surname="Shaffer"/>
            <date month="February" year="2016"/>
            <abstract>
              <t>It is useful for routers in an OSPFv2 or OSPFv3 routing domain to know the capabilities of their neighbors and other routers in the routing domain.  This document proposes extensions to OSPFv2 and OSPFv3 for advertising optional router capabilities.  The Router Information (RI) Link State Advertisement (LSA) is defined for this purpose.  In OSPFv2, the RI LSA will be implemented with an Opaque LSA type ID.  In OSPFv3, the RI LSA will be implemented with a unique LSA type function code.  In both protocols, the RI LSA can be advertised at any of the defined flooding scopes (link, area, or autonomous system (AS)).  This document obsoletes RFC 4970 by providing a revised specification that includes support for advertisement of multiple instances of the RI LSA and a TLV for functional capabilities.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7770"/>
          <seriesInfo name="DOI" value="10.17487/RFC7770"/>
        </reference>
      </references>
    </references>
  </back>
</rfc>
