IGP for Temporal Links
Huaimo Chen
Futurewei
Boston, MA
USA
hchen.ietf@gmail.com
Aijun Wang
China Telecom
Beiqijia Town, Changping District
Beijing
102209
China
wangaj3@chinatelecom.cn
Gyan S. Mishra
Verizon
13101 Columbia Pike
Silver Spring
MD 20904
USA
301 502-1347
gyan.s.mishra@verizon.com
Zhenqiang Li
China Mobile
No.32 Xuanwumenxi Ave., Xicheng District
Beijing
100032
P.R. China
li_zhenqiang@hotmail.com
Yanhe Fan
Casa Systems
USA
yfan@casa-systems.com
Xufeng Liu
Alef Edge
USA
xufeng.liu.ietf@gmail.com
Lei Liu
Fujitsu
USA
liulei.kddi@gmail.com
2024
This document specifies extensions to OSPF and IS-IS for temporal links whose costs are functions of time.

Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

Introduction
The cost of a link is normally a constant such as C forever (i.e., from current time to indefinite future, refer to Figure 1) when there is no change on the cost of the link.

Constant Link Cost
  Link Cost
    ^
    |
   C|______________________________________________________
    |
    |
   -+------------------------------------------------------> Time
    |

However, there are some links in a network whose costs are functions of time (refer to Figure 2). These links are called temporal links.

Link Cost of Temporal Link
  Link Cost
    ^
    |
    |                                C3___________
    |        C1__________
    |
  C0|__________                                   C4_________
    |                  C2________________
    |
   -+-------------------------------------------------------> Time
    |T0        T1        T2              T3         T4

This document proposes extensions to IGP (i.e., OSPF and IS-IS) for distributing cost functions of temporal links and handling temporal links. Every node in the network computes the shortest paths using the costs of temporal links based on the cost functions.

Temporal Link Cost Functions
This section illustrates a few temporal link cost functions through an example.

Example Network with Temporal Links
Figure 3 shows an example network topology containing temporal links. Nodes Sa, Sb and Sc are satellites in a first orbit. Nodes S1, S2 and S3 are satellites in a second orbit, which is adjacent to the first orbit. Nodes A and B are the nodes on the earth each with a ground station seeing or connecting a satellite.
A satellite has links from it to its adjacent satellites. These links are stable. The costs of these links are not changing typically. For example, node Sa has links from Sa to Sb and S1; node Sb has links from Sb to Sa, Sc and S2. These links are stable.
A satellite moves around the earth in its orbit. It moves around the earth once in a period. For example, a starlink satellite moves around the earth once every 95 minutes (i.e., 5,700 seconds). During this period, the satellite can see or have link from it to a node on the earth in a time interval.
For example, the time interval is 398 seconds for a starlink satellite. During each period, a satellite can see or have a link from it to a node on the earth for a time interval.
For example, when node Sa is a starlink satellite, node Sa has a link from Sa to A for a time interval such as 398 seconds every period such as 95 minutes (i.e., 5,700 seconds), node A has a link from A to Sa for the time interval such as 398 seconds every period such as 95 minutes (i.e., 5,700 seconds). Similarly, for the links between Sb and A, Sc and A, S1 and B, S2 and B, and S3 and B.

Network with Temporal Links
                   \               \
                    \               \
       - - - - - - [ Sa ]----------[ S1 ]  - - - - - - - - - -
      /               \               \                       \
     /                 \               \                       \
    /                   \               \                       \
 [ A ] - - - - - - - - [ Sb ]----------[ S2 ]  - - - - - - - - [ B ]
    \                     \               \                     /
     \                     \               \                   /
      \                     \               \                 /
       -  -  - - - - - - - [ Sc ]----------[ S3 ]  - - - - - -
                              \               \
                               \               \
The link between a satellite node and a node on the earth is laser or microwave. The quality or cost of the link is affected by weather conditions. In a cloudy condition for a time interval, the link bandwidth is reduced. When Bw is the bandwidth of the link in an ideal weather condition, Bw is reduced to P*Bw in a cloudy condition, wherein P is a percentage such as 50 percents. When the cost of the link is C in the ideal condition and is calculated using a reference bandwidth, the cost of the link is increased to C/P in the cloudy condition in the time interval. When P = 50 percents, the cost of the link is increased to 2C (= C/0.5) in the time interval.

