Loop-free routing in computer networks and the internet
DARE addresses inefficiencies in current routing algorithms by enabling loop-free paths with multiple successor nodes and active state computations, enhancing scalability and throughput in computer networks.
Patent Information
- Application Number
- PCT/CA2025/050978
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2024-07-19
- Filing Date
- 2025-07-15
- Publication Date
- 2026-01-22
AI Technical Summary
Current routing algorithms in computer networks suffer from limitations such as temporary routing loops, excessive communication overhead, and inefficiencies in responding to network changes, particularly in large-scale networks, due to the use of single-path routing and complex state machines.
The Diffusing Algorithm for Routing Efficiency (DARE) maintains loop-free paths by generating multiple successor nodes with varying distances, allowing active nodes to transmit data packets while computing a shortest path, and using a local distance condition to determine when to enter an active state for distributed computations.
DARE provides scalable, efficient, and quick responses to network changes, ensuring loop-free paths without requiring network partitioning, and allows for increased throughput by continuing data transmission during path calculations.
Smart Images

Figure CA2025050978_22012026_PF_FP_ABST
Abstract
Description
LOOP-FREE ROUTING IN COMPUTER NETWORKS AND THE INTERNETCROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This claims priority to, and the benefit of, U.S. Provisional Patent Application No. 63 / 673,359, entitled “LOOP-FREE ROUTING IN COMPUTER NETWORKS AND THE INTERNET”, filed July 19, 2024, the entire contents of which are incorporation herein by reference.FIELD
[0002] This disclosure relates to the design of computer communication networks. More specifically, this disclosure relates to methods, systems, processes and devices for facilitating loop-free routing in a computer communication network.BACKGROUND
[0003] In a computer network and / or the internet, data packets are routed between a source node and a destination node. The performance of a network may depend on the path selected for routing data packets from source to destination. The most common routing protocols used in today’s internet are based on the exchange of vectors of distances, such as Routing Information Protocol (RIP), RIP version 2 (RIPv2), and Enhanced Interior Gateway Routing Protocol (EIGRP), topology maps, such as Open Shortest Path First (OSPF), or path information, such as the Border Gateway Protocol (BGP).
[0004] RIP, RIPv2 and a number of other similar routing protocols are based on the Distributed Bellman-Ford (DBF) algorithm for shortest-path computation, which suffers from the occurrence of undesirable temporary routing table loops, as well as the so-called “counting to infinity” problem, which limit their applicability to smaller scale computer networks that are required to use hop counts as the metric to measure distances to destinations.
[0005] Contrastingly, OSPF and other protocols based on topology broadcasting algorithms are limited by the excessive communication overhead incurred in replicatingthe network topology at each routing node in the network, as well as the need to periodically refresh that information. This forces network administrators to partition the network into areas or clusters interconnected by a backbone area or cluster. As a result, OSPF and other topology-broadcasting-based approaches involve complex solutions, in terms of the required routing configurations.
[0006] BGP does not suffer from the counting-to-infinity problem because a given router can break routing loops when the router determines that a path reported by a neighbor router includes the router itself. However, BGP cannot prevent the creation of temporary routing loops and is known to take a relatively long time to converge to valid routes in some cases. This is due to the fact that the paths selected by routers to reach destinations are not ordered with respect to one another, which may cause routers to select paths that are subsequently found to have loops.
[0007] To address the above-noted limitations of DBF and topology broadcasting approaches, some routing algorithms, such as the Diffusing Update Algorithm (DUAL) may emphasize the determination of a shortest possible loop-free route. EIGRP uses DUAL, for example. DUAL may eliminate the routing-table loops that may occur using DBF, but may in some cases also incur considerable signaling overhead to accomplish this, and may prevent some routing nodes from having routes to destinations for some periods of time until such routing nodes attain consistent routing information. All routing algorithms used in computer networks and the internet at present support only singlepath routing, meaning that a routing node maintains a single next hop to a destination. In some cases, a router is allowed to use more than one route to a destination as long as all routes have equal distance (or cost) values. Thus, current routing algorithms suffer from inherent limitations in various circumstances that may negatively impact efficiency and throughput.
[0008] It would be desirable to provide a routing algorithm that is scalable, efficient, quick to respond to network changes, capable of providing more than one route to each destination without requiring such routes to have equal cost, and which ensures temporary routing loops are not created.SUMMARY
[0009] According to an aspect, there is provided a method of maintaining loop- free paths between a source node and a destination node in a computer network, the method comprising: maintaining, in a link weight table for said source node, a list of neighbor nodes directly connected to said source node, and a respective link weight associated with transmitting data from said source node to each of said respective neighbor nodes; maintaining, in a neighbor table for said source node, for one or more of said neighbor nodes, a respective neighbor-to-destination distance associated with transmitting data from said respective neighbor node to said destination node; storing, at said source node, a current source-to-destination distance associated with transmitting data from said source node to said destination node via a current loop-free path; generating, in a routing table of said source node, a set of successor nodes from among said neighbor nodes, said successor nodes being each of said neighbor nodes having a neighbor-to-destination distance that is lower than said current source-to- destination distance, wherein each of said successor nodes is a neighbor node along a loop-free path to said destination; determining, by said source node, whether to enter an active state based on whether a local distance condition has been satisfied; and upon entering said active state, initiating a distributed computation to seek a shortest loop- free path between the source node and the destination node.
[0010] According to another aspect, there is provided a non-transitory computer- readable medium having stored thereon computer-executable instructions that, when executed by one or more processors, cause the one or more processors to perform a method of maintaining loop-free paths between a source node and a destination node in a computer network, the method comprising: maintaining, in a link weight table for said source node, a list of neighbor nodes directly connected to said source node, and a respective link weight associated with transmitting data from said source node to each of said respective neighbor nodes; maintaining, in a neighbor table for said source node, for one or more of said neighbor nodes, a respective neighbor-to-destination distance associated with transmitting data from said respective neighbor node to said destination node; storing, at said source node, a current source-to-destination distanceassociated with transmitting data from said source node to said destination node via a current loop-free path; generating, in a routing table of said source node, a set of successor nodes from among said neighbor nodes, said successor nodes being each of said neighbor nodes having a neighbor-to-destination distance that is lower than said current source-to-destination distance, wherein each of said successor nodes is a neighbor node along a loop-free path to said destination; determining, by said source node, whether to enter an active state based on whether a local distance condition has been satisfied; and upon entering said active state, initiating a distributed computation to seek a shortest loop-free path between the source node and the destination node.
[0011] According to still another aspect, there is provided a system for maintaining loop-free paths in a computer network, the system comprising: a source node; a destination node; said source node comprising a memory having stored thereon computer-executable instructions that, when executed by a processor of said source node, causes said source node to perform a method comprising: maintaining, in a link weight table for said source node, a list of neighbor nodes directly connected to said source node, and a respective link weight associated with transmitting data from said source node to each of said respective neighbor nodes; maintaining, in a neighbor table for said source node, for one or more of said neighbor nodes, a respective neighbor-to- destination distance associated with transmitting data from said respective neighbor node to said destination node; storing, at said source node, a current source-to- destination distance associated with transmitting data from said source node to said destination node via a current loop-free path; generating, in a routing table of said source node, a set of successor nodes from among said neighbor nodes, said successor nodes being each of said neighbor nodes having a neighbor-to-destination distance that is lower than said current source-to-destination distance, wherein each of said successor nodes is a neighbor node along a loop-free path to said destination; determining, by said source node, whether to enter an active state based on whether a local distance condition has been satisfied; and upon entering said active state, initiating a distributed computation to seek a shortest loop-free path between the source node and the destination node.
[0012] Other features will become apparent from the drawings in conjunction with the following description.BRIEF DESCRIPTION OF DRAWINGS
[0013] In the figures which illustrate example embodiments,
[0014] FIG. 1 depicts operation of a state machine implementing a Diffusing Algorithm for Routing Efficiency (referred to herein as “DARE”);
[0015] FIG. 2 depicts operations performed on an example network in accordance with DARE in response to a link weight changing;
[0016] FIG. 3 depicts operations performed on an example network in accordance with DARE in response to a link between nodes failing;
[0017] FIG. 4 depicts an example network topology in which a link fails;
[0018] FIG. 5 is a block diagram depicting components of an example computing device, in accordance with some embodiments;
[0019] FIG. 6 is pseudocode describing example overall operation of a router or node incorporating DARE;
[0020] FIG. 7 is pseudocode describing example operations performed during initialization of a router or node;
[0021] FIG. 8 is pseudocode describing example operations relating to sending a “hello” message to neighboring nodes;
[0022] FIG. 9 is pseudocode describing example operations relating to processing a change in link weight;
[0023] FIG. 10 is pseudocode describing example operations relating to processing a neighbor node timeout event;
[0024] FIG. 11 is pseudocode describing example operations relating to processing a message received from a neighbor;
[0025] FIG. 12 is pseudocode describing example operations relating to sending an Update message;
[0026] FIG. 13 is pseudocode describing example operations relating to sending a Query message;
[0027] FIG. 14 is pseudocode describing example operations relating to sending an Update message when in the passive state;
[0028] FIG. 15 is pseudocode depicting example operations relating to sending an Update message when in the active state;
[0029] FIG. 16 is pseudocode depicting example operations relating to sending a Reply message;
[0030] FIG. 17 is pseudocode depicting example operations relating to sending a Query while in the passive state; and
[0031] FIG. 18 is pseudocode depicting example operations relating to sending a Query while in the active state.DETAILED DESCRIPTION
[0032] Many of the routing protocols operating within and across systems in IPbased networks at present are based on only a few types of algorithms designed to ensure eventual convergence to the correct routes, and in some cases to acyclic routing at all times. Some of these routing algorithms may use destination sequence numbers to identify the most recent distance updates, inter-nodal coordination intended to avoid routing paths containing loops, or complete path and / or topology information to detect routing loops.
[0033] The two most commonly used approaches to avoiding routing loops are the use of destination sequence numbers, and inter-nodal coordination. Inter-nodal coordination tends to work more effectively in large computer networks, because inter- nodal coordination does not require periodic flooding of new sequence numbers by destinations. Among inter-nodal coordination techniques, the use of the DUAL routing algorithm has achieved widespread use, in view of it having been incorporated into the Enhanced Interior Gateway Routing Protocol (EIGRP) used by Cisco Systems, Inc.
[0034] However, DUAL has a number of inherent limitations. For example, DUAL provides only a single loop-free successor node (a so-called ‘next hop’) per destination at each node (e.g., a router). In some embodiments, after a network topology change, it may be possible to reduce the amount of signaling required to converge to new loop- free routes by incorporating multiple successor node options, as described herein.
[0035] Another inherent limitation of DUAL is that a node which has sent a query cannot use a different successor node until that node has received replies from all of its neighbour nodes. Thus, even if some of the query-sending node’s neighbors have replied and offered valid loop-free routes, the query-sending node nevertheless must wait until all replies have been received, which may unnecessarily impede the throughput of data packets.
[0036] A further inherent limitation of DUAL is that DUAL uses a complex state machine to account for multiple diffusing computations, changes in link costs / weights, and updates from neighbour nodes that may occur concurrently - this complexity may limit the degree to which routing protocols incorporating DUAL may evolve.
[0037] Various routing protocols make use of the Distributed Bellman-Ford (DBF) algorithm for determining the shortest path between nodes. However, DBF has a disadvantage in that it may count to infinity (e.g., if link or node failures render a node unreachable from a set of other nodes, and those nodes may spend forever gradually increasing the estimates of the distance to the unreachable node). Moreover, routing protocols using the DBF algorithm may declare a destination to be unreasonable if aredefined maximum distance value is reached, which may limit the types of routing metrics that can be used, and may lead to longer convergence delays.
[0038] Many routing algorithms have been developed to eliminate or reduce these weaknesses of the DBF algorithm. For example, the broadcasting of complete topology information combined with local use of the Dijkstra shortest-path first (SPF) algorithm at each router is a known alternative to DBF. Such algorithms may provide appealing convergence times on average, but do not prevent the possibility of temporary routing loops, which reduce efficiency. Other routing algorithms may incorporate partial topology information (e.g., the use of link states), distances and second-to-last hops to destinations, or complete path information in updates.
[0039] Still other shortest-path routing protocols (such as the Destination- Sequenced Distance-Vector (DSDV) routing protocol) use destination sequence numbers to attain loop freedom. Routing Protocol for Lower-Power and Lossy Networks (RPL) is an example of a recent protocol which makes use of destination sequence numbers. However, RPL is known to incur temporary routing loops under various conditions, such as router failures, volatile memory, and recycling of destination sequence numbers.
[0040] Several shortest-path routing approaches have been developed that provide loop-free routing, by requiring nodes to coordinate the updating of routing tables on a multi-hop basis, together with the use of sequence numbering.
[0041] The diffusing update algorithm (DUAL) currently used by EIGRP responds to changes in the routing topology and dynamically adjusts routing tables of a router automatically. DUAL uses a so-called ‘feasibility condition’ to ensure that only loop-free routes are ever selected for transmission. If there is no feasible route to a destination (i.e. , no route which satisfies the feasibility condition), DUAL will invoke a diffusing computation to ensure that all traces of the problematic route are eliminated from the network, and the Bellman-Ford algorithm may then be used to determine a new route.
[0042] Diffusing computations use signaling messages. Messages may carry one or more updates, queries, and replies. The contents of signaling messages may include an identification of the router or node, an identification of the destination, and the distance to the destination.
[0043] According to some embodiments, there is provided herein an algorithm for maintaining loop-free paths (referred to herein as a Diffusing Algorithm for Routing Efficiency (DARE)) which may ameliorate some of the disadvantages of DUAL. In some embodiments, DARE may provide improved scalability by not requiring careful partitioning of the network topology into areas (as required with topology broadcastbased techniques), may improve efficiency by limiting the propagation of signaling message to routing nodes that need them, and may provide improved speed in responding to network changes by providing multiple choices for paths to reach destinations, as described below. Thus, in some embodiments, DARE may overcome deficiencies of previously developed routing algorithms. It is contemplated that in some embodiments, DARE may be suitable for use with several different routing protocols, including but not limited to EIGRP, BGP, and RIPv2.
[0044] In some embodiments, DARE may support distributed computations to seek a shortest path between a source node and a destination node, without ever creating a routing loop. In some embodiments, DARE may use routing messages containing updates, queries, and / or replies which include distances to destinations. In some embodiments, a router or node using DARE may re-determine or update its distance to a given destination independently of other nodes using the Bellman-Ford equation, provided a local condition is satisfied for the destination node. In some embodiments, a node using DARE may be referred to as being in a “passive” mode when the local condition is satisfied. Examples of local conditions are provided further below.
[0045] In some embodiments, when the local condition is not satisfied for a node using DARE, the node may enter an “active” state in which a distributed computation is initiated for the destination node by querying neighbor nodes and awaiting replies fromeach neighbor node. In some embodiments, a distributed computation is a suitable algorithm carried out at a plurality of nodes to compute a value. For example, for routing in a computer network, a distributed computation may calculate a route from a routing node (e.g., a source node) to a destination node. Examples of distributed computations may include a diffusing computation, in which a routing node sends a query to its neighbor nodes and waits to receive replies from each of said neighbor nodes before determining whether the computation has been completed. Another example of a distributed computation may include flooding all nodes with a new sequence number to validate a locally stored value of a distance to a destination or a link weight.
[0046] DUAL defines a “feasible distance” value as the minimum distance value among all neighbour nodes for a destination. DUAL selects only a single node as a successor node (i.e. the next hop), and requires the successor node to have reported a distance which is smaller than the feasible distance, and which is the shortest distance available.
[0047] Contrastingly, DARE does not incorporate the concept of a feasible distance, and instead selects neighbor nodes for inclusion in a set of successor nodes, rather than selecting a single successor node for a given node. In some embodiments, DARE provides that in order to be added to the set of successor nodes for a given node, a neighbor node must have a reported distance to the destination node which is lower than the last distance to the destination node that the given node had while in a passive state.
[0048] In some embodiments, if there are no neighbor nodes which meet the requirements to be in the set of successor nodes, or if none of the successor nodes provide the shortest distance to the destination, then DARE causes the given node to enter an active state in which a distributed computation is initiated to seek a shortest loop-free path between the given node and the destination node. Moreover, when a neighbor node’s query causes a given node to become active in a distributed computation, DARE provides that the given node may store an identifier corresponding to the identity of the neighbor whose query forced the given node to become active.
[0049] As noted above, a significant difference between DUAL and DARE is that DARE generates multiple loop-free routes to a destination node for a given source node, and each of such loop-free routes is not required to have the same distance (or cost). Contrastingly, DUAL supports only single-path routing (i.e. , only one node may be chosen as a next hop or preferred successor for a given source node).
[0050] A further key difference between DUAL and DARE is that when a given node enters an active state, DARE does not force the active node to continue using the same successor node for the duration of that the node is active. For example, using DARE, whether in an active or a passive state, a source node or router is free to use any neighbor node as a successor, provided the neighbor has reported a shorter distance to the destination node than the current source-to-destination distance of the source node the last time the source node was in a passive state. This may be particularly advantageous in that when a source node enters an active state using DARE and sends query messages to neighbor nodes, the active source node may still use a successor node in the interim, before reply messages to the query have been received from all of the active source node’s neighbor nodes.
[0051] Thus, rather than the source node pausing transmission of data packets while waiting for replies from each neighbor (as would be the case using DUAL), an active source node may transmit data packets to a successor node, so long as that successor node has reported a shorter distance to the destination than the source-to- destination distance of the source node when the source node entered the active state.
[0052] In some embodiments, the successor node selected by the active source node using DARE need not have reported the minimum distance to the destination node - it may be sufficient for the successor node to have reported a distance to the destination node which is smaller than the source-to-destination distance of the source node. In this manner, the transmission of data packets may continue while waiting for reply messages from every neighbour using a loop-free route which is known to have a shorter distance, without necessarily being the shortest distance. This may allow for increased overall throughput by continuing to transmit data packets via a shorter routesooner, rather than taking additional time to determine the shortest possible route before resuming transmission.
[0053] A further disadvantage of DUAL is that a node or router is only allowed to participate in a single diffusing computation at any given time, and the node is blocked from participating in or mixing multiple diffusing computations. DUAL uses a complex state machine which defines four different active states, which allow a node in the active state to remember whether it is a source or a relay in a diffusing computation, and whether a distance increase or a new query occurred while already in the active state. In addition, an active node using DUAL must wait until replies from all of its neighbor nodes have been received before that active node can send an update message reporting its new shortest distance, or to send a reply to its successor if it relayed a query. Thus, many operations in DUAL involve delays as an active node waits for replies to determine optimal paths, which may negatively impact the overall performance of the system.
[0054] Contrastingly, in some embodiments, DARE allows an active node to participate in multiple distributed computations which can merge with other computations at active nodes. This functionality is possible because DARE specifies that a given node stores the identity of the neighbor node whose query caused the given node to become active. Moreover, when entering the active state, a given node using DARE may store the source-to-destination distance from when it was last in a passive state, and may still answer query messages from other nodes with that distance value from when it was last passive. Once the active node has received reply messages from all of its neighbour nodes, the active node may then send an update message as needed, and may also send a reply to the neighbor node that prompted it to become active.
[0055] Various example embodiments depicting operation of DARE are described below, and make use of the following terminology:
[0056] It should be appreciated that although certain example embodiments described herein make reference to routers, principles described herein are applicable to other types of network nodes other than routers.
[0057] In some embodiments of DARE, each router k may maintain three tables: the Link Weight Table, the Neighbor Table, and the Routing Table.
[0058] In some embodiments, the Link Weight Table (LWTk) lists the weightand lifetime (LTk) of the link (fc, q) with each neighbor q. The maximum lifetime of a neighbor entry is a constant LT which may be defined for the network.
[0059] In some embodiments, the Neighbor Table (NTk) has an entry for each q e Nk. For each destination d, the entry for q lists Dqand the value of a coordination flag C q. The value of c^qis true (T) if router k requires a response from q and is false (F) otherwise. If a neighbor q has not reported any distance for d to router k, then router k sets
[0060] In some embodiments, the Routing Table (RTk) contains an entry for each destination d. The entry for d in RTkstates: A current-distance valuea passivedistance value (PDa), a reported-distance value (RD^), the set of neighbors ( ) that can be used as successors, the preferred successor (s*[) in S^, an active flag A1^, and a query-coordination identifier
[0061] In some embodiments, the value of A^ is true (T) if k is active, and is false (F) if k is passive. The valueis set to k if either k is passive, or if k is active and does not have to send a reply to a neighbor when it becomes passive. If router k becomes active or continues to be active with a query from its preferred successor s at the time it was passive, thenis set to s.
[0062] In some embodiments, the distance for transmitting from k to the destination may be given by0. If no neighbors meet the requirements to be successor nodes, then the successor set will be a null set, and the distance will be set to infinity (D^ = oo= 0).
[0063] PD is the value of the distance from router k to destination d at the time router k was in a passive state and had to change to the active state. RD^ is the reported distance value for destination d that router k sends in a query message when it transitions from passive to active state, and equals Ds+ lk, where s e Nkis the successor being used when router k transitions to the active state.
[0064] In some embodiments, DARE uses signaling to transmit messages between routers and nodes. In some embodiments, routers may inform their neighbors about changes made in their routing tables, or the need to coordinate, using routing messages that contain a vector of one or multiple entries. In some embodiments, each entry is an update, query, or reply for a given destination, and includes a distance to that destination. As described herein, an update, query or reply from router k for destination d is denoted by U[d,RD^], Q[d, RD^] and R[d,RD^], respectively.
[0065] In some embodiments, DARE may be initialized by allowing an initialization delay to elapse before router k is allowed to process messages. In some embodiments, the initialization delay is long enough to ensure that, in the event that router k is restarting after a failure, all neighbor routers will have had time to process previous routing messages from router k and also to have determined that it router k was not operational. A router k may be initialized in a passive state for itself and all destinations by settingentries are required for other destinations, and no entry implies infinite distances and no successors. Router k may then send a “hello" message, which is a routing message with an update for itself.
[0066] Once initialized, a router k may be in one of two states (active or passive) for a destination d based on a local distance condition (LDC). FIG. 1 is a depiction of a state machine 100 representing operation of DARE. In FIG. 1 , the terminology LDC = T denotes that the local distance condition is true, and the terminology LDC = F denotes that the local distance condition is false. In some embodiments, the local distance condition is given by:and 0Dk= Min{Dkv+ Z | (v e Wfc) A « < RDk)}
[0067] In some embodiments, the sharing of path information may be desirable.In some embodiments, the LDC may be defined so as to include path information:where MD^ = Min{D^v+ lk\v E Nk}; and ODj = Min{D^ + (J|(v e Nk) A (Dj, < RD )}
[0068] From LDC equations (1a) and (1 b) above, it is clear that information is not strictly required for the correct operation of DARE systems. In alternative embodiments, when path information is shared among routers, the definition for the LDC may be modified so as to take path information into account, as in (1 b). In embodiments of DARE in which path information is included, routers are able to establish an ordering between their preferred paths and the preferred paths reported by their neighbour routers. As such, although further embodiments described below might not incorporate path information, it should be appreciated that some embodiments of DARE may incorporate path information.
[0069] Router k will be in the passive state as long as the LDC is true. In the passive state, a router k using DARE may behave in accordance with the DBF algorithm as noted above.
[0070] In some embodiments, when a router k is in a passive state for destination d, router k updates its distances and successors as follows:
[0071] It can be seen that when router k is in a passive state for destination d, = RD = PD =Router k may send an update U[d, RD^] if RD^ changes after an input event while LDC is satisfied. If the input event was a query from a neighbor node v, router k may send a reply R[d, RD^] to v.
[0072] If LDC is not satisfied when router k is passive, then router k will enter an active state for destination d, and will update its successors and distances in its routing table when transitioning to the active state:if(S^ 0) then D <- Min{D^v+ I* \ v E S% elseD^ <- ooRD^ D . (3)
[0073] As can be seen from above, router k stores as its passive distance for destination d the value of its distance before router k became active, and stores as its reported distance for destination d the values of its new distance after entering the active state. Router k may then select a neighbor n as its preferred successor provided that neighbor n has reported a distance to destination d which is smaller than RD^. In some embodiments, the local distance value is not reported to neighbor nodes while router k is active, and is updated while router k is active. While active, router k may send a query Q[d, RD^] to its neighbors, and will remain active until router k has received replies from all of its neighbors. In some embodiments, if router k becomes active as a result of a query from its current preferred successor s =before the event, then it sets Q* = s, otherwise it keeps Q* = k.
[0074] It will be appreciated that the above contrasts with DUAL in that a router k using DUAL cannot change its successor when it becomes active, and while router k is active, and the active router k will use the minimum attained distance value of D% since it was last passive to decide whether to become active.
[0075] In some embodiments, once a router k is active for a destination d, the router k may update its distance and successors as follows:PD* PD*; RD* RD*if(S^ 0) then D*[ <- Min{D^v+ I* | v E S*[} elseD^ <- oo. (4)
[0076] As can be seen, when router k is in an active state, neither PD^ nor RD^ are modified. While active,is updated to reflect the minimum distance through any neighbor n such that D^n< PD^. The preferred successor and the successor set for destination d are also updated to enforce the ordering between router k and its neighbors. If the input event is a query from neighbor v which is not the preferred successor (v s )= k, then k sends reply R[d,RD^] to v. If router k receives a query from preferred successoronce router k is active and Qd = k, then router k sets Qa = s and does not send a reply tountil router k has received all the replies for its own query.
[0077] Once an active router k has received replies from all of its neighbor nodes, router k determines whether the local distance condition is satisfied. If LDC is satisfied, then router k will return to the passive state and will update its successor set and distances in its routing table as follows:DkMk; RDkDk; PDkDk(5)
[0078] If Qkk, then router k sends a reply R[d, RDd] to neighbor s, and also sends an update U[d, RD^] to the rest of its neighbors if RD^ had to be updated.
[0079] However, if LDC is not satisfied after active router k has received all the replies to its query, then router k will become active again. In this case,k, then router k will send reply R[d,RDd] to neighbor s, and then follows the steps in Equation 3 above (describing the routing table updates when transitioning to the active state) to reenter the active state for destination d.
[0080] In some embodiments, router k may be configured to process a change in the properties of a link (k, q) between itself and a neighbour q. When router k receives a routing message from neighbor q, router k updates the lifetime of the entry for that neighbor (LTk) and processes each update and probe included in the message.
[0081] Router k may update the link weight lkafter the link event. If the link has changed in weight, router k may update RTkfor destination d assuming that an update U[d,RDq= Dq] is received from neighbor q with the updated values in NTkand LTk.
[0082] Link failures can be detected in multiple ways, including by keeping track of data packets not being acknowledged by a neighbor router. In some embodiments, DARE may handle link failures using the lifetimes of neighbor entries to determine when links to neighbor routers or the neighbor routers themselves have failed. For example, router k may assume that a neighbor router q from which no signaling has been received for an entire duration LT can be declared to have failed. If a link (fc, q) has failed, then the link weight table (LWT) will be updated to reflect lk<- lm, and for each destination d, router k sets c^q<- F and Dq<- oo. If the link is established and router k is active for destination d, router k sets c^q<- T and sends query Q[d, RD^] to q.
[0083] In some embodiments, the local distance condition (LDC) specified by Equation (1 ) above being satisfied may ensure that routing paths determined in accordance with DARE are loop-free. Thus, the signaling used for DARE may ensure loop-free routing. The following proof is presented to show that using LDC = T when routers choose their successors is sufficient to ensure that no routing-table loops are formed, even when routers share only distances to destinations.
[0084] Proof. Assume that a routing-table loop L exists at time t and let L = {v v2. -> vhvh+1}, where vh+1= v . For the sake of contradiction, assume that LDC is satisfied for every router in L when at least one router in L changes its successor when it joins the loop. Each router vte L informs its neighbors of its distance to d at a time denoted by tt, where tt< t, and its neighbors in L use that value at a subsequent time prior to time t to determine whether LDC is satisfied. The successor for destination d at router vtis denoted byand the time when router vte L makes router vi+1e L a next hop to destination d is denoted< t. This implies that
[0085] Given that LDC is satisfied at every instant at every router, Equation (6) implies that:
[0086] Equations (6) and (7) are true only(t)). (8)
[0087] However, Equation (8) is a contradiction, because it implies thateTherefore, it has been shown that using LDC = T when routers choose their successors ensures no routing-table loops are formed.
[0088] It can also be shown from the above-described proof that DARE ensures loop-free paths at every instant.
[0089] Proof. It follows from the above-noted proof that no path can be a loop if every router in the path uses LDC to select its successors, which according to Equation (2) is the case when all routers along a path are in the passive state. Hence, a path cannot be a loop if it involves only passive routers.
[0090] According to Equations (3) and (4) above, when a passive router k becomes active, and while that router k is active, router k can only use as successors neighbor nodes that reported distances smaller than PD , which equals the value of D just before router k became active. Hence, it is also true that no path can be a loop if it includes active routers. Furthermore, no loop can include a router that has no successors. Thus, the remainder of the proof is required to show that no routing-table loop can be created when an active router transitions to the passive state with a finite distance once it processes the replies from all of its neighbors.
[0091] When a router k transitions from active to passive state, according to Equation (5), router k can only use a neighbor v e Nkas a successor if D^v< RD^. Furthermore, a router r can send a reply to its preferred successor only if router r is in the passive state. Accordingly, if a neighbor router n e Nkreports a distance RD corresponding to a route to destination d that includes subpath Pnkto router k, it followsthat RD^1> RD^ for all vte Pnk, where nt= s^. Given that all link weights are positive, it must then be true that RD = Dn> RD , and hence router k cannot choose neighbor router p as a successor when it applies Equation (5). This implies that a router that transitions from the active state to the passive state cannot create a loop by selecting successors according to Equation (5). Therefore, it has been shown that DARE ensures loop-free paths at every instant.
[0092] In some embodiments, use of DARE may offer performance advantages over existing techniques, such as DUAL. The following examples provide simplified illustrations of some of the benefits associated with DARE relative to DUAL.
[0093] FIG. 2 depicts the simplified operation of DARE through an example network containing 5 nodes (depicted as nodes a, b, c, d and e). In this simplified example, the weights of each link between nodes is assumed to be equal in both directions (e.g. the weight for (a, b) is equal to the weight for (b, a)).
[0094] For each router v in the network, the distance (£ ), passive distance (PD ), and reported distance (RD ) are indicated as ordered triplets in parentheses next to the router. For example, for network 200a, router b has an ordered triplet of (4, 4, 4). As depicted, arrowheads on links between nodes indicate whether a given node is a successor for destination d. In contrast to DUAL, DARE can provide multiple successors for destinations. Updates, Queries and Replies from router a are stated as U[RD°t], Q[RD ], and R[RD^], respectively, with the destination being d and the nodes that should process an update or probe indicated by dashed arrowheads.
[0095] As depicted in FIG. 2, passive nodes are indicated with a solid-color node and active nodes are indicated in by nodes without a fill color. For simplicity, it is assumed in this example that nodes operate synchronously, such that nodes process all input events received in a given step, and send the resulting messages to neighbor nodes after processing all the inputs.
[0096] As depicted in FIG. 2, block 200a shows the state of network routing tables when the weight of link (a, d) increases to 10. In response to this change, atblock 200b, router a sends query Q
[0010] because none of router a’s neighbors satisfy the LDC condition. Block 200c depicts routers b, d and e remaining passive and sending responses stating the values of their current distances, and router c becomes active and forwards the query to all its neighbors. As depicted in block 200d, router b must also forward the query after receiving the query from c, which is its preferred successor, because LDC cannot be satisfied.
[0097] Blocks 200e to 200j show that all active routers (a, b, and c) receive all the needed replies from their neighbors, and all routers become passive and converge to their shortest distances. Block 200k depicts the final state of the network. In this example, it is shown that DARE provides multiple next hops at some of the routers (whereas DUAL would not provide this flexibility).
[0098] FIG. 3 depicts the simplified operation of DARE on a further example network. It will be appreciated that although the topology of the network appears similar to the network depicted in FIG. 2, various link weights in the example network of FIG. 3 are different. FIG. 3 depicts an example scenario in which link (a, d) fails and no other link changes occur.
[0099] It should be noted that in this example scenario, if DUAL were used, router a would be required to send a query reporting an infinite distance because router a uses router d as its successor in its route to d as a destination. Moreover, the diffusing computation initiated by router a would also block routers c and b, because routers c and b would become active and would have to report an infinite distance in their respective queries.
[0100] In contrast to the operation of DUAL, when link (a, d) fails, DARE allows router a to select router e as a successor for destination d when router a has to become active. This occurs because router e has reported a distance that is shorter than the passive distance at router a (PD^, which equals D before the link event). Thus, even though routers a, c, and b become active in a distributed computation, the three routers a, c, and b are nevertheless able to forward data packets to destination d while they are active. In addition, in this example scenario, all routers a, b, c, d, e converge to theshortest paths faster than would occur with DUAL (which would require three additional steps relative to DARE, because using DARE obviates the need for router a to send an update reporting its new finite distance).
[0101] In addition, using DARE would result in faster convergence relative to DUAL if the link (a, d) were to increase in weight (e.g., from 3 to 20) rather than fail. With DUAL, router a would have to send a query reporting a larger distance (e.g., 20), and then would have to send an update reporting its new distance of 7. Contrastingly, DARE would just send a query reporting a distance of 7, as in the previous example.
[0102] FIG. 4 depicts a network topology scenario which illustrates further performance advantages which DARE may provide relative to DUAL , particularly due to the shortest paths in DARE not needing correspond to the minimum-hop paths. As depicted, all links shown in the network of FIG. 4 with solid lines are assumed to have a weight of 1 , and any link shown in dashed lines has a weight that may be much larger than 1 . The weight of link (a, d) (depicted as a weight of 3) is larger than the weight of link (b, d) (depicted as a weight of 2), and the weight (wab) of link (a,h) is such that, as a minimum, wab+ Dd> Ddv2+ 1.
[0103] If link (a, d) fails, DUAL would require router a to set its distance to infinity and initiate a diffusing computation with a query reporting an infinite distance to destination d. Depending on the weights of the links in the network, this query may propagate all way to router b following the reverse direction of the successor entries of routing tables, and all routers propagating the query would set their distances to infinity as well under a DUAL system. Routers upstream of router a would become passive as they receive all the replies they need, and a wave of updates started by router a would occur once router a becomes passive.
[0104] In contrast to a DUAL implementation, DARE would allow router a to send a query reporting a finite distance equal to RDd= 2 + wab, because DARE allows router a to become active with a new successor (in accordance with Equation (3) described above). Using DARE, the ensuing query as router a becomes active may propagatefrom router a all the way to router b. However, each active router sends replies to its neighbors other than the first neighbor that sent the query causing the router to become active (in accordance with Equation (4)). Hence, routers are likely to attain their shortest distances while they are still active and a last round of updates is unlikely. Furthermore, while routers executing DARE converge, no router data packets would be blocked and data packets would continue to flow to destination d.
[0105] Various embodiments described herein make use of computing devices to perform various operations. FIG. 5 is a block diagram depicting components of an example computing device 502. As depicted, computing device 502 includes processor 514, memory 516, persistent storage 518, network interface 520. It will be appreciated by a person skilled in the art that a computing device 502 may include additional or fewer components than those depicted in FIG. 5, and that the example computing device 502 is merely an example.
[0106] Processor 514 may be an Intel or AMD x86 or x64, PowerPC, ARM processor, microcontroller, or the like. Processor 514 may operate under control of processor-executable software instructions stored in storage 518, and executed by processor 514 in memory 516. Memory 516 may be any suitable type of random access memory accessible by processor 514. Storage 518 may be, for example, one or more modules of memory, hard drive, or other persistent computer storage devices. Software executing on computing device 502 may include, for example, an operating system and application software configured to implement and perform various operations associated with DARE as described herein.
[0107] Network interface 520 is capable of connecting computing devices 502 to one or more communication network and / or to one or more computing devices 502. In some embodiments, network interface 520 may include one or more wired interfaces (e.g. wired ethernet) and / or wireless radios, such as WiFi, Bluetooth, or cellular networks (e.g., GPRS, GSM, EDGE, CDME, LTE, 5G, or the like). Network interface 520 may also be used to establish virtual network interfaces, such as Virtual Private Networks (VPNs).
[0108] Various embodiments described herein may be performed by routers, network nodes, and other computing devices 502 under control of computer-executable instructions. It will be appreciated that the computer-executable instructions may take many different forms and be implemented in many different possible programming languages.
[0109] For ease of reference, the operation of various example embodiments may be described through the use of pseudocode. As with any such description, many alternative formulations are contemplated which may achieve similar functionality to the pseudocode examples provided herein.
[0110] FIG. 6 is pseudocode describing example overall operation of a router or node incorporating DARE.
[0111] FIG. 7 is pseudocode describing example operations performed during initialization of a router or node.
[0112] FIG. 8 is pseudocode describing example operations relating to sending a “hello” message to neighboring nodes.
[0113] FIG. 9 is pseudocode describing example operations relating to processing a change in link weight.
[0114] FIG. 10 is pseudocode describing example operations relating to processing a neighbor node timeout event.
[0115] FIG. 11 is pseudocode describing example operations relating to processing a message received from a neighbor.
[0116] FIG. 12 is pseudocode describing example operations relating to sending an Update message.
[0117] FIG. 13 is pseudocode describing example operations relating to sending a Query message.
[0118] FIG. 14 is pseudocode describing example operations relating to sending an Update message when in the passive state.
[0119] FIG. 15 is pseudocode depicting example operations relating to sending an Update message when in the active state.
[0120] FIG. 16 is pseudocode depicting example operations relating to sending a Reply message.
[0121] FIG. 17 is pseudocode depicting example operations relating to sending a Query while in the passive state.
[0122] FIG. 18 is pseudocode depicting example operations relating to sending a Query while in the active state.
[0123] Of course, the above-described embodiments are intended to be illustrative only and in no way limiting. The described embodiments are susceptible to many modifications of form, arrangement of parts, details and order of operation.Moreover, combinations of various embodiments are contemplated and within the scope of the invention. The invention is intended to encompass all such modification within its scope, as defined by the claims.
[0124] References
[0125] [1] B. Albrightson, et al., “EIGRP - A Fast Routing Protocol based onDistance Vectors," Proc. Interop ‘94, 1994.
[0126] [2] A. Arora and H. Zhang, “LSRP: Local Stabilization in Shortest PathRouting," IEEE / ACM Trans.on Networking, June 2006.
[0127] [3] J. Behrens and J. J. Garcia-Luna-Aceves, “Hierarchical Routing UsingLink Vectors,” Proc. IEEE INFOCOM ’98, 1998.
[0128] [4] K. Bhargavan et al., “Formal Verification of Standards for DistanceVector Routing Protocols," Journal of the ACM, July 2002.
[0129] [5] C. Cheng, R. Riley, P. Kumar, and J. J. Garcia-Luna-Aceves, “A Loop-Free Extended Bellman-Ford Routing Protocol without Bouncing Effect," Proc. ACM SIGCOMM ‘89, Aug. 1989.
[0130] [6] J. Chroboczek and D. Schinazi, “The Babel Routing Protocol," 8966,IETF, Jan. 2021.
[0131] [7] T. Clausen, U. Herberg, and M. Philipp, “A Critical Evaluation of theIPv6 Routing Protocol for Low Power and Lossy Networks (RPL),” Proc. IEEE WiMob ‘11, Oct. 2011.
[0132] [8] T. Clausen, J. Yi, A.C. de Verdiere, “LOADng: Towards AODV Version2," Proc. IEEE Vehicular Technology Conference ‘12, Sept. 2012.
[0133] [9] T. Clausen, J. Yi , and Ulrich Herber, “Lightweight On-demand Ad hocDistance-vector Routing - Next Generation (LOADng): Protocol, Extension, and Applicability," Computer Networks, 2017.
[0134]
[0010] J.A. Cobb, “Convergent Multi-Path Routing," Proc. IEEE ICNP 2000,Nov. 2000.
[0135]
[0011] J.A. Cobb and M.G. Gouda, “Stabilization of General Loop-FreeRouting," Journal of Parallel and Distributed Computing, 2002.
[0136]
[0012] G. D’Angelo et al., “Engineering a New Loop-Free Shortest PathRouting Algorithm," Proc. SEA ‘12 , Sep. 2012.
[0137]
[0013] E. Gafni and D. Bertsekas, “Distributed Algorithms for GeneratingLoop-Free Routes in Networks with Frequently Changing Topologies," IEEE Trans. Communications, Jan. 1981.
[0138]
[0014] J. J. Garcia-Luna-Aceves, “A Unified Approach to Loop-Free RoutingUsing Distance Vectors or Link States," Proc. ACM SIGCOMM ’89 September 1989.
[0139]
[0015] J. J. Garcia-Luna-Aceves, “Loop-Free Routing Using DiffusingComputations," IEEE / ACM Trans. Networking, 1993.
[0140]
[0016] J. J. Garcia-Luna-Aceves and J. Behrens, “Distributed, ScalableRouting based on Vectors of Link States," IEEE JSAC, Oct. 1995.
[0141]
[0017] J. J. Garcia-Luna-Aceves and M. Spohn, “Scalable Link-StateInternet Routing," Proc. IEEE ICNP ‘98, Oct. 1998.
[0142]
[0018] C.L. Hedrick, “Routing Information Protocol" RFC 1058, 1988.
[0143]
[0019] P. A. Humblet, “Another Adaptive Shortest-Path Algorithm," IEEETrans. Communications, June 1991.
[0144]
[0020] International Organization for Standardization, International StandardISO / IEC 10589:2002(E), 2002.
[0145]
[0021] J.M. Jaffe and F.M. Moss, “A Responsive Routing Algorithm forComputer Networks,” IEEE Trans, on Communications, July 1982.
[0146]
[0022] D. B. Johnson and D. A. Maltz, “Dynamic Source Routing in Ad HocWireless Networks," Mobile Computing, Chapter s, Kluwer Academic Publishers, 1996.
[0147]
[0023] D. Johnson, N. Ntlatlapa, and C. Aichele, “A Simple PragmaticApproach to Mesh Routing Using BATMAN," Proc. IF IP Int’l Symposium on Wireless Communications and Information Technology in Developing Countries, Oct. 2008.
[0148]
[0024] G. Malkin, “RIP Version 2" RFC 2453, 1998.
[0149]
[0025] J. M. McQuillan, I. Richer, and E. C. Rosen, “The New RoutingAlgorithm for the ARPANET," IEEE Trans. Communications, 1980.
[0150]
[0026] P.M. Merlin and A.Segall, “A Failsafe Distributed Routing Protocol,”IEEE Trans, on Communications, Sept. 1979.
[0151]
[0027] J. Moy, “OSPF Version 2" RFC 2328, 1998.
[0152]
[0028] V. Park and M.S. Corson, “A Highly Adaptive Distributed RoutingAlgorithm, Proc. IEEE INFOCOM ‘97, April 1997.
[0153]
[0029] C. E. Perkins and P. Bhagwat, “Routing over Multihop WirelessNetwork of Mobile Computers," Proc. ACM SIGCOMM ‘94, 1994.
[0154]
[0030] J. Raju and J. J. Garcia-Luna-Aceves, “A New Approach to On-Demand Loop-Free Multipath Routing," Proc. IEEE ICCCN ‘99, Oct. 1999.
[0155]
[0031] S. Ray, R. Guerin, K.-W. Kwong, and R. Sofia, “Always AcyclicDistributed Path Computation," IEEE / ACM Trans, on Networking, 2010.
[0156]
[0032] Y. Rekhter and T. Li, “A Border Gateway Protocol 4 (BGP-4),” RFC1771 , March 1995.
[0157]
[0033] D. Savage et al., “Cisco’s Enhanced Interior Gateway RoutingProtocol (EIGRP)" RFC 7868, 2016.
[0158]
[0034] M. Schwartz and T. Stem, “Routing Techniques Used in ComputerCommunication Networks," IEEE Trans. Communications, Apr. 1980.
[0159]
[0035] A. Segall, “Distributed Network Protocols,” IEEE Trans, onInformation Theory, Jan. 1983.
[0160]
[0036] R. Van Glabbeek et al., “Sequence Numbers Do Not Guarantee LoopFreedom-AODV Can Yield Routing Loops," Proc. ACM MSWiM ‘13, Nov. 2013.
[0161]
[0037] S. Vutukury and J. J. Garcia-Luna-Aceves, “A Simple Approximation to Minimum-Delay Routing,” Proc. ACM SIGCOMM ‘99, Aug. 1999.
[0162]
[0038] S. Vutukury and J. J. Garcia-Luna-Aceves, “MDVA: A Distance-VectorMultipath Routing Protocol,” Proc. IEEE INFOCOM ‘01, April 2001 .
[0163]
[0039] T. Winter, et al., “RPL: IPv6 Routing Protocol for Low-Power andLossy Networks," RFC 6550, IETF, March 2012.
[0164]
[0040] W.T. Zaumen and J. J. Garcia-Luna-Aceves, “Dynamics of DistributedShortest-Path Routing Algorithms," Proc. ACM SIGCOMM ‘91, Sept. 1991.
[0165]
[0041] W.T. Zaumen and J. J. Garcia-Luna-Aceves, “Loop-Free MultipathRouting Using Generalized Diffusing Computations," Proc. IEEE INFOCOM ‘98, March 29— April 2, 1998.
[0166]
[0042] W.T. Zaumen and J. J. Garcia-Luna-Aceves, “System for MaintainingMultiple Loop-Free Paths between Source Node and Destination Node in Computer Network," U.S. Patent 5,881 ,243, March 9, 1999.
Claims
WHAT IS CLAIMED IS:1 . A method of maintaining loop-free paths between a source node and a destination node in a computer network, the method comprising: maintaining, in a link weight table for said source node, a list of neighbor nodes directly connected to said source node, and a respective link weight associated with transmitting data from said source node to each of said respective neighbor nodes; maintaining, in a neighbor table for said source node, for one or more of said neighbor nodes, a respective neighbor-to-destination distance associated with transmitting data from said respective neighbor node to said destination node; storing, at said source node, a current source-to-destination distance associated with transmitting data from said source node to said destination node via a current loop- free path; generating, in a routing table of said source node, a set of successor nodes from among said neighbor nodes, said successor nodes being each of said neighbor nodes having a neighbor-to-destination distance that is lower than said current source-to- destination distance, wherein each of said successor nodes is a neighbor node along a loop-free path to said destination; determining, by said source node, whether to enter an active state based on whether a local distance condition has been satisfied; and upon entering said active state, initiating a distributed computation to seek a shortest loop-free path between the source node and the destination node.
2. The method of claim 1 , wherein said local distance condition is based on a comparison of said current source-to-destination distance with said neighbor-to-destination distances for each neighbor node in said neighbor table.
3. The method of claim 1 , further comprising selecting a loop-free path to said destination node comprising one of said successor nodes.
4. The method of claim 3, wherein said one of said successor nodes in said selected loop- free path to said destination node has a higher neighbor-to-destination distance than at least one other of said successor nodes.
5. The method of claim 3, wherein said one of said successor nodes in said selected loop- free path to said destination node has a lowest neighbor-to-destination distance among said successor nodes.
6. The method of claim 1 , wherein said successor set is a null set when said reported distance is lower than or equal to said neighbor-to-destination distance for each of said neighbor nodes.
7. The method of claim 1 , further comprising receiving an input event at said source node.
8. The method of claim 1 , wherein said distributed computation comprises at least one diffusing computation, said at least one diffusing computation comprising sending a query to said neighbor nodes and determining, based on replies received from said neighbor nodes, whether said source node can complete said diffusing computation.
9. The method of claim 1 , wherein said source node is configured to participate in multiple distributed computations simultaneously.
10. The method of claim 9, wherein participating in said multiple distributed computations comprises: sending a reply to a query received from a neighbor node in said neighbor set other than a current preferred successor node having a lowest neighbor-to-destination distance among said successor nodes; and storing an identifier of said current preferred successor node in response to said source node receiving a query from said successor node.11 . The method of claim 1 , further comprising setting an activation flag at said source node when said source node initiates said distributed computation.
12. The method of claim 1 , further comprising, after entering said active state: storing, as a passive distance for said source node, said current source-to- destination distance from prior to entering said active state; selecting a set of successor nodes from among said neighbor nodes, said successor nodes comprising each of said neighbor nodes having a neighbor-to- destination distance that is lower than said passive distance, wherein each of said successor nodes is a neighbor node along a loop-free path to said destination node; selecting a successor node from said successor set as a loop-free path to said destination, said successor node having a distance less than said passive distance, and transmitting, by said source node, a query to said neighbor nodes.
13. The method of claim 12, wherein said query includes a reported distance for said source node, said reported distance comprising said current source-to-destination distance after entering said active state.
14. The method of claim 12, further comprising said source node remaining in said active state until replies to said query have been received from all of said neighbor nodes.
15. The method of claim 14, further comprising said source node entering a passive state upon determining that said local distance condition has been satisfied.
16. The method of claim 7, wherein said input event is one of an update, a reply, and a query from one of said neighbor nodes.
17. The method of claim 7, wherein said input event represents a failed link of a neighbor node, and said method further comprises said source node responding to said input event by: deleting a state of said neighbor associated with said failed link; andsending one of an update and a query based on whether said local distance condition is satisfied after said deleting said state of said neighbor associated with said failed link.
18. The method of claim 7, wherein said input event represents an establishment of a new link to a neighbor node, and said method further comprises said source node responding to said input event by: adding a state for said neighbor node associated with said new link; and sending an update to said neighbour node for each destination for which said source node has stored a finite current source-to-destination distance.
19. A non-transitory computer-readable medium having stored thereon computerexecutable instructions that, when executed by one or more processors, cause the one or more processors to perform a method of maintaining loop-free paths between a source node and a destination node in a computer network, the method comprising: maintaining, in a link weight table for said source node, a list of neighbor nodes directly connected to said source node, and a respective link weight associated with transmitting data from said source node to each of said respective neighbor nodes; maintaining, in a neighbor table for said source node, for one or more of said neighbor nodes, a respective neighbor-to-destination distance associated with transmitting data from said respective neighbor node to said destination node; storing, at said source node, a current source-to-destination distance associated with transmitting data from said source node to said destination node via a current loop- free path; generating, in a routing table of said source node, a set of successor nodes from among said neighbor nodes, said successor nodes being each of said neighbor nodes having a neighbor-to-destination distance that is lower than said current source-to- destination distance, wherein each of said successor nodes is a neighbor node along a loop-free path to said destination;determining, by said source node, whether to enter an active state based on whether a local distance condition has been satisfied; and upon entering said active state, initiating a distributed computation to seek a shortest loop-free path between the source node and the destination node.
20. A system for maintaining loop-free paths in a computer network, the system comprising: a source node; a destination node; said source node comprising a memory having stored thereon computerexecutable instructions that, when executed by a processor of said source node, causes said source node to perform a method comprising: maintaining, in a link weight table for said source node, a list of neighbor nodes directly connected to said source node, and a respective link weight associated with transmitting data from said source node to each of said respective neighbor nodes; maintaining, in a neighbor table for said source node, for one or more of said neighbor nodes, a respective neighbor-to-destination distance associated with transmitting data from said respective neighbor node to said destination node; storing, at said source node, a current source-to-destination distance associated with transmitting data from said source node to said destination node via a current loop-free path; generating, in a routing table of said source node, a set of successor nodes from among said neighbor nodes, said successor nodes being each of said neighbor nodes having a neighbor-to-destination distance that is lower than said current source-to-destination distance, wherein each of said successor nodes is a neighbor node along a loop-free path to said destination;determining, by said source node, whether to enter an active state based on whether a local distance condition has been satisfied; and upon entering said active state, initiating a distributed computation to seek a shortest loop-free path between the source node and the destination node.21 . The method of claim 1 , wherein said neighbor table for said source node further comprises a respective neighbor-to-destination path associated with transmitting data from said respective neighbor node to said destination node, and wherein said local distance condition is based on a comparison of said current source-to-destination distance with said neighbor-to-destination distances for each neighbor node having a respective neighbor-to-destination path which does not include said source node.
Citation Information
Patent Citations
Method and system of shortest path bridging (SPB) enhanced resilience with loop mitigation
US20140219275A1
System and method for distance-based interest forwarding
US20160173386A1
Self-Organizing Network Concepts for Small Cells Backhauling
US20180302807A1