U.S. patent application number 13/330361 was filed with the patent office on 2012-06-14 for method and apparatus for indicating congestion in a source routed network.
This patent application is currently assigned to ROCKSTAR BIDCO, LP. Invention is credited to Peter Ashwood- Smith, Donald Fedyk.
Application Number | 20120147752 13/330361 |
Document ID | / |
Family ID | 45219240 |
Filed Date | 2012-06-14 |
United States Patent
Application |
20120147752 |
Kind Code |
A1 |
Ashwood- Smith; Peter ; et
al. |
June 14, 2012 |
METHOD AND APPARATUS FOR INDICATING CONGESTION IN A SOURCE ROUTED
NETWORK
Abstract
A packet header in a source routed network is augmented to
include, with each hop identifier, at least one bit for indicating
congestion at the particular hop. As the packet traverses from the
source to the destination, when congestion is detected at a hop, a
congestion bit associated with the hop is set in the header. At the
destination, when another packet is forwarded from the destination
to the source on the same path, the congestion bits are reflected
back to the source. When the source receives the congestion bits,
it has the option of re-routing subsequent communications between
the source and destination nodes by generating a new hop list,
which routes around one or more of the congested hops.
Inventors: |
Ashwood- Smith; Peter;
(Hull, CA) ; Fedyk; Donald; (Groton, MA) |
Assignee: |
ROCKSTAR BIDCO, LP
New York
NY
|
Family ID: |
45219240 |
Appl. No.: |
13/330361 |
Filed: |
December 19, 2011 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
10827181 |
Apr 19, 2004 |
8081566 |
|
|
13330361 |
|
|
|
|
Current U.S.
Class: |
370/237 |
Current CPC
Class: |
H04L 47/33 20130101;
H04L 47/122 20130101; H04L 47/263 20130101; H04L 47/17 20130101;
H04L 47/31 20130101 |
Class at
Publication: |
370/237 |
International
Class: |
H04L 12/26 20060101
H04L012/26 |
Claims
1. A method of routing packets in a source-routed data network, the
method comprising: at a source node: determining a first route to a
destination node using a routing protocol; encoding the first route
into a first packet addressed to the destination node; forwarding
the first packet toward the destination node along the first route;
receiving a second packet from the destination node, the second
packet containing information indicative of congestion along the
first route; determining a second route to the destination node
based on the information indicative of congestion along the first
route.
2. The method of claim 1, wherein: the first route comprises a
plurality of hops between the source node and the destination node,
and the information indicative of congestion identifies congestion
on at least one hop of the plurality of hops; and determining the
second route comprises determining the second route to avoid the
congestion on the at least one hop.
3. The method of claim 2, wherein: encoding the first route into
the first packet addressed to the destination node comprises adding
a hop identifier for the at least one hop of the first route to the
first packet; and the first packet comprises a respective
congestion information field associated with the hop
identifier.
4. The method of claim 3, wherein the second packet received from
the destination node comprises a hop identifier for each hop of the
first route and a respective congestion information field
associated with each hop identifier, content of each congestion
information field indicating a level of congestion on an associated
hop of the first route.
5. The method of claim 1, further comprising: at an intermediate
node between the source node and the destination node on the first
route: receiving the first packet forwarded from the source node;
adding information to the first packet indicating congestion at the
intermediate node; and forwarding the first packet with the
information to a next node along the first route.
6. The method of claim 5, wherein: the first route comprises a
plurality of hops between the source node and the destination node;
the first packet comprises a hop identifier for each hop of the
first route and a respective congestion information field
associated with each hop identifier; and adding information to the
first packet indicating congestion at the intermediate node
comprises putting a value indicative of congestion in the
respective congestion information field associated with the hop
identifier associated with the intermediate node.
7. The method of claim 1, further comprising: at the destination
node: receiving the first packet forwarded on the first route;
reading information indicative of congestion along the first route
from the first packet; inserting the information indicative of
congestion along the first route into the second packet to be
forwarded from the destination node to the source node; and
forwarding the second packet containing the information indicative
of congestion toward the source node.
8. The method of claim 7, wherein: the first route comprises a
plurality of hops between the source node and the destination node;
the first packet forwarded toward the destination node along the
first route comprises a hop identifier for each hop of the first
route and a respective congestion information field associated with
each hop identifier; and reading the information indicative of
congestion along the first route comprises reading the congestion
information field associated with each hop identifier.
9. The method of claim 8, wherein: the second packet to be
forwarded from the destination node to the source node comprises a
hop identifier for each hop of the first route and a respective
congestion information field associated with each hop identifier;
inserting the information indicative of congestion along the first
route comprises inserting information corresponding to the
information read from each congestion information field of the
first packet forwarded along the first route into a corresponding
congestion information field of the second packet to be forwarded
from the destination node to the source node.
10. The method of claim 1, wherein: the first route comprises a
plurality of hops between the source node and the destination node;
the first packet forwarded toward the destination node along the
first route comprises a hop identifier for each hop of the first
route and a respective congestion information field associated with
each hop identifier, each congestion information field comprising a
forward congestion information sub-field and a reverse congestion
information sub-field; and the method further comprises: at each
node intermediate to the source node and the destination node along
the first route, when there is congestion at the intermediate node,
putting a value indicative of the congestion in the forward
congestion information sub-field associated with the hop identifier
associated with the intermediate node; and at the destination node:
receiving the first packet forwarded on the first route; inserting
the information indicative of congestion along the first route read
from the forward congestion sub-fields of the first packet into
corresponding reverse congestion sub-fields of the second packet to
be forwarded from the destination node to the source node; and
forwarding the first packet containing the congestion information
inserted in the reverse congestion sub-fields toward the source
node.
11. A system for routing packets in a source-routed data network,
the system comprising: a source node comprising: routing logic
operable to determine a first route to a destination node using a
routing protocol; encoding logic operable to encode the first route
into a first packet addressed to the destination route; forwarding
logic operable to forward the first packet toward the destination
node along the first route; and at least one packet receive buffer
operable to receive a second packet from the destination node, the
second packet containing information indicative of congestion along
the first route; the routing logic being further operable to
determine a second route to the destination node based on the
information indicative of congestion along the first route.
12. The system of claim 11, wherein: the first route comprises a
plurality of hops between the source node and destination node; the
at least one packet receive buffer is operable to receive a packet
containing information indicative of congestion along the first
route by receiving a packet indicative of congestion on at least
one hop of the first route; and the routing logic is operable to
determine the second route by determining the second route that
avoids congestion on the at least one hop of the first route.
13. The system of claim 12, wherein: the encoding logic is operable
to encode the first route into the first packet addressed to the
destination node by adding a hop identifier for each hop of the
first route to the first packet; and the first packet forwarded
toward the destination node along the first route comprises a
respective congestion information field associated with each flop
identifier.
14. The system of claim 13, wherein the second packet received from
the destination node comprises a hop identifier for each hop of the
first route and a respective congestion information field
associated with each hop identifier, content of each congestion
information field indicating a level of congestion on an associated
hop of the first route.
15. The system of claim 11, further comprising: at least one
intermediate node between the source node and the destination node
on the first route, each intermediate node being operable: to
receive the first packet forwarded from the source node; to add
information to the first packet indicating congestion when there is
congestion at the each intermediate node; and to forward the first
packet with the information to a next node along the first
route.
16. The system of claim 15, wherein: the first route comprises a
plurality of hops between the source node and destination node; the
first packet forwarded toward the destination node along the first
route comprises a hop identifier for each hop of the first route
and a respective congestion information field associated with each
hop identifier; and each intermediate node is operable to add
information to the first packet indicating congestion when there is
congestion at the intermediate node by putting a value indicative
of congestion in a congestion information field associated with the
hop identifier associated with the intermediate node.
17. The system of claim 11, further comprising a destination node
operable: to receive the first packet forwarded on the first route;
to read the information indicative of congestion along the first
route from the first packet; to insert the information indicative
of congestion along the first route into the second packet to be
forwarded from the destination node to the source node; and to
forward the second packet containing the information indicative of
congestion toward the source node.
18. The system of claim 17, wherein: the first route comprises a
plurality of hops between the source node and the destination node;
the first packet forwarded toward the destination node along the
first route comprises a hop identifier for each hop of the first
route and a respective congestion information field associated with
each hop identifier; and the forwarding logic is operable to read
the information indicative of congestion along the first route by
reading the respective congestion information field associated with
each hop identifier.
19. The system of claim 18, wherein: the second packet to be
forwarded from the destination node to the source node comprises a
hop identifier for each hop of the first route and a respective
congestion information field associated with each hop identifier;
the forwarding logic of the destination node is operable to insert
the information indicative of congestion along the first route by
inserting the information corresponding to the information read
from each congestion information field of the first packet
forwarded along the first route into a corresponding congestion
information field of the second packet to be forwarded from the
destination node to the source node.
20. The system of claim 11, wherein: the first route comprises a
plurality of hops between the source node and the destination node;
the first packet forwarded toward the destination node along the
first route comprises a hop identifier for each hop of the first
route and a respective congestion information field associated with
each hop identifier, each congestion information field comprising a
forward congestion information sub-field and a reverse congestion
information sub-field; and the system further comprises: at least
one node intermediate to the source node and the destination node
along the first route, each intermediate node being operable, when
there is congestion at the intermediate node, to put in the first
packet a value indicative of congestion in a forward congestion
information sub-field associated with a hop identifier, the hop
identifier being associated with the intermediate node; and the
destination node operable: to receive the first packet forwarded on
the first route; to insert the information indicative of congestion
along the first route read from the forward congestion sub-fields
of the first packet into corresponding reverse congestion
sub-fields of the second packet to be forwarded from the
destination node to the source node; and to forward the second
packet containing the congestion information inserted in the
reverse congestion sub-fields toward the source node.
Description
RELATED APPLICATIONS
[0001] This application is a continuation of co-pending U.S. patent
application Ser. No. 10/827,181, entitled "Method and Apparatus for
Indicating Congestion in a Source Routed Network," which was filed
on Apr. 19, 2004, and which is hereby incorporated herein by
reference in its entirety.
FIELD OF THE INVENTION
[0002] This invention relates generally to the field of networking
and more specifically to a method and apparatus for congestion
detection and management in a source routed network.
BACKGROUND OF THE INVENTION
[0003] In a network communications system, generally a packet
forwarded from a source node traverses numerous intermediate nodes
before the desired destination node is reached. Along the way, the
packet may be delayed by congestion at various ones of the
intermediate nodes. Various mechanisms exist for signaling the
source node that the packet is being delayed on its path to the
destination. For example, in a frame relay network, FECN (forward
explicit congestion notification) is a header bit transmitted by
the source (sending) terminal requesting that the destination
(receiving) terminal slow down its requests for data. BECN
(backward explicit congestion notification) is a header bit
transmitted by the destination terminal requesting that the source
terminal send data more slowly. FECN and BECN are intended to
minimize the possibility that packets will be discarded (and thus
have to be resent) when more packets arrive than can be
handled.
[0004] If the source terminal in a communications circuit generates
frequent FECN bits, it indicates that the available network
bandwidth (at that time) is not as great as can be supported by the
destination terminal or some intermediate node in the path between
the source and destination terminal. Likewise, if the destination
generates frequent BECN bits, it means the available network
bandwidth (at that time) is not as great as can be supported by the
source. In either case, the root cause is lack of available
bandwidth at the times during which FECN or BECN bits are
generated. This can occur because of outdated or inadequate network
infrastructure, heavy network traffic through at least a portion of
the path, high levels of line noise, or portions of the system
going down. Identifying and resolving these issues can improve
overall network performance, especially when the system is called
upon to carry a large volume of traffic.
[0005] However, while the FECN and BECN bits may be used to
identify that congestion exists in a path, they do little to
indicate exactly where in the path the congestion is occurring. For
example, an overloaded intermediate node in the path has the effect
of delaying communication over the entire path, thus causing the
FECN/BECN bits to be set to regulate delays and packet loss.
Backing off on the transmission bandwidth may reduce congestion at
the one overloaded node, but it does not fully utilize the capacity
of the remaining nodes in the path. It would be desirable to
develop a mechanism which would enable congestion to be controlled
within a network without unreasonably sacrificing network
bandwidth.
SUMMARY OF THE INVENTION
[0006] In source routed network a source provides a list of `hop`
identifiers in each header of a packet transmitted between the
source and a desired destination. Each hop identifier provides an
indication of a link, node, label, etc, that the packet is to
traverse on a path from the source to the desired destination.
According to one aspect of the invention, the packet header in a
source routed network is augmented to include, with each hop
identifier, at least one bit for indicating congestion at the
particular hop. As the packet traverses from the source to the
destination, when congestion is detected at a hop, a congestion bit
associated with the hop is set in the header. At the destination,
when another packet is forwarded from the destination to the source
on the same path, the congestion bits are reflected back to the
source. When the source receives the congestion bits, it has the
option of re-routing subsequent communications between the source
and destination nodes by generating a new hop list, which routes
around one or more of the congested hops.
[0007] According to one aspect of the invention, a node disposed in
a path between a source node and a destination node in a source
routed network includes an apparatus for indicating congestion at
the node. The apparatus includes packet forwarding logic for
forwarding a packet received at the node, the packet including a
header having a plurality of ordered bit fields, each bit field
including an identifier associated with a hop for a packet
transmitted between the source and the destination, and a
congestion field indicating congestion at the hop. The apparatus
also includes means for setting the congestion field corresponding
to the identifier associated with the node in response to an
indication of congestion at the node. With such an arrangement,
congestion in particular points in the path between the source and
the destination can be tracked.
[0008] According to another embodiment of the invention, a source
node in a source node routed network includes packet receive logic,
for receiving a packet at the source node, the packet including a
header having a plurality of ordered bit fields, each bit field
including an identifier associated with a hop for a packet
transmitted between the source and a destination, and a congestion
field indicating congestion at the hop; and routing logic for
identifying an updated route between the source and the destination
responsive to one or more congestion fields in the header of the
received packet. With such an arrangement, a source node in a
source routing network can identify a new route between the source
and destination which does not include the congested node(s),
thereby enabling the full bandwidth potential of the path to be
attained.
[0009] According to another aspect of the invention, a network
device includes a packet memory, the packet memory for storing a
packet received at the network device, the packet comprising a
header, the header including a list of hops between a source and
destination node, and for each hop in the list of hops, a
congestion field for indicating a relative congestion at the
associated hop. The network device also includes means for
forwarding the packet from the packet memory to another device.
[0010] According to another aspect of the invention, a method for
indicating congestion at a node in a source routed network
including the steps of receiving a packet at the node, the packet
including a header having a plurality of ordered bit fields, each
bit field including an identifier associated with a hop for a
packet transmitted between the source and the destination, and a
congestion field indicating congestion at the hop, detecting a
congestion condition at the node, and setting the congestion field
corresponding to the identifier associated with the node in
response to an, indication of congestion at the node.
[0011] According to a further aspect of the invention, A method of
generating a hop list in a source routed network including the
steps of receiving, at a source, a packet from a destination, the
packet including a plurality of bits associated with a plurality of
hops between the source and the destination, and indicating a state
of congestion at the associated hop; and generating a hop list
identifying a plurality of hops to traverse in communications
between the source and the destination, including selecting hops in
the hop list in response to the indicated state of congestion at
the associated hop.
[0012] According to another aspect of the invention, a source
routed network comprising a source node and a destination node
coupled in a path by a plurality of intermediate nodes, the source
routed network including means for indicating a state of congestion
of each of the plurality of intermediate nodes to the source node;
and means, response to the state of congestion of each of they
plurality of intermediate nodes, for updating the path of
intermediate nodes between the source node and the destination node
by removing at least one of the intermediate nodes from the
path.
BRIEF DESCRIPTION OF THE DRAWINGS
[0013] FIG. 1A is a block diagram of an exemplary source routed
network in which the present invention may be used, the source
routed network of FIG. 1A using node addresses for specifying a
next hop;
[0014] FIG. 1B illustrates exemplary packet header contents for a
packet used in the source routed network of FIG. 1A;
[0015] FIG. 2A is a block diagram of another exemplary source
routed network in which the present invention may be used, the
source routed network of FIG. 2A being a link routed network that
uses link identifiers for specifying a next hop;
[0016] FIG. 2B illustrates exemplary packet header contents for a
packet used in the link routed network of FIG. 2A;
[0017] FIG. 3 illustrates detail of the modified packet header of
the present invention, which incorporates at least one congestion
bit into the hop identifier of each hop in a hop list of a packet
header;
[0018] FIG. 4 illustrates an alternate embodiment of the packet
header of the present invention, wherein the packet header is
collapsed as a packet traverses from a source to a destination;
[0019] FIG. 5 is a flow diagram illustrating exemplary steps that
are taken at a node in a source routed network to set the
congestion field of the packet header of FIG. 3;
[0020] FIG. 6 is a flow diagram illustrating exemplary steps that
may be taken at a destination node in a source routed network to
reflect congestion information back to the source node;
[0021] FIG. 7 is a flow diagram illustrating exemplary steps that
may be taken at a source node in a source routed network for
managing forwarding hop lists using the congestion information
provided in the packet header of FIG. 3 according to the present
invention;
[0022] FIG. 8 is a diagram illustrating how the path of FIG. 2 is
re-routed due to receipt of congestion information at the source of
the source routed network; and
[0023] FIG. 9 is a block diagram of several exemplary components
that may be included in a network device capable of implementing
the present invention.
DETAILED DESCRIPTION
[0024] As it is known in the art, in a source routed network, each
source node essentially directs the flow of traffic from the source
through any intermediate nodes in the network to the destination.
The source pre-computes the preferred route, based upon any known
routing protocol, compiles a list of the intermediate `hops` that
direct the packet over the preferred route, and appends the list of
hops to the packet header. As the packet header is parsed at each
intermediate node, the next `hop` is retrieved from the list and
the packet is forwarded to the next hop by the intermediate node.
Source routing thus removes the need for routing calculations to be
performed at intermediate nodes, allowing faster packet forwarding
techniques to be used to improve communication bandwidth.
[0025] Referring now to FIG. 1A, an exemplary network 10 in which
source routing may be used is shown. A source device 12 that seeks
to communicate with a destination device 38 executes a transport
layer routing protocol, such as Open Shortest Path First (OSPF)
routing protocol, IS-IS, or the like to select the desired `hops`
in the path from source to destination. For the purpose of this
application, a `hop` may be defined to be an address of a node, a
link associated with a node or a label identifying a link or a
node, although the invention is not limited to any particular hop
identifier content. In FIGS. 1A and 1B, the `hop` list is comprised
of a sequence of node IP addresses or labels. Thus, the path from
source to destination is conveyed, in FIGS. 1A and 1B, as a path of
nodal addresses.
[0026] FIG. 1B illustrates a generic format of an Internet Protocol
(IP) packet including a header portion 15 and a payload portion 17.
The Internet Protocol (IP), defined by IETF RFC791, is the routing
layer datagram service of the TCP/IP suite. Most protocols within
the TCP/IP suite use IP to route frames from host to host. The IP
frame header contains routing information and control information
associated with datagram delivery. In FIG. 1B, the header portion
is shown to include an index 15a, and a `hop list` including
address 15b corresponding to the source 12, address 15c
corresponding to node A 14, etc.
[0027] As the packet is transferred through the network, the index
is incremented. A node that receives the packet then uses the index
to retrieve the appropriate `next hop` from the hop list,
increments the index, and forwards the packet onto the next hop.
Thus, in FIG. 1A, Source 12 forwards the packet to node A 14. Node
A 14 parses the header and uses the index to retrieve the next
`hop` B. Node A increments the index and forwards the packet to
node B. The process continues until the packet reaches the
destination node.
[0028] Referring now to FIGS. 2A and 2B, a source routing network
wherein links, rather than nodal addresses, are used to identify
the next `hop` in the network is shown. For the purpose of this
application, a link identifies an interface of a network device
which may be used to transmit data. Thus, in the network 5, device
14 has multiple output interface links (L1, L2, L6 and L7), any of
which can be selected to as a path for the next `hop` out of the
device. The path from source node 12 to destination node 38 is thus
indicated as link `hops` L1, L2, L3, L4 and L5 as illustrated in
FIG. 2B.
[0029] Referring now to FIG. 3, according to one aspect of the
invention, the header 50 of a packet can be modified to include,
with each hop identifier (whether it be a node address, link
address, label or some other indicator), one or more bits
comprising a congestion field, such as congestion fields 40, 41,
42, 43 and 44. The congestion field is associated with each `hop`,
and indicates a relative congestion on the `hop.` The existence of
congestion at the `hop` can be determined using any one of a
variety of known congestion detection techniques, and the present
invention is not limited to the use of any particular mechanism or
threshold for congestion detection. Exemplary methods that are used
in the art include monitoring transmit and receive buffer fullness
at the device, measuring a number of dropped packets, measurement
of a delay in response by the device, and may other methods. In one
sense, `Congestion` means resource conflicts with regard to the
transport medium and buffers associated with packet traffic.
However, the system and method of the present invention can also
used to indicate other resource conflicts; such as power, error
rates, etc., and thus the terms `congestion` and `resource
conflicts` can be used interchangeably below.
[0030] In FIG. 3, the congestion field is shown to include two
bits; a Forward Congestion Indication bit 45 and a Backward
Congestion indication bit 46. The Forward Congestion indication bit
may be set at a given node if a packet is received at the node and
there is evidence at the node of congestion. As the packet
traverses the path from source to destination defined in the hop
list, the status of congestion at each node is propagated to the
destination. Thus the destination node receives, in the header, a
collection of congestion bits. In one embodiment, the header is
forwarded intact to the destination, with a hop identifiers for the
entire path (and their associated congestion bits) being received
intact in the header. In another embodiment, such as that
illustrated in FIG. 4, as the packet propagates from the source to
the destination, once an intermediate node is reached, the hop
identifier for the node is stripped from the header. The congestion
bits, however, remain intact in the header. Thus, in FIG. 4,
congestion fields 40, 41, 42 and 43 remain intact at the
destination node, although the overall length of the header is
reduced. The index field, which indicates the number of hops in the
path, can be used to parse the header to determine how many of the
leading bits should be interpreted as congestion bits, thereby
enabling each node to obtain the proper next hop identifier for
forwarding purposes.
[0031] In FIGS. 3 and 4, the congestion field is also shown to
include a Backwards Congestion Indicator (BCI) 46. When the next
packet is transferred from the destination back to the source, a
Backwards Congestion Indicator bit (BCI) is set for each hop
indicator that had a corresponding FCI bit set on a
source/destination transmission. As the packet propagates through
the network, the BCI bits traverse the network unmodified, such
that when the packet is received at the source, the source has an
accurate view of the state of congestion on the previous source to
destination communication. Although two distinct bits (FCI and BCI)
have been described, it is appreciated that the functionality could
be achieved with one or more bits, and thus the selection of bits
is a matter of design choice and not a limitation of the present
invention. For example, different `congestion` bits may be used to
indicate different types of resource conflicts at the node, thereby
allowing a user to differentiate between power supply resource
conflicts and transport medium resource conflicts. Any manner or
use of bits indicating different network characteristics are
included herein.
[0032] Referring now to FIGS. 5-7, a series of flow diagrams
illustrating exemplary processes that may be performed at the
source, destination and intermediate nodes will now be described.
It is appreciated that the processes could be implemented in a
variety of manners, and the flow diagrams provide only one
illustrative example of achieving the desired result. The present
invention is thus not limited to the exact sequence of steps or
delineation of functions illustrated in the diagrams.
[0033] FIG. 5 illustrates a method that may be used at an
intermediate or destination node for setting the FCI bits as the
packet propagates from source to destination. At step 60, the
packet is received at the node. At step 62, various status within
the node is evaluated to determine a congestion level at the node.
If it is determined at step 62 that the congestion level is
unsatisfactory, then at step 64 the FCI bit corresponding to the
hop identifier associated with the node is set to indicate
congestion. At step 66, the index value is updated, and at step 68
the packet is forwarded to the next hop in the hop list.
[0034] FIG. 6 illustrates a method that may be used at a
destination node to reflect the congestion status back to the
source node. Note that the congestion data may be reflected back in
a packet traveling on any path back to the source node, it need not
be the same path as taken during the source to destination
communication. Thus the congestion information may travel via an
explicit packet with no data (from the destination or intermediate
nodes) or via information appended to a packet that is going a
different route. At step 70, the packet from the source is received
at the destination. At step 72, the header of the packet is
examined to determine whether any of the FCI bits were set during
the communication. If so, at step 74 the corresponding BCI bits are
set on the next packet destined for the source, and at step 76 that
packet is forwarded to the source.
[0035] FIG. 7 illustrates several steps that may be performed at a
source in a source routed network to identify and manage congestion
in a communication path. At step 80 a hop list enabling
communication with a destination node is generated according to a
selected routing protocol. At step 82, a packet destined for the
destination is forwarded from the source to the first hop
identified in the hop list. At step 86, when it is determined that
a packet is received from the destination, the congestion fields of
the header are evaluated to determine whether there is congestion
in the transmission path from the source to the destination. If
congestion bits are set, the source may perform any variety of
tasks, including backing off the transmission rate on the path.
However, in one embodiment, the source advantageously executes the
routing protocol to generate a new hop list that removes one or
more of the congested nodes from the transmission path between the
source and the destination. Subsequent transmissions to the
destination utilize the updated hop list.
[0036] For example, referring now to FIG. 8, assume that in the
transmission from source 12 to destination 38 of a packet as in
FIG. 2A, and the FCI bit corresponding to Link 1 is set to indicate
congestion on the link. A packet subsequently forwarded from the
destination 38 to the source 12 has the BCI bit associated with
link 1 set to indicate that congestion occurred in the prior
transmission. The source, recognizing the congestion, executes the
routing protocol and selects an alternative path which uses Links
L8, L9 and L10 in place of Links L1 and L2. The remainder of the
path, which is operating without congestion, is left in tact.
[0037] Referring briefly to FIG. 9, a block diagram illustrating
several components that may be included in a network device
implementing the present invention are shown. The components are
illustrated as blocks which perform certain described functions,
and it is appreciated that their functionality may be implemented
in hardware, software or a combination thereof. Therefore the
present invention is not limited to any particular implementation
or delineation of functionality shown in FIG. 9.
[0038] In one embodiment, the network device 100 includes a number
of packet receive buffers 102 and packet transmit buffers 112. The
packet receive buffers receive packets from an incoming packet data
stream on any of the input links to the device. In addition, the
packet receive buffers may also store packets generated by packet
generation logic 104 within the network device. The packet transmit
buffers 112 are used to forward packets over any outgoing device
interface ports.
[0039] In one embodiment, the packet receive buffers and packet
transmit buffers forward fullness indicators to congestion logic
108. The congestion logic 108 may evaluate the fullness of the
buffers and determine that congestion is occurring depending upon a
number of parameters, including but not limited to the type of
traffic being received, a service level agreement for certain
traffic, a number of dropped packets, etc. A congestion status
indictor may be forwarded by the congestion logic to the packet
forwarding logic 106. The congestion status indicator, although
shown as a single signal, may in fact have a number of bits
corresponding to the different transmit and receive buffers, and
hence the different forwarding paths.
[0040] Packet forwarding logic 106 in essence moves data from the
packet receive buffers to the packet transmit buffers responsive to
various information contained in the packet header. For example, if
the packet header includes a hop indicator indicating that the next
hop that a packet is to take is to link2, the packet forwarding
logic forwards the packet to the appropriate transmit buffer. If a
congestion indicator is set to indicate congestion on the incoming
or outgoing link, the FCI bit associated with the link is set to
indicate congestion by the packet forwarding logic prior to the
transfer of the packet to the receive buffer.
[0041] A network device may also include routing logic 110. Most
network devices are source devices at some point in the
transmission, and thus will generate a hop list using a selected
routing protocol. The routing logic 110 is used as described with
regards to FIG. 7 to generate and update hop lists according to the
BCI information received from the packet forwarding logic.
[0042] Accordingly a method and apparatus for identifying and
managing congestion in a source routed network has been shown and
described, wherein `congestion` can be any form of resource
conflict that may be encountered in a transmission path. By
associating a congestion indicator with each hop in a path, a finer
granularity of congestion indication can be attained. This
information can then be fed back into a higher layer routing
protocol, enabling paths to be selected that can operate at a high
bandwidth without congestion. The present invention thus improves
on the prior art congestion management techniques which simply
reduce packet transmission rate, and concomitantly network
performance, in order to reduce the effects of congestion.
[0043] The above description and Figures have included various
process steps and components that are illustrative of operations
that are performed by the present invention. However, although
certain components and steps have been described, it is understood
that the descriptions are representative only, other functional
delineations or additional steps and components can be added by one
of skill in the art, and thus the present invention should not be
limited to the specific embodiments disclosed.
[0044] FIG. 5-7 are flowchart illustrations of methods, apparatus
(systems) and computer program products according to an embodiment
of the invention. It will be understood that each block of the
flowchart illustrations, and combinations of blocks in the
flowchart illustrations, can be implemented by computer program
instructions. These computer program instructions may be loaded
onto a computer or other programmable data processing apparatus to
produce a machine, such that the instructions which execute on the
computer or other programmable data processing apparatus create
means for implementing the functions specified in the flowchart
block or blocks. These computer program instructions may also be
stored in a computer-readable memory that can direct a computer or
other programmable data processing apparatus to function in a
particular manner, such that the instructions stored in the
computer-readable memory produce an article of manufacture
including instruction means which implement the function specified
in the flowchart block or blocks. The computer program instructions
may also be loaded onto a computer or other programmable data
processing apparatus to cause a series of operational steps to be
performed on the computer or other programmable apparatus to
produce a computer implemented process such that the instructions
which execute on the computer or other programmable apparatus
provide steps for implementing the functions specified in the
flowchart block or blocks.
[0045] Those skilled in the art should readily appreciate that
programs defining the functions of the present invention can be
delivered to a computer in many forms; including, but not limited
to: (a) information permanently stored on non-writable storage
media (e.g. read only memory devices within a computer such as ROM
or CD-ROM disks readable by a computer I/O attachment); (b)
information alterably stored on writable storage media (e.g. floppy
disks and hard drives); or (c) information conveyed to a computer
through communication media for example using baseband signaling or
broadband signaling techniques, including carrier wave signaling
techniques, such as over computer or telephone networks via a
modem.
[0046] While the invention is described through the above exemplary
embodiments, it will be understood by those of ordinary skill in
the art that modification to and variation of the illustrated
embodiments may be made without departing from the inventive
concepts herein disclosed. Moreover, while the preferred
embodiments are described in connection with various illustrative
program command structures, one skilled in the art will recognize
that the system may be embodied using a variety of specific command
structures. Accordingly, the invention should not be viewed as
limited except by the scope and spirit of the appended claims.
* * * * *