The above and further advantages of the invention may be better understood by referring to the following description in conjunction with the accompanying drawings in which like reference numerals indicate identically or functionally similar elements, of which:
Data packets may be exchanged among the routers of the computer network 100 using predefined network communication protocols such as the Transmission Control Protocol/Internet Protocol (TCP/IP), User Datagram Protocol (UDP), Asynchronous Transfer Mode (ATM) protocol, Frame Relay protocol, Internet Packet Exchange (IPX) protocol, etc. Routing information may be distributed among the routers within an AS using predetermined “interior” gateway protocols (IGPs), such as conventional distance-vector protocols or, illustratively, link state protocols, through the use of link state advertisements or link state packets (LSPs) as described further below. Notably, a router that communicates using link state routing protocols may be referred to herein as a link state router (LSR).
The memory 240 comprises a plurality of storage locations that are addressable by the processor 220 and the network interfaces 210 for storing software programs and data structures associated with the present invention. The processor 220 may comprise necessary elements or logic adapted to execute the software programs and manipulate the data structures, such as link state database (LSDB) 249. A router operating system 242 (e.g., the Internetworking Operating System, or IOSTM, of Cisco Systems, Inc.), portions of which are typically resident in memory 240 and executed by the processor, functionally organizes the router by, inter alia, invoking network operations in support of software processes and/or services executing on the router. These software processes and/or services may comprise routing services 247 and link state (IGP) services or process 248. It will be apparent to those skilled in the art that other processor and memory means, including various computer-readable media, may be used to store and execute program instructions pertaining to the inventive technique described herein.
Routing services 247 contain computer executable instructions executed by processor 220 to perform functions provided by one or more routing protocols, such as various link state (IGP) routing protocols, e.g., IS-IS, (as link state services 248), etc. These functions may be configured to manage a forwarding information database (not shown) containing, e.g., data used to make forwarding decisions. Routing services 247 may also perform functions related to virtual routing protocols, such as maintaining VRF instances (not shown) as will be understood by those skilled in the art.
Changes in the network topology may be communicated among routers 200 using a link state protocol, such as the conventional IS-IS protocol. Suppose, for example, that a communication link fails within a network or a cost value associated with a network node changes. Once the change in the network's state is detected by one of the routers, that router may flood an IGP Advertisement communicating the change to the other routers in the network (e.g., the broadcast network). In this manner, each of the routers eventually “converges” to an identical view of the network topology.
A type field 310 (and corresponding version field 312) stores a value indicating the type (and version) of LSP 300 being transmitted, which may define the existence of other type-specific fields 322 within the LSP. For example, the type of advertisement may be a “Hello” packet, an LSP, etc., as will be understood by those skilled in the art. The PDU length field 318 stores a value indicating the length of the entire PDU (Protocol Data Unit, or LSP 300), including the header, type-specific fields, and data fields. A source ID field 320 stores a value that identifies the router that generated and originally broadcast the LSP 300.
The other type-specific fields 322 may include any number of fields as defined by the protocol, such as checksum fields, maximum area address fields, etc., as understood by those skilled in the art. For example, a sequence-number field (not shown) may store a sequence number indicating the relative version of the LSP. Typically, the sequence number stored in the field is-incremented, e.g., by one, for every new version of the LSP. The LSP 300 is therefore considered “stale” (invalid) if its sequence number is less than the sequence number stored in a previously-received version of the LSP, i.e., generated by the same advertising node. Accordingly, the routers 200 may be configured to store and forward only the most recent version of an LSP, e.g., the version having the largest sequence number. A remaining lifetime field (not shown) may also be used to store a value that may be used for determining whether the LSP 300 is valid. The remaining lifetime value is typically initialized to a non-zero integer value, often in units of seconds. The remaining lifetime value may be decremented, e.g., by one every second, until the remaining lifetime value reaches zero, thereby indicating that the LSP has become invalid. That is, every router 200 that stores or floods the LSP 300 continuously ages the packet until the remaining lifetime value equals zero. Those skilled in the art will appreciate that other aging mechanisms alternatively may be used, such as incrementing the LSP remaining lifetime value from an initial value, e.g., equal to zero, until the remaining lifetime value reaches a known upper limit.
The data section 330 includes one or more variable length fields 325, which each have a specific type (or code), length, and value (TLV) as will be understood by those skilled in the art. For example, to advertise network topology, one or more pairs of neighboring-node fields (not shown) and cost fields (not shown) may be used (e.g., a “link state”). The neighboring-node fields may store a value, such as an address, indicating a network node that is directly accessible from the intermediate node identified in the source ID field 320. The cost field may store a value that has been associated, e.g., by the advertising node, with the network node identified in the neighboring-node field. It is noted that in other embodiments, a single neighboring node may be associated with a plurality of cost values. Other routing information may also be included in the variable length fields 325 of the LSP 300, such as checksum values, padding fields, proprietary fields, etc. Generally, the received LSPs are stored in LSDB 249 of the router 200. As mentioned above, LSP 300 may be separated (fragmented) into two or more LSP fragments, as will be understood by those skilled in the art. Accordingly, a receiving LSR updates LSP fragments as new corresponding LSP fragments are received (“fragment replacement”).
The present invention is directed to a technique for efficiently avoiding transient routing disturbances in link state routing protocols with fragmented LSPs in a computer network. According to the novel technique, an LSR specifies which of two or more links are to be advertised in each of two or more corresponding LSP fragments. The LSR advertises the states of the specified links in the corresponding LSP fragments to one or more other LSRs. In other words, each link of the LSR is assigned to a particular LSP fragment, and the state of the link is illustratively advertised in that particular LSP fragment (i.e., no fragment wrapping). Upon receiving the LSP fragments, the other LSRs may accurately update the correct link states based on the individual LSP fragments, i.e., without transient routing disturbances caused by fragment wrapping.
In accordance with the present invention, positions (e.g., space, locations, etc.) within an LSP 300 (i.e., each LSP fragment) are pre-allocated to any and all particular links of an LSR for which that LSR may advertise link state information. For instance, a system administrator may configure static locations (i.e., unchanging) within particular LSP fragments for each link of the LSR. Assume that the advertising LSR is LSR A of
Once the links of an LSR are each assigned to a particular LSP fragment, states of those links are placed in the same corresponding fragment. That is, when the state of the link is present (e.g., the link is up), the link is placed in the corresponding fragment. For instance, if Links A-C are up, they are placed within Fragment 1, and if Links D-F are up, they are placed within Fragment 2. Assuming each of the links A-F is functioning (up), the LSP Fragments 1 and 2 (e.g., and up to N) may thus be advertised by LSR A as shown in
In the event a link state is assigned to a particular LSP fragment, but the link is not functioning (e.g., is down), the present invention specifically does not “wrap” links from other fragments to fill the place of the non-functioning link.
As an illustrative example, assume that all specified links of an advertising LSR, e.g., Links A-F of LSR A, are initially up. As such, a state may be initially contained within the LSP 300 for each link, e.g., A-C in Fragment 1 and D-F in Fragment 2 as in
The present invention may also reserve locations for links that are not functioning at the time of configuration. In this manner, the present invention allows for “forward references” to links/interfaces that may be added/initialized in the future, such as for network expansion, repairs, etc. For instance, assume that a Link “G” is not yet functioning at LSR A. A system administrator may still assign a particular LSP fragment to Link G (e.g., Fragment N), such that when Link G becomes operational (e.g., is added, repaired, etc.), the link will have an allocated position within the LSP.
While the positions of the links within the LSP fragments are to remain generally static in accordance with the present invention, it is also possible to occasionally reoptimize the placement of the links within the LSP fragments. For example, it may be beneficial to change the placement of the links when more links are added, more links are removed (e.g., permanently), or to optimize fragment usage utilization, etc. In other words, the present invention does not prohibit the re-configuration of the static link locations within the LSP fragments, but prohibits dynamically changing the static locations (fragment wrapping) as link states change during normal network operations. Those skilled in the art will understand that re-configuration may result in possible transient routing disturbances as the LSP fragments with newly configured static placements propagate through the network to replace the previous static placements. However, this “one-shot” possible disturbance may be considered acceptable in the minimal instances where it may occur (e.g., during manual network reconfiguration, etc.).
Once the LSR advertises the link states (e.g., in fragments of LSP 300) in step 515, one or more other LSRs (e.g., LSR B) may receive the LSP fragments in step 535. In step 540, the other receiving LSR then deterministically updates the correct link states (e.g., into LSDB 249) based on each individual LSP fragment received. As described above, this certainty is due to the appearance or non-appearance of particular link states within the same fragment in accordance with the present invention. The procedure 500 may continuously cycle to step 515, where the advertising LSR (LSR A) updates and advertises LSPs in fragments. For instance, as link states change (e.g., go up or down), the advertising router updates the LSP (i.e., the fragments) accordingly, and each link remains advertised (or not) in a particular fragment (i.e., no fragment wrapping). This way, when the receiving LSR receives a fragment in step 535, the proper updates will be completed based on fragment replacement in step 540, as described above.
Advantageously, the novel technique efficiently avoids transient routing disturbances in link state routing protocols with fragmented LSPs in a computer network. By specifying the particular LSP fragment to which each link of an LSR is to be advertised, the novel technique allows other LSRs receiving fragmented LSPs to deterministically conclude the state of the links from the advertising LSR. In particular, the present invention avoids transient routing disturbances (e.g., black holes) by efficiently preventing fragment wrapping, thus allowing other LSRs to receive LSP fragments out of order without incorrectly updating (e.g., removing) a link state.
Those skilled in the art will understand that the present invention also advantageously applies to graceful restarts, since link placement (LSP fragment configuration) remains the same as before the restart, thus avoiding transient routing disturbances upon graceful restart. Also, algorithms that perform difference calculations on the entire LSP (i.e., all fragments), as will also be understood by those skilled in the art, may also benefit from the present invention to optimize convergence. For instance, the LSR performing the difference calculation may become confused if links states move among fragments until all the fragments have been received.
While there has been shown and described an illustrative embodiment that efficiently avoids transient routing disturbances in link state routing protocols with fragmented LSPs in a computer network, it is to be understood that various other adaptations and modifications may be made within the spirit and scope of the present invention. For example, the invention has been shown and described herein using IS-IS as the link state routing protocol. However, the invention in its broader sense is not so limited, and may, in fact, be used with other routing protocols that fragment advertisements (e.g., LSPs), as will be understood by those skilled in the art. Also, while the above description describes configuring the link locations with LSP fragments manually by a system administrator, those skilled in the art will understand that various processes operating on the advertising LSR may dynamically configure the link locations. For instance, upon automatic discovery of links, the LSR may assign certain positions to particular links, which are not altered due to subsequent state changes of the links (i.e., no fragment wrapping).
The foregoing description has been directed to specific embodiments of this invention. It will be apparent, however, that other variations and modifications may be made to the described embodiments, with the attainment of some or all of their advantages. For instance, it is expressly contemplated that the teachings of this invention can be implemented as software, including a computer-readable medium having program instructions executing on a computer, hardware, firmware, or a combination thereof. Also, electromagnetic signals may be generated to carry computer executable instructions that implement aspects of the present invention over, e.g., a wireless data link or a data network, such as the Internet. Accordingly this description is to be taken only by way of example and not to otherwise limit the scope of the invention. Therefore, it is the object of the appended claims to cover all such variations and modifications as come within the true spirit and scope of the invention.