<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.5 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-dong-lsr-flex-algo-time-constraint-01" category="std" consensus="true" submissionType="IETF" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.4 -->
  <front>
    <title abbrev="IGP Flex-Algo with Time Constraint">IGP Flexible Algorithm with Time Constraint</title>
    <seriesInfo name="Internet-Draft" value="draft-dong-lsr-flex-algo-time-constraint-01"/>
    <author initials="J." surname="Dong" fullname="Jie Dong">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <street>No. 156 Beiqing Road</street>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>jie.dong@huawei.com</email>
      </address>
    </author>
    <author initials="L." surname="Zhang" fullname="Li Zhang">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <street>No. 156 Beiqing Road</street>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>zhangli344@huawei.com</email>
      </address>
    </author>
    <date year="2025" month="November" day="2"/>
    <area>Routing</area>
    <workgroup>LSR</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 42?>

<t>IGP Flexible Algorithm allows IGPs to compute constraint-based paths over the network using different types of metrics or constraints.</t>
      <t>This document defines a new type of constraint called "Time Constraint", which can be used to control the time period during which a Flex-Algorithm takes effect for constraint-based path calculation. Such mechanism may be useful in network scenarios where either the traffic demand or the characteristics of the network varies as a function of time. The procedures of using Time Constraint in Flexible Algorithm is also described.</t>
    </abstract>
  </front>
  <middle>
    <?line 49?>

<section anchor="intro">
      <name>Introduction</name>
      <t>IGP Flexible Algorithm <xref target="RFC9350"/> allows IGPs to compute constraint-based paths over the network using different types of metrics or constraints.</t>
      <t>In some network scenarios, the traffic demand varies as a function of time, and in different time period, the network path for such traffic can be computed using different set of constraints.</t>
      <t>In some other network scenarios, the characteristics of the network itself, such as the connectivity between nodes, the link attributes or the node attributes may change as a function of time, the network path meeting specific requirements may need to be recalculated at specific time, and the calculation result can be used for a specific time duration.</t>
      <t><xref target="I-D.ietf-tvr-requirements"/> specifies that the schedule should be considered for making forwarding decisions and calculating paths in the distributed routing scenario. However, there are no detail descriptions on how to calculate paths in a distributed manner and forward packets based on schedule.</t>
      <t>This document defines a new type of constraint called "Time Constraint", which can be used to control the time period during which a Flex-Algorithm takes effect for constraint-based path calculation. The procedure of using Time Constraints in Flexible Algorithm is also described.</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="time-constraints-of-flexible-algorithm">
      <name>Time Constraints of Flexible Algorithm</name>
      <t>The Time Constraints of Flexible Algorithm are used to specify the time when the Flexible Algorithm is in effect, and only the network nodes and links that are operational and meet other constraints of the Flexible Algorithm during the active period can be used for path computation. It also indicates the time at which the constraint-based path computation of this Flexible Algorithm should be performed.  Similar to other constraints of Flexible Algorithm, Time Constraint is defined as one sub-TLV of the Flexible Algorithm Definition (FAD).  The Time Constraints sub-TLV specifies the flags, initial time, end time, recurrence, slot number and the duration of each time slot when the Flexible Algorithm takes effect (in this document it is called the Flexible Algorithm is active). The encoding of Time Constraint in IS-IS and OSPF are specified in below subsections.</t>
      <section anchor="time-constraint-sub-tlv-of-is-is-fad-tlv">
        <name>Time Constraint Sub-TLV of IS-IS FAD TLV</name>
        <t>IS-IS Flex-Algo Time Constraint Sub-TLV is a sub-TLV of the IS-IS FAD Sub-TLV.  It has the following format:</t>
        <figure anchor="ref-to-fig1">
          <name>Encoding of Time Constraint Sub-TLV of IS-IS FAD TLV</name>
          <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      |     Length    |     Flags     |    Reserved   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                    Initial Time (64 bit)                      ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      End Time (32 bit)                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Recurrence (32 bit)                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Slot Number  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Slot #1 Enable Time (32 bit)               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Slot #1 Disable Time (32 bit)              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                                ...                            ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Slot #n Enable Time (32 bit)               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Slot #n Disable Time (32 bit)              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                             Sub-TLVs                          ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t>Type (8 bits): TBD1, used to identify the type of Time Constraint Sub-TLV.</t>
        <t>Length (8 bits): The size of the value field in octets.</t>
        <t>Flags (8 bits): All flags are reserved for future use.</t>
        <t>Reserved (8 bits): Reserved for future use. <bcp14>MUST</bcp14> be set to 0 on transmission and ignored at reception.</t>
        <t>Initial Time (64 bits): The number of seconds since the epoch. It is the base timeline for the Flex-Algorithm’s time constraint.</t>
        <t>End Time (32 bits): The number of seconds since the initial time. It indicates the time when the Flex-Algorithm expires. When the end time of a Flex-Algorithm arrives, the routing table of this Flex-Algorithm should be deleted. When the End Time is set to 0, it indicates the Flex-Algorithm never expires.</t>
        <t>Recurrence (32 bits): This is used to indicate the recurrence period of all the time slots of the Flexible Algorithm in seconds. When the recurrence is set to 0, it indicates the slots in the Flex-Algo are not cyclic.</t>
        <t>Slot Number (8 bits): It is used to indicate the number of time slot in the following fields. Each time slot consists of enable time and disable time. The time slots indicate the duration when the Flex-Algorithm is considered active.</t>
        <t>Slot# Enable Time (32 bits): The number of seconds since the initial time. It is used to indicate when the Flex-Algorithm start to take effect for a specific time slot.</t>
        <t>Slot# Disable Time (32 bits): The number of seconds since the initial time. It is used to indicate when the Flex-Algorithm becomes ineffective.</t>
        <t>Sub-TLVs: Optional sub-TLVs.</t>
      </section>
      <section anchor="time-constraint-sub-tlv-of-ospf-fad-tlv">
        <name>Time Constraint Sub-TLV of OSPF FAD TLV</name>
        <t>OSPF Flex-Algo Time Constraint Sub-TLV is a sub-TLV of the OSPF FAD TLV.  It has the following format:</t>
        <figure anchor="ref-to-fig2">
          <name>Encoding of Time Constraint Sub-TLV of OSPF FAD TLV</name>
          <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             |             Length            | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Flags     |   Reserved    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                    Initial Time (64 bit)                      ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      End Time (32 bit)                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Recurrence (32 bit)                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Slot Number  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Slot #1 Enable Time (32 bit)               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Slot #1 Disable Time (32 bit)              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                                ...                            ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Slot #n Enable Time (32 bit)               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Slot #n Disable Time (32 bit)              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                            Sub-TLVs                           ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t>Type(16 bits): TBD2, used to identify the type of Time Constraint Sub-TLV.</t>
        <t>Length (16 bits): The size of the value field in octets.</t>
        <t>The description, format, and meaning of the flags, Initial Time, End time, Recurrence, Slot Number, Slot# Enable Time, Slot# Disable Time fields remain the same as in the Time Constraint Sub-TLV of IS-IS FAD TLV.</t>
      </section>
    </section>
    <section anchor="procedures">
      <name>Procedures</name>
      <t>The time constraint extension brings some updates to the Flex-Algorithm mechanism. This section describes the updates to Flex-Algorithm Definition advertisement, Flex-Algorithm path calculation, Flex-Algorithm-based packet forwarding and traffic switching between Flex-Algorithms.</t>
      <t>It should be noted that the process of how a node receive time variable link-state information is out of scope of this document. It is assumed that each node can obtain the time variable information of the whole network by some means.</t>
      <section anchor="time-constrained-flex-algorithm-definition-advertisement">
        <name>Time-Constrained Flex-Algorithm Definition Advertisement</name>
        <t>The valid time slots and the recurrence of the Flex-Algorithm can be determined according to the predicted change of the traffic or the network. Multiple time-constrained Flex-Algorithms <bcp14>MAY</bcp14> be defined and advertised for path calculation in different time ranges. In this case there is usually no overlapping between different time-constrained Flex-Algorithms. A time-constrained Flex-Algorithm also includes with other constraints as defined in <xref target="RFC9350"/>. For example, the Metric Type, the Admin Groups, etc. Only a subset of the routers participating in the particular Flex-Algorithm needs to advertise the definition of the time-constrained Flex-Algorithm, in which the time constraints are encoded as one Sub-TLV of the FAD TLV (OSPF) or FAD sub-TLV (IS-IS).</t>
      </section>
      <section anchor="advertisement-of-node-participation-in-time-constrained-flex-algorithm">
        <name>Advertisement of Node Participation in Time-Constrained Flex-Algorithm</name>
        <t>When a node is configured to participate in a time-constrained Flex-Algorithm, the node <bcp14>MUST</bcp14> advertise the Flex-Algorithm participation according to the data plane mechanism used with Flex-Algorithm. For SR-MPLS data plane, the mechanisms defined in <xref target="RFC8665"/>, <xref target="RFC8666"/>, <xref target="RFC8667"/> <bcp14>MUST</bcp14> be used, and for SRv6 data plane, the mechanisms defined in <xref target="RFC9352"/>, <xref target="RFC9513"/> <bcp14>MUST</bcp14> be used.</t>
        <t>Based on the End Time of the Flex-Algorithm, nodes participating in the Flex-Algorithm <bcp14>MAY</bcp14> withdraw the data plane identifiers it advertised for the Flex-Algorithm (e.g. the Algorithm-specific SR SIDs and SRv6 Locators).</t>
      </section>
      <section anchor="time-constrained-flex-algorithm-path-calculation">
        <name>Time-Constrained Flex-Algorithm Path Calculation</name>
        <t>Constraint-based path computation of a time-constrained Flex-Algorithm <bcp14>SHOULD</bcp14> be performed before the enable time of each valid time slot of the Flex-Algorithm. A local timer <bcp14>MAY</bcp14> be used to determine the time at which the calculation is performed, so that the calculation is finished at the start time of the time slot. The mechanism for calculating Flex-Algorithm paths as defined in section 13 of <xref target="RFC9350"/> still applies here. The path computation <bcp14>SHOULD</bcp14> be based on the network topology at the moment of the start time, possibly with predicted changes of the network topology and attributes which may happen during the time slot. Only network nodes and links that are fully operational during the period of the Flex-Algorithm time slot can used in Flex-Algorithm path computation of that time slot. Topology changes which are received outside any time slot of a Flex-Algorithm are stored only and will not trigger path calculation of the Flex-Algorithm. This way, unnecessary constraint-based path calculation can be avoided.</t>
      </section>
      <section anchor="time-constrained-flex-algorithm-and-packet-forwarding">
        <name>Time-Constrained Flex-Algorithm and Packet Forwarding</name>
        <t>For a time-constrained Flex-Algorithm, the computed paths <bcp14>MUST</bcp14> be installed in the forwarding plane of network nodes which participate in the Flex-Algorithm before the enable time of each time slot of the Flex-Algorithm. For SR-MPLS and SRv6 data plane, the mechanisms of installing Flex-Algorithm-specific forwarding entries as described in section 14 of <xref target="RFC9350"/> applies here.</t>
        <t>When a packet arrives at the edge of the network, according to the arrival time and local policy, the ingress edge node <bcp14>SHOULD</bcp14> determine which in effect time-constrained Flex-Algorithm will be used for forwarding the packet in the network, then the packet is  encapsulated with the Flex-Algorithm-specific SR-MPLS Prefix SID or SRv6 SID corresponding to the selected Flex-Algorithm. The intermediate nodes <bcp14>SHOULD</bcp14> forward the packet according to forwarding entries of the Flex-Algorithm.</t>
      </section>
      <section anchor="time-constrained-flex-algorithm-switching">
        <name>Time-Constrained Flex-Algorithm Switching</name>
        <t>In order to adapt to the changes in network traffic or network connectivity, multiple time-constrained Flex-Algorithms <bcp14>MAY</bcp14> be provisioned, the effective time slots of which are complementary. This can provide network paths to meet specific requirement at different time period. At the moments when a Flex-Algorithm become inactive (not in any of its valid time slot), traffic <bcp14>SHOULD</bcp14> be switched over to paths calculated with another active time-constrained Flex-Algorithm. Such switchover can be configured via local policy.</t>
        <t>When a time-constrained Flex-Algorithm become inactive, network edge nodes <bcp14>MUST NOT</bcp14> use Flex-Algorithm-specific data plane encapsulation for any packets received after the disable time of the Flex-Algorithm. While the Flex-Algorithm-specific forwarding entries installed in the forwarding plane <bcp14>SHOULD NOT</bcp14> be deleted, this is to make sure that packets in-flight with Flex-Algorithm-specific data plane encapsulation can be forwarded correctly if the path is still available. Traffic <bcp14>SHOULD</bcp14> be switched to paths of other Flex-Algorithms which can meet the requirement while have complementary time slots.</t>
        <t>When a Flex-Algorithm expires (the end time of the Flex-Algorithm arrives), the Flex-Algorithm-specific forwarding entries installed in the forwarding plane <bcp14>SHOULD</bcp14> be deleted after a local configured time period, so that the packets in-flight in the network can be forwarded correctly if the path is still available.</t>
        <t>By the above mechanisms, there is no packet loss during the switchover of time-constrained Flex-Algorithms.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This document introduces no additional security vulnerabilities in addition to the ones as described in <xref target="RFC9350"/>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to assign a new code point for "Flexible Algorithm Time Constraint Sub-TLV" under the "IS-IS Sub-Sub-TLVs for Flexible Algorithm Definition Sub-TLV" Registry.</t>
      <table>
        <thead>
          <tr>
            <th align="left">Type</th>
            <th align="left">Description</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TBD1</td>
            <td align="left">Flexible Algorithm Time Constraint</td>
            <td align="left">This document</td>
          </tr>
        </tbody>
      </table>
      <t>IANA is requested to assign a new code point for "Flexible Algorithm Time Constraint Sub-TLV" under the "OSPF Flexible Algorithm Definition TLV Sub-TLV" Registry.</t>
      <table>
        <thead>
          <tr>
            <th align="left">Type</th>
            <th align="left">Description</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TBD2</td>
            <td align="left">Flexible Algorithm Time Constraint</td>
            <td align="left">This document</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank XXX for the review and discussion of this document.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9350" target="https://www.rfc-editor.org/info/rfc9350" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9350.xml">
          <front>
            <title>IGP Flexible Algorithm</title>
            <author fullname="P. Psenak" initials="P." role="editor" surname="Psenak"/>
            <author fullname="S. Hegde" initials="S." surname="Hegde"/>
            <author fullname="C. Filsfils" initials="C." surname="Filsfils"/>
            <author fullname="K. Talaulikar" initials="K." surname="Talaulikar"/>
            <author fullname="A. Gulko" initials="A." surname="Gulko"/>
            <date month="February" year="2023"/>
            <abstract>
              <t>IGP protocols historically compute the best paths over the network based on the IGP metric assigned to the links. Many network deployments use RSVP-TE or Segment Routing - Traffic Engineering (SR-TE) to steer traffic over a path that is computed using different metrics or constraints than the shortest IGP path. This document specifies a solution that allows IGPs themselves to compute constraint-based paths over the network. This document also specifies a way of using Segment Routing (SR) Prefix-SIDs and SRv6 locators to steer packets along the constraint-based paths.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9350"/>
          <seriesInfo name="DOI" value="10.17487/RFC9350"/>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <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>
        <reference anchor="RFC8665" target="https://www.rfc-editor.org/info/rfc8665" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8665.xml">
          <front>
            <title>OSPF Extensions for Segment Routing</title>
            <author fullname="P. Psenak" initials="P." role="editor" surname="Psenak"/>
            <author fullname="S. Previdi" initials="S." role="editor" surname="Previdi"/>
            <author fullname="C. Filsfils" initials="C." surname="Filsfils"/>
            <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"/>
            <date month="December" year="2019"/>
            <abstract>
              <t>Segment Routing (SR) allows a flexible definition of end-to-end paths within IGP topologies by encoding paths as sequences of topological subpaths called "segments". These segments are advertised by the link-state routing protocols (IS-IS and OSPF).</t>
              <t>This document describes the OSPFv2 extensions required for Segment Routing.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8665"/>
          <seriesInfo name="DOI" value="10.17487/RFC8665"/>
        </reference>
        <reference anchor="RFC8666" target="https://www.rfc-editor.org/info/rfc8666" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8666.xml">
          <front>
            <title>OSPFv3 Extensions for Segment Routing</title>
            <author fullname="P. Psenak" initials="P." role="editor" surname="Psenak"/>
            <author fullname="S. Previdi" initials="S." role="editor" surname="Previdi"/>
            <date month="December" year="2019"/>
            <abstract>
              <t>Segment Routing (SR) allows a flexible definition of end-to-end paths within IGP topologies by encoding paths as sequences of topological subpaths called "segments". These segments are advertised by the link-state routing protocols (IS-IS and OSPF).</t>
              <t>This document describes the OSPFv3 extensions required for Segment Routing with the MPLS data plane.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8666"/>
          <seriesInfo name="DOI" value="10.17487/RFC8666"/>
        </reference>
        <reference anchor="RFC8667" target="https://www.rfc-editor.org/info/rfc8667" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8667.xml">
          <front>
            <title>IS-IS Extensions for Segment Routing</title>
            <author fullname="S. Previdi" initials="S." role="editor" surname="Previdi"/>
            <author fullname="L. Ginsberg" initials="L." role="editor" surname="Ginsberg"/>
            <author fullname="C. Filsfils" initials="C." surname="Filsfils"/>
            <author fullname="A. Bashandy" initials="A." surname="Bashandy"/>
            <author fullname="H. Gredler" initials="H." surname="Gredler"/>
            <author fullname="B. Decraene" initials="B." surname="Decraene"/>
            <date month="December" year="2019"/>
            <abstract>
              <t>Segment Routing (SR) allows for a flexible definition of end-to-end paths within IGP topologies by encoding paths as sequences of topological sub-paths, called "segments". These segments are advertised by the link-state routing protocols (IS-IS and OSPF).</t>
              <t>This document describes the IS-IS extensions that need to be introduced for Segment Routing operating on an MPLS data plane.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8667"/>
          <seriesInfo name="DOI" value="10.17487/RFC8667"/>
        </reference>
        <reference anchor="RFC9352" target="https://www.rfc-editor.org/info/rfc9352" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9352.xml">
          <front>
            <title>IS-IS Extensions to Support Segment Routing over the IPv6 Data Plane</title>
            <author fullname="P. Psenak" initials="P." role="editor" surname="Psenak"/>
            <author fullname="C. Filsfils" initials="C." surname="Filsfils"/>
            <author fullname="A. Bashandy" initials="A." surname="Bashandy"/>
            <author fullname="B. Decraene" initials="B." surname="Decraene"/>
            <author fullname="Z. Hu" initials="Z." surname="Hu"/>
            <date month="February" year="2023"/>
            <abstract>
              <t>The Segment Routing (SR) architecture allows a flexible definition of the end-to-end path by encoding it as a sequence of topological elements called "segments". It can be implemented over the MPLS or the IPv6 data plane. This document describes the IS-IS extensions required to support SR over the IPv6 data plane.</t>
              <t>This document updates RFC 7370 by modifying an existing registry.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9352"/>
          <seriesInfo name="DOI" value="10.17487/RFC9352"/>
        </reference>
        <reference anchor="RFC9513" target="https://www.rfc-editor.org/info/rfc9513" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9513.xml">
          <front>
            <title>OSPFv3 Extensions for Segment Routing over IPv6 (SRv6)</title>
            <author fullname="Z. Li" initials="Z." surname="Li"/>
            <author fullname="Z. Hu" initials="Z." surname="Hu"/>
            <author fullname="K. Talaulikar" initials="K." role="editor" surname="Talaulikar"/>
            <author fullname="P. Psenak" initials="P." surname="Psenak"/>
            <date month="December" year="2023"/>
            <abstract>
              <t>The Segment Routing (SR) architecture allows a flexible definition of the end-to-end path by encoding it as a sequence of topological elements called segments. It can be implemented over an MPLS or IPv6 data plane. This document describes the OSPFv3 extensions required to support SR over the IPv6 data plane.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9513"/>
          <seriesInfo name="DOI" value="10.17487/RFC9513"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.ietf-tvr-requirements" target="https://datatracker.ietf.org/doc/html/draft-ietf-tvr-requirements-01" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-tvr-requirements.xml">
          <front>
            <title>TVR (Time-Variant Routing) Requirements</title>
            <author fullname="Daniel King" initials="D." surname="King">
              <organization>Lancaster University</organization>
            </author>
            <author fullname="Luis M. Contreras" initials="L. M." surname="Contreras">
              <organization>Telefonica</organization>
            </author>
            <author fullname="Brian Sipos" initials="B." surname="Sipos">
              <organization>JHU/APL</organization>
            </author>
            <date day="23" month="October" year="2023"/>
            <abstract>
              <t>Time-Variant Routing (TVR) refers to the calculation of a path or subpath through a network where the time of message transmission (or receipt) is part of the overall route computation. This means that, all things being equal, a TVR computation might produce different results depending on the time that the computation is performed without other detectable changes to the network topology or other cost functions associated with the route. This document introduces requirements where TVR computations could improve message exchange in a network.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tvr-requirements-01"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
CP0/AAA=

-->

</rfc>
