U.S. patent application number 10/959707 was filed with the patent office on 2006-04-06 for method and apparatus for flooding link state packets to achieve faster convergence.
This patent application is currently assigned to Cisco Technology, Inc.. Invention is credited to Kevin M. Eckhardt, Steven V. Luong, Steven Moore, James L. Ng, Heidi H. Ou, Gerald Redwine, Scott R. Sturgess.
Application Number | 20060072461 10/959707 |
Document ID | / |
Family ID | 36125395 |
Filed Date | 2006-04-06 |
United States Patent
Application |
20060072461 |
Kind Code |
A1 |
Luong; Steven V. ; et
al. |
April 6, 2006 |
Method and apparatus for flooding link state packets to achieve
faster convergence
Abstract
Disclosed are methods and apparatus for flooding link state
packets or packet data units (LSP's) from a first node to one other
LSP receiving node, where the LSP's are flooded in an order that is
related to relative costs of various paths emanating from the first
node. That is, the first node sends its own LSP first since the
first node has no cost relative to itself. The first node then
sends other LSP's that are associated with a plurality of other LSP
sending nodes that have previously flooded their LSP's to the first
node, and these other LSP's are sent by the first node to the other
LSP receiving node in an order related to the relative costs
associated with the paths from the first node to each of the other
LSP sending nodes which had previously sent the other LSP's to the
first node.
Inventors: |
Luong; Steven V.; (San Jose,
CA) ; Ou; Heidi H.; (San Jose, CA) ; Redwine;
Gerald; (Raleigh, NC) ; Ng; James L.; (Mebane,
NC) ; Eckhardt; Kevin M.; (Durham, NC) ;
Sturgess; Scott R.; (Grimbergen, BE) ; Moore;
Steven; (Holly Springs, NC) |
Correspondence
Address: |
BEYER WEAVER & THOMAS LLP
P.O. BOX 70250
OAKLAND
CA
94612-0250
US
|
Assignee: |
Cisco Technology, Inc.
|
Family ID: |
36125395 |
Appl. No.: |
10/959707 |
Filed: |
October 5, 2004 |
Current U.S.
Class: |
370/236 ;
370/254 |
Current CPC
Class: |
H04L 45/32 20130101;
H04L 45/02 20130101 |
Class at
Publication: |
370/236 ;
370/254 |
International
Class: |
H04L 12/26 20060101
H04L012/26 |
Claims
1. A method of flooding link state packets or packet data units
(LSP's) from a first node to a second node, comprising: when it is
determined that a flood trigger has occurred with respect to the
second node, sending the first node's own LSP from the first node
to the second node; and when it is determined that a flood trigger
has occurred with respect to the second node and after the first
node's own LSP has been sent to the second node, sending a
plurality of other LSP's from the first node to the second node,
wherein these other LSP's are associated with a plurality of third
nodes that have previously flooded their LSP's to the first node,
wherein these other LSP's are sent by the first node to the second
node in an order related to the relative costs associated with a
plurality of paths from the first node to each of these other LSP
sending nodes.
2. A method as recited in claim 1, wherein the other LSP's are
flooded in an order from lowest to highest cost.
3. A method as recited in claim 2, further comprising continuously
determining the relative costs of the other LSP's in an ascending
order as each LSP is received into the first node.
4. A method as recited in claim 3, wherein continuously updating
the relative costs of the other LSP's is accomplished by
continuously updating a cost table that lists the relative costs of
each received LSP each time a new LSP is received at the first
node.
5. A method as recited in claim 4, wherein the cost table is
continuously updated to lists the relative costs of the first
node's own LSP in addition to each received LSP each time a new LSP
is received at the first node
6. A method as recited in claim 3, wherein continuously updating
the relative costs of the other LSP's is accomplished by
continuously updating an LSP data structure that includes a
plurality of LSP elements for each of the other LSP's as each of
the other LSP's is received, wherein the LSP data structure also
includes a first LSP pointer that points to a first link of one of
the LSP elements that corresponds to the lowest cost and the first
link is linked to a chain of other links that each correspond to a
different one of the other LSP elements in an order corresponding
to an ascending order of costs of the other LSP elements.
7. A method as recited in claim 6, wherein the LSP data structure
is that further includes an element for the first node's own LSP
and wherein the first LSP pointer points to the first node's
element.
8. A method as recited in claim 1, wherein the flood trigger
includes the second node having an interface with the first node
and starting or restarting.
9. A method as recited in claim 1, wherein the flood trigger
includes merging a first network that includes the first node with
a second network that includes the second node, wherein the first
and second networks are merged by interfacing the first node and
the second node together.
10. A method as recited in claim 1, wherein each of the other LSP's
includes connectivity information for one or more fourth nodes
connected to the corresponding third node and one or more cost
values from such corresponding third node to each of the one or
more fourth nodes, and wherein determination of the relative costs
is based on a plurality of cost values received within the other
LSP's previously sent from the plurality of third nodes to the
first node.
11. A method as recited in claim 10, wherein the cost values of
each of the other LSP's each indicate a cost of a path from the
corresponding one of the third nodes and a one of its
neighbors.
12. A method as recited in claim 11, wherein the relative costs
indicate a priority list of the other LSP's based on a total cost
from the first node to each of the corresponding third nodes.
13. A method as recited in claim 11, wherein when there are a
plurality of particular paths from the first node to a particular
one of the third nodes, the total cost from the first node to third
node is based on a selected particular path having a minimum
cost.
14. A computer system operable to flood link state packets or
packet data units (LSP's) from a first node to a second node, the
computer system comprising: one or more processors; one or more
memory, wherein at least one of the processors and memory are
adapted for: when it is determined that a flood trigger has
occurred with respect to the second node, sending the first node's
own LSP from the first node to the second node; and when it is
determined that a flood trigger has occurred with respect to the
second node and after the first node's own LSP has been sent to the
second node, sending a plurality of other LSP's from the first node
to the second node, wherein these other LSP's are associated with a
plurality of third nodes that have previously flooded their LSP's
to the first node, wherein these other LSP's are sent by the first
node to the second node in an order related to the relative costs
associated with a plurality of paths from the first node to each of
these other LSP sending nodes.
15. A computer system as recited in claim 14, wherein the other
LSP's are flooded in an order from lowest to highest cost.
16. A computer system as recited in claim 15, wherein the the least
one of the processors and memory are further adapted for
continuously determining the relative costs of the other LSP's in
an ascending order as each LSP is received into the first node.
17. A computer system as recited in claim 16, wherein continuously
updating the relative costs of the other LSP's is accomplished by
continuously updating a cost table that lists the relative costs of
each received LSP each time a new LSP is received at the first
node.
18. A computer system as recited in claim 17, wherein the cost
table is continuously updated to lists the relative costs of the
first node's own LSP in addition to each received LSP each time a
new LSP is received at the first node
19. A computer system as recited in claim 16, wherein continuously
updating the relative costs of the other LSP's is accomplished by
continuously updating an LSP data structure that includes a
plurality of LSP elements for each of the other LSP's as each of
the other LSP's is received, wherein the LSP data structure also
includes a first LSP pointer that points to a first link of one of
the LSP elements that corresponds to the lowest cost and the first
link is linked to a chain of other links that each correspond to a
different one of the other LSP elements in an order corresponding
to an ascending order of costs of the other LSP elements.
20. A computer system as recited in claim 19, wherein the LSP data
structure is that further includes an element for the first node's
own LSP and wherein the first LSP pointer points to the first
node's element.
21. A computer system as recited in claim 14, wherein the flood
trigger includes the second node having an interface with the first
node and starting or restarting.
22. A computer system as recited in claim 14, wherein the flood
trigger includes merging a first network that includes the first
node with a second network that includes the second node, wherein
the first and second networks are merged by interfacing the first
node and the second node together.
23. A computer system as recited in claim 14, wherein each of the
other LSP's includes connectivity information for one or more
fourth nodes connected to the corresponding third node and one or
more cost values from such corresponding third node to each of the
one or more fourth nodes, and wherein determination of the relative
costs is based on a plurality of cost values received within the
other LSP's previously sent from the plurality of third nodes to
the first node.
24. A computer system as recited in claim 23, wherein the cost
values of each of the other LSP's each indicate a cost of a path
from the corresponding one of the third nodes and a one of its
neighbors.
25. A computer system as recited in claim 24, wherein the relative
costs indicate a priority list of the other LSP's based on a total
cost from the first node to each of the corresponding third
nodes.
26. A computer system as recited in claim 24, wherein when there
are a plurality of particular paths from the first node to a
particular one of the third nodes, the total cost from the first
node to third node is based on a selected particular path having a
minimum cost.
27. A computer program product for flooding link state packets or
packet data units (LSP's) from a first node to a second node, the
computer program product comprising: at least one computer readable
medium; computer program instructions stored within the at least
one computer readable product configured for: when it is determined
that a flood trigger has occurred with respect to the second node,
sending the first node's own LSP from the first node to the second
node; and when it is determined that a flood trigger has occurred
with respect to the second node and after the first node's own LSP
has been sent to the second node, sending a plurality of other
LSP's from the first node to the second node, wherein these other
LSP's are associated with a plurality of third nodes that have
previously flooded their LSP's to the first node, wherein these
other LSP's are sent by the first node to the second node in an
order related to the relative costs associated with a plurality of
paths from the first node to each of these other LSP sending
nodes.
28. A computer program product as recited in claim 27, wherein the
other LSP's are flooded in an order from lowest to highest
cost.
29. A computer program product as recited in claim 28, wherein the
computer program instructions stored within the at least one
computer readable product are further configured for continuously
determining the relative costs of the other LSP's in an ascending
order as each LSP is received into the first node.
30. A computer program product as recited in claim 29, wherein
continuously updating the relative costs of the other LSP's is
accomplished by continuously updating a cost table that lists the
relative costs of each received LSP each time a new LSP is received
at the first node.
31. A computer program product as recited in claim 30, wherein the
cost table is continuously updated to lists the relative costs of
the first node's own LSP in addition to each received LSP each time
a new LSP is received at the first node
32. A computer program product as recited in claim 29, wherein
continuously updating the relative costs of the other LSP's is
accomplished by continuously updating an LSP data structure that
includes a plurality of LSP elements for each of the other LSP's as
each of the other LSP's is received, wherein the LSP data structure
also includes a first LSP pointer that points to a first link of
one of the LSP elements that corresponds to the lowest cost and the
first link is linked to a chain of other links that each correspond
to a different one of the other LSP elements in an order
corresponding to an ascending order of costs of the other LSP
elements.
33. A computer program product as recited in claim 32, wherein the
LSP data structure is that further includes an element for the
first node's own LSP and wherein the first LSP pointer points to
the first node's element.
34. A computer program product as recited in claim 27, wherein the
flood trigger includes the second node having an interface with the
first node and starting or restarting.
35. A computer program product as recited in claim 27, wherein the
flood trigger includes merging a first network that includes the
first node with a second network that includes the second node,
wherein the first and second networks are merged by interfacing the
first node and the second node together.
36. A computer program product as recited in claim 27, wherein each
of the other LSP's includes connectivity information for one or
more fourth nodes connected to the corresponding third node and one
or more cost values from such corresponding third node to each of
the one or more fourth nodes, and wherein determination of the
relative costs is based on a plurality of cost values received
within the other LSP's previously sent from the plurality of third
nodes to the first node.
37. A computer program product as recited in claim 36, wherein the
cost values of each of the other LSP's each indicate a cost of a
path from the corresponding one of the third nodes and a one of its
neighbors.
38. A computer program product as recited in claim 37, wherein the
relative costs indicate a priority list of the other LSP's based on
a total cost from the first node to each of the corresponding third
nodes.
39. A computer program product as recited in claim 37, wherein when
there are a plurality of particular paths from the first node to a
particular one of the third nodes, the total cost from the first
node to third node is based on a selected particular path having a
minimum cost.
40. An apparatus for flooding link state packets or packet data
units (LSP's) from a first node to a second node, comprising: means
for when it is determined that a flood trigger has occurred with
respect to the second node, sending the first node's own LSP from
the first node to the second node; and when it is determined that a
flood trigger has occurred with respect to the second node and
after the first node's own LSP has been sent to the second node,
sending a plurality of other LSP's from the first node to the
second node, wherein these other LSP's are associated with a
plurality of third nodes that have previously flooded their LSP's
to the first node, wherein these other LSP's are sent by the first
node to the second node in an order related to the relative costs
associated with a plurality of paths from the first node to each of
these other LSP sending nodes.
Description
BACKGROUND OF THE INVENTION
[0001] The present invention relates to apparatus and methods for
facilitating routing protocol in a computer network. More
specifically, it relates to flooding Link State Packets or Packet
Data Units (LSP's), which are used in a link state type protocol,
such as the IS-IS protocol.
[0002] In a network that uses the IS-IS protocol, for example, each
node generates a set of LSP's that describe its connectivity to its
neighbors and floods these LSP's to its neighbors at appropriate
times as specified by the protocol or customized programming. This
connectivity information specifies who is connected to whom and the
cost associated with each connection, such as a value that is
configured by an operator to correspond to a speed of a particular
connection. Thus, each node receives connectivity information in
the form of LSP's from its neighbors. The LSP's received at a
particular node are then flooded by the particular node to its
neighbors and, hence, propagated throughout the network. Each node
in the network then uses its received LSP's to build a map of
connectivity (sometimes referred to as a "shortest path tree" or
SPT) using an algorithm, such as "shortest path first" or SPF) and
determine possible routing paths (e.g., to form a routing table)
based on the map of connectivity.
[0003] In some IS-IS implementations, the LSP's are organized by an
8 octet field (i.e., system ID+pseudonode ID+fragmentation number)
in ascending order. When the LSP's are flooded, the LSP's with the
smallest IDs are likely sent first because of their order in the
LSP database. In the example of FIG. 1A, Node A (108) sends LSP's
to its new IS-IS neighbor Node B (110). The LSP's includes Node A's
LSP, Node X's LSP, Node Y's LSP, and Node Z's LSP. In this example
network, Node X (102) is several hops away from node A. That is,
Node Y (104) and Node Z (106) are positioned between Nodes X and A.
When the LSP for Node X has the smallest system ID, Node B will
receive the LSP for Node X first from Node A. Unfortunately, Node B
may not be able to compute an SPT (shortest path tree) using an SPF
(shortest path first) algorithm to node X because Node B has not
yet received and processed LSP's from node A or any other nodes
that have higher system ID values, such as Nodes Y or Z.
[0004] In another IS-IS implementation, the LSP's may be flooded
based on the same 8 octets structure, but in descending order. In
doing so, this may also result in prolonging node B's ability to
reach node X if node X has the largest system ID. An IS-IS
implementation may also choose to flood the LSP's in no particular
order. By chance, the LSP for node X may still arrive ahead of
other LSP's in the path to node X. Again, Node B will be delayed in
converging on a path to node X.
[0005] In sum if the newly established router receives only the
LSP's from the far away nodes and then computes an SPT, it may not
discover a path to any nodes until it has received all the LSP's
due to the failure of the two way connectivity check. This problem
can be best described in the following simplified scenario that is
also illustrated by the networks 150 and 152 of FIG. 1B. Network_1
(150) and Network_2 (152) are merged by connecting Node A (160)
that belongs to Network_1 and Node E (164) that belong to
Network_2. The nodes A and E are connected via an interface 162.
Node A will flood all its LSP's for Network_1 to Node E, which will
in turn flood these LSP's to all of the nodes of Network_2. Node
A's own LSP will be flooded last. A particular node in Network_2
will receive LSP's of many nodes of Network_1, which will trigger
calculation of an SPT. But each time that the particular node
calculates the SPT to reach nodes in Network_1, it does not
discover any paths because it has not received the LSP's of Node A
that will arrive last.
[0006] In view of the above, there is a need for improved
mechanisms for flooding LSP's in an efficient manner so that useful
connectivity maps (or SPT's) may be determined efficiently.
SUMMARY OF THE INVENTION
[0007] Accordingly, the present invention provides methods and
apparatus for flooding link state packets or packet data units
(LSP's) from a first node to at least one other LSP receiving node,
where the LSP's are flooded in an order that is related to relative
costs of various paths emanating from the first node. That is, the
first node sends its own LSP first since the first node has no cost
relative to itself. The first node then sends other LSP's that are
associated with a plurality of other LSP sending nodes that have
previously flooded their LSP's to the first node, and these other
LSP's are sent by the first node to the other LSP receiving node in
an order related to the relative costs associated with the paths
from the first node to each of the other LSP sending nodes which
had previously sent the other LSP's to the first node.
[0008] In one embodiment, the other LSP's are flooded in an order
from lowest to highest cost. In a further aspect, the first node
can readily accomplish this efficient flooding because the relative
costs of the other LSP's are continuously determined as each LSP is
received into the first node. For example, a cost table that lists
the relative costs of each received LSP is continuously updated
each time a new LSP is received at the first node. This cost table
may also list the first node's own LSP at the top of the table. In
another example, an LSP data structure that includes a plurality of
LSP elements for each of the other LSP's is formed or updated as
each of the other LSP's is received. This data structure may also
include an element for the first node's own LSP. The LSP data
structure also includes a first LSP pointer that points to a first
link of one of the LSP elements that corresponds to the lowest
cost. The first link is linked to a chain of other links of the
other LSP elements in an order corresponding to an ascending order
of costs of the other LSP elements.
[0009] In a specific implementation, the flood trigger includes the
second node having an interface with the first node and starting or
restarting. In a further aspect., the flood trigger includes
merging a first network that includes the first node with a second
network that includes the second node, and the first and second
networks are merged by interfacing the first node and the second
node together. In another embodiment, each of the other LSP's
includes connectivity information for one or more fourth nodes
connected to the corresponding third node and one or more cost
values from such corresponding third node to each of the one or
more fourth nodes, and determination of the relative costs is based
on a plurality of cost values received within the other LSP's
previously sent from the plurality of third nodes to the first
node. In a further aspect, the cost values of each of the other
LSP's each indicate a cost of a path from the corresponding one of
the third nodes and a one of its neighbors. In yet a further
aspect, the relative costs indicate a priority list of the other
LSP's based on a total cost from the first node to each of the
corresponding third nodes. In yet a further embodiment, there are a
plurality of particular paths from the first node to a particular
one of the third nodes, the total cost from the first node to third
node is based on a selected particular path having a minimum
cost.
[0010] In another embodiment, the invention pertains to a computer
system operable to flood link state packets or packet data units
(LSP's) from a first node to a second node. The computer system
includes one or more processors and one or more memory. At least
one of the memory and processors are adapted to provide at least
some of the above described method operations. In yet a further
embodiment, the invention pertains to a computer program product
for flooding link state packets or packet data units (LSP's) from a
first node to a second node. The computer program product has at
least one computer readable medium and computer program
instructions stored within at least one of the computer readable
product configured to perform at least some of the above described
method operations.
[0011] These and other features and advantages of the present
invention will be presented in more detail in the following
specification of the invention and the accompanying figures that
illustrate by way of example the principles of the invention.
BRIEF DESCRIPTION OF THE DRAWINGS
[0012] FIG. 1A is a diagrammatic illustration of a plurality of
interconnected nodes or routers.
[0013] FIG. 1B is a diagrammatic illustration of two networks that
each have a plurality of interconnected nodes or routers.
[0014] FIG. 2 is a diagrammatic representation of an example
network in which techniques of the present invention may be
implemented.
[0015] FIG. 3 is a flowchart illustrating a procedure for handling
LSP's received by a particular node in accordance with one
embodiment of the present invention.
[0016] FIG. 4 illustrates a plurality of LSP's that are sent from
other nodes to Node C of FIG. 2.
[0017] FIG. 5 illustrates a data structure that represents a
plurality of received LSP's, as well as determined relative costs
for such received LSP's, for Node C of FIG. 2 in accordance with a
first implementation of the present invention.
[0018] FIG. 6 is a diagrammatic representation of an AVL (named
after its founders Adelson-Velskii and Landis) tree type LSP data
structure and a Cost Table for Node C of FIG. 2 in accordance with
a second implementation of the present invention.
[0019] FIG. 7 is a flowchart illustrating a procedure for flooding
LSP's in accordance with one embodiment of the present
invention.
[0020] FIG. 8 is a diagrammatic representation of a router in which
embodiments of the present invention may be implemented.
DETAILED DESCRIPTION OF SPECIFIC EMBODIMENTS
[0021] Reference will now be made in detail to a specific
embodiment of the invention. An example of this embodiment is
illustrated in the accompanying drawings. While the invention will
be described in conjunction with this specific embodiment, it will
be understood that it is not intended to limit the invention to one
embodiment. On the contrary, it is intended to cover alternatives,
modifications, and equivalents as may be included within the spirit
and scope of the invention as defined by the appended claims. In
the following description, numerous specific details are set forth
in order to provide a thorough understanding of the present
invention. The present invention may be practiced without some or
all of these specific details. In other instances, well known
process operations have not been described in detail in order not
to unnecessarily obscure the present invention.
[0022] Techniques of the present invention are described herein
with respect to FIG. 2, which is a diagrammatic representation of
an example network 200. Such network configuration is merely
illustrative and not meant to limit the scope of the invention.
Additionally, although procedures are described herein as being
performed by a particular node (e.g., a flooding node), it is noted
that the procedures described herein may be distributed between any
number and type of processing nodes. For instance, another node may
determine relative costs for the LSP's received into the flooding
node, even though the flooding node actually uses such determined
relative costs for flooding LSP's to other nodes.
[0023] In general, the techniques of the present invention are
applicable to any network event in which a plurality of LSP's are
flooded from a first node to at least one other node. One such
event occurs when a particular node obtains a new interface to
another node or processing device. The particular node will then
flood LSP's to the newly connected other node, and the newly
connected other node will flood LSP's to the particular node if the
new node is already coupled to other nodes (e.g., if two networks
are merging). Additionally, the techniques of the present invention
are suitably applied to any protocol that specifies the flooding of
some form of link state packets, such as IS-IS that specifies the
flooding of LSP's or OSPF that specifies the flooding of LSA's. The
terms "link state packets", "link state packet data units, and
"LSP's" are used here generically to refer to both LSP's and
LSA'S.
[0024] As shown in FIG. 2, Node C (202) has obtained a new
interface 204 to Node E (206). Node C may obtain a new or modified
interface to Node E under any suitable scenarios. By way of
examples, a new interface occurs when a new node that has an
interface to Node C starts up or restarts in the network, or two
independent networks are merged together by coupling Node C with
Node E.
[0025] Inventive mechanisms are provided for a node, such as Node C
of FIG. 2, to flood LSP's in its database, for example, to another
nodes, such as Node E of FIG. 2, in an efficient manner so that the
flooded node (e.g., Node E) can quickly use the LSP's to build a
connectivity map (e.g. by determining a shortest path tree or SPT)
and route packets as soon as possible to newly available nodes. The
SPT may be determined using any suitable algorithm, such as the
shortest path first (SPF) algorithm. For clarity, an example
scenario is described herein, where Node C is merely flooding LSP's
to Node E although it is recognized that Node E may also flood
LSP's to Node C if Node E is connected to a plurality of other
nodes which Node C is unaware. In the present example, Node C
floods LSP's to Node E in an order based on which corresponding
nodes (which correspond to the flooded LSP's) have a lowest path
cost.
[0026] In the example of FIG. 2, Node C has possession of an LSP
for itself, as well as LSP's for Nodes A, B, and D when a flood
trigger occurs, such as Node E being coupled to Node C. The cost
associated with the shortest path from Node C to Node B is 10; the
cost associated with the path to Node A is 12, and the cost
associated with the path to Node D is 17. In this example, there
are two paths from Node C to Node A. A first path has a first leg
between Nodes C and B with an associated cost of 10 and a second
leg between Nodes B and A with an associated cost of 10. This first
path has a total cost of 20. There is also a direct path between
Nodes C and A with a cost of 12. In one embodiment, the shortest
cost path between Nodes C and A is used to determine in which order
Node C should flood its LSP's. Thus, the relative costs in
ascending order for Node C's LSP's are the LSP for Node C (LSP_C),
the LSP for Node B (LSP_B), the LSP for Node A (LSP_A), and the LSP
for Node D (LSP_D). During flooding based on these determined
relative costs, Node C initially sends LSP_C to new Node E, and
then sequentially sends LSP_B, LSP_A, and LSP_D.
[0027] The LSP flooding is generally based on predetermined
relative costs for the paths from the flooding node to nodes for
which it possesses LSP's. This predetermined cost assessment may be
determined in any suitable manner. In one implementation, relative
costs may be determined each time LSP's are flooded by the flooding
node. Most preferably, the flooding node continuously determines
the relative costs in ascending order as the flooding node receives
each LSP and computes an SPT.
[0028] FIG. 3 is a flowchart illustrating a procedure 300 for
handling LSP's received by a particular node in accordance with one
embodiment of the present invention. For example, this procedure is
implemented as Node C of FIG. 2 receives LSP's from Nodes A, B, and
D. Initially, it is determined whether an LSP is received at the
receiving node (e.g., Node C) in operation 302. If an LSP is not
received, the receiving node continues to wait for an LSP. If an
LSP is received, the receiving node then stores the received LSP in
an LSP database for later use in operation 304. When Node C
receives each LSP (LSP_A, LSP_B, and LSP_D), each LSP is stored in
the LSP database so that all of the LSP's received by Node C are
eventually compiled in the LSP database. After a particular LSP is
received, the receiving node may also compute an SPT to determine
and store the relative costs of all of the LSP's that have been
stored so far in operation 306. Several example data structures for
storing relative costs of all of the stored LSP's, as well as for
storing the LSP's, are described further below. After relative
costs are determined, the procedure then repeats for and waits for
another LSP to be received at the receiving node.
[0029] FIG. 4 illustrates a plurality of LSP's that are sent from
other nodes to Node C of FIG. 2. As shown, LSP_A 400 for Node A
includes an LSP identifier 402 and connectivity information 404.
The connectivity information 404 for LSP_A includes identifiers for
Nodes B, C, and D, as well as their corresponding costs, since
these nodes are neighbors of Node A. LSP_B 420 for Node B includes
an identifier 422 for Node B and connectivity information 424. The
connectivity information 424 for LSP_B includes identifiers for
Nodes A and C, as well as cost information for Nodes A and C, since
Nodes A and C are neighbors of Node B. Similarly, LSP_C 430 for
Node C includes an identifier 432 for Node C and connectivity
information 434 for Node C. The connectivity information for LSP_C
434 includes identifiers for Nodes A and B, as well as cost
information for Nodes A and B, since Nodes A and B are neighbors of
Node C. Lastly, LSP_D 440 for Node D includes an identifier 442 for
Node D as well as connectivity information 444 identifying Node A
and its corresponding costs, since Node A is the only neighbor of
Node D.
[0030] In the illustrated embodiment of FIG. 3, each time Node C
receives an LSP, the received LSP is stored in an LSP database and
relative cost information is determined for all of the LSP's
received so far for Node C. The received LSP's and relative cost
information may be stored in any suitable manner so as to allow
easy access of the LSP's during flooding of such LSP's to another
node and to allow the LSP's to be easily sent in an order
corresponding to relative cost of paths associated with the LSP's
node.
[0031] FIG. 5 illustrates a data structure 500 that represents a
plurality of received LSP's, as well as determined relative costs
for such received LSP's, for Node C of FIG. 2 in accordance with a
first implementation of the present invention. As shown, the LSP's
received for Node and connectivity information for Node C are
represented in an AVL tree or like structure. The AVL tree for Node
C organizes the LSP's in a hierarchical arrangement that
corresponds to the hierarchy of the nodes connected to Node C. As
shown, the top element 502 includes the LSP_C for Node C, and this
top element 502 includes an LSP identifier for Node C and
connectivity information for Nodes A and B. This top element 502
for LSP_C is linked to hierarchically lower elements 504 and 506
that includes LSP_A for Node A and LSP_B for Node B, respectively,
since Node C has an adjacency with both Nodes A and B. Likewise,
lower element 504 for Node A is represented as being linked to
lower element 508 for Node D. This element 508 for Node D includes
LSP_D as well as connectivity information for Node D.
[0032] In this implementation, the data structure 500 also includes
a first LSP pointer 512a for indicating which LSP retained by Node
C has the highest priority or lowest cost. As shown, the first LSP
pointer or link 512a points to element 502 that includes LSP_C.
Alternatively, Node C may assume that it will always send its own
LSP first and only point to the next lowest cost LSP (i.e., in this
example LSP_B). In the illustrated example, the next link in the
chain is link 512b and points to element 506 that includes LSP_B.
The next link 512c points to element 504 that includes LSP_A. The
last link in the chain is link 512d and it points to element 508
that includes LSP_D.
[0033] When Node C floods the LSP's to another node, the data
structure of FIG. 5 allows the LSP's to be easily grabbed in order
of their cost links 512. For example, the first LSP pointer 512a
indicates the first LSP to be sent is LSP_C. The next link in the
chain is link 512b and it indicates that LSP_B is to be sent. The
next link 512c indicates that LSP_A is to be sent, and the next
link 512d after link 512c indicates that LSP_D is to be sent last
by Node C.
[0034] FIG. 6 is a diagrammatic representation of an AVL tree type
LSP data structure 600 and a Cost Table 650 for Node C of FIG. 2 in
accordance with a second implantation of the present invention. The
AVL data structure 600 is similar to the data structure 500 of FIG.
5, except a chain of cost links are not provided in the AVL data
structure 600. As shown, the top element 602 includes LSP_C, and
this top element 602 is linked to elements 604 and 606 that each
includes LSP_A and LSP_B, respectively. Element 604 is linked to
element 608 that includes LSP_D. In this implementation, a separate
cost table 650 is maintained by Node C to list the LSP's in
relative cost order from lowest to highest cost. As shown, the cost
table 650 lists the LSP's in the following order from lowest to
highest cost LSP: LSP_C, LSP_A, LSP_A, and LSP_D. In an alternative
embodiment, Node C can be configured to always flood its own LSP
automatically without regard to relative costs so LSP_C does not
have to be listed in the cost table. In this later embodiment, Node
C automatically sends LSP_C and then looks in the cost table to
determine which other LSP's to send next.
[0035] As a particular node receives and retains LSP's and
determines relative costs of such received LSP's, the particular
node may be triggered to flood its LSP's received so far. FIG. 7 is
a flowchart illustrating a procedure 700 for flooding LSP's from a
first node to at least a second node in accordance with one
embodiment of the present invention. Initially, it is determined
whether a flood trigger has occurred at a first node with respect
to at least a second node in operation 702. Flood triggers include
any event that indicates to a particular node that one or more of
its interfaces have been modified or a new interface has been
formed. For example, the second node may bring up an interface with
the first node and send a HELLO to the first node so that the first
node is aware of the new second node. The second node may also send
a HELLO to the first node when two networks are merged together by
joining the first and second nodes. If a flood trigger has not
occurred, the first node process 700 merely waits for a flood
trigger.
[0036] If a flood trigger occurs, the first node may then perform
any necessary handshaking with the second triggering node in
operation 704. In one implementation of the IS-IS protocol, after
the second node sends a HELLO to the first node, the first node
also sends a HELLO back to the second node. After HELLO's are
exchanged, each node then exchanges CSNP (Complete Sequence Number
PDU) data that indicates what LSP's each node has received. If one
of the nodes has not received two or more LSP's, then the other
node knows that a flood trigger has occurred and flooding can
commence. After or during the handshaking between the first and
second node, the first node then floods the LSP's to the second
triggering node (if necessary based on its received CSNP) based on
the predetermined and stored relative costs to each node associated
with the flooded LSP's in operation 706 as described above. The
procedure then repeats for and waits for another flooding
event.
[0037] The mechanisms for flooding LSP's in an order that is based
on relative costs allows receiving nodes to more efficiently build
their connectivity maps or calculate their SPT using an SPF
algorithm so that data can be routed to converged paths as soon as
possible. Since an SPF calculation is more likely to result in
valid paths that can be used immediately by the receiving node, the
receiving node does not waste processing time for the SPF
calculation that does not discover any paths. That is, the
receiving node can incrementally converge on nodes that are closer
in proximity and/or require less transmission time or cost.
Additionally, these novel mechanisms do not require modification of
the transmission protocol, e.g., IS-IS protocol specification and
is backward compatible.
[0038] Generally, the techniques for flooding LSP's described
herein may be implemented on any combination of software and/or
hardware. For example, they can be implemented in an operating
system kernel, in a separate user process, in a library package
bound into network applications, on a specially constructed
machine, or on a network interface card. In a specific embodiment
of this invention, the techniques of the present invention are
implemented in software such as an operating system or in an
application running on an operating system.
[0039] A software or software/hardware hybrid LSP flooding system
of this invention is preferably implemented on a general-purpose
programmable machine selectively activated or reconfigured by a
computer program stored in memory. Such programmable machine may be
a network device designed to handle network traffic. Such network
devices typically have multiple network interfaces including frame
relay and ISDN interfaces, for example. Specific examples of such
network devices include routers and switches. For example, the
processing systems of this invention may be specially configured
routers such as specially configured router models 1600, 2500,
2600, 3600, 4500, 4700, 7200, 7500, and 12000 available from Cisco
Systems, Inc. of San Jose, Calif. A general architecture for some
of these machines will appear from the description given below. In
an alternative embodiment, the LSP flooding system may be
implemented on a general-purpose network host machine such as a
personal computer or workstation. Further, the invention may be at
least partially implemented on a card (e.g., an interface card) for
a network device or a general-purpose computing device.
[0040] Referring now to FIG. 8, a router 10 suitable for
implementing the present invention includes a master central
processing unit (CPU) 62, interfaces 68, and a bus 15 (e.g., a PCI
bus). When acting under the control of appropriate software or
firmware, the CPU 62 is responsible for such router tasks as
routing table computations and network management. It may also be
responsible for receiving and storing LSP's, determining relative
costs associates with such received LSP's, storing the determined
relative costs, flooding the receiving LSP's when necessary in an
order related to the stored relative costs, etc. It preferably
accomplishes all these functions under the control of software
including an operating system (e.g., the Internetwork Operating
System (IOS.RTM.) of Cisco Systems, Inc.) and any appropriate
applications software. CPU 62 may include one or more processors 63
such as a processor from the Motorola family of microprocessors or
the MIPS family of microprocessors. In an alternative embodiment,
processor 63 is specially designed hardware for controlling the
operations of router 10. In a specific embodiment, a memory 61
(such as non-volatile RAM and/or ROM) also forms part of CPU 62.
However, there are many different ways in which memory could be
coupled to the system. Memory block 61 may be used for a variety of
purposes such as, for example, caching and/or storing data,
programming instructions, etc.
[0041] The interfaces 68 are typically provided as interface cards
(sometimes referred to as "line cards"). Generally, they control
the sending and receiving of data packets or data segments over the
network and sometimes support other peripherals used with the
router 10. Among the interfaces that may be provided are Ethernet
interfaces, frame relay interfaces, cable interfaces, DSL
interfaces, token ring interfaces, and the like. In addition,
various very high-speed interfaces may be provided such as fast
Ethernet interfaces, Gigabit Ethernet interfaces, ATM interfaces,
HSSI interfaces, POS interfaces, FDDI interfaces and the like.
Generally, these interfaces may include ports appropriate for
communication with the appropriate media. In some cases, they may
also include an independent processor and, in some instances,
volatile RAM. The independent processors may control such
communications intensive tasks as packet switching, media control
and management. By providing separate processors for the
communications intensive tasks, these interfaces allow the master
microprocessor 62 to efficiently perform routing computations,
network diagnostics, security functions, etc.
[0042] Although the system shown in FIG. 8 is one specific router
of the present invention, it is by no means the only router
architecture on which the present invention can be implemented. For
example, an architecture having a single processor that handles
communications as well as routing computations, etc. is often used.
Further, other types of interfaces and media could also be used
with the router.
[0043] Regardless of network device's configuration, it may employ
one or more memories or memory modules (such as, for example,
memory block 65) configured to store data, program instructions for
the general-purpose network operations and/or the inventive
techniques described herein. The program instructions may control
the operation of an operating system and/or one or more
applications, for example. The memory or memories may also be
configured to store received LSP's, relative costs for such
received LSP's, one or more data structures for LSP's and relative
costs, etc.
[0044] Because such information and program instructions may be
employed to implement the systems/methods described herein, the
present invention relates to machine readable media that include
program instructions, state information, etc. for performing
various operations described herein. Examples of machine-readable
media include, but are not limited to, magnetic media such as hard
disks, floppy disks, and magnetic tape; optical media such as
CD-ROM disks and DVDs; magneto-optical media such as floptical
disks; and hardware devices that are specially configured to store
and perform program instructions, such as read-only memory devices
(ROM) and random access memory (RAM). The invention may also be
embodied in a carrier wave traveling over an appropriate medium
such as airwaves, optical lines, electric lines, etc. Examples of
program instructions include both machine code, such as produced by
a compiler, and files containing higher level code that may be
executed by the computer using an interpreter.
[0045] Although the foregoing invention has been described in some
detail for purposes of clarity of understanding, it will be
apparent that certain changes and modifications may be practiced
within the scope of the appended claims. Therefore, the described
embodiments should be taken as illustrative and not restrictive,
and the invention should not be limited to the details given herein
but should be defined by the following claims and their full scope
of equivalents.
* * * * *