U.S. patent application number 12/418396 was filed with the patent office on 2010-10-07 for network routing system providing increased network bandwidth.
Invention is credited to Srinivasa Aditya Akella, Ashok Anand, Srinivasan Seshan.
Application Number | 20100254377 12/418396 |
Document ID | / |
Family ID | 42826139 |
Filed Date | 2010-10-07 |
United States Patent
Application |
20100254377 |
Kind Code |
A1 |
Akella; Srinivasa Aditya ;
et al. |
October 7, 2010 |
Network Routing System Providing Increased Network Bandwidth
Abstract
A network employing multiple redundancy-aware routers that can
eliminate the transmission of redundant data is greatly improved by
steering redundant data preferentially into common data paths
possibly contrary to other routing paradigms. By collecting
redundant data in certain pathways, the effectiveness of the
redundancy-aware routers is substantially increased.
Inventors: |
Akella; Srinivasa Aditya;
(Middleton, WI) ; Anand; Ashok; (Madison, WI)
; Seshan; Srinivasan; (Pittsburgh, PA) |
Correspondence
Address: |
WISCONSIN ALUMNI RESEARCH FOUNDATION
C/O BOYLE FREDRICKSON S.C, 840 North Plankinton Avenue
Milwaukee
WI
53203
US
|
Family ID: |
42826139 |
Appl. No.: |
12/418396 |
Filed: |
April 3, 2009 |
Current U.S.
Class: |
370/389 |
Current CPC
Class: |
H04L 69/14 20130101;
H04L 47/24 20130101; H04L 45/30 20130101; H04L 45/00 20130101; H04L
45/42 20130101; H04L 69/04 20130101 |
Class at
Publication: |
370/389 |
International
Class: |
H04L 12/56 20060101
H04L012/56 |
Claims
1. A network router for use in a network between different routers,
the network router having an electronic processor executing a
stored program to: (a) identify data-redundancy in packets received
by the router with respect to a destination of the packets; and (b)
using the identification of step (a), selecting a routing path
through the network for a packet having redundant data such that
the packet is concentrated on a routing path with other packets
having corresponding redundant data.
2. The network router of claim 1 wherein the electronic processor
further executes the stored program to: (c) modify packets to be
transmitted on the network when the packets have redundant data
with a previously transmitted packet by removing the redundant data
and inserting an identification of the previously transmitted
packet; and (d) modify packets received on the network identifying
a previously received packet by inserting redundant data from the
previously received packet.
3. The network router of claim 2 wherein redundant data in packets
is identified by hashing chunks of the packets to produce a
fingerprint that may be compared with previous or subsequent
packets, a matching of the fingerprint indicating data
redundancy.
4. The network router of claim 3 wherein the hashing chunks of the
packet is done by maintaining a cuckoo hash for a hash-table.
5. The network router of claim 1 wherein the selection of a route
through the network for a packet having redundant data is obtained
by linear programming, the linear programming reducing a footprint
variable over the network, the footprint variable being a function
of size of an archetype redundant packet and network path
latency.
6. The network router of claim 1 wherein selection of a routing
path through the network for a packet having redundant data
considers only packets with corresponding redundant data also
having a destination within a limited subset of destination
routers, the subset being less than all of the destination routers
receiving packets with corresponding redundant data.
7. The network router of claim 6 wherein selection of a routing
path through the network for a packet first combines redundant
content in packets going to identical set of destinations into a
virtual larger packet, and wherein the linear programming operates
on the virtual larger packets.
8. The network router of claim 1 wherein the network includes at
least one of the group consisting of an ISP, datacenter, or
enterprise network
9. The network router of claim 1 wherein the network router
comprises an architecture selected from the group consisting of: a
processor system fully contained at one node of the network and
multiple processor systems contained at multiple nodes of the
network and intercommunicating over the network.
10. An electrical data transmission network comprising: (a) a
plurality of interconnected devices, the devices executing stored
programs to: (i) select among different network paths to
communicate data packets to other devices; (ii) identify redundant
data among packets passing through the devices to another device to
suppress transmission of the redundant data in favor of data cached
by the other device; (b) a route manager communicating with the
interconnected devices executing a stored program to instruct the
devices with respect to which network paths to use for data packets
to concentrate packets having redundant data with other
corresponding packets on network paths used by the corresponding
packets.
11. The electrical data transmission network of claim 10 wherein
each interconnected device samples redundancies of packets
associated with particular destinations for a period of time and
forwards data from the sampling to the route manager and wherein
the route manager returns data indicating preferred network paths
for packets according to packet destinations.
12. The electrical data transmission network of claim 10 wherein
selection of the network for a packet having redundant data is
obtained by linear programming to reduce a footprint variable being
a function of archetype packet size and network path latency.
13. The electrical data transmission network of claim 12 wherein
selection of a routing path through the network for a packet, first
collects the packet into a virtual larger packet having multiple
packets with identical destinations, and wherein the linear
programming operates on the virtual larger packets.
14. The electrical data transmission network of claim 12 wherein
selection of a routing path through the network for a packet having
redundant data considers only packets with corresponding redundant
data having a destination within a limited subset of destination
routers less than all of the destination routers receiving packets
with corresponding redundant data.
15. The electrical data transmission network of claim 14 wherein
selection of a routing path through the network for a packet first
collects the packet into a virtual larger packet having multiple
packets with identical destinations, and wherein the linear
programming operates on the virtual larger packets.
16. The network router of claim 10 wherein the network includes at
least one domain.
17. A method of increasing effective bandwidth through a network
comprising the steps of: (a) interconnecting media of the network
with all or some routers providing for redundant content
elimination; (b) monitoring the redundant content of packets at at
a least one ingress point; (c) based on the monitoring of step (b),
routing the packets through the network so that packets with
redundant content are concentrated on interconnecting media having
routers with redundant content of elimination together with other
packets having corresponding redundant content.
18. The method of claim 17 wherein selection of the network for a
packet having redundant data is obtained by linear programming to
reduce a footprint variable being a function of archetype packet
size and network path latency.
19. The method of claim 18 wherein selection of a routing path
through the network for a packet having redundant data considers
only packets with corresponding redundant data having a destination
within a limited subset of destination routers less than all of the
destination routers receiving packets with corresponding redundant
data.
20. The method of claim 18 wherein selection of a routing path
through the network for a packet first collects the packet into a
virtual larger packet having multiple packets with identical
destinations, and wherein the linear programming operates on the
virtual larger packets.
Description
CROSS REFERENCE TO RELATED APPLICATIONS
BACKGROUND OF THE INVENTION
[0001] The present invention relates to computer networks and in
particular to a routing system increasing effective network
bandwidth.
[0002] Computer networks provide for the exchange of digital data
among computers over a variety of media including electrical cable,
optical fiber, and radio links. Commonly, the data is broken into
data packets each provided with a header indicating a destination
for the packet and a packet sequence number. The packets are
forwarded over a complex and changing network topology through the
agency of "routers" which read the packet headers and forward the
packets on particular links to other routers according to a router
table. At the destination, the packets are reassembled.
[0003] The term "router" as used herein will refer broadly to any
network node processing data packets for the purpose of
communicating them through a network and may include hubs,
switches, and bridges as well as conventional routers.
[0004] The bandwidth of a network is a general measure of the rate
of data transfer that can be obtained. Limits on bandwidth can
include physical limitations in the media of the links between
nodes, for example, caused by the impendence of electrical
conductors, as well as processing limitations of the node hardware.
While bandwidth limitations can generally be addressed by
over-provisioning the network (e.g. adding additional links and
faster hardware) these measures can be costly. Increased demand for
high bandwidth content (e.g. video) and the importance of
accommodating highly variable network traffic, for example "flash
crowds", makes it desirable to find ways to increase the bandwidth
efficiency of existing networks.
[0005] The effective bandwidth of the network may be effectively
increased by a number of software techniques. "Traffic engineering"
may be used to allocate the routing of data to spread the load
evenly across network links. This technique, by eliminating
congestion, improves the effective bandwidth of the network.
Traffic engineering can be limited, however, by the difficulty of
anticipating rapid variation in traffic volumes and coordinating
spatially separate routers.
[0006] Data compression can also be used to increase the effective
bandwidth of the network. Thus, for example, video can be
compressed using an MPEG compression system to significantly
decrease the amount of data required to support a video
transmission. Some compression can be accomplished in this manner
by the network operator trapping and converting files.
[0007] Application layer caching can also be used to improve the
effective bandwidth of a network by taking commonly used network
data and placing it in proxy caches at various locations on the
network. The proxy caches limit the need to transmit the data over
the network when it is subject to separated requests.
[0008] Improved network capacity can also be provided by monitoring
and removing packet-level redundancy, for example, at network
routers. Such systems will be termed "redundancy-aware routers" and
generally operate independently of the application layer by
inspecting packets for redundancy, removing the redundant strings
from the packets, and allowing the removed material to be replaced
at the destination from a downstream cache.
SUMMARY OF THE INVENTION
[0009] The present inventors have recognized that bandwidth
efficiency of the network can be greatly boosted by a combination
of redundancy-aware routers and a routing system that controls the
paths of packets to preferentially steer redundant packets along
common paths. By concentrating redundant packets in a single path,
the effectiveness of packet redundancy removal is substantially
boosted. The routing system makes use of the information about
redundancy of packets also used by the redundancy-aware router and
thus can be implemented on a local router basis. Alternatively, the
routing decisions may be global providing a more comprehensive
steering of redundant packets.
[0010] In this regard, the present inventors have developed a
practical method for implementing the necessary routing decisions.
Experiments using real-world Internet traffic have shown that data
reductions of 16 to 50% can be obtained. These results are
described further in Packet Caches on Routers: the Implication of
Universal Redundant Traffic Elimination by Anand et al, SIGCOMM
'08, Aug. 17-20 2, 2008, Seattle, Wash., USA ACM
978-1-60558-175-0/08/08 hereby incorporated by reference.
[0011] Specifically then, the present invention provides a network
router for use in a network between different routers. The network
router identifies data-redundancy in packets received by the router
with respect to a destination of the packets and uses this
knowledge of the redundancy of the packets to select a routing path
through the network so that a given packet is concentrated on a
routing path with other packets having corresponding redundant
data.
[0012] It is thus a feature of a least one embodiment of the
invention to leverage the capabilities of redundancy-aware routers
to substantially increase network capacity.
[0013] The router may modify packets to be transmitted on the
network when the packets have redundant data by removing the
redundant data and inserting an identification of the redundant
data in a previously transmitted packet. Conversely, the router may
modify packets received on the network, identifying redundant data
of a previously received packet by inserting redundant data from
the previously received packet.
[0014] It is thus an object of invention to combine the routing
system of the present invention with redundancy awareness.
[0015] The redundant data in packets may be identified by hashing
chunks of data in the packets to produce fingerprints that may be
compared with previous or subsequent packets, a matching of the
fingerprint indicating data redundancy. The comparison of
fingerprints is made faster by maintaining a hashtable of
fingerprints. The hashtable data-structure may, in one embodiment,
employ "cuckoo hashing".
[0016] It is thus a feature of a least one embodiment of the
invention to provide an efficient and rapid method of identifying
redundant data at the packet level.
[0017] The selection of the route through the network for a packet
having redundant data may be obtained by linear programming, the
linear programming configured to reduce a footprint variable over
the network, the footprint variable being a function of size of an
archetype redundant packet and network path latency.
[0018] It is thus a feature of a least one embodiment of the
invention to provide a flexible and powerful technique of
optimizing network routes for redundant content.
[0019] The selection of a routing path through the network may
consider only packets within a limited subset of destination
routers, the subset being less than all of the destination routers
receiving packets with corresponding redundant data.
[0020] It is thus a feature of a least one embodiment of the
invention to improve scaling of the linear programming problem,
permitting faster execution of the linear programming and/or
centralization of the route selection process for multiple
routers.
[0021] Alternatively or in addition, the selection of a routing
path through the network for a packet may first combine redundant
content in packets with identical destinations into a virtual
larger packet, and the linear programming may operate on the
virtual larger packets.
[0022] It is thus a feature of a least one embodiment of the
invention to provide a second simplification to improve scalability
of the linear programming. Note that this second simplification
operates synergistically with the first simplification which makes
it easier to construct a virtual packet having the same
destinations.
[0023] The network may include a single or multiple ISPs or single
or multiple domains.
[0024] It is thus a feature of a least one embodiment of the
invention to provide a system that can be expanded as necessary to
extremely large networks.
[0025] The network router may use a local processor system fully
contained at one node of the network or multiple processor systems
contained at multiple nodes of the network and intercommunicating
over the network.
[0026] Thus, it is a feature of a least one embodiment of the
invention to permit distributed or centralized routing models.
[0027] In this latter centralized model, each interconnected device
may sample redundancies of packets associated with particular
destinations for a period of time and forward data from the
sampling to the route manager, and a centralized device may return
data indicating preferred network paths for packets according to
packet destinations. In both of the distributed and centralized
model, the determination of network paths may be performed
episodically, for sampling interval, and those pads used
predictably for a predetermined period of time.
[0028] It is thus a feature of a least one embodiment of the
invention to permit the use of the present invention in a
predictive capacity reflecting an underlying time granularity of
redundancy in transmitted data. By using predictive data, the
calculation burden may be greatly reduced either in a centralized
or distributed model.
[0029] These particular objects and advantages may apply to only
some embodiments falling within the claims and thus do not define
the scope of the invention.
BRIEF DESCRIPTION OF THE FIGURES
[0030] FIG. 1 is a simplified block diagram of a network-aware
router suitable for use with the present invention receiving data
packets and forwarding them to other routers connected in a
network;
[0031] FIG. 2 is a flow chart of a program implemented by the
network-aware routers of FIG. 1;
[0032] FIG. 3 is a graphical representation of the analysis of a
packet for redundancy per the present invention;
[0033] FIG. 4 is a figure similar to that of FIG. 3 showing
processing of the packet to remove and restore redundant
information at a transmitting and receiving router;
[0034] FIG. 5 is a simplified network diagram showing a prior art
routing of packets in a simplified example network;
[0035] FIG. 6 is a figure similar to that of FIG. 7 showing the
routing of packets using prior art redundancy-aware routers;
[0036] FIG. 7 is a figure similar to that of FIGS. 5 and 6 showing
the use of redundancy-aware routers combined with redundancy-aware
routing of the present invention;
[0037] FIG. 8 is a flow chart providing the additional program
steps added to a redundancy-aware router to implement the present
invention; and
[0038] FIG. 9 is a figure similar to that of FIG. 3 showing the
modification of the data structure of the redundancy of aware
router to include a redundancy profile used by an embodiment of the
present invention.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
[0039] Referring now to FIG. 1, a network 10 may include a set of
network vertices 12a-d interconnected by network edges 14a-d. Each
of the vertices 12a-d may be a network-aware router 18 as is
commonly understood in the art with the edges 14 being linking
media such as electrical cable, optical link, or radio link or the
like. Edge 14a in this example is an access point to the network
leading typically to another network 16. In this example, the
router 18 of vertex 12a may be considered a "source" vertex
transmitting data packets 20 from network 16 to "destination"
routers 18 of each of vertices 12b-d.
[0040] As is understood in the art, each router 18 may include
network interfaces 22 providing ports associated with each of the
edges 14a-d that implement an electrical interface between the
communication media of the edges 14 and a common internal bus 24 of
the router 18. The bus 24 may communicate with a processor 26
being, for example, a microprocessor or an application-specific
integrated circuit (ASIC) or a combination of both, in turn,
communicating with a memory 28. The memory 28 may hold an operating
program 30 implementing the present invention, as well as data
structures 32 including, for example, a routing table and other
data tables as will be described below.
[0041] Referring now to FIG. 2, the program 34 of the present
invention, as indicated by process block 36, upon receipt of a data
packet 20, analyzes the data packet 20 for packet level redundancy
with preceding data packets. Referring also to FIG. 3, the data
packet 20 will typically include a data payload 38 being a portion
generally holding the data to be communicated over the network 10.
Normally, the data payload 38 is preceded by a header 40 providing
data necessary for the operation of the protocol of the network 10
and including, for example, a destination address 42 indicating the
ultimate destination of the packet 20 and a packet serial number 44
allowing the data packet 20 to be assembled with other data packets
20 to complete a message.
[0042] At process block 36, a fingerprint of the payload 38 is
developed by applying a sliding window 46 to the payload 38 and
applying a hash function 48 to data within this window to produce a
series of Rabin fingerprints 50. Preferably, the fingerprints are
maintained in cuckoo hash which provides a constant worst-case down
time necessary to do a lookup and has less memory overhead compared
to traditional hash-tables. The data window may, for example, be 64
bytes, resulting in the production of S-64 fingerprints for a
payload 38 of length S bytes. Predetermined ones of these
fingerprints 50 (depending on the degree of data reduction desired)
are selected for each packet 20 to form a representative
fingerprint 52 for storage in a fingerprint table 53. While the
representative fingerprints 52 are shown collected in a row
(depicting their logical connection to the packets), they are in
fact distributed in a hash table at hash "buckets" whose addresses
are equal to the hash values of the windowed payload 38.
[0043] If the fingerprints 52 already exist in the fingerprint
table 53 (any individual fingerprint 50), indicating that the data
payload 38 is redundant with a previous data packet 20, the
generated fingerprints are discarded and a data packet 20 is
processed as a redundant data packet 20' per process blocks 82 and
83 of FIG. 2 as will be described in more detail below.
[0044] If the fingerprints 52 do not exist in the fingerprint table
53, indicating that the data payload 38 is an archetype payload 38'
(unique within the experience contained in the fingerprint table
53), then the windowed data of the archetype payload 38' associated
with the matching fingerprint 52 is stored in a payload table 56,
and a pointer to the archetype payload 38 in the payload table 56,
together with an offset pointer to the matching windowed data of
the archetype payload 38', are stored in the hash bucket. The data
packet 20 is then processed for normal transmission per process
block 80 of FIG. 2 as will be described in more detail below.
[0045] Each hash bucket of fingerprint table 53 for an enrolled
fingerprint 52 also holds a sequential index value 54 incremented
for each new fingerprint 52 and archetype payload 38'. This index
value 54 is used to implement a circular buffer, for example,
several gigabytes in size. As the index value 54 is incremented, a
"last valid index value" equal to the current index value 54 plus
the size of the circular buffer is created. Valid fingerprints 52
may thus be quickly determined by comparing the index value in the
hash bucket to the last valid index value. If that index value is
greater than the last valid index value, the fingerprint 52 is
invalid. This process eliminates the need to erase fingerprints 52
from the fingerprint table 53 allowing new fingerprint values to be
simply written over invalid fingerprint values at considerable time
savings.
[0046] Referring now to FIGS. 4 and 2, a process of enrolling a
payload 38 into the fingerprint table 53 and payload table 56
effectively determines whether the payload 38 of the packet 20 is
redundant per decision block 39 of FIG. 2. At this time, the
present invention also assesses of the degree of redundancy
(cpy.sub.i,j).
[0047] Referring now to FIG. 4, redundant data packets 20 are
specially processed to remove the redundant data before
transmission. In this process the valid fingerprint(s) 50
previously discovered in the fingerprint table 53 are used to
identify the portion 60 of the redundant packet 20' matching the
windowed data of the archetype payload 38 associated with the
matching fingerprints 50. An expanding comparison of the redundant
data packet 20 and the archetype payload 38' is performed to "grow"
the portions 60 in each of the archetype payload 38' and the
payload of new packet 20', as indicated by arrows 62, to determine
the full extent of the matching on either side of the portion
identified by the fingerprint.
[0048] The amount of matching (cpy.sub.i,j) is saved as a
redundancy index value 81 holding, for example, a number of
matching bits 84, the index value 54 (i) and a destination address
42 (j) to be used as described further below.
[0049] When the full extent of the matching between the archetype
payload 38' and the redundant data packet 20' has been determined,
the unmatched portions 64 of the packet 20' are spliced around a
shim 66 providing the value of the fingerprint 50 (hash address)
and a byte range 68 corresponding to the amount that the packet was
grown per arrows 62. The shortened packet 20'' is then transmitted
as indicated by arrows 70 to a receiving router.
[0050] As indicated by process block 85 of FIG. 2, at the receiving
router 18, the shim 66 and fingerprint 50 are removed and the
fingerprint 50 used to identify the corresponding fingerprint 50 in
the fingerprint table 53 of the receiving router 18. This
corresponding fingerprint 50 is in turn used to identify a stored
archetype payload 38' providing a missing section 72 defined by the
fingerprint and the byte range 68. Thus, the full payload 38 for
the redundant data packet 20' may be reconstituted at the receiving
end.
[0051] Referring now to FIG. 5, the operation of a redundancy-aware
router may be illustrated by an example network 10' having a source
vertex 12a (S.sub.1) and in turn connected via three separate edges
with three first level vertices 12b-d. Each of these vertices 12b-d
is connected via single separate edges to corresponding third level
vertices 12e-g, each of the latter of which connects via separate
single edges to destination vertices 12h-j. Vertices 12h will be
denoted destination D.sub.1 and vertices 12j will be to designated
destination D.sub.2. Vertex 12i also includes edges to each of
destinations D.sub.1 and D.sub.2.
[0052] Assume now that the source vertex 12a needs to transmit
packets P.sub.i, P.sub.i, and P.sub.j, to both of destinations
D.sub.1 and D.sub.2 where packets P.sub.i provide 100% redundant
data with each other and packet P.sub.j provides unique or
non-redundant data. In the typical routing situation of FIG. 5,
normal traffic engineering may route these packets to their
respective destinations by the shortest path, thus through vertices
12b and 12e to destination D.sub.1 and through vertices 12d and 12g
to destination D.sub.2. This path, assuming similar latencies and
bandwidths for each of the edges, provides the shortest number of
hops and therefore the most efficient and fastest communication
path.
[0053] Referring now to FIG. 6, a redundancy aware router system
described communicating the same packets on the same network 10'
recognizes the redundancy of packets P.sub.i and therefore
suppresses one packet P.sub.i to transmit only one packet P.sub.i
and packet P.sub.j by the same path as shown in FIG. 5.
[0054] Referring now to FIG. 7, the present invention operates to
concentrate the packet transmissions to a given destination D.sub.1
or D.sub.2 on a common path to leverage the redundancy-aware
routers such that only two packets (packets P.sub.i and P.sub.j)
are transmitted from vertices 12a to 12c , 12f and 12i. At vertices
12i , the packets P.sub.i and P.sub.j are duplicated to be
transmitted separately through different edges to destinations
D.sub.1 and D.sub.2.
[0055] Assuming, for the moment, that the capacities and latencies
of each of the edges is the same, it will be seen that the present
invention makes more efficient use of network resources. Network
usage may be quantified by a footprint value of a transmission
where the footprint value is the sum of the latency of each edge
traversed times the total packet length that needs to be
transmitted. If, in this example, all the edges have the same
latency and that packets P.sub.i and P.sub.j are the same length
(P.sub.i), it will be seen that the footprint of the present
invention per FIG. 7 is 10 P.sub.i while the latency of FIG. 5 is
18 P.sub.i and the latency of FIG. 6 is 12 P.sub.i
[0056] This concept of footprint may be used to identify the ideal
routing for packets based on knowledge of their redundancy, a
knowledge which can be readily extracted from information used to
create redundancy-aware routers.
[0057] Referring now to FIGS. 8 and 9 the present invention
supplements the redundancy-aware router as previously described by
determining redundancy per process block 90 and generating a
redundancy index value 81 cpy.sub.i,j per process block 94. This
redundancy index value 81 may be used to create a redundancy
profile 92 that supplements the fingerprint table 53 and payload
table 56 described above holding the redundancy values 81 linked to
a particular redundant payload. By having these redundancy index
values, the ideal route for a given packet may be determined by
analyzing the footprint for all edges of the network along all
possible routing paths and selecting the routing path which
minimizes that footprint as indicated by process block 96. This
routing information may then be used to route the packet as
indicated by process block 98.
[0058] One method of quickly assessing the ideal routing path using
this criterion is linear programming in which the following
objective function is minimized:
e i F ( P i , e ) ( 1 ) ##EQU00001##
[0059] where e are edges between a source vertex (S) and a
destination vertex (D), i is an index of distinct packets P.sub.i,
and F(P.sub.i,e) is the footprint for a unique packet P.sub.i on an
edge e between vertices 12 defined as follows:
F(P.sub.i,e)=lat.sub.e.times.|P.sub.i| (2)
[0060] in which lat.sub.e is the latency of a given edge, for
example the delay in connecting media, and |P.sub.i| is the size of
a "distinct" packet, meaning a packet that is an archetype,
possibly redundant with other packets.
[0061] The linear programming operates under the following
constraints:
.A-inverted.j,F(P.sub.i,e).gtoreq.lat.sub.e.times.cpy.sub.i,j.times.rte.-
sub.j,e.times.|P.sub.i| (3)
[0062] where rte.sub.j,e is a variable that defines the portion of
traffic to destination j that passes along edge e which defines the
routing of packets and is computed by the linear programming. The
variable rte.sub.j,e is a value between zero and one and may be
fractional permitting fractional routing.
[0063] The following additional constraints are observed:
.A-inverted. e , F ( P i , e ) .ltoreq. lat e .times. P i ( 4 )
.A-inverted. j , e .di-elect cons. .delta. - ( v ) rte j , e = e
.di-elect cons. .delta. + ( v ) rte j , e ( 5 ) ##EQU00002##
[0064] where e.epsilon..delta..sup.+(.nu.) is the flow into a
vertex and e.epsilon..delta..sup.-(.nu.) is the flow out of a given
vertex v.
[0065] For the source and destination vertices S and D, the
following conservation constraints apply
.A-inverted. j , e .di-elect cons. .delta. - ( S ) rte j , e - e
.di-elect cons. .delta. + ( S ) rte j . e = 1 ( 6 ) .A-inverted. j
, e .di-elect cons. .delta. + ( D ) rte j , e - e .di-elect cons.
.delta. - ( D ) rte j . e = 1 ( 7 ) ##EQU00003##
[0066] Finally, the capacity of each edge cannot be exceeded
expressed as follows:
.A-inverted. e , 1 lat e n F ( P n , e ) .ltoreq. Cap e ( 8 )
##EQU00004##
[0067] where Cap.sub.e is derived from the edges transmission
capabilities.
[0068] The linear programming described above can be ideally
performed for each time interval, during when the redundancy
profile more or less remains same. But this may not be known in
advance and small time intervals would lead to frequent route
computations, so as a practical matter routing paths may be
determined for particular destinations based on historical data
collected on a periodic basis, and can be triggered to re-compute
the routing paths if a significant change in redundancy profile is
observed Thus, for example, having determined that it is best to
send packets for a particular destination upon a certain route,
this route information may be enrolled with the data of the packets
or provided to the routers so that all packets to that destination
are routed in the same manner for given period of time. This
routing will not be perfect because it will at some times be based
on stale redundancy profiles 92, but this approach may represent a
practical trade-off between computation burden and network
efficiency.
[0069] The possibility of routing using historical data allows
given routers 18 at vertices 12a and 12b , for example, to collect
redundancy information in redundancy profiles 92a and 92b
respectively and forward that data on a periodic basis to a central
route manager 100. The route manager 100 may also collect router
table information 102 from each of the routers 18 of vertices 12a
and 12b to create a system map 104 or may be pre-programmed with
that network topology. The route manager 100 may then perform the
linear programming of process block 96 of FIG. 8 using an internal
processor system 106 optimized for that purpose or having greater
capacity than the individual routers. The route manager 100 then
returns routing information 108 to the particular routers 18 at
vertices 12a and 12b on a periodic basis. In this way, the hardware
of the routers may be simplified and specialized hardware may
address the task of optimal routing. By centralizing the routing
problem, other traffic engineering considerations requiring a
global scope may be readily combined it with the present
invention.
[0070] In order to improve the scalability of the linear
programming of process block 96 of FIG. 8, the linear programming
problem may be constrained by only considering redundancy between
two different destinations for any given packet and by combining
redundant content in packets for a single set of destinations into
a larger virtual packet that is processed in lieu of the individual
packets.
[0071] It will be understood that the present invention may be
readily expanded from given networks 10a and 10b, for example
representing local or campuswide networks, to larger domains simply
by expanding the definition of the network and thus the present
invention should not be considered limited to any particular domain
or network size.
[0072] It should be understood that the invention is not limited in
its application to the details of construction and arrangements of
the components set forth herein. The invention is capable of other
embodiments and of being practiced or carried out in various ways.
Variations and modifications of the foregoing are within the scope
of the present invention. It also being understood that the
invention disclosed and defined herein extends to all alternative
combinations of two or more of the individual features mentioned or
evident from the text and/or drawings. All of these different
combinations constitute various alternative aspects of the present
invention. The embodiments described herein explain the best modes
known for practicing the invention and will enable others skilled
in the art to utilize the invention.
* * * * *