<?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="independent" category="info" ipr="trust200902" docName="draft-kumarvarigonda-ospf-precomputed-frr-00" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <front>
    <title abbrev="OSPF FRR">OSPF Extensions for Precomputed Fast Reroute</title>
    <seriesInfo name="Internet-Draft" value="draft-kumarvarigonda-ospf-precomputed-frr-00"/>
    <author fullname="Srinivasa Mohan Kumar Varigonda" surname="Varigonda">
      <organization>Samsung R&amp;D Bangalore</organization>
      <address>
        <email>sri.mohan@samsung.com</email>
      </address>
    </author>
    <author fullname="Veerendranatha Reddy Vallem" surname="Vallem">
      <organization>Tejas Networks</organization>
      <address>
        <email>vallemr@tejasnetworks.com</email>
      </address>
    </author>
    <date year="2025" month="May" day="11"/>
    <abstract>
      <t>This document proposes an enhancement to OSPF (Open Shortest Path First)
      that enables routers to precompute backup loop-free alternate (LFA) paths
      for fast reroute (FRR) in case of primary path failures. This mechanism
      improves convergence time and network stability by eliminating the delay
      associated with on-demand SPF recalculation during failure events.</t>
    </abstract>
  </front>
  <middle>
    <section numbered="true" toc="include">
      <name>Terminology</name>
      <t>SPT - Shortest Path Tree</t>
      <t>FRR - Fast Reroute</t>
      <t>LFA - Loop-Free Alternate</t>
      <t>iSPF - Incremental SPF</t>
    </section>
    <section numbered="true" toc="include">
      <name>Design Overview</name>
      <t>Each OSPF router computes its primary SPT as per standard operation. In addition, the router precomputes alternate paths to selected destinations, simulating failure scenarios (e.g., primary next-hop failure). These alternate paths are validated for loop-freeness using LFA criteria and stored in a local cache for immediate use.</t>
    </section>
    <section numbered="true" toc="include">
      <name>Detailed Use Case and Diagram</name>
      <t>Consider a simple OSPF topology where R1 is connected to R2, R3, and R4. The destination prefix 10.0.0.0/24 is reachable via R2 under normal conditions. The enhancement involves precomputing a backup path via R3.</t>
      <artwork name="Topology Diagram" type="ascii-art"><![CDATA[
        
        +-----+        +-----+
        | R2  |--------| R5  |
        +-----+        +-----+
         /                \
        /                  \
  +-----+                    +-----+
  | R1  |--------------------| R3  |
  +-----+                    +-----+
        \                  /
         \                /
        +-----+        +-----+
        | R4  |--------| R6  |
        +-----+        +-----+
        
      ]]></artwork>
      <t>Steps:</t>
      <t>1. R1 computes shortest path to 10.0.0.0/24 via R2.</t>
      <t>2. R1 simulates failure of R1–R2 link and recomputes SPF excluding that link.</t>
      <t>3. R3 is validated as an LFA-capable neighbor and cached as a backup next-hop.</t>
      <t>4. On failure detection (e.g., via BFD), R1 switches to the cached path via R3.</t>
    </section>
    <section numbered="true" toc="include">
      <name>Precomputation Process</name>
      <t>For each destination:</t>
      <t>a. Identify alternate neighbors not used in the primary path.</t>
      <t>b. Simulate primary link failure.</t>
      <t>c. Run SPF on the altered topology.</t>
      <t>d. Validate for loop-freeness.</t>
      <t>e. Store valid backup path in a local cache.</t>
    </section>
    <section numbered="true" toc="include">
      <name>Protocol Extensions</name>
      <t>No OSPF LSA format changes are required. Optionally, a new Router Information LSA TLV may advertise precomputed FRR capability.</t>
    </section>
    <section numbered="true" toc="include">
      <name>Proposed Opaque LSA Format: Precomputed Backup Path Advertisement</name>
      <t>In implementations where it is desirable to advertise backup paths to neighbors or controllers, an Opaque LSA format may be introduced.</t>
      <t>TLV Type: TBD2</t>
      <t>Value: List of destinations and corresponding backup next-hops</t>
      <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type=TBD2 |             Length                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                Destination Prefix (IPv4/IPv6)                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                 Backup Next-Hop Router ID                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      ]]></artwork>
    </section>
    <section numbered="true" toc="include">
      <name>Router Information Opaque LSA</name>
      <t>A TLV may indicate support for precomputed backup paths.</t>
      <t>TLV Type: TBD1</t>
      <t>Length: 1 byte</t>
      <t>Value: 0x01 indicates support</t>
      <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type=TBD1 |    Length=1   |      Value=0x01               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      ]]></artwork>
    </section>
    <section numbered="true" toc="include">
      <name>Comparison with Existing Mechanisms</name>
      <t>- OSPF LFA (RFC 5286): on-the-fly LFA, not proactive</t>
      <t>- NotVia (RFC 6981): complex, encapsulation required</t>
      <t>- TI-LFA (RFC 8665): segment-routing-based, not applicable to classic OSPF</t>
      <t>- Proposed: simple, proactive, no encapsulation or SR dependencies</t>
    </section>
    <section numbered="true" toc="include">
      <name>Interaction with BFD</name>
      <t>Bidirectional Forwarding Detection (BFD) can be used in conjunction with this proposal to detect failures quickly. Upon BFD session failure, the router can immediately switch to the precomputed alternate path.</t>
    </section>
    <section numbered="true" toc="include">
      <name>Scalability Considerations</name>
      <t>The number of precomputed backup entries should be limited to avoid overwhelming memory. Incremental SPF (iSPF) techniques SHOULD be used. Alternate paths SHOULD be computed selectively, and aging mechanisms MAY be applied.</t>
    </section>
    <section numbered="true" toc="include">
      <name>Security Considerations</name>
      <t>This mechanism does not introduce new protocol messages and inherits OSPF's security properties. However, LSAs used in precomputation MUST be validated to prevent path manipulation by attackers. Authentication and origin validation are RECOMMENDED.</t>
    </section>
    <section numbered="true" toc="include">
      <name>IANA Considerations</name>
      <t>This document makes no requests of IANA at this time.</t>
    </section>
    <section numbered="true" toc="include">
      <name>Acknowledgements</name>
      <t>The authors thank members of the IETF OSPF Working Group for their feedback and suggestions on earlier versions of this draft.</t>
    </section>
    <section numbered="true" toc="include">
      <name>Contributors</name>
      <t>Srinivasa Mohan Kumar Varigonda &lt;sri.mohan@samsung.com&gt;</t>
      <t>Veerendranatha Reddy Vallem &lt;vallemr@tejasnetworks.com&gt;</t>
    </section>
    <section numbered="true" toc="include">
      <name>Appendix A: Example CLI Behavior</name>
      <t>&lt;CODE BEGINS&gt;</t>
      <artwork><![CDATA[
router ospf 1
  fast-reroute precompute
  backup-paths enable
  timers lfa reevaluation 300
      ]]></artwork>
      <t>&lt;CODE ENDS&gt;</t>
    </section>
    <section numbered="true" toc="include">
      <name>Appendix B: Future Work</name>
      <t>- Support for SR-MPLS and SRv6 backup path precomputation.</t>
      <t>- Incorporation of topology constraints in alternate path selection.</t>
    </section>
    <section numbered="true" toc="include">
      <name>Appendix C: Change Log</name>
      <t>draft-kumarvarigonda-ospf-precomputed-frr-00</t>
      <t>- Initial version including use case, diagram, and precomputation process.</t>
      <t>- Added example Opaque LSA encoding and scalability discussion.</t>
      <t>- Included proposed backup path advertisement format.</t>
      <t>- Added comparison with existing mechanisms section.</t>
    </section>
  </middle>
  <back>
    <!-- references remain unchanged -->
  </back>
</rfc>
