Method and apparatus for uninterrupted packet transfer using replication over disjoint paths
First Claim
1. A method of operating a fault tolerant connection in a network, wherein said network comprises a plurality of network elements and each one of said network elements is coupled to at least one other of said network elements by at least one of a plurality of links, comprising:
- identifying a first path, wherein said first path is between a first one of said network elements and a second one of said network elements;
identifying a second path, wherein said second path is between said first one and said second one of said network elements, and said first path and said second path are disjoint;
sending a packet from said first one of said network elements via said first path using a label-switching protocol;
sending a duplicate packet from said first one of said network elements via said second path using the label-switching protocol, wherein said duplicate packet is a duplicate of said packet, receiving at least one of said packet and said duplicate packet at said second one of said network elements; and
discarding one of said packet and said duplicate packet, if both said packet and said duplicate packet are received at said second one of said network elements, wherein said first path and said second path are node-disjoint, wherein said identifying said first path and said identifying said second path comprise;
storing cost and topology information representing said network in a sparse matrix;
storing identifiers in a heap data structure, wherein each one of said identifiers represents a corresponding one of said network elements;
identifying ones of said network elements in said first path using identifiers stored in said heap data structure;
removing ones of said identifiers corresponding to said ones of said network elements in said first path from said heap data structure; and
identifying ones of said network elements in said second path using identifiers still stored in said heap data structure.
1 Assignment
0 Petitions
Accused Products
Abstract
A method of operating a fault tolerant connection in a network is described. The network includes a number of network elements and a number of links. Each of the network elements is coupled to at least one other of the network elements by at least one of the links. The method identifies a first path and a second path. The first path is between a first one of the network elements and a second one of the network elements, as is the second path. Moreover, the first path and the second path are disjoint. This disjointedness can be any difference between the two paths (e.g., any combination of different network elements or links). A packet is sent from the first one of the network elements via the first path, while a duplicate packet is sent from the first one of the network elements via the second path. The duplicate packet is a duplicate of the packet. Once these packets have been sent, at least one of the packet and the duplicate packet are received at the second one of the network elements. If both the packet and the duplicate packet are received at the second one of the network elements, one of the two is discarded (e.g., by simply ignoring the last one received).
97 Citations
42 Claims
-
1. A method of operating a fault tolerant connection in a network, wherein said network comprises a plurality of network elements and each one of said network elements is coupled to at least one other of said network elements by at least one of a plurality of links, comprising:
-
identifying a first path, wherein said first path is between a first one of said network elements and a second one of said network elements;
identifying a second path, wherein said second path is between said first one and said second one of said network elements, and said first path and said second path are disjoint;
sending a packet from said first one of said network elements via said first path using a label-switching protocol;
sending a duplicate packet from said first one of said network elements via said second path using the label-switching protocol, wherein said duplicate packet is a duplicate of said packet, receiving at least one of said packet and said duplicate packet at said second one of said network elements; and
discarding one of said packet and said duplicate packet, if both said packet and said duplicate packet are received at said second one of said network elements, wherein said first path and said second path are node-disjoint, wherein said identifying said first path and said identifying said second path comprise;
storing cost and topology information representing said network in a sparse matrix;
storing identifiers in a heap data structure, wherein each one of said identifiers represents a corresponding one of said network elements;
identifying ones of said network elements in said first path using identifiers stored in said heap data structure;
removing ones of said identifiers corresponding to said ones of said network elements in said first path from said heap data structure; and
identifying ones of said network elements in said second path using identifiers still stored in said heap data structure. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method of operating a fault tolerant connection in a network, wherein said network comprises a plurality of network elements and each one of said network elements is coupled to at least one other of said network elements by at least one of a plurality of links, comprising:
-
identifying a first path, wherein said first path is between a first one of said network elements and a second one of said network elements;
identifying a second path, wherein said second path is between said first one and said second one of said network elements, and said first path and said second path are disjoint;
sending a packet from said first one of said network elements via said first path using a label-switching protocol;
sending a duplicate packet from said first one of said network elements via said second path using the label-switching protocol, wherein said duplicate packet is a duplicate of said packet, receiving at least one of said packet and said duplicate packet at said second one of said network elements; and
discarding one of said packet and said duplicate packet, if both said packet and said duplicate packet are received at said second one of said network elements, wherein said first path and said second path are link disjoint, wherein said identifying said first path and said identifying said second path comprise;
storing cost and topology information representing said network in a sparse matrix;
storing identifiers in a heap data structure, wherein each one of said identifiers represents a corresponding one of said links;
identifying ones of said links in said first path using identifiers stored in said heap data structure;
removing ones of said identifiers corresponding to said ones of said links in said first path from said heap data structure; and
identifying ones of said network elements in said second path using identifiers still stored in said heap data structure. - View Dependent Claims (7, 8, 9, 10)
-
-
11. A computer system comprising:
-
a processor;
a network interface, coupled to said processor and to a network, wherein said network comprises a plurality of network elements and each one of said network elements is coupled to at least one other of said network elements by at least one of a plurality of links;
computer readable medium coupled to said processor; and
computer code, encoded in said computer readable medium, configured to cause said processor to;
identify a first path, wherein said first path is between a first one of said network elements and a second one of said network elements;
identify a second path, wherein said second path is between said first one and said second one of said network elements, and said first path and said second path are disjoint;
send a packet from said first one of said network elements via said first path using a label-switching protocol; and
send a duplicate packet from said first one of said network elements via said second path using the label-switching protocol, wherein said duplicate packet is a duplicate of said packet, wherein said second one of said network elements is configured to receive at least one of said packet and said duplicate packet, wherein said second one of said network elements is further configured to discard one of said packet and said duplicate packet, if both said packet and said duplicate packet are received at said second one of said network elements, wherein said first path and said second path are node-disjoint, wherein said computer code configured to cause said processor to identify said first path and to identify said second path is further configured to cause said processor to;
store cost and topology information representing said network in a sparse matrix;
store identifiers in a heap data structure, wherein each one of said identifiers represents a corresponding one of said network elements;
identify ones of said network elements in said first path using identifiers stored in said heap data structure;
remove ones of said identifiers corresponding to said ones of said network elements in said first path from said heap data structure; and
identify ones of said network elements in said second path using identifiers still stored in said heap data structure. - View Dependent Claims (12, 13, 14, 15, 16)
-
-
17. A computer system comprising:
-
a processor, a network interface, coupled to said processor and to a network, wherein said network comprises a plurality of network elements and each one of said network elements is coupled to at least one other of said network elements by at least one of a plurality of links;
computer readable medium coupled to said processor; and
computer code, encoded in said computer readable medium, configured to cause said processor to;
identify a first path, wherein said first path is between a first one of said network elements and a second one of said network elements;
identify a second path, wherein said second path is between said first one and said second one of said network elements, and said first path and said second path are disjoint;
send a packet from said first one of said network elements via said first path using a label-switching protocol; and
send a duplicate packet from said first one of said network elements via said second path using the label-switching protocol, wherein said duplicate packet is a duplicate of said packet, wherein said second one of said network elements is configured to receive at least one of said packet and said duplicate packet, wherein said second one of said network elements is further configured to discard one of said packet and said duplicate packet, if both said packet and said duplicate packet are received at said second one of said network elements, wherein said first path and said second path are link disjoint, wherein said computer code configured to cause said processor to identify said first path and to identify said second path is further configured to cause said processor to;
store cost and topology information representing said network in a sparse matrix;
store identifiers in a heap data structure, wherein each one of said identifiers represents a corresponding one of said links;
identify ones of said links in said first path using identifiers stored in said heap data structure;
remove ones of said identifiers corresponding to said ones of said links in said first path from said heap data structure; and
identify ones of said network elements in said second path using identifiers still stored in said heap data structure. - View Dependent Claims (18, 19, 20, 21)
-
-
22. A computer program product encoded in computer readable media, said computer program product comprising:
-
a first set of instructions, executable on a computer system, configured to identify a first path, wherein said first path is between a first one of said network elements and a second one of said network elements;
a second set of instructions, executable on said computer system, configured to identify a second path, wherein said second path is between said first one and said second one of said network elements, and said first path and said second path are disjoint;
a third set of instructions, executable on said computer system, configured to send a packet from said first one of said network elements via said first path using a label-switching protocol; and
a fourth set of instructions, executable on said computer system, configured to send a duplicate packet from said first one of said network elements via said second path using a label-switching protocol, wherein said duplicate packet is a duplicate of said packet, wherein said second one of said network elements is configured to receive at least one of said packet and said duplicate packet, wherein said second one of said network elements is further configured to discard one of said packet and said duplicate packet, if both said packet and said duplicate packet are received at said second one of said network elements, wherein said first path and said second path are node-disjoint, wherein said first and said second sets of instructions each comprises;
a first sub-set of instructions, executable on said computer system, configured to store cost and topology information representing said network in a sparse matrix;
a second sub-set of instructions, executable on said computer system, configured to store identifiers in a heap data structure, wherein each one of said identifiers represents a corresponding one of said network elements;
a third sub-set of instructions, executable on said computer system, configured to identify ones of said network elements in said first path using identifiers stored in said heap data structure;
a fourth sub-set of instructions, executable on said computer system, configured to remove ones of said identifiers corresponding to said ones of said network elements in said first path from said heap data structure; and
a fifth sub-set of instructions, executable on said computer system, configured to identify ones of said network elements in said second path using identifiers still stored in said heap data structure. - View Dependent Claims (23, 24, 25)
-
-
26. A computer program product encoded in computer readable media, said computer program product comprising:
-
a first set of instructions, executable on a computer system, configured to identify a first path, wherein said first path is between a first one of said network elements and a second one of said network elements;
a second set of instructions, executable on said computer system, configured to identify a second path, wherein said second path is between said first one and said second one of said network elements, and said first path and said second path are disjoint;
a third set of instructions, executable on said computer system, configured to send a packet from said first one of said network elements via said first path using a label-switching protocol; and
a fourth set of instructions, executable on said computer system, configured to send a duplicate packet from said first one of said network elements via said second path using a label-switching protocol, wherein said duplicate packet is a duplicate of said packet, wherein said second one of said network elements is configured to receive at least one of said packet and said duplicate packet, wherein said second one of said network elements is further configured to discard one of said packet and said duplicate packet, if both said packet and said duplicate packet are received at said second one of said network elements, wherein said first path and said second path are link-disjoint, wherein said first and said second sets of instructions each comprises;
a first sub-set of instructions, executable on said computer system, configured to store cost and topology information representing said network in a sparse matrix;
a second sub-set of instructions, executable on said computer system, configured to store identifiers in a heap data structure, wherein each one of said identifiers represents a corresponding one of said links;
a third sub-set of instructions, executable on said computer system, configured to identify ones of said links in said first path using identifiers stored in said heap data structure;
a fourth sub-set of instructions, executable on said computer system, configured to remove ones of said identifiers corresponding to said ones of said links in said first path from said heap data structure; and
a fifth sub-set of instructions, executable on said computer system, configured to identify ones of said network elements in said second path using identifiers still stored in said heap data structure. - View Dependent Claims (27, 28, 29, 30, 31, 32)
-
-
33. An apparatus for providing a fault tolerant connection in a network, wherein said network comprises a plurality of network elements and each one of said network elements is coupled to at least one other of said network elements by at least one of a plurality of links, comprising:
-
means for identifying a first path, wherein said first path is between a first one of said network elements and a second one of said network elements;
means for identifying a second path, wherein said second path is between said first one and said second one of said network elements, and said first path and said second path are disjoint;
means for sending a packet from said first one of said network elements via said first path using a label-switching protocol;
means for sending a duplicate packet from said first one of said network elements via said second path using the label-switching protocol, wherein said duplicate packet is a duplicate of said packet;
means for receiving at least one of said packet and said duplicate packet at said second one of said network elements; and
means for discarding one of said packet and said duplicate packet, if both said packet and said duplicate packet are received at said second one of said network elements wherein said first path and said second path are node-disjoint, wherein said means for identifying said first path and said means for identifying said second path comprise;
means for storing cost and topology information representing said network in a sparse matrix;
means for storing identifiers in a heap data structure, wherein each one of said identifiers represents a corresponding one of said network elements;
means for identifying ones of said network elements in said first path using identifiers stored in said heap data structure;
means for removing ones of said identifiers corresponding to said ones of said network elements in said first path from said heap data structure; and
means for identifying ones of said network elements in said second path using identifiers still stored in said heap data structure. - View Dependent Claims (34, 35, 36)
-
-
37. An apparatus for providing a fault tolerant connection in a network, wherein said network comprises a plurality of network elements and each one of said network elements is coupled to at least one other of said network elements by at least one of a plurality of links, comprising:
-
means for identifying a first path, wherein said first path is between a first one of said network elements and a second one of said network elements;
means for identifying a second path, wherein said second path is between said first one and said second one of said network elements, and said first path and said second path are disjoint;
means for sending a packet from said first one of said network elements via said first path using a label-switching protocol;
means for sending a duplicate packet from said first one of said network elements via said second path using the label-switching protocol, wherein said duplicate packet is a duplicate of said packet;
means for receiving at least one of said packet and said duplicate packet at said second one of said network elements; and
means for discarding one of said packet and said duplicate packet, if both said packet and said duplicate packet are received at said second one of said network elements wherein said first path and said second path are link-disjoint, wherein said means for identifying said first path and said means for identifying said second path comprise;
means for storing cost and topology information representing said network in a sparse matrix;
means for storing identifiers in a heap data structure, wherein each one of said identifiers represents a corresponding one of said links;
means for identifying ones of said links in said first path using identifiers stored in said heap data structure;
means for removing ones of said identifiers corresponding to said ones of said links in said first path from said heap data structure; and
means for identifying ones of said network elements in said second path using identifiers still stored in said heap data structure. - View Dependent Claims (38, 39, 40, 41, 42)
-
Specification