Periodic Cost Function
Figure 4 shows an example of a periodic temporal link cost function (or periodic cost function for short). The cost of a temporal link such as link from A to Sa is C0 for a time interval such as 400 seconds from a given time T0, in every time period such as 95 minutes (i.e., 5,700 seconds).
When the given time T0 is now, the cost of the link is C0 for 400 seconds and then Infinity for 5,300 seconds in every 95 minutes (i.e., 5,700 seconds).
That is that the cost of the link is C0 from now for 400 seconds, and then Infinity for 5,300 seconds (i.e., the rest of the first 95 minutes); C0 from 95 minutes later for 400 seconds and then Infinity for 5,300 seconds (i.e., the rest of the second 95 minutes); C0 from 2x95 minutes later for 400 seconds and then Infinity for 5,300 seconds (i.e., the rest of the third 95 minutes); and so on.

Periodic Temporal Link Cost Function
  Link Cost
    ^
    |                                                 C1 = Infinity
    |    C1_____________     C1_____________     C1_____________
    |
    |
  C0|______            C0______            C0______
    |
    |
   -+---------------------------------------------------------->Time
    |T0    T1           T2     T3           T4     T5
    | 400s |<- 5,300s ->| 400s |<- 5,300s ->| 400s |<- 5,300s ->|
    |<-- 95m(5,700s) -->|<-- 95m(5,700s) -->|<-- 95m(5,700s) -->|

Change in Given Periods
The cost of a temporal link is C0 for a time interval in every time period except for some given periods. In each of the given periods, the cost of the link is C0', for example, C0' = 2*C0.
When given periods are two periods from given time T0' as shown in Figure 5, for each of the two periods from time T0', the cost of the link is C0' for 400 seconds for the period (95 minutes from T0' or 95 minutes from T2') and then Infinity for the rest of the period.
In the first given period (i.e., 95 minutes from T0'), the cost of the link is C0' from T0' for 400 seconds and then Infinity for 5,300 seconds (i.e., the rest of the first given period); in the second given period (i.e., 95 minutes from T2'), the cost of the link is C0' from T2' for 400 seconds and then Infinity for 5,300 seconds (i.e., the rest of the second given period).

Periodic Link Cost with C0' in Given Periods
  Link Cost
    ^
    |                                              C1 = Infinity
    |    C1__ ...        C1___________     C1___________
    |
    |
    |             C0'______         C0'______
  C0|______ ...                                         C0______
    |
   -+----------------------------------------------------------->Time
    |T0              T0'   T1'         T2'   T3'         T4     T5
    |                | 400s |<-5,300s->| 400s |<-5,300s->| 400s |
    |                |<--95m(5,700s)-->|<--95m(5,700s)-->|

Change in Given Interval
The cost of a temporal link is C0 for a time interval in every time period except for a given time interval. In the given interval, the cost of the link is Ca, for example, Ca = 3*C0.
When the given interval is 5,000 seconds from given time T0' as shown in Figure 6, the cost of the link is Ca from T2 for (T1' - T2) seconds, C0 from T1' for (T3 - T1') seconds, and then Infinity for the rest of the period (95 minutes from T2 to T4).
For the time period from T0' to T2, which overlaps with the time period from T1 to T2, the cost of the link is Infinity, which is the bigger cost (Infinity > Ca) in the overlapped period (i.e., from T0' to T2).
For the time period from T2 to T1', which overlaps with the time period from T2 to T3, the cost of the link is Ca, which is the bigger cost (Ca > C0) in the overlapped period (i.e., from T2 to T1').

Periodic Link Cost with Ca in Given Interval
Link Cost
  ^
  |                                              C1 = Infinity
  |    C1___________        C1___________     C1___________
  |
  |                 Ca____
  |
C0|______                 ____C0        C0______
  |            |<-5,000s->|
 -+--------------------------------------------------------->Time
  |T0    T1    T0'    T2 T1' T3           T4     T5
  | 400s |            | 400s |            | 400s |          |
  |<-- 95m(5,700s) -->|<-- 95m(5,700s) -->|<--95m(5,700s)-->|

Extensions to IGP
This section defines cost function Sub-TLVs for representing a cost function of a temporal link and describes procedures for handling temporal links.

