<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.11 (Ruby 2.7.0) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-zhang-savnet-sav-ospf-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="SAV-OSPF">Source Address Validation in OSPF Networks</title>

    <author initials="Y." surname="Zhang" fullname="Yuanyuan Zhang">
      <organization>Zhongguancun Laboratory</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>zhangyy@zgclab.edu.cn</email>
      </address>
    </author>
    <author initials="M." surname="Xu" fullname="Mingwei Xu">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>xmw@cernet.edu.cn</email>
      </address>
    </author>
    <author initials="D." surname="Li" fullname="Dan Li">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>tolidan@tsinghua.edu.cn</email>
      </address>
    </author>
    <author initials="Y." surname="Wang" fullname="Yuliang Wang">
      <organization>Quan Cheng Laboratory</organization>
      <address>
        <postal>
          <city>Jinan</city>
          <country>China</country>
        </postal>
        <email>ts-wangyl@qcl.edu.cn</email>
      </address>
    </author>
    <author initials="L." surname="Qin" fullname="Lancheng Qin">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>qlc19@mails.tsinghua.edu.cn</email>
      </address>
    </author>

    <date year="2024" month="May" day="21"/>

    <area>Routing</area>
    <workgroup>SAVNET</workgroup>
    <keyword>source address validation</keyword> <keyword>OSPF</keyword>

    <abstract>


<?line 80?>

<t>This document proposes a comprehensive intra-domain Source Address Validation (SAV) solution to deal with different source address spoofing scenarios. It can be applied to networks running OSPFv2 and OSPFv3. The Source Prefix Validation Sub-TLV is defined to support automatic SAV-specific information exchanging between area-local routers, which helps routers generate accurate SAV rules to verify the validity of data packets.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        The latest revision of this draft can be found at <eref target="https://wsxyer.github.io/draft-savnet-ospf-extensions/draft-zhang-savnet-sav-ospf.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-zhang-savnet-sav-ospf/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        SAVNET Working Group mailing list (<eref target="mailto:savnet@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/savnet/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/savnet/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/wsxyer/draft-savnet-ospf-extensions"/>.</t>
    </note>


  </front>

  <middle>


<?line 84?>

<section anchor="introduction"><name>Introduction</name>

<t>In the realm of network security, the authenticity of packet sources stands as a fundamental pillar. Source address spoofing, wherein an attacker deceives a network by masquerading as a legitimate user, poses severe risks including but not limited to identity theft, unauthorized network access, and the facilitation of denial-of-service (DoS) attacks. Such activities compromise the integrity of data, disrupt service operations, and erode the trust in network communications.</t>

<t>Implementing robust source address validation (SAV) mechanisms within domains is crucial for mitigating these threats. Representative existing solutions for intra-domain source address validation include ACL-based ingress filtering<xref target="RFC2827"/><xref target="RFC3704"/>, Strict uRPF<xref target="RFC3704"/>, etc. However, as analyzed in <xref target="intra-domain-ps"/>, these mechanisms often suffer from high operational overhead and limitations in their accuracy, leading to potential mismanagement and false positives in dynamic network environments.</t>

<t>To address these shortcomings, the Intra-domain Source Address Validation (SAVNET) Architecture<xref target="intra-domain-arch"/> proposes a framework that use both local routing information and SAV-specific information exchanged among routers to achieve accurate SAV in an intra-domain network by an automatic way.</t>

<t>This document follows the Intra-domain SAVNET architecture and delves into the SAV mechanisms that can be implemented in OSPF networks to address various intra-domain source address spoofing scenarios. These mechanisms leverage either routing information from the LSDB or SAV-specific information from other routers to achieve accurate and automated SAV. A new Source Prefix Validation Sub-TLV is defined to enable the exchange of SAV-specific information among OSPF routers. It equips routers with the capability to recognize all the legitimate ingress interfaces a source prefix might reach along its actual forwarding paths—paths not only defined by routing protocols but also specified by network administrators based on policies. Routers can use the accurate information they possess to prevent both the erroneous blocking of legitimate traffic and the spread of spoofed traffic within a network domain.</t>

<t>OSPF networks can fully or partially implement these SAV mechanisms as needed to achieve the following objectives:</t>

<t><list style="symbols">
  <t>Outbound traffic validation: prevent packets with spoofed source addresses generated by the stub networks from entering or moving within the domain.</t>
  <t>Inbound traffic validation: prevent packets spoofing the domain’s own source addresses originating from other domains from entering the domain.</t>
</list></t>

<section anchor="requirements-language"><name>Requirements Language</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

</section>
</section>
<section anchor="terminology"><name>Terminology</name>

<dl newline="true">
  <dt>SAV Rule</dt>
  <dd>
    <t>The rule that indicates the valid incoming interfaces for a specific source prefix or source IP address.</t>
  </dd>
  <dt>SAV Table</dt>
  <dd>
    <t>The table or data structure that implements the SAV rules and is used for source address validation on the data plane.</t>
  </dd>
  <dt>SAV-specific Information</dt>
  <dd>
    <t>The information specialized for SAV rule generation, which is exchanged among routers.</t>
  </dd>
  <dt>Policy-based Routing</dt>
  <dd>
    <t>Routing based on the policies defined by the network administrator.</t>
  </dd>
  <dt>Improper Block</dt>
  <dd>
    <t>The validation results that the packets with legitimate source addresses are blocked improperly due to inaccurate SAV rules.</t>
  </dd>
  <dt>Improper Permit</dt>
  <dd>
    <t>The validation results that the packets with spoofed source addresses are permitted improperly due to inaccurate SAV rules.</t>
  </dd>
</dl>

</section>
<section anchor="source-address-validation-in-ospf-networks"><name>Source Address Validation in OSPF Networks</name>

<section anchor="overview-sec"><name>Overview</name>
<t>In networks utilizing either OSPFv2 or OSPFv3 protocols, routers positioned at different locations within the network should undertake varying responsibilities in source address validation, collectively contributing to effective outbound and inbound traffic validation. Different validation modes as described in <xref target="sav-table"/> can be used in different scenarios as explained below.</t>

<t><list style="symbols">
  <t><strong>Edge Source Address Validation (Edge SAV)</strong>  <vspace blankLines='1'/>
Edge routers connected directly to stub networks are pivotal as starting points for traffic entering the intra-domain network. Performing SAV at these points ensures the legitimacy of outbound traffic’s source addresses right at the entry. If an edge router is aware of all prefixes of the connected stub network and is capable of implementing SAV, these prefixes should be added to an allowlist at the interface connected to the stub network. Packets originating from the stub network with source addresses matching the allowlist should be normally forwarded, while others should be blocked, thus preventing spoofed source address packets from entering the domain at their origin.</t>
  <t><strong>Transit Source Address Validation (Transit SAV)</strong>  <vspace blankLines='1'/>
Ensuring that all edge routers support Edge SAV might be challenging in a network environment composed of multi-vendor devices managed by different operations teams, due to differences in resource investment and technical capalilities. Full deployment of Edge SAV  could be a long-term process in such a situation. If not all edge routers can achieve accurate Edge SAV, packets with spoofed source addresses from stub networks might still appear within the domain. Under such circumstances, transit routers, responsible for forwarding packets, can perform source address validation during packet transit, further ensuring the authenticity of traffic forwarded in the domain.</t>
  <t><strong>Area Border Source Address Validation (Area Border SAV)</strong>  <vspace blankLines='1'/>
In large networks utilizing the OSPF protocol, an Autonomous System (AS) may be divided into multiple areas. To prevent routing loops in multi-area scenarios, traffic between non-backbone areas is typically routed through the backbone area, rather than crossing a third non-backbone area. Packets received at the Area Border Router (ABR) interfaces connected to a specific area should only have source addresses belonging to that area and not from other areas. It is practical for an ABR to add the prefixes advertised to that area in summary LSAs to a SAV blocklist at the interfaces connected to that specific area. This prevents inter-area source address spoofing by blocking packets whose source addresses matches this blocklist.</t>
  <t><strong>AS Border Source Address Validation (AS Border SAV)</strong>  <vspace blankLines='1'/>
AS Border Routers (ASBRs) are gateways through which external traffic enters the domain. ASBRs can discern the prefix of their own AS through router-LSAs and summary-LSAs. By adding these prefixes to a blocklist at interfaces connecting to other ASs, packets from other ASs with source addresses matching this blocklist can be blocked, thereby preventing spoofed traffic from entering the domain.</t>
</list></t>

