Patent Publication Number: US-7583589-B2

Title: Computing repair path information

Description:
FIELD OF THE INVENTION 
   The present disclosure relates generally to computing repair paths in networks. The disclosure relates more specifically to computing repair path information around a failure component in a data communication network. 
   BACKGROUND OF THE INVENTION 
   The approaches described in this section could be pursued, but are not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated herein, the approaches described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section. 
   In computer networks such as the Internet, packets of data are sent from a source to a destination via a network of elements including links (communication paths such as telephone lines, wires or cables, or optical lines) and nodes (for example, switches or routers directing the packet along one or more of a plurality of links connected to the switches or routers) according to one of various routing protocols. 
   One class of routing protocol comprises Routing Vector Protocols according to which the path to a network destination is determined based on a reachability metric. One such protocol comprises a distance vector protocol such as the Routing Information Protocol (RIP) which is described in Internet Engineering Task Force (IETF) Request for Comments (RFC) 1058 and 1723. 
   A problem that arises with routing vector protocols such as RIP is that if a component fails in the network then packets may be lost while the network converges on a changed topology. For example if node A fails then according to normal forwarding, until node B has updated its forwarding information base, it will forward packets for nodes A and D to node A and those packets will be lost. 
   One solution that has been proposed to this problem is described in co-pending patent application Ser. No. 11/526,933 filed 25 Sep. 2006, entitled “Forwarding data in a data communications network” of Stewart Bryant et al (“Bryant et al”) the entire contents of which are incorporated by reference for all purposes as if fully set forth herein. According to this approach repair paths are computed. However computation of repair paths can be burdensome as large numbers of candidate routes may be available. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which: 
       FIG. 1  is a representation of a network for illustrative purposes; 
       FIG. 2   a  is a schematic representation of an advertised reachability metric; 
       FIG. 2   b  is a schematic representation of a forwarding information base (FIB); 
       FIG. 3  is a flow diagram illustrating steps performed at a neighbor node according to the method described herein; 
       FIG. 4  is a flow diagram illustrating the steps performed at a repairing node according to the method described herein; and 
       FIG. 5  is a block diagram that illustrates a computer system upon which the method described herein may be implemented. 
   

   DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
   An apparatus and method for computing repair path information is described. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention. 
   Embodiments are described herein according to the following outline: 
   1.0 General Overview 
   2.0 Structural and Functional Overview 
   3.0 Method and Apparatus for computing repair path information 
   4.0 Implementation Mechanisms-Hardware Overview 
   5.0 Extensions and Alternatives 
   1.0 General Overview 
   The needs identified in the foregoing Background, and other needs and objects that will become apparent for the following description, are achieved in the present invention, which comprises in various aspects an apparatus and method for computing repair path information around a failure component in a data communications network having as components nodes and links there between. Where, according to a routing protocol, a node sends to a neighbor node a metric indicative of reachability of a destination node and the protocol requires differentiated action by the node if the route to the destination node includes the neighbor node, the apparatus is arranged to compute a repair path to the destination node via candidate nodes comprising only neighbor nodes to the apparatus not requiring differentiated action relative to the apparatus. 
   In other aspects, the invention encompasses a computer apparatus and a computer-readable medium configured to carry out the foregoing steps. 
   2.0 Structural and Functional Overview 
     FIG. 1  which is a simple network diagram illustrating RIP. A data communications network includes a plurality of nodes, routers or other appropriate computer apparatus for forwarding data A, B, C, D, E, X, reference numerals  100 ,  102 ,  104 ,  106 ,  108 ,  120 . Node A is connected to nodes B and D via links  110 ,  114 , node B is connected to node C via link  112 , node C is connected to node E via link  116  and node D is connected to node E via link  118 . Node X is connected to nodes D and E via links  124 ,  126 . All of the links have a cost of 1 except links  114 ,  116  and  122  which have cost 2. 
   In order to forward data to each destination in the network, each node must compute its nexthop on the basis of some form of least cost path. According to RIP, in order for a node in the network to derive this information, each node advertises to its neighbors a reachability metric indicating its cost to each destination. Accordingly, in  FIG. 1 , for example node A will advertise to nodes B and D its reachability to each of destinations B, C, D, E, X. This information can be seen in  FIG. 2   a  which is a table illustrating the reachability metric advertised by node A to node D having a destination column  200  and a cost column  202 . It can be seen that a cost of one is advertised for reaching node B, a cost of two is advertised for reaching nodes C and D, a cost of three for reading node E and a cost of four for reaching node X. Of course only the lowest cost route is advertised. In a similar manner nodes B and D will advertise information to their neighbors which will be based in part upon reachability information that they received. It will be seen that this approach will be iterative as each node receives further information propagated hop by hop through the network. Eventually, however each node converges on a least cost value for each destination. 
   In addition each node will store the corresponding nexthop, that is, the neighbor node to which it must forward a packet for a given destination along the least cost path.  FIG. 2   b  is a table corresponding to the forwarding information base (FIB) stored at node D once it has converged and based on the information received from its neighbors. In particular the FIB includes a destination column  204  and a nexthop column  206 . In addition, column  208  shows the cost of reaching each destination although it will be noted that in practice this information may not be stored in the FIB but is shown here for the purposes of comprehension. Hence it will be seen that if node D receives a packet for destination A then its nexthop is of course node A and similarly for node B. If a packet is received at node D with destination node B then the nexthop is node A as the cost via node E would be higher. Similarly for a packet destined for node E the nexthop is node C and so forth. 
   In addition, to reduce the occurrence of neighbour nodes sending each other repeated advertisements with increasing cost values for a given destination—the so-called counting to infinity problem and hence reduce convergence time distance vector protocols often incorporate “split horizon”. According to this approach a node will not send reachability information back to a router from which that reachability information was learned. In another variant, “split horizon with poisoned reverse”, a node will advertise reachability information back to a node from which it received that information, but with an unreachable (infinite) metric. Referring again to  FIG. 2   a , in the case of split horizon, node A would not advertise reachability information for destinations D, E, X as shown in column  210 . In the case of split horizon with poison reverse, node A would advertise these destinations with cost infinity as shown in column  212 . 
   In overview the method and apparatus described herein allow computation of repair path information for example by a repairing node around a failure component such as an adjacent link or node and a routing protocol such as a distance vector protocol employing differentiated action such as split horizon or split horizon with poisoned reverse when sending a reachability metric for a designation node back to a neighbor node along the route to the destination node. 
   The approach recognizes that repair paths can be computed from loop free alternates (LFA) comprising neighbor nodes to a repairing node that have a cost to a destination node that is less than the cost of the neighbor node to the repairing node plus the cost from the repairing node to the destination node. For example referring to  FIG. 1 , node X is an LFA for node D with respect to destination node E as the cost from node X to node E, cost  1 , is less than the cost from node X to node D, cost  2 , plus the cost from node D to node E, cost  1 . It is found that a significant fraction of repairs can be executed using LFAs. 
   The approach described herein further recognizes that the computational burden can be reduced by excluding neighbor nodes as LFA candidates where it can be deduced that they cannot be LFAs. In particular it will be seen that any neighbor node that implements differentiated action when sending its reachability metric to a repairing node, for example suppressing sending its reachability metric in the case of split horizon or sending a reachability metric indicative of unreachability, for example value infinity, in the case of split horizon with poison reverse, cannot be a LFA as the condition for employing the differentiated action is that the route to the destination node is via the repairing node, that is, the neighbor node is further away. 
   Accordingly the approach described herein ensures that a repairing node is arranged to compute a repair path, for example using an LFA, to a destination node via candidate nodes comprising only neighbor nodes to the repairing node not requiring differentiated action relative to the repairing node. The repairing node only need consider as candidates neighbors that provide a reachability metric, or a reachable reachability metric in the case of split horizon with poisoned reverse. Hence additional computation is not required to exclude non LFA neighbor nodes. 
   In addition as discussed in more detail below the distance vector protocol can be simulated to identify candidate nodes for LFAs whereas normal routes can be computed using an alternative protocol such as intermediate system-intermediate system (IS-IS) or open shortest path first (OSPF). 
   Yet further the approach can be implemented in conjunction with other repair schemes allowing said other repair schemes to be implemented only where an LFA is unavailable. 
   Hence LFAs can be calculated for distance vector protocols such as interior gateway protocols (IGPs) using information inherently available from the split horizon/split horizon with poisoned reverse approach, reducing the computational burden of finding LFA repair paths and minimizing the need for additional repair schemes. Of course when split horizon/split horizon with poison reverse is not in use LFAs can be computed as using the available cost information from the reachability metrics. 
   3.0 Method and Apparatus for Computing Repair Path Information 
   The approach described herein is described in more detail with reference to  FIG. 3  which is a flow diagram illustrating steps performed at a neighbor node such as node A in relation to a repairing node such as node D. At step  300 , according to any appropriate distance vector approach, the neighbor node computes a reachability metric for all destinations, based on the information that it itself has received in reachability metric information from its neighbor nodes. 
   At step  302  node A applies differentiated action in relation to sending on its own reachability metric as computed in step  300 . For example in the case of destination node E then node A will have received the reachability information from node D and hence, apply differentiated action in relation to node D for this destination node. As described above, according to the distance vector protocol the differentiated action may comprise suppression of sending the reachability metric to the destination node E to node D in the case of split horizon or sending it with an unreachable value such as infinity in the case of split horizon with poisoned reverse. 
   Referring now to  FIG. 4 , which is a flow diagram illustrating steps performed at a repairing node D, at step  400  reachability metrics are received from each of its neighbor nodes. At step  402  the repairing node computes its repair paths from LFA candidates not including nodes which have applied differentiated action, for example node A in relation to destination node E. This can be implemented, for example, by only considering as candidates neighbors who have sent a reachability metric in relation to the relevant destination in the case of split horizon, or excluding as candidates nodes who have sent an unreachable metric in relation to a destination, for example infinity, in the case of split horizon with poisoned reverse. 
   According to a further optional aspect of the approach an additional repair may be implemented. In this case the repair scheme need only be implemented in the case where an LFA is not available. Accordingly, at step  404 , where an LFA is available, alternative repairs can be withdrawn or not computed/distributed in the first place. 
   One implementation of this for example, is in the case where “not via” addresses are implemented as a repair scheme. The use of “notvia addresses” for creating repair paths is described, for example in co-pending patent application Ser. No. 11/064,275, filed Feb. 22, 2005, entitled “Method and Apparatus for Constructing a Repair Path around a non-available Component in a Data Communications Network” of Michael Shand et al, (“Shand et al”) the entire contents of which are incorporated by reference for all purposes and if fully set forth herein. 
   The use of not via addresses in a network implementing a routing vector protocol such as a distance vector protocol is described, for example, in Bryant et al. According to that approach, with reference once again to  FIG. 1 , in order to repair a failure in the network each node adjacent to the failure acting as instigating repair node computes a repair or backup path around the failure. Then when a failure is detected an instigating repair node will forward subsequent packets which otherwise would have traversed the failure, via the repair path to a receiving repair node. For example where link  110  fails between node A and B and node A detects the failure then packets subsequently received for node B or node C, which otherwise would have gone via link  110 , are forwarded according to the pre-computed repair path via nodes D, E and if necessary C. This approach is sometimes termed fast reroute. 
   The manner in which the repair path is constructed and propagated is by giving each node/interface (ie its connection to each link to adjacent nodes), in addition to its normal address, a repair address which is capable of propagation and is reachable via a repair path notvia the failure component, sometimes termed a “notvia address”. For example node D may have repair addresses D notvia A (represented here as Da) and D notvia C (Dc). Each other node will have computed its nexthop for each of the notvia addresses. Hence when node A detects failure of link  114  it tunnels subsequent packets for node D to address Da for which its nexthop is node D. Node D, having precomputed its nexthop for Da will forward the packet to node C and so forth. It will be noted that node A can forward the packet to Da in any appropriate way for example by tunneling it to that address. Similarly any packets received at node A for node E will also be tunneled to Da. Upon decapsulation of the packet at node D it will then be forwarded normally from node D to node E following the original path. 
   According to the approach described herein, however, if an LFA is available from, for example, node A then it can signal to the relevant neighbor that the LFA is available such that the neighbor can withdraw the not via address to node A and only restore it when it receives a signal indicating that the LFA is no longer viable. It will be seen that this approach reduces the number of “not via” repairs required. 
   Reverting to the flow diagram of  FIG. 4  at step  406 , upon detection of failure of an adjacent component such as a node or link, the repairing node, node D will send packets for a destination which would have traversed the failure component via the repair path to that destination. For example in the case of failure of link  118  between nodes D and E in  FIG. 1  node D will send packets to node X, a valid LFA candidate. It will seen that if node D had sent packets for node E to a non LFA node such as node A then packets would loop back to node D if node A has not yet become aware of the failure and recomputed its forwarding information. 
   At step  408  the repairing node A awaits reconvergence of the network taking into account the failed link before recomputing its repairs. It will be seen that the mechanism described herein requires the network to stabilize before a neighbor can be assumed to be an LFA. Accordingly node A can await some predetermined time after detecting a cost change, the time being computed to be longer than any possible reconvergence time, prior to determining who the LFA repairing neighbors are in the new topology. 
   It will be seen that the distance vector protocol can be applied in order to compute LFAs but that normal forwarding next hop calculation can be performed using another protocol for example a normal IGP approach such as a link-state protocol. Alternatively again each protocol can emulate a distance vector protocol such as RIP to derive the LFA candidates as described above. 
   In the case that split horizon with or without poisoned reverse is not implemented then the availability of LFAs can still be computed as each node knows its own cost to a given destination (by definition in a distance vector protocol) as well as its neighbors&#39; costs to itself and the destination such that it has all the information it needs to determine whether a neighbor node is a LFA. 
   Although the example expressed above is described in relation to link repair, that is where the failure component is a link between adjacent nodes, alternatively the approach can be adopted in the case of node repair, that is, the failure of an adjacent node. In that case the repairing node may identify whether its adjacent nodes provide a downstream route to a destination, where a downstream route is provided by a neighbor node where to the cost from the neighbor node to the destination is less than the cost from the repairing node to the destination. Downstream routes are hence a subset of LFAs. 
   This may be further understood with reference to  FIG. 1 , considering node D as the link repairing node and node C as destination node in the event of failure of node E. In that case node X is an LFA (cost to node C=3, &lt;cost to node D+cost from node D to node C=5. Node A is clearly an LFA (cost A to C=2&lt;cost A to D to C=5) and is also a downstream route (cost A to C=2&lt;cost D to C=3). However node X is not a downstream route as cost X to C=3 is not less than cost D to C=3. Accordingly if node E fails, node X will attempt to send LFA repair packets from node D back to D, causing a loop. By selecting node A, a downstream route repair, if node E fails packets will still successfully be repaired to node C. 
   It will be recognized that the approach described herein can be implemented in any appropriate network or environment using any appropriate distance or path vector protocol in which neighbors exchange reachability metrics and apply differentiated action. The manner in which the method is described herein is implemented maybe using software, firmware, hardware or any combination thereof and with any appropriate code or configuration changes as will be apparent to the skilled reader without the need for detailed description here. For example any appropriate mechanism can be implemented for identifying LFA non-candidates and updating and implementing the forwarding tables in relation to repair paths appropriately. 
   4.0 Implementation Mechanisms—Hardware Overview 
     FIG. 5  is a block diagram that illustrates a computer system  40  upon which the method may be implemented. The method is implemented using one or more computer programs running on a network element such as a router device. Thus, in this embodiment, the computer system  140  is a router. 
   The computer system  140  implements as a router acting as a repair instigating, repair receiving or repair path node the above described method of forwarding data. Computer system  140  includes a bus  142  or other communication mechanism for communicating information, and a processor  144  coupled with bus  142  for processing information. Computer system  140  also includes a main memory  146 , such as a random access memory (RAM), flash memory, or other dynamic storage device, coupled to bus  142  for storing information and instructions to be executed by processor  144 . Main memory  146  may also be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor  144 . Computer system  140  further includes a read only memory (ROM)  148  or other static storage device coupled to bus  142  for storing static information and instructions for processor  144 . A storage device  150 , such as a magnetic disk, flash memory or optical disk, is provided and coupled to bus  142  for storing information and instructions. 
   A communication interface  158  may be coupled to bus  142  for communicating information and command selections to processor  144 . Interface  158  is a conventional serial interface such as an RS-232 or RS-422 interface. An external terminal  152  or other computer system connects to the computer system  140  and provides commands to it using the interface  158 . Firmware or software running in the computer system  140  provides a terminal interface or character-based command interface so that external commands can be given to the computer system. 
   A switching system  156  is coupled to bus  142  and has an input interface and a respective output interface (commonly designated  159 ) to external network elements. The external network elements may include a plurality of additional routers  160  or a local network coupled to one or more hosts or routers, or a global network such as the Internet having one or more servers. The switching system  156  switches information traffic arriving on the input interface to output interface  159  according to pre-determined protocols and conventions that are well known. For example, switching system  156 , in cooperation with processor  144 , can determine a destination of a packet of data arriving on the input interface and send it to the correct destination using the output interface. The destinations may include a host, server, other end stations, or other routing and switching devices in a local network or Internet. 
   The computer system  140  implements as a router acting as a repairing node or neighbor node the above described method. The implementation is provided by computer system  140  in response to processor  144  executing one or more sequences of one or more instructions contained in main memory  146 . Such instructions may be read into main memory  146  from another computer-readable medium, such as storage device  150 . Execution of the sequences of instructions contained in main memory  146  causes processor  144  to perform the process steps described herein. One or more processors in a multi-processing arrangement may also be employed to execute the sequences of instructions contained in main memory  146 . In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the method. Thus, embodiments are not limited to any specific combination of hardware circuitry and software. 
   The term “computer-readable medium” as used herein refers to any medium that participates in providing instructions to processor  144  for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, optical or magnetic disks, such as storage device  150 . Volatile media includes dynamic memory, such as main memory  146 . Transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus  142 . Transmission media can also take the form of wireless links such as acoustic or electromagnetic waves, such as those generated during radio wave and infrared data communications. 
   Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read. 
   Various forms of computer readable media may be involved in carrying one or more sequences of one or more instructions to processor  144  for execution. For example, the instructions may initially be carried on a magnetic disk of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local to computer system  140  can receive the data on the telephone line and use an infrared transmitter to convert the data to an infrared signal. An infrared detector coupled to bus  142  can receive the data carried in the infrared signal and place the data on bus  142 . Bus  142  carries the data to main memory  146 , from which processor  144  retrieves and executes the instructions. The instructions received by main memory  146  may optionally be stored on storage device  150  either before or after execution by processor  144 . 
   Interface  159  also provides a two-way data communication coupling to a network link that is connected to a local network. For example, the interface  159  may be an integrated services digital network (ISDN) card or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, the interface  159  may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links may also be implemented. In any such implementation, the interface  159  sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information. 
   The network link typically provides data communication through one or more networks to other data devices. For example, the network link may provide a connection through a local network to a host computer or to data equipment operated by an Internet Service Provider (ISP). The ISP in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet”. The local network and the Internet both use electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on the network link and through the interface  159 , which carry the digital data to and from computer system  140 , are exemplary forms of carrier waves transporting the information. 
   Computer system  140  can send messages and receive data, including program code, through the network(s), network link and interface  159 . In the Internet example, a server might transmit a requested code for an application program through the Internet, ISP, local network and communication interface  158 . One such downloaded application provides for the method as described herein. 
   The received code may be executed by processor  144  as it is received, and/or stored in storage device  150 , or other non-volatile storage for later execution. In this manner, computer system  140  may obtain application code in the form of a carrier wave. 
   5.0 Extensions and Alternatives 
   In the foregoing specification, the invention has been described with reference to specific embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. 
   It will be appreciated that the approaches described herein can be implemented in relation to any appropriate distance vector routing protocols including routing information protocol (RIP), internet gateway routing protocol (IGRP) and so forth. In addition the approach as described herein can be implemented in relation to other appropriate routing vector protocols such as path vector protocols. The approach can be used in relation to various types of candidate repair paths including LFAs, downstream paths and feasible successors. 
   Furthermore, although repair paths are pre-computed in the discussion above, alternatively they can be computed “on-the-fly”.