The present invention relates generally to computer systems, and more particularly to expediting an operation in a computer system.
In today's information age, communication networks are often used for interconnecting computers and computer peripherals. A communication network typically includes a number of nodes that interoperate to route protocol messages. The various nodes in the communication network utilize various routing protocols in order to determine the routes that are used to route the protocol messages. Thus, each node is a computer that performs, among other things, various routing protocols in order to route protocol messages.
One type of routing protocol, known as a “link state” routing protocol, determines routes based upon the status of communication links between the various nodes. A link state routing protocol, such as OSPF and IS-IS, requires each node to have complete topology information. Therefore, each node periodically tests the communication links to each of its neighbors and sends a link state advertisement (LSA) protocol message including the link status information to all of the other nodes. Each node computes the routes based upon the link status information received from the other nodes.
When a node receives a LSA protocol message, the node updates its topology information database to include the link status information received in the LSA protocol message, and runs a special algorithm to determine the routes based upon the updated topology information. One well-known algorithm for determining routes is the Dijkstra shortest path algorithm. The Dijkstra shortest path algorithm computes the shortest paths to all destinations from a single source.
In order for the nodes in the communication network to properly route protocol messages, it is important for each node to compute routes in a timely manner. Unfortunately, the Dijkstra shortest path algorithm is computationally intensive, and can take a relatively long time to complete, especially in communication networks having many nodes.
Thus, a technique for reducing the amount of time required to complete the Dijkstra shortest path computation is needed.
In accordance with one aspect of the invention, logic for performing an operation is included in an operating system task. The operating system task typically executes at a low priority level. However, when the operation needs to be performed, the operating system task is raised to a high priority level, and the operation is performed at the high priority level. In this way, the operation is not interrupted by other operating system tasks that execute below the high priority level.
The foregoing and other objects and advantages of the invention will be appreciated more fully from the following further description thereof with reference to the accompanying drawings wherein:
In an embodiment of the invention, each node includes an operating system that executes various operating system tasks. The logic for performing the Dijkstra shortest path computation is a component of one particular operating system task that is referred to hereinafter as the “routing task.” The routing task implements a link state routing protocol, which involves performing the Dijkstra shortest path computation.
In a typical prior art embodiment, the routing task is executed at a predetermined priority level of the operating system. For convenience, this predetermined priority level is referred to hereinafter as the “low priority level,” and an operating system task that operates at the low priority level is referred to hereinafter as a “low priority operating system task.” Other operating system tasks operate at the low priority level, and the operating system performs multitasking in order to allow the various low priority operating system tasks, including the routing task, to share processing resources. This multitasking typically allows a low priority operating system task to execute for a predetermined period of time (or less, if the task relinquishes control), after which the operating system performs a context switch to allow another low priority operating system task to execute. Thus, a low priority operating system task, such as the routing task, may be interrupted by the operating system in order to allow another low priority operating system task to execute. Furthermore, a low priority operating system task, such as the routing task, may be interrupted by the operating system in order to allow a higher priority operating system task to execute.
Because the Dijkstra shortest path computation is computationally intensive, the Dijkstra shortest path computation can take a relatively long time to complete, especially if the communication network includes many nodes. Inevitably, the routing task is interrupted (perhaps multiple times) during the Dijkstra shortest path computation. This, in turn, increases the amount of time required to complete the Dijkstra shortest path computation.
Therefore, an embodiment of the present invention raises the routing task to a high priority level in order to perform the Dijkstra shortest path computation, and lowers the routing task back to the low priority level upon completion of the Dijkstra shortest path computation. In this way, the routing task is able to execute without being interrupted by the remaining low priority operating system tasks or other operating system tasks running at a lower priority level than the routing task. This, in turn, enables the routing task to complete the Dijkstra shortest path computation with fewer interruptions, thereby reducing the amount of time required to complete the Dijkstra shortest path computation.
In an embodiment of the present invention, the node includes task priority control logic that controls the priority level of the routing task. The task priority control logic may be a component of the routing task or may be distinct from the routing task. The task priority control logic causes the routing task to execute at the low priority level when the routing task is not performing the Dijkstra shortest path computation and at the high priority level when the routing task is performing the Dijkstra shortest path computation.
More specifically, the task priority control logic causes the routing task to execute at the low priority level as the default priority level for the routing task. The task priority control logic monitors for a condition that triggers the Dijkstra shortest path computation, which, in a preferred embodiment, is the receipt of a LSA protocol message including link status information. Upon detecting the trigger condition, the task priority control logic raises the routing task to the high priority level so that the routing task performs the Dijkstra shortest path computation at the high priority level. Upon completion of the Dijkstra shortest path computation, the task priority control logic lowers the routing task back to the low priority level, and monitors for a subsequent trigger condition.
In a preferred embodiment of the invention, the task 104 is a routing task that executes a link state routing protocol. The computation logic 106 performs a Dijkstra shortest path computation. The trigger condition is the receipt of a LSA protocol message from one of the number of network interfaces 110. The task priority control logic 108 is coupled to the network interfaces 110 via the interface 109 for detecting the trigger condition. The task priority control logic 108 is coupled to the computation logic 106 via the interface 107 to determine when the computation logic 106 has completed the computation. The task priority control logic 108 is coupled to the operating system 102 via the interface 103 to set the priority level for the task 104.
Although the task priority control logic is preferably used to raise the priority level of the routing task in order to perform the Dijkstra shortest path computation at the high priority level, the task priority control logic can be used more generally to raise the priority level of any task that performs an important operation in order to perform that operation at the high priority level.
It should be noted that the present invention is in no way limited to the location of the task priority control logic 108 within the node 100. The task priority control logic 108 may be a component of the task 104, the network interfaces 110, a protocol stack (not shown) that processes protocol messages received over the network interfaces 110, or other component of the node 100.
In a preferred embodiment of the present invention, predominantly all of the task priority control logic is implemented as a set of computer program instructions that are stored in a computer readable medium and executed by an embedded microprocessor system within a node. Various embodiments of the invention may be implemented in any conventional computer programming language. For example, an embodiment may be implemented in a procedural programming language (e.g., “C”) or an object oriented programming language (e.g., “C++”). Alternative embodiments of the invention may be implemented using discrete components, integrated circuitry, programmable logic used in conjunction with a programmable logic device such as a Field Programmable Gate Array (FPGA) or microprocessor, or any other means including any combination thereof.
Alternative embodiments of the invention may be implemented as a computer program product for use with a computer system. Such implementation may include a series of computer instructions fixed either on a tangible medium, such as a computer readable media (e.g., a diskette, CD-ROM, ROM, or fixed disk), or fixed in a computer data signal embodied in a carrier wave that is transmittable to a computer system via a modem or other interface device, such as a communications adapter connected to a network over a medium. The medium may be either a tangible medium (e.g., optical or analog communications lines) or a medium implemented with wireless techniques (e.g., microwave, infrared or other transmission techniques). The series of computer instructions embodies all or part of the functionality previously described herein with respect to the system. Those skilled in the art should appreciate that such computer instructions can be written in a number of programming languages for use with many computer architectures or operating systems. Furthermore, such instructions may be stored in any memory device, such as semiconductor, magnetic, optical or other memory devices, and may be transmitted using any communications technology, such as optical, infrared, microwave, or other transmission technologies. It is expected that such a computer program product may be distributed as a removable medium with accompanying printed or electronic documentation (e.g., shrink wrapped software), preloaded with a computer system (e.g., on system ROM or fixed disk), or distributed from a server or electronic bulletin board over the network (e.g., the Internet or World Wide Web).
The present invention may be embodied in other specific forms without departing from the essence or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive.
Number | Name | Date | Kind |
---|---|---|---|
4103330 | Thacker | Jul 1978 | A |
4320451 | Bachman et al. | Mar 1982 | A |
4484962 | Dienes et al. | Nov 1984 | A |
4823256 | Bishop et al. | Apr 1989 | A |
5060140 | Brown et al. | Oct 1991 | A |
5168566 | Kuki et al. | Dec 1992 | A |
5193189 | Flood et al. | Mar 1993 | A |
5247677 | Welland et al. | Sep 1993 | A |
5249269 | Nakao et al. | Sep 1993 | A |
5339425 | Vanderah et al. | Aug 1994 | A |
5404544 | Crayford | Apr 1995 | A |
5428789 | Waldron, III | Jun 1995 | A |
5432525 | Maruo et al. | Jul 1995 | A |
5438677 | Adams et al. | Aug 1995 | A |
5469571 | Bunnell | Nov 1995 | A |
5473599 | Li et al. | Dec 1995 | A |
5555420 | Sarangdhar et al. | Sep 1996 | A |
5612950 | Young | Mar 1997 | A |
5630128 | Farrell et al. | May 1997 | A |
5828568 | Sunakawa et al. | Oct 1998 | A |
5838968 | Culbert | Nov 1998 | A |
5925114 | Hoang | Jul 1999 | A |
5944831 | Pate et al. | Aug 1999 | A |
5956644 | Miller et al. | Sep 1999 | A |
6006264 | Colby et al. | Dec 1999 | A |
6016306 | Le Boudec et al. | Jan 2000 | A |
6035321 | Mays | Mar 2000 | A |
6115751 | Tam et al. | Sep 2000 | A |
6148000 | Feldman et al. | Nov 2000 | A |
6148322 | Sand et al. | Nov 2000 | A |
6188670 | Lackman et al. | Feb 2001 | B1 |
6205508 | Bailey et al. | Mar 2001 | B1 |
6209041 | Shaw et al. | Mar 2001 | B1 |
6215764 | Wey et al. | Apr 2001 | B1 |
6230303 | Dave | May 2001 | B1 |
6308245 | Johnson et al. | Oct 2001 | B1 |
6430593 | Lindsley | Aug 2002 | B1 |
6430594 | Akiyama et al. | Aug 2002 | B1 |
6430640 | Lim | Aug 2002 | B1 |
6625124 | Fan et al. | Sep 2003 | B1 |
6681270 | Agarwala et al. | Jan 2004 | B1 |
6697325 | Cain | Feb 2004 | B1 |
6769019 | Ferguson | Jul 2004 | B2 |
20030021228 | Nakano et al. | Jan 2003 | A1 |
20030058804 | Saleh et al. | Mar 2003 | A1 |
Number | Date | Country |
---|---|---|
62065137 | Mar 1987 | JP |