<t>For Edge SAV, Area Border SAV, and AS Border SAV, routers can establish interface-based prefix allowlists or blocklists either manually or based on the local LSDB. For Transit SAV, routers should be aware of the valid incoming interfaces for a given source prefix in order to establish a prefix-based interface allowlist. Packets with source addresses matching this source prefix are normally forwarded only when their incoming interfaces are in the allowlist. Otherwise, they should be processed according to predefined security policies, which may include actions like packet dropping or rate limiting. If the source address of a packet does not match any recorded source prefix, the packet is considered valid by default.</t>

</section>
<section anchor="use-cases"><name>Use Cases</name>
<t>For intra-domain networks, source address spoofing primarily occurs in the following scenarios: Firstly, a stub network within the domain might spoof the source addresses of other networks, which could be those within the same area, other areas within the domain, or even other ASes. Secondly, packets from other ASes spoofing the source addresses of a domain might enter this domain. This section uses  <xref target="sav_usecase"/> as an example to comprehensively demonstrate the typical scenarios of intra-domain source address spoofing and explain how to effectively implement intra-domain SAV using the approaches proposed in <xref target="overview-sec"/>.</t>

<figure title="Intra-domain SAVNET Use Cases" anchor="sav_usecase"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="432" width="776" viewBox="0 0 776 432" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 8,32 L 8,416" fill="none" stroke="black"/>
<path d="M 24,80 L 24,400" fill="none" stroke="black"/>
<path d="M 120,192 L 120,224" fill="none" stroke="black"/>
<path d="M 144,128 L 144,192" fill="none" stroke="black"/>
<path d="M 144,224 L 144,272" fill="none" stroke="black"/>
<path d="M 160,192 L 160,224" fill="none" stroke="black"/>
<path d="M 192,112 L 192,144" fill="none" stroke="black"/>
<path d="M 192,256 L 192,288" fill="none" stroke="black"/>
<path d="M 216,296 L 216,336" fill="none" stroke="black"/>
<path d="M 232,112 L 232,144" fill="none" stroke="black"/>
<path d="M 232,256 L 232,288" fill="none" stroke="black"/>
<path d="M 304,112 L 304,144" fill="none" stroke="black"/>
<path d="M 304,256 L 304,288" fill="none" stroke="black"/>
<path d="M 328,296 L 328,336" fill="none" stroke="black"/>
<path d="M 344,112 L 344,144" fill="none" stroke="black"/>
<path d="M 344,256 L 344,288" fill="none" stroke="black"/>
<path d="M 376,192 L 376,224" fill="none" stroke="black"/>
<path d="M 384,128 L 384,192" fill="none" stroke="black"/>
<path d="M 384,224 L 384,272" fill="none" stroke="black"/>
<path d="M 400,80 L 400,192" fill="none" stroke="black"/>
<path d="M 400,224 L 400,400" fill="none" stroke="black"/>
<path d="M 416,80 L 416,192" fill="none" stroke="black"/>
<path d="M 416,224 L 416,400" fill="none" stroke="black"/>
<path d="M 432,128 L 432,192" fill="none" stroke="black"/>
<path d="M 432,224 L 432,272" fill="none" stroke="black"/>
<path d="M 440,192 L 440,224" fill="none" stroke="black"/>
<path d="M 480,112 L 480,144" fill="none" stroke="black"/>
<path d="M 480,256 L 480,288" fill="none" stroke="black"/>
<path d="M 496,288 L 496,320" fill="none" stroke="black"/>
<path d="M 520,112 L 520,144" fill="none" stroke="black"/>
<path d="M 520,256 L 520,288" fill="none" stroke="black"/>
<path d="M 544,192 L 544,224" fill="none" stroke="black"/>
<path d="M 568,128 L 568,192" fill="none" stroke="black"/>
<path d="M 568,224 L 568,272" fill="none" stroke="black"/>
<path d="M 592,192 L 592,224" fill="none" stroke="black"/>
<path d="M 608,80 L 608,200" fill="none" stroke="black"/>
<path d="M 608,216 L 608,400" fill="none" stroke="black"/>
<path d="M 624,32 L 624,200" fill="none" stroke="black"/>
<path d="M 624,216 L 624,416" fill="none" stroke="black"/>
<path d="M 648,32 L 648,200" fill="none" stroke="black"/>
<path d="M 648,216 L 648,416" fill="none" stroke="black"/>
<path d="M 680,192 L 680,224" fill="none" stroke="black"/>
<path d="M 712,232 L 712,272" fill="none" stroke="black"/>
<path d="M 736,192 L 736,224" fill="none" stroke="black"/>
<path d="M 768,32 L 768,416" fill="none" stroke="black"/>
<path d="M 8,32 L 624,32" fill="none" stroke="black"/>
<path d="M 648,32 L 768,32" fill="none" stroke="black"/>
<path d="M 24,80 L 400,80" fill="none" stroke="black"/>
<path d="M 416,80 L 608,80" fill="none" stroke="black"/>
<path d="M 192,112 L 232,112" fill="none" stroke="black"/>
<path d="M 304,112 L 344,112" fill="none" stroke="black"/>
<path d="M 480,112 L 520,112" fill="none" stroke="black"/>
<path d="M 144,128 L 192,128" fill="none" stroke="black"/>
<path d="M 232,128 L 304,128" fill="none" stroke="black"/>
<path d="M 344,128 L 384,128" fill="none" stroke="black"/>
<path d="M 432,128 L 480,128" fill="none" stroke="black"/>
<path d="M 520,128 L 568,128" fill="none" stroke="black"/>
<path d="M 192,144 L 232,144" fill="none" stroke="black"/>
<path d="M 304,144 L 344,144" fill="none" stroke="black"/>
<path d="M 480,144 L 520,144" fill="none" stroke="black"/>
<path d="M 120,192 L 160,192" fill="none" stroke="black"/>
<path d="M 376,192 L 440,192" fill="none" stroke="black"/>
<path d="M 544,192 L 592,192" fill="none" stroke="black"/>
<path d="M 680,192 L 736,192" fill="none" stroke="black"/>
<path d="M 592,208 L 680,208" fill="none" stroke="black"/>
<path d="M 120,224 L 160,224" fill="none" stroke="black"/>
<path d="M 376,224 L 440,224" fill="none" stroke="black"/>
<path d="M 544,224 L 592,224" fill="none" stroke="black"/>
<path d="M 680,224 L 736,224" fill="none" stroke="black"/>
<path d="M 80,256 L 104,256" fill="none" stroke="black"/>
<path d="M 192,256 L 232,256" fill="none" stroke="black"/>
<path d="M 304,256 L 344,256" fill="none" stroke="black"/>
<path d="M 480,256 L 520,256" fill="none" stroke="black"/>
<path d="M 144,272 L 192,272" fill="none" stroke="black"/>
<path d="M 232,272 L 304,272" fill="none" stroke="black"/>
<path d="M 344,272 L 384,272" fill="none" stroke="black"/>
<path d="M 432,272 L 480,272" fill="none" stroke="black"/>
<path d="M 520,272 L 568,272" fill="none" stroke="black"/>
<path d="M 80,288 L 104,288" fill="none" stroke="black"/>
<path d="M 192,288 L 232,288" fill="none" stroke="black"/>
<path d="M 304,288 L 344,288" fill="none" stroke="black"/>
<path d="M 480,288 L 520,288" fill="none" stroke="black"/>
<path d="M 152,320 L 176,320" fill="none" stroke="black"/>
<path d="M 488,320 L 512,320" fill="none" stroke="black"/>
<path d="M 216,336 L 240,336" fill="none" stroke="black"/>
<path d="M 304,336 L 328,336" fill="none" stroke="black"/>
<path d="M 152,352 L 176,352" fill="none" stroke="black"/>
<path d="M 488,352 L 512,352" fill="none" stroke="black"/>
<path d="M 24,400 L 400,400" fill="none" stroke="black"/>
<path d="M 416,400 L 608,400" fill="none" stroke="black"/>
<path d="M 8,416 L 624,416" fill="none" stroke="black"/>
<path d="M 648,416 L 768,416" fill="none" stroke="black"/>
<path d="M 232,128 L 304,272" fill="none" stroke="black"/>
<path d="M 120,256 L 132,232" fill="none" stroke="black"/>
<path d="M 104,304 L 112,288" fill="none" stroke="black"/>
<path d="M 192,320 L 204,296" fill="none" stroke="black"/>
<path d="M 232,272 L 304,128" fill="none" stroke="black"/>
<path d="M 392,192 C 383.16936,192 376,199.16936 376,208" fill="none" stroke="black"/>
<path d="M 424,192 C 432.83064,192 440,199.16936 440,208" fill="none" stroke="black"/>
<path d="M 392,224 C 383.16936,224 376,216.83064 376,208" fill="none" stroke="black"/>
<path d="M 424,224 C 432.83064,224 440,216.83064 440,208" fill="none" stroke="black"/>
<polygon class="arrowhead" points="720,232 708,226.4 708,237.6" fill="black" transform="rotate(270,712,232)"/>
<polygon class="arrowhead" points="336,296 324,290.4 324,301.6" fill="black" transform="rotate(270,328,296)"/>
<polygon class="arrowhead" points="224,296 212,290.4 212,301.6" fill="black" transform="rotate(270,216,296)"/>
<g class="text">
<text x="304" y="52">AS1(10.0.0.0/8)</text>
<text x="712" y="52">AS2</text>
<text x="708" y="68">(20.0.0.0/8)</text>
<text x="56" y="100">Area1</text>
<text x="456" y="100">Area0</text>
<text x="212" y="132">R2</text>
<text x="324" y="132">R4</text>
<text x="500" y="132">R7</text>
<text x="140" y="212">R1</text>
<text x="404" y="212">R6</text>
<text x="572" y="212">R9</text>
<text x="712" y="212">R20</text>
<text x="92" y="276">(subnet)</text>
<text x="212" y="276">R3</text>
<text x="324" y="276">R5</text>
<text x="500" y="276">R8</text>
<text x="712" y="292">spoofed</text>
<text x="68" y="308">10.1.0.0</text>
<text x="116" y="308">16</text>
<text x="712" y="308">10.1.0.0/16</text>
<text x="164" y="340">(subnet)</text>
<text x="272" y="340">spoofed</text>
<text x="500" y="340">(subnet)</text>
<text x="288" y="356">10.1.0.0/16</text>
<text x="168" y="372">10.3.0.0/16</text>
<text x="288" y="372">10.8.0.0/16</text>
<text x="504" y="372">10.8.0.0/16</text>
<text x="284" y="388">20.0.0.0/8</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
+----------------------------------------------------------------------------+  +--------------+
|                             AS1(10.0.0.0/8)                                |  |      AS2     |
|                                                                            |  | (20.0.0.0/8) |
| +----------------------------------------------+ +-----------------------+ |  |              |
| | Area1                                        | |  Area0                | |  |              |
| |                    +----+        +----+      | |       +----+          | |  |              |
| |              +-----+ R2 +--------+ R4 +----+ | | +-----+ R7 +-----+    | |  |              |
| |              |     +----+\      /+--+-+    | | | |     +----+     |    | |  |              |
| |              |            \    /           | | | |                |    | |  |              |
| |              |             \  /            | | | |                |    | |  |              |
| |           +--+-+            \/            ++-+-+-++            +--+--+ | |  |   +------+   |
| |           | R1 |            /\            |  R6   |            |  R9 +----------+  R20 |   |
| |           +--+-+           /  \           ++-+-+-++            +--+--+ | |  |   +---+--+   |
| |            / |            /    \           | | | |                |    | |  |       ^      |
| |     +----+/  |     +----+/      \+--+-+    | | | |     +----+     |    | |  |       |      |
| |    (subnet)  +-----+ R3 +--------+ R5 +----+ | | +-----+ R8 +-----+    | |  |       +      |
| |     +----+         +--+-+        +--+-+      | |       +-+--+          | |  |    spoofed   |
| | 10.1.0.0/16         / ^             ^        | |         |             | |  |  10.1.0.0/16 |
| |              +----+/  |             |        | |       +-+--+          | |  |              |
| |             (subnet)  +--+spoofed+--+        | |      (subnet)         | |  |              |
| |              +----+       10.1.0.0/16        | |       +----+          | |  |              |
| |            10.3.0.0/16    10.8.0.0/16        | |     10.8.0.0/16       | |  |              |
| |                           20.0.0.0/8         | |                       | |  |              |
| +----------------------------------------------+ +-----------------------+ |  |              |
+----------------------------------------------------------------------------+  +--------------+
]]></artwork></artset></figure>