Cost Function Sub-TLVs
Three link cost function Sub-TLVs are defined. They are Recurrent time interval Sub-TLV, Limited Recurrent time interval Sub-TLV and Fixed time interval Sub-TLV.
Recurrent time interval Sub-TLV is shown in Figure 7. Its value contains Start-time, Interval-length and Period.
This Sub-TLV with Start-time = T0, Interval-length = 400 and Period = 5,700 represents a cost function similar to the one as shown in Figure 4. The cost of the link is normal link cost such as C0 from a time indicated by Start-time = T0 for a time interval indicated by Interval-length = 400 seconds in every period indicated by Period = 5,700 seconds, and Infinity for the rest of time in every period.

Recurrent Time Interval Sub-TLV

 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           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Start-time                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Interval-length                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            Period                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Limited Recurrent time interval Sub-TLV is shown in Figure 8. Its value contains Start-time, Interval-length, Period, Number-periods, and Cost.
This Sub-TLV with Start-time = T0', Interval-length = 400, Period = 5,700, Number-periods = 2 and Cost = C0' represents a part of a cost function similar to the one as shown in Figure 5.
The cost of the link is Cost = C0' from a time indicated by Start-time = T0' for a time interval indicated by Interval-length = 400 seconds in each period indicated by Period = 5,700 seconds for the number of periods indicated by Number-periods = 2 periods, and Infinity for the rest of time in each of these 2 periods.
This Sub-TLV with Start-time = T0', Interval-length = 400, Period = 5,700, Number-periods = 2 and Cost = C0' and Recurrent time interval Sub-TLV with Start-time = T0, Interval-length = 400 and Period = 5,700 represent a cost function similar to the one as shown in Figure 5.

Limited Recurrent Time Interval Sub-TLV

 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            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Start-time                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Interval-length                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            Period                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Number-periods        |             Cost              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Fixed time interval Sub-TLV is shown in Figure 9. Its value contains Start-time, Interval-length and Cost. This Sub-TLV with Start-time = T0', Interval-length = 5,000 and Cost = Ca represents a part of a cost function similar to the one as shown in Figure 6.
The cost of the link is Cost = Ca from a time indicated by Start-time = T0' for a time interval indicated by Interval-length = 5,000 seconds.
This Sub-TLV with Start-time = T0', Interval-length = 5,000 and Cost = Ca and Recurrent time interval Sub-TLV with Start-time = T0, Interval-length = 400 and Period = 5,700 represent a cost function similar to the one as shown in Figure 6.

Fixed Time Interval Sub-TLV

 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 (TBD3)          |         Length                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Start-time                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Interval-length                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             Cost                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Every node distributes a cost function configured on each temporal link of the node to the other nodes in the network.
For OSPFv2, the cost function Sub-TLVs for a cost function configured on a temporal link of the node is distributed in the OSPFv2 Extended Link TLV for the link in the OSPFv2 Extended Link Opaque LSA with LS Type 10 defined in [RFC7684].
For OSPFv3, the cost function Sub-TLVs for a cost function configured on a temporal link of the node is distributed in the Router-Link TLV for the link in the OSPFv3 E-Link-LSA defined in [RFC8362].
For IS-IS, the cost function Sub-TLVs for a cost function configured on a temporal link of the node is included in the Extended IS Reachability TLV of TLV type 22 for the link in a Link State Protocol data unit (PDU) (LSP).

Procedures
Every node in a network maintains status of each of temporal links in its link state database (LSDB). The status includes cost function such as cost function Sub-TLVs for the link, the down or up state of the link. Every node also maintains the earliest link change time (ELCT) at which the cost of a temporal link will change from C (which is not Infinity) to Infinity or vice versa.
Every node computes the shortest paths using the costs of links at ELCT before ELCT and builds a next routing/forwarding table (NRT) based on the paths. When the time is ELCT, every node uses its NRT as its current routing/forwarding table, and then every node finds a new ELCT, computes the shortest paths using the costs of links at the new ELCT before the new ELCT and builds a new next routing/forwarding table (NRT) based on the paths. Note that the clocks on all the nodes in a network must be synchronized.

Security Considerations
TBD.

IANA Considerations
TBD.

Normative References
[ISO10589]

Information technology -- Telecommunications and information exchange between systems -- Intermediate System to Intermediate System intra-domain routing information exchange protocol for use in conjunction with the protocol for providing the connectionless-mode network service (ISO 8473)
ISO/IEC 10589:2002, Second Edition
International Organization for Standardization
November 2002

Informative References
[RFC2119]
[RFC8174]
[RFC7684]
[RFC8362]
Acknowledgments
The authors would like to thank Bruno Decraene, and Donald E. Eastlake for the valuable comments and suggestions on this draft.