<t><xref target="sav_usecase"/> shows a domain AS1 with two areas, namely the backbone area Area0 and non-backbone area Area1. ABR R6 connects Area0 and Area1, and ASBR R9 connects AS1 and AS2. First, let’s consider the scenarios where stub networks of R3 and R5 in Area1 spoof the source addresses of other networks. We will show how routers in Area1 can use source address verification to identify the spoofed traffic.</t>

<t><strong>Use Case 1: Edge SAV.</strong> Suppose R3 knows its connected subnet's address range is 10.3.0.0/16. R3 can add the prefix 10.3.0.0/16 to the SAV whitelist at the interface connecting this subnet. Then packets originating from the subnet will only be forwarded by R3 if their source addresses belong to 10.3.0.0/16. Packets spoofing the source addresses of other networks will be prevented from entering the network at R3.</t>

<t><strong>Use Case 2: Transit SAV.</strong> Assume R5 does not support SAV due to hardware/software capability limitations or performance considerations. Routers R1-R4 and R6 in Area1 can check whether the packets from R5 spoof the source address of another network by learning the valid incoming interfaces for packets from that network. Specifically, three types of spoofed source address packets might enter the network through R5:</t>

<t><list style="numbers" type="1">
  <t>Packets from R5 spoofing other network prefixes within the same area (e.g., 10.1.0.0/16 of R1). If R2, R3, R4 and R6 learn that the legitimate incoming interfaces for 10.1.0.0/16 are the interfaces corresponding to links R1-R2, R1-R3, R2-R4 and R4-R6 separately, then spoofed traffic from R5 entering R2, R3, and R6 through links R5-R3, R5-R2, and R5-R6 can be blocked by these transit routers.</t>
  <t>Packets from R5 spoofing prefixes of Area0 (e.g., 10.8.0.0/16 of R8). Assume R4, R2 and R1 learn that the legitimate incoming interfaces for 10.8.0.0/16 are the interfaces corresponding to links R6-R4, R4-R2 and R2-R1 separately. Then spoofed traffic from R5 entering R4, R2 and R1 through paths R5-R3-R4, R5-R2, and R5-R3-R1 can be blocked.</t>
  <t>Packets from R5 spoofing prefixes of AS2 (e.g., 20.0.0.0/8). Similar to the second scenario, if R4, R2 and R1 learn that the legitimate incoming interfaces for 20.0.0.0/8 are the interfaces corresponding to links R6-R4, R4-R2 and R2-R1 separately, then spoofed traffic from R5 entering R4, R2, and R1 through paths R5-R3-R4, R5-R2, R5-R3-R1 can be blocked.</t>
</list></t>

<t><strong>Use Case 3: Area Border SAV.</strong> ABR R6 advertises Area0's routing prefixes to Area1 through Type 3 LSAs, including the prefix 10.8.0.0/16. R6 can establish a SAV blacklist for these prefixes at its interfaces connecting to Area1. If packets received at these interfaces have source addresses that hit the SAV blacklist, such as packets from R5 to R6 spoofing 10.8.0.0/16, they can be blocked by R6.</t>

<t>Next, we look at how ASBR R9 identifies spoofed traffic from AS2 spoofing AS1's source addresses when it reaches R9.</t>

<t><strong>Use Case 4: AS Border SAV.</strong> R9 can obtain AS1's routing prefixes through Type 1 and Type 3 LSAs and establish a SAV blacklist at its interfaces connecting to AS2. If packets received at these interfaces have source addresses that hit the SAV blacklist, such as packets from R20 to R9 spoofing 10.1.0.0/16, they can be blocked by R9.</t>

<t>In summary, an intra-domain network can customize its SAV solutions based on specific network environments and security requirements. It can flexibly activate various SAV modes on different routers, such as Edge SAV only, a combination of Edge SAV, Area Border SAV, and AS Border SAV, or Edge SAV and Transit SAV. This ensures that the solution is not only effective but also tailored to the actual circumstances of the network.</t>

</section>
</section>
<section anchor="solution-to-transit-sav"><name>Solution to Transit SAV</name>
<t>For Transit SAV, a router must be aware of all the valid incoming interfaces for a source prefix to avoid improper blocking of packets with legitimate source addresses. In OSPF networks, packets are typically forwarded along the paths specified by the Shortest Path Tree (SPT). However, if a router has enabled Policy-Based Routing (PBR), the packets will be preferentially forwarded to the next hop as designated by the PBR rules. Thus, an effective way to implement Transit SAV is for the router owning that source prefix to proactively send SAV messages to other routers. The messages should inform the routers about which interfaces packets matching that source prefix will reach along the actual forwarding paths, including those determined by the routing protocol and those specified by PBR. To accomplish this, a router can generate a SAV message for a protected source prefix, specifying the neighboring router to receive the message and the destination routers to which the message will be ultimately advertised. The SAV message propagates along the actual forwarding path of the source prefix. Routers receiving a SAV message through an interface recognize that interface as valid for the source prefix conveyed in the message. Based on the received SAV messages, routers can establish a prefix-based interface allowlist (see <xref target="sav-table"/>) for data-plane SAV filtering.</t>

<t>A SAV message should at least include the following fields:</t>

<dl newline="true">
  <dt>Message Type (MT)</dt>
  <dd>
    <t>Distinguishes SAV messages based on the kind of routing information used to generate the message. 'S' means the message is generated based on SPT. 'P' means the message is generated based on PBR rules.</t>
  </dd>
  <dt>Source Router ID (SR)</dt>
  <dd>
    <t>The identifier of the router that generated the message.</t>
  </dd>
  <dt>Source Prefix (SP)</dt>
  <dd>
    <t>The source prefix that the message seeks to protect.</t>
  </dd>
  <dt>Neighbor Router ID (NR)</dt>
  <dd>
    <t>The identifier of the neighbor router to which the message is sent.</t>
  </dd>
  <dt>Destination Router ID (DR)</dt>
  <dd>
    <t>The destination router's identifier, to which the message is ultimately advertised.</t>
  </dd>
  <dt>Destination Prefix (DP)</dt>
  <dd>
    <t>The destination prefix to which the message is ultimately advertised.</t>
  </dd>
</dl>

<t><xref target="spt-sec"/> and <xref target="pbr-sec"/> respectively elaborate on the generation and propagation of SAV messages in scenarios only involving conventional routing and those with PBR enabled. The format of each field in a SAV message is specific to the OSPF version used, which will be explained in <xref target="ospf-extension-sec"/>.</t>

<t>Transit SAV is applicable to both single-area and multi-area scenarios within a domain. In multi-area scenarios, the SAV messages generated by routers are propagated only within their respective areas.</t>

<section anchor="spt-sec"><name>SAV Message Propagation based on SPT</name>

<t>This section describes how intra-domain routers generate and propagate SAV messages based on the local Shortest Path Tree (SPT) and establish SAV rules. <xref target="intra_topo"/> shows an intra-domain network running the OSPF protocol. The SPT of Router R1 is shown in <xref target="intra_spt"/>. Packets originating from R1, with a source address within the subnet 10.1.0.0/16, are forwarded along this SPT path. The SAV message generated by R1 should be propagated along the SPT to all leaf node routers, carrying the prefix 10.1.0.0/16. All routers along the path can then receive the message and establish local SAV rules for this prefix. Similarly, ABRs and ASBRs can send SAV messages along the SPT to other routers within the area. These messages carry prefixes from other areas or ASes, enabling the routers to establish SAV rules for these prefixes.</t>

<t>Specifically, the SPT of R1 includes leaf nodes R3, R5, and R6, with R3 directly connected to R1, while R5 and R6 are in the subtree of neighbor R2. R1 needs to generate SAV messages for neighbor R2 and R3. The MT field is set to 'S' (SPT-based), SR is R1, and SP is 10.1.0.0/16. The message to R2 includes NR as R2 and DR as R5 and R6. The message to R3 includes both NR and DR as R3. Upon receiving R1’s SAV message from link R1-R2, R2 establishes the SAV rule &lt;10.1.0.0/16, int.2.1&gt;, indicating that interface 2.1 is the valid incoming interface for the prefix 10.1.0.0/16. Similarly, R3 establishes the SAV rule &lt;10.1.0.0/16, int.3.1&gt;, indicating that interface 3.1 is the valid incoming interface for the prefix. Since the message received by R3 indicates DR as R3 itself, it does not need to propagate the message further. R2, however, needs to propagate the message to R5 and R6 according to its local SPT. R5 is directly connected to R2, while R6 is in the subtree of neighbor R4. Therefore, R2 generates messages for neighbor R4 and R5, keeping the MT, SR, and SP fields unchanged. R2’s message to R4 includes NR as R4 and DR as R6. R2’s message to R5 includes NR as R5 and DR as R5. Upon receiving the message from R2, R4 and R5 establish local SAV rules &lt;10.1.0.0/16, int.4.1&gt; and &lt;10.1.0.0/16, int.5.2&gt;, respectively. Similarly, R4 continues to propagate the message to R6 based on the local SPT, and R6 establishes the SAV rule &lt;10.1.0.0/16, int.6.1&gt;. Thus, all routers on the SPT of R1 can learn the valid incoming interfaces for R1’s source prefix. If a packet with a source address within the prefix 10.1.0.0/16 is received on a invalid interface, such as R5 receiving a packet at interface 5.1, predefined security measures like packet dropping, rate limiting, or traffic monitoring may be taken.</t>

<figure title="An example of intra-domain network." anchor="intra_topo"><artwork><![CDATA[
                             int.4.1
                    +----+        +----+
             int.2.1| R2 +--------+ R4 |
                   /+----+\      /+--+-+\
                  /        \    /        \
                 /          \  /          \int.6.1
          +----+/            \/            \+----+
          | R1 |             /\             | R6 |
         /+----+\           /  \           /+----+
  ------/        \         /    \int.5.2  /int.6.2
 (subnet)         \ +----+/      \+--+-+ /
  ------           \| R3 +--------+ R5 |/
10.1.0.0/16         +----+        +----+
              int.3.1        int.5.1
]]></artwork></figure>

<figure title="SAV message propagation along the SPT of R1." anchor="intra_spt"><artwork><![CDATA[
          R2 SAV rules                  R4 SAV rules
          <10.1.0.0/16,int.2.1>         <10.1.0.0/16,int.4.1>
                    +----+        +----+
                    | R2 +-------*| R4 |
                   *+----+\       +----+\
                  /        \             \
                 /          \             \
          +----+/            \             *+----+
          | R1 |              \             | R6 |
         /+----+\              \            +----+
  ------/        \              \           R6 SAV rules
 (subnet)         \ +----+       *+----+    <10.1.0.0/16,int.6.1>
  ------           *| R3 |        | R5 |
10.1.0.0/16         +----+        +----+
             R3 SAV rules            R5 SAV rules
             <10.1.0.0/16,int.3.1>   <10.1.0.0/16,int.5.2>

* the interface that receives SAV message of 10.1.0.0/16 from R1
]]></artwork></figure>

<t>SAV messages are propagated within an area. SAV messages generated by different routers carry different source prefix information based on their role.</t>

<t>If a router is connected to a stub network, it should generate SAV messages to protect the prefixes of this stub network from being spoofed. To reduce communication overhead, the router can send a SAV message with the SP field set to a specific value. Routers receiving a message with SP set to this specific value use the prefixes of SR's stub network stored in the LSDB as source prefixes to be validated. They are included in the Router-LSA advertised by SR with link type "stub".</t>

<t>If a router is an ABR or ASBR, it can also generate SAV messages to protect the prefixes outside the area from being spoofed. For an ABR, the source prefix announced in a SAV message can be prefixes contained in summary-LSAs advertised within the area and prefixes contained in AS-external-LSAs received from other areas. For an ASBR, the source prefix announced in a SAV message can be prefixes contained in AS-external-LSAs advertised within the area. To reduce communication overhead, an ABR or ASBR can send a SAV message with the SP field set to a specific value. Routers receiving a message with SP set to a specific value use prefixes included in the summary-LSAs advertised by this ABR or prefixes included in the AS-external-LSAs advertised by this ASBR as source prefixes to be validated.</t>

</section>
<section anchor="pbr-sec"><name>SAV Message Propagation considering Policy-based Routing</name>
<t>Policy-based routing (PBR) is a widely supported feature on modern routers. It enables network administrators to make routing decisions based on policies that reflect specific network requirements, rather than solely depending on routing tables generated by traditional routing protocols. This capability allows for finer control over traffic flows, facilitating decision-making based on criteria such as source and destination addresses, specific types of traffic, or even application data. By establishing PBR rules, administrators can direct different types of traffic along designated paths, thus addressing specific security or Quality of Service (QoS) needs effectively.</t>

<t>In networks where routers are configured with PBR, it is crucial to propagate SAV messages not only along the paths determined by the SPT but also along paths specified by PBR rules. This ensures that all interfaces a source prefix might reach according to both traditional routing protocols and PBR are considered legitimate entry points, thereby minimizing the risk of improper blocking of valid traffic.</t>

<t>Take <xref target="intra_topo"/> as an example. Assume Router R1 has a local PBR rule defined as &lt;10.1.1.0/24, 10.5.0.0/16, R3&gt;. This rule redirects traffic from the source IP addresses within 10.1.1.0/24 heading towards the stub network connected to R5, to go via R3 instead. R1 should generate a SAV message based on this rule and propagate this message along link R1-R3 and R3-R5. This action designates interfaces int.3.1 at R3 and int.5.1 at R5 as vaid incoming interfaces for the prefix 10.1.1.0/24.</t>

<t>Similarly, assume Router R2 has a PBR rule which redirects all traffic on port 80 going to the subnet 10.6.0.0/16 of R6 towards R5. Besides forwarding the SAV message originated from R1 to R6 along the SPT, R2 should also send the SAV message through R5 to reach R6 base on this PBR rule. This ensures that int.5.2 at R5 and int.6.2 at R6 are recognized as valid incoming interfaces for the source prefixes of R1.</t>

<section anchor="sav-message-generation"><name>SAV Message Generation</name>
<t>When a router, such as Router R1, is configured with PBR rules that direct specific types of traffic to a neighbor (e.g., R2), it is essential for R1 to generate SAV messages based on these PBR rules and send them to R2. This enables R2 to permit the corresponding traffic through and to continue propagating the SAV information to other relevant routers within the domain. The fields for SAV messages generated based on PBR rules are set as follows:</t>

<t><list style="symbols">
  <t><strong>MT</strong>: Set to 'P' (PBR-based).</t>
  <t><strong>SR</strong>: R1.</t>
  <t><strong>NR</strong>: R2.</t>
  <t><strong>SP</strong>, <strong>DR</strong>, and <strong>DP</strong>: Depend on the type of the PBR rule. Given that SAV messages are primarily concerned with sending which source prefixes to which destinations, PBR rules are divided into four categories based on the specification of source and destination prefixes. Other parameters in the rules, such as port numbers, are represented as 'other' and are not considered in the generation of SAV messages.  <list style="numbers" type="1">
      <t><strong>&lt;srcIP, *, other, nexthop&gt;</strong>: This implies that packets with a source address belonging to srcIP may reach any router in the domain through nexthop R2. Thus, SP is set to srcIP, while DR and DP are not specifically defined.</t>
      <t><strong>&lt;*, dstIP, other, nexthop&gt;</strong>: This implies that any packet from R1 might reach the router associated with dstIP through nexthop R2. Hence, SP is set to a default value representing all source prefixes of R1, DP is set to dstIP, and DR is not specifically defined.</t>
      <t><strong>&lt;srcIP, dstIP, other, nexthop&gt;</strong>: This implies that packets with a source address belonging to srcIP may reach the router associated with dstIP through nexthop R2. Therefore, SP is set to srcIP, DP is set to dstIP, and DR is not specifically defined.</t>
      <t><strong>&lt;*, *, other, nexthop&gt;</strong>: This implies that any packet from R1 may reach any router in the domain through nexthop R2. Thus, SP is set to a default value representing all source prefixes of R1, while DR and DP are not specifically defined.</t>
    </list>
For cases where DR and DP are not specifically defined, nexthop R2 determines the endpoints of the SAV message propagation based on local routing policies (see <xref target="pbr-forwarding-sec"/>).</t>
</list></t>

</section>
<section anchor="pbr-forwarding-sec"><name>SAV Message Forwarding</name>
<t>When Router R2, configured with PBR rules, receives a SAV message from Router R1, it must forward this message along both the SPT paths and the paths specified by its PBR rules. R2 uses the DR and DP fields to determine whether it is the endpoint of the message propagation. If not, and the intended neighbor for message forwarding is in the same area, the message is forwarded accordingly. SR and SP remain unchanged, while NR is updated to the intended neighbor. Other fields are handled as follows:</t>

<t><strong>MT:</strong></t>

<t><list style="symbols">
  <t>If the received message’s MT is 'P' (PBR-based), it remains unchanged during forwarding.</t>
  <t>If the received message’s MT is 'S' (SPT-based), and the message is forwarded based on local PBR rules, MT is changed to 'P'.</t>
</list></t>

<t><strong>DR &amp; DP:</strong></t>

<t><list style="symbols">
  <t>If the received message specifies DP as dstIP:
  <list style="numbers" type="1">
      <t>Forward the message to the next-hop of dstIP in the Forwarding Information Base (FIB), keeping DR and DP unchanged.</t>
      <t>If there is a local PBR rule of type <spanx style="verb">&lt;*, dstIP, other, nexthop&gt;</spanx> or <spanx style="verb">&lt;*, *, other, nexthop&gt;</spanx>, forward the message to the nexthops in these rules, keeping DR and DP unchanged.</t>
    </list></t>
  <t>If the received message specifies DR:
  <list style="symbols">
      <t><strong>Case 1:</strong> If the received message type is 'S':
      <list style="numbers" type="1">
          <t>Forward the message based on local SPT(see <xref target="spt-sec"/>).</t>
          <t>If there is a local PBR rule <spanx style="verb">&lt;*, dstIP, other, nexthop&gt;</spanx> and dstIP belongs to the nodes along the SPT path to DR, forward the message to nexthop, updating DP to dstIP, leaving DR unspecified.</t>
          <t>If there is a local PBR rule <spanx style="verb">&lt;*, *, other, nexthop&gt;</spanx>, forward the message to nexthop, updating DR to include all Router IDs of the nodes along the SPT path to DR, leaving DP unspecified.</t>
        </list></t>
      <t><strong>Case 2:</strong> If the received message type is 'P':
      <list style="numbers" type="1">
          <t>Forward the message based on local SPT(see <xref target="spt-sec"/>).</t>
          <t>If there is a local PBR rule <spanx style="verb">&lt;*, dstIP, other, nexthop&gt;</spanx> and dstIP belongs to DR, forward the message to nexthop, updating DP to dstIP, leaving DR unspecified.</t>
          <t>If there is a local PBR rule <spanx style="verb">&lt;*, *, other, nexthop&gt;</spanx>, forward the message to nexthop, keeping DR and DP unchanged.</t>
        </list></t>
    </list></t>
  <t>If the received message does not specify DR and DP:
  <list style="numbers" type="1">
      <t>Forward the message to all the other neighbors, updating DR to include all reachable nodes through these neighbors on SPT, leaving DP unspecified.</t>
      <t>If there is a local PBR rule <spanx style="verb">&lt;*, dstIP, other, nexthop&gt;</spanx>, forward the message to nexthop, setting DP to dstIP, leaving DR unspecified.</t>
      <t>If there is a local PBR rule <spanx style="verb">&lt;*, *, other, nexthop&gt;</spanx>, forward the message to nexthop, keeping DR and DP unchanged.</t>
    </list></t>
</list></t>

<t>The primary difference between SPT-based and PBR-based SAV messages lies in the content of the DR field. SPT-based messages only record SPT leaf nodes since SAV messages are sent along the SPT path to these leaf nodes, and intermediate nodes on this path do not need to be explicitly listed to receive the message. This approach reduces message length and communication overhead. In contrast, PBR-based messages must record all nodes reachable by the message to ensure that it reaches all intended destinations.</t>

<t>It is important to note that the description provided above outlines only the basic logic for the coummunication of SAV messages. In practice, to optimize communication, messages that share the same MT and SP fields and are directed to the same NR can be consolidated before being sent.</t>

</section>
</section>
</section>
<section anchor="ospf-extension-sec"><name>Protocol Extension</name>

<section anchor="extensions-to-ospfv2-for-sav-message-propagation"><name>Extensions to OSPFv2 for SAV Message Propagation</name>
<t>This document proposes extensions to OSPFv2 to support the dissemination of SAV messages via the OSPF protocol. The extension utilizes OSPFv2 Extended Prefix Opaque LSA as defined in <xref target="RFC7684"/>. The Advertising Router field is utilized to represent the SR within a SAV message, which denotes the origin of the SAV message. The LS Type is 10, which is scoped to an area-local visibility.</t>

<t>The OSPFv2 Extended Prefix Opaque LSA may contain one or more Extended Prefix TLVs. Each TLV is used to carry specific source prefix (SP) information pertinent to SAV. The Address Prefix field specifies the IP address of the source prefix. The Prefix Length field indicates the length of the source prefix.</t>

<t>A new sub-TLV, termed the "Source Prefix Validation Sub-TLV," is introduced within the Extended Prefix TLV. This sub-TLV is designed to encapsulate additional fields required for SAV, excluding SR and SP, which are already detailed above. It has the following format:</t>

<figure title="OSPFv2 Source Prefix Validation Sub-TLV" anchor="sav_ospfv2"><artwork><![CDATA[
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |           Type (TBD)          |            Length             |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |         Message Type          |           Reserved            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                     Neighbor Router (NR)                      |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |            DR Count            |         DP Count             |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                   Destination Router (DR) 1                   |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                            ......                             |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                   Destination Router (DR) n                   |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  DP 1 Length  |      Destination Prefix (DP) 1 (variable)     |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                            ......                             |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  DP n Length  |      Destination Prefix (DP) n (variable)     |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<dl newline="true">
  <dt>Type</dt>
  <dd>
    <t>The type of the Sub-TLV. Value TBD.</t>
  </dd>
  <dt>Length</dt>
  <dd>
    <t>The total length of the Sub-TLV in bytes, excluding the Type and Length fields.</t>
  </dd>
  <dt>Message Type</dt>
  <dd>
    <t>0 - the SAV message is based on SPT</t>
  </dd>
  <dt/>
  <dd>
    <t>1 - the SAV message is based on PBR</t>
  </dd>
  <dt>Reserved</dt>
  <dd>
    <t><bcp14>SHOULD</bcp14> be set to 0 on transmission and <bcp14>MUST</bcp14> be ignored on reception.</t>
  </dd>
  <dt>NR</dt>
  <dd>
    <t>The Neighbor Router ID to which the SAV message is sent.</t>
  </dd>
  <dt>DR Count</dt>
  <dd>
    <t>The number of Destination Router IDs included in this Sub-TLV.</t>
  </dd>
  <dt>DP Count</dt>
  <dd>
    <t>The number of Destination Prefixes included in this Sub-TLV.</t>
  </dd>
  <dt>DR</dt>
  <dd>
    <t>Each DR field represents a Destination Router ID to which the SAV message is ultimately advertised. The number of DR fields corresponds to the value in the DR Count field.</t>
  </dd>
  <dt>DP Length</dt>
  <dd>
    <t>Length of a Destination Prefix in bits.</t>
  </dd>
  <dt>DP</dt>
  <dd>
    <t>Each DP field represents a Destination Prefix to which the message is ultimately advertised. The number of DP fields corresponds to the value in the DP Count field.</t>
  </dd>
</dl>

<t>An OSPFv2 Extended Prefix TLV can contain multiple OSPFv2 Source Prefix Validation Sub-TLVs, each of which can specify only one NR. Routers that receive this TLV process only the Sub-TLV where the NR field matches their own Router ID and ignore others.</t>

</section>
<section anchor="extensions-to-ospfv3-for-sav-message-propagation"><name>Extensions to OSPFv3 for SAV Message Propagation</name>
<t>In networks utilizing the OSPFv3 protocol, SAV messages are advertised through OSPFv3 Extended LSAs, including E-Intra-Area-Prefix-LSA, E-Inter-Area-Prefix-LSA and E-AS-External-LSA <xref target="RFC8362"/>. The Advertising Router field is used to represent the SR within a SAV message. The Address Prefix and PrefixLength fields of the Intra-Area Prefix TLV, Inter-Area Prefix TLV, and External-Prefix TLV are used to represent a specific SP. Additionally, A new OSPFv3 Source Prefix Validation sub-TLV is defined to be included in these TLVs to carry SAV message fields excluding SR and SP. The format of this new sub-TLV is as follows:</t>

<figure title="OSPFv3 Source Prefix Validation Sub-TLV" anchor="sav_ospfv3"><artwork><![CDATA[
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |           Type (TBD)          |            Length             |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |         Message Type          |           Reserved            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                     Neighbor Router (NR)                      |
 |                             ...                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |            DR Count            |         DP Count             |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                   Destination Router (DR) 1                   |
 |                             ...                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                            ......                             |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                   Destination Router (DR) n                   |
 |                             ...                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  DP 1 Length  |      Destination Prefix (DP) 1 (variable)     |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                            ......                             |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  DP n Length  |      Destination Prefix (DP) n (variable)     |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<dl newline="true">
  <dt>Type</dt>
  <dd>
    <t>The type of the Sub-TLV. Value TBD.</t>
  </dd>
  <dt>Length</dt>
  <dd>
    <t>The total length of the Sub-TLV in bytes, excluding the Type and Length fields.</t>
  </dd>
  <dt>Message Type</dt>
  <dd>
    <t>0 - the SAV message is based on SPT</t>
  </dd>
  <dt/>
  <dd>
    <t>1 - the SAV message is based on PBR</t>
  </dd>
  <dt>Reserved</dt>
  <dd>
    <t><bcp14>SHOULD</bcp14> be set to 0 on transmission and <bcp14>MUST</bcp14> be ignored on reception.</t>
  </dd>
  <dt>NR</dt>
  <dd>
    <t>The Neighbor Router ID to which the SAV message is sent.</t>
  </dd>
  <dt>DR Count</dt>
  <dd>
    <t>The number of Destination Router IDs included in this Sub-TLV.</t>
  </dd>
  <dt>DP Count</dt>
  <dd>
    <t>The number of Destination Prefixes included in this Sub-TLV.</t>
  </dd>
  <dt>DR</dt>
  <dd>
    <t>Each DR field represents a Destination Router ID to which the SAV message is ultimately advertised. The number of DR fields corresponds to the value in the DR Count field.</t>
  </dd>
  <dt>DP Length</dt>
  <dd>
    <t>Length of a Destination Prefix in bits.</t>
  </dd>
  <dt>DP</dt>
  <dd>
    <t>Each DP field represents a Destination Prefix to which the message is ultimately advertised. The number of DP fields corresponds to the value in the DP Count field.</t>
  </dd>
</dl>

<t>An Intra-Area Prefix TLV, Inter-Area Prefix TLV, or External-Prefix TLV can contain multiple OSPFv3 Source Prefix Validation Sub-TLVs, each specifying only one NR. Routers receiving the TLV only process the Sub-TLV where the NR field matches their own Router ID and ignore others.</t>

</section>
</section>
<section anchor="automatic-update-considerations"><name>Automatic Update Considerations</name>
<t>When network changes occur, routers need to promptly update their SAV rules to ensure the accuracy of source address validation. For Edge SAV, Area Border SAV, and AS Border SAV, the SAV rules derived from the LSDB can be updated almost in real-time as the LSDB is refreshed. For Transit SAV, propagating SAV messages via OSPF flooding ensures that all routers in the network can timely receive SAV message updates and refresh their SAV rules correspondingly.</t>

<t>For SAV messages generated based on the SPT, when a router's source prefix to be protected changes or SPT changes, the router should generate a new SAV message to inform other routers in the network to update their SAV rules. A new SAV rule about prefix p based on this message should replace the existing SAV rule about prefix p that was generated based on an earlier SPT-type SAV message.</t>

<t>For SAV messages generated based on PBR rules, if a router adds a new PBR rule which redirects traffic with a specified source prefix to a next-hop N, it should send a SAV message about this prefix to N. If a router adds a new PBR rule which redirects traffic without a specified source prefix to a next-hop N, it should send a SAV message about its own prefixes to N, and also forward the SAV messages it received from other routers to N based on this rule. Then N will further forward the received messages based on the DR and DP fields accordingly, allowing other routers in the network to timely learn the new forwarding paths added by PBR.</t>

<t>It is recommended to set an age field for SAV rules built on PBR-type SAV messages. The age refers to the amount of time that has elapsed since the SAV rule was originally generated and gradually increases over time. Periodic sending of SAV messages based on a certain PBR rule refreshes the corresponding SAV rules and reset the age field to 0. If a PBR-type SAV rule is not refreshed before it reaches Max Age, it is considered expired and should be removed from the SAV table.</t>

</section>
<section anchor="incrementalpartial-deployment-considerations"><name>Incremental/Partial Deployment Considerations</name>
<t>In terms of deployment strategy, it is recommended to deploy Edge SAV and AS Border SAV first to block spoofed traffic at the edges of a domain. If Edge SAV cannot be fully deployed within the domain, Area Border SAV is recommended to be deployed in multi-area scenarios, allowing ABRs to prevent inter-area source address spoofing. Transit SAV is recommended to be deployed in each area to validate spoofed source address packets during their forwarding process. The deployment strategy can be adjusted based on the actual performance and specific needs of each area. Start by deploying in critical areas ensures that the most sensitive or vulnerable parts of the network gain protection early in the deployment process.</t>

<t>In scenarios where Transit SAV is partially deployed within an area, it is suggested to extend the Router Information (RI) LSA <xref target="RFC7770"/> to exchange information about each router’s support for Transit SAV. Routers that support Transit SAV can proactively advertise SAV messages to neighbors that also support Transit SAV, to protect their own source prefixes from being spoofed. Routers receiving SAVNET messages can establish SAV rules to block packets coming from unauthorized interfaces. The source prefixes can be better protected with more routers within the domain supporting Transit SAV.</t>

<t>In scenarios where Transit SAV is partially deployed within an area, if routers that do not support Transit SAV have enabled PBR, this may prevent other routers from getting all the valid incoming interfaces for a given source prefix. In such cases, a flexible traffic handling strategy is recommended. Packets coming from unauthorized interfaces are dropped or rate limited only when the traffic is clearly abnormal.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>
<t>This document does not introduce any new security considerations beyond those inherent in the existing OSPF protocol implementations. The security features already available in OSPF, such as authentication mechanisms, can be leveraged to ensure the secure transmission of SAV messages. Utilizing OSPF’s built-in capabilities for securing routing information ensures that the integrity and authenticity of SAV messages are maintained across the network.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<section anchor="ospfv2"><name>OSPFv2</name>
<t>Under "OSPFv2 Extended Prefix TLV Sub-TLVs registry" as defined in <xref target="RFC7684"></xref>, IANA is requested to assign a registry value for OSPFv2 Source Prefix Validation Sub-TLV as follows:</t>

<figure><artwork><![CDATA[
+===========+==========================+==================+
|   Value   |        Description       |     Reference    |
+===========+==========================+==================+
|   TBD1    | Source Prefix Validation |   This document  |
+-----------+--------------------------+------------------+
]]></artwork></figure>

</section>
<section anchor="ospfv3"><name>OSPFv3</name>
<t>Under "OSPFv3 Extended-LSA Sub-TLVs registry" as defined in <xref target="RFC8362"></xref>, IANA is requested to assign a registry value for OSPFv3 Source Prefix Validation Sub-TLV as follows:</t>

<figure><artwork><![CDATA[
+===========+==========================+==================+
|   Value   |        Description       |     Reference    |
+===========+==========================+==================+
|   TBD2    | Source Prefix Validation |   This document  |
+-----------+--------------------------+------------------+
]]></artwork></figure>

</section>
</section>


  </middle>

  <back>


    <references title='Normative References' anchor="sec-normative-references">

<reference anchor="intra-domain-arch" target="https://datatracker.ietf.org/doc/draft-li-savnet-intra-domain-architecture/">
  <front>
    <title>Intra-domain Source Address Validation (SAVNET) Architecture</title>
    <author >
      <organization></organization>
    </author>
    <date year="2024"/>
  </front>
</reference>


<reference anchor="RFC2827">
  <front>
    <title>Network Ingress Filtering: Defeating Denial of Service Attacks which employ IP Source Address Spoofing</title>
    <author fullname="P. Ferguson" initials="P." surname="Ferguson"/>
    <author fullname="D. Senie" initials="D." surname="Senie"/>
    <date month="May" year="2000"/>
    <abstract>
      <t>This paper discusses a simple, effective, and straightforward method for using ingress traffic filtering to prohibit DoS (Denial of Service) attacks which use forged IP addresses to be propagated from 'behind' an Internet Service Provider's (ISP) aggregation point. 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="38"/>
  <seriesInfo name="RFC" value="2827"/>
  <seriesInfo name="DOI" value="10.17487/RFC2827"/>
</reference>

<reference anchor="RFC3704">
  <front>
    <title>Ingress Filtering for Multihomed Networks</title>
    <author fullname="F. Baker" initials="F." surname="Baker"/>
    <author fullname="P. Savola" initials="P." surname="Savola"/>
    <date month="March" year="2004"/>
    <abstract>
      <t>BCP 38, RFC 2827, is designed to limit the impact of distributed denial of service attacks, by denying traffic with spoofed addresses access to the network, and to help ensure that traffic is traceable to its correct source network. As a side effect of protecting the Internet against such attacks, the network implementing the solution also protects itself from this and other attacks, such as spoofed management access to networking equipment. There are cases when this may create problems, e.g., with multihoming. This document describes the current ingress filtering operational mechanisms, examines generic issues related to ingress filtering, and delves into the effects on multihoming in particular. This memo updates RFC 2827. 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="84"/>
  <seriesInfo name="RFC" value="3704"/>
  <seriesInfo name="DOI" value="10.17487/RFC3704"/>
</reference>

<reference anchor="RFC2328">
  <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="RFC7684">
  <front>
    <title>OSPFv2 Prefix/Link Attribute Advertisement</title>
    <author fullname="P. Psenak" initials="P." surname="Psenak"/>
    <author fullname="H. Gredler" initials="H." surname="Gredler"/>
    <author fullname="R. Shakir" initials="R." surname="Shakir"/>
    <author fullname="W. Henderickx" initials="W." surname="Henderickx"/>
    <author fullname="J. Tantsura" initials="J." surname="Tantsura"/>
    <author fullname="A. Lindem" initials="A." surname="Lindem"/>
    <date month="November" year="2015"/>
    <abstract>
      <t>OSPFv2 requires functional extension beyond what can readily be done with the fixed-format Link State Advertisements (LSAs) as described in RFC 2328. This document defines OSPFv2 Opaque LSAs based on Type-Length-Value (TLV) tuples that can be used to associate additional attributes with prefixes or links. Depending on the application, these prefixes and links may or may not be advertised in the fixed-format LSAs. The OSPFv2 Opaque LSAs are optional and fully backward compatible.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7684"/>
  <seriesInfo name="DOI" value="10.17487/RFC7684"/>
</reference>

<reference anchor="RFC8362">
  <front>
    <title>OSPFv3 Link State Advertisement (LSA) Extensibility</title>
    <author fullname="A. Lindem" initials="A." surname="Lindem"/>
    <author fullname="A. Roy" initials="A." surname="Roy"/>
    <author fullname="D. Goethals" initials="D." surname="Goethals"/>
    <author fullname="V. Reddy Vallem" initials="V." surname="Reddy Vallem"/>
    <author fullname="F. Baker" initials="F." surname="Baker"/>
    <date month="April" year="2018"/>
    <abstract>
      <t>OSPFv3 requires functional extension beyond what can readily be done with the fixed-format Link State Advertisement (LSA) as described in RFC 5340. Without LSA extension, attributes associated with OSPFv3 links and advertised IPv6 prefixes must be advertised in separate LSAs and correlated to the fixed-format LSAs. This document extends the LSA format by encoding the existing OSPFv3 LSA information in Type-Length-Value (TLV) tuples and allowing advertisement of additional information with additional TLVs. Backward-compatibility mechanisms are also described.</t>
      <t>This document updates RFC 5340, "OSPF for IPv6", and RFC 5838, "Support of Address Families in OSPFv3", by providing TLV-based encodings for the base OSPFv3 unicast support and OSPFv3 address family support.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8362"/>
  <seriesInfo name="DOI" value="10.17487/RFC8362"/>
</reference>

<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>

<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>




    </references>

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor="RFC5250">
  <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="RFC7770">
  <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>


<reference anchor="intra-domain-ps" target="https://datatracker.ietf.org/doc/draft-ietf-savnet-intra-domain-problem-statement/">
  <front>
    <title>Source Address Validation in Intra-domain Networks Gap Analysis, Problem Statement, and Requirements</title>
    <author >
      <organization></organization>
    </author>
    <date year="2024"/>
  </front>
</reference>
<reference anchor="sav-table" target="https://datatracker.ietf.org/doc/draft-huang-savnet-sav-table/">
  <front>
    <title>General Source Address Validation Capabilities</title>
    <author >
      <organization></organization>
    </author>
    <date year="2024"/>
  </front>
</reference>


    </references>


<?line 542?>

<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>TODO acknowledge.</t>

</section>


  </back>

<!-- ##markdown-source:
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
KUhSo5JmNUpRulLrFW5iCZKEmxS0zi878oIotJFKGj38PfyqiQoPjuKgEyIC
qrOw5GJUiVrdiQLhybPKGyAB+33XHu+1Z4nK89/6JA/u01F+FR3l/rVHySA9
dYHn3tp6GdJralMBm/lREwBwXb6oy0XlXPi5qyiJo6c2hFQG+eKuknOa6Xfp
CJRUKp1D5mYLYCjhh7LzijDnziWQWMi4LBrUdXtcoToipZgr924XxwwCn4wo
ge7J8QqfACeM2ZW1pkFRh89PdBUcgKJZUfq8MSkQiRJlbLDSanE2JdQXzgYL
4ghWFANNbALdAuv/whCoLW25NmU6CkZiTPuySH0Sa1T8cdME3QEmwESFHT6s
RILKZZZ4O4ULaVibRgES1b8QoWBtG9AtSGWY/QLV27vnZxc7QblfOvUAmWOK
JlUVTZRkOj8NM53V3bOnw50woBgZL4x9aWORcpI5MEdgiEvJI01neVj9AeNK
ii8gUE3FnQF6XCWU0emjS8F5IkaJeLHbKK5ylzDXOiqKPUm4ymgurVMLOIJk
xpIwKuDiomj3tYSFObc8mBKOaAS/2Bxyjy/OWPDB7NaiCIJhZVSA+M3KqFga
oyU+0RWVCHhYNgukpNiI0lVCBAGYUyIUxrUBssjY0YoOCASZj6+9DiElhIBT
iOUfh5x5opW3XsFYGhVl6tLppaYMxQA9Yce1hVGAIpVlUEExHQM4fMHiHyZt
LUgXC7KJpKY9WDdSaDKj4ojrgK1ie5S35o1dXj3nbIUzWEnKYkM8Fb58Tio0
XDqEpOk5HI5xA+TopV75lDuZZKCehikfTp6GuLwu3+T6zAx11wCjiPK7d2h9
WILRpxIMmskVHBMLPo6gIJQCewUVnQqzOQ8iTgQAVMwmXF0WVLa8lDFIAbn7
8mIHqw5OuGi6hi1oExNtlP4CfJeyWbtKOWtJMHM4HYH0y/Mv4Y8kNxF+pVGt
mp0JmCi8cHbzFzyDo+IVPmTJ1js9Aa483HGVK1ZTLC0GWpJB1PFjh4sPBpXy
UeDzbsQGE7RC2Z2V1m+lnpHIWZRZJtlwka82LdLSeEDgbWqlXIacZzgJSDyY
5MRP0mYCoLr6mXtr5+hmBs1JLaROzjpn9DLjlnMA5SwrTmIgfvb+/XJUyt9o
Xbp0CZ1xJyFtkdfXI9GLllmJlhYhPSZp+PQNVKfS/LLIiCER18il7t4SgpcC
pIogQoqsZy7JZILzkCgi0uTE8ZCuU+PVWZHspLRQpyEhMZt3Y1mzr/rgNI+o
XVeQ7NGQ6tS9ZMw1zgXX2GIOSab7Lvm0K1XXV87aFJrTtTm9sXBoVKU60V4G
YsMmmTkXXVoGZyrpr5JGhUNbXnYWHGXIRdT7LyyyuFp7m+1jy20MGZKRDdLu
jBKgi97AHjk7cJ1e2LDzfOGVbQPxp6pYFj5Ws8Yysj1mWmnbIo9h2+hEY5of
7hNSUbWn7zfxJ4AKoMX6UpHhfo8RuZW2G7pP2c0fGX54nG0VGpaAy0K531Ya
IrRAv0+YHWjxwqsTOBAaBYD9IPywCGGivU02Tspy1fam7DtvynGWedyLNHyS
5ORoWqc6+bOTg3b1lqxfcOIz6THia0N78BgTgG34i/WFtmrc2l/c6SCAus2y
5mYL8jpt2/sbminjaFRiylyPmZKFT6D6daBlh1+JJWHDre9Rbt8qIsYfjWHP
+UPrcxa8Gh76crIopZwwj4qJhg+tmzrIKgWcq5CgqIGQlaEHA5wbC+5NpIBE
EMbdBK/w2NKX6eWF5cjIHyocBPUVpFpW5MAsOx/it0MJZZ6fSdzNY1Zgy9BG
Djw0Xg1RFZVJT/gPu7v2i4f+ReLL+LZ/D5b8ZlnkgYY83KeAaWRAIAKgd9VF
EA78Eeu4Wlj9KqJgYBCDg8H+1z1b6ewMK6/MwvdUj7HBmncqdxcRBtQBu73F
wg6vWdjhrReGi8GoW0jrTuOXUKWr+LZHgP4onU176C50IUDEP9HzRFCEY0ox
0IAc1HPrH3A42/0SYoOngjBDGh1iwoRQWca4t1lHUQeOoh7hU5so6QFhIwCm
KDUhjaUls46QJB4F9P1W66XlLC8vkGAcqbAloupcar8RCoSz4UYftOjlQYj3
jzpfeth66WFEZC1iic6EXZk+sPdwA4tvI+MDQEZ6r/3Vw8HB171IHY2R/gGV
E6d5ra85/UedCsbZhQvh3YJ4HsF6nQcoEIMytufiKKJs7Oc6f50wn4YZfxrk
0l+rR7Q5BKKpI0JU11H9lmXI7N79CqcWegtk1ogtPBwA2+4qKgADk32pXZUD
vbhugFyzNqqwKHLqTwxTSkUcFprnNq1afrjT4dofQaLup7oSchtPCqv+0E6s
/dA55l5Xguz3XY+6zNA407Xr2SCJNM5Z/V5wLnwnynmUx+K/2http5U28krx
iUfRluON2mVGf/p5GGzxjv3Ovhdyhj95PwfwTitb7/vubM49P364xw/tvMwP
8GhX9uMNsMAKxvDPhwj2EA8xkczbGDaP7NgXNjRrFKz/n7PJulEa0M7zx9YP
oKH7NnwrYkxW21j/LXLZT6YQ+YkoZPfDegrZjRFH/rqeQtzP9RSy7uEu0uha
2zWkoW5PGs2XbkAarT9hlvCw1xJIvBf8tXXgj+TAW3SzS3QTZOci3Xwy2cBQ
ncgLg3aibddSDxlzW5+j+KfYcSOljrTV0rYdDRV2IL9wH2KEr6NhMN8tCXe5
38nDFRmUJNeFlmO7M3a/WO9OLmbmev9NKx4qNmirma4rZPSe4lClQQ9PkbGP
9TSIlqXtsuog55M0b3EUdJt73uEa6Bg2vIlmXlgPR+Ae6aBKlWI3oDDUlJAX
9Dp1nTZ7ofPYGfWxP8+1+7M6sLUugyJx0Gtq3R34iIaBIeRlXn/0vuusF+7z
fPhlY5+movCv6F3UcjFp6G4MupFrQiQOzJUY4aRruxGGrk45LDIH7ABjmUOy
aIJizp/axoVsdx2zVK6Ti+LpkE6W8lcxYn3Ls60rzJx0bpLOc33uiuV7HSGh
JM8LMFN0h3NW0hncbKjBO8drWKEdwqLhuBFPYtcIx+d9W0/OozgFuN0AwO7h
/PNuorWE9Ru5CX3EB/u3pZHmy0QgbtdNPF53ehTzBRSVbax9fxPg3BgIgxtQ
2zXubZsdjLvv6pem3n9h4yGNhmo2VEFpBkR4ALQJReo5eRlRTSfUXU76UpW5
D9VjM1OKaJh1zT+xEwh227ITTeAATJys45q2iSScYn+tdgpPmKgTt/IwICuo
5haviqEkkNzNV/Hq4uaX2Mi7EatxbcYknyZIy064/S61gwGqKLnrV8H9lX1K
GT7UCzp0B5vtAwiiXnVjMDThuBJnr1pDmLr3+oCYy1XpBTEgmy0tM/tKaQnf
cCQjqRLqCuF8AYQcNibaa54TN6NAV1EgrZtTiQIRJJNIigR1cpLFMmO1HQ6t
UQ1r/G2dZNLg5tx2K/8tditnh1dQ1WwTwny+PhV4hOEhOINpOqtL4UK4M5IS
QYvwyIcSyQqXD9VM52mndqCi5HKl+PGOzJ8omaaZjYVulZv26Q3dedzjdhOu
Er7g3AIR22UgSHqiXmbSJc134MCjX/hGP9iuXtqStdOp2McSFqtcIEE3wlNR
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

-->

</rfc>

