IP Library › Granted Patent US 11,451,474
Granted Patent B2
US 11,451,474 · App. 14/603,501 · Granted Sep 20, 2022

Equal cost multi-path with bit indexed explicit replication

Inventors: Ijsbrand Wijnands (Leuven, BE); Gregory J. Shepherd (Eugene, OR); Christian J. Martin (Rumson, NJ); Rajiv Asati (Morrisville, NC)
Assignee: CISCO TECHNOLOGY, INC.
H04L45/7453H04L12/185H04L45/16H04L45/24H04L45/38H04L45/54
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,451,474
App. No.
14/603,501
Granted
Sep 20, 2022
Kind
B2
Abstract

Various systems and methods for performing bit indexed explicit replication (BIER). For example, one method involves receiving a packet at a node. The packet includes a bit string. The node selects forwarding information based on a flow value associated with the packet. The forwarding information includes a forwarding bit mask. The node then forwards the packet based on the bit string and the forwarding information.

Claims (82)

1. A method comprising:

receiving a packet at a node, wherein the packet comprises a bit string of N bits and a flow value, wherein each bit position of the bit string corresponds to a respective egress node of a network of nodes, wherein N is an integer greater than one;

selecting a first equal cost multi path (ECMP) set of bit masks from a plurality of ECMP sets of bit masks that are concurrently stored in memory of the node, wherein each ECMP set of the plurality can be used to forward a packet to one of the egress nodes through a respective neighbor node, wherein each of the ECMP sets comprises M bit masks, wherein M is an integer greater than one, wherein each of the bit masks in each of the ECMP sets comprises N bits, wherein the selecting is based on the flow value, wherein M and N are different integers;

selecting a first bit mask from the first ECMP set;

modifying the packet or a first copy of the packet to create a first modified packet, wherein modifying the packet or the first copy of the packet comprises modifying the bit string of the packet or the first copy of the packet based on the first bit mask;

forwarding the first modified packet to a first neighbor node;

selecting a second bit mask from the first ECMP set;

modifying the packet or a second copy of the packet to create a second modified packet, wherein modifying the packet or the second copy of the packet comprises modifying the bit string of the packet or the second copy of the packet based on the second bit mask;

forwarding the second modified packet to a second neighbor node;

receiving, at the node, an advertisement sent by an egress node of the network, wherein the advertisement comprises an identifier of the egress node and a bit mask bit position assigned to the egress node; and

generating or updating a bit routing table at the node, wherein the generating or updating comprises using information from the advertisement to create an entry of the bit routing table, the entry comprising the identifier of the egress node, the bit mask bit position assigned to the egress node, and an identifier of an egress interface or neighbor node via which the egress node is reachable from the node.

2. The method of claim 1 , further comprising:

determining a number of ECMP paths identified in a single set of bit masks.

3. The method of claim 2 , further comprising:

generating the plurality of ECMP sets of bit masks, wherein the generating comprises converting the single set of bit masks into the plurality of ECMP sets of bit masks.

4. The method of claim 1 , wherein the flow value was generated as a hash of a multicast address of the packet.

5. The method of claim 1 , further comprising:

generating the first bit mask using the bit routing table.

6. The method of claim 1 , wherein:

modifying the bit string of the packet or the first copy of the packet comprises logically bitwise ANDing the bit string of the packet or the first copy of the packet with the first bit mask; and

modifying the bit string of the packet or a second copy of the packet comprises logically bitwise ANDing the bit string of the packet or a second copy of the packet with the second bit mask.

7. A node comprising:

a memory for storing a plurality of sets of bit masks, wherein each set of the plurality can be used to forward a packet through a respective neighbor node towards one of a plurality of egress nodes, wherein each of the sets comprises M bit masks, wherein M is an integer greater than one, wherein each of the bit masks in each of the sets comprises N bits, wherein N is an integer greater than one, and wherein N and M are different;

a network interface configured to receive a packet, wherein the packet comprises a bit string of N bits and a flow value, wherein each bit position of the bit string corresponds to a respective egress node; and

a processor configured for:

selecting a first set of bit masks from the plurality of sets of bit masks, wherein the selecting is based on the flow value;

selecting a first bit mask from the first set;

modifying the packet or a first copy of the packet to create a first modified packet, wherein modifying the packet or the first copy of the packet comprises modifying the bit string of the packet or the first copy of the packet based on the first bit mask;

selecting a second bit mask from the first set;

modifying the packet or a second copy of the packet to create a second modified packet, wherein modifying the packet or the second copy of the packet comprises modifying the bit string of the packet or the second copy of the packet based on the second bit mask;

forwarding the first modified packet to a first neighbor node;

forwarding the second modified packet to a second neighbor node;

receiving an advertisement sent by an egress node, wherein the advertisement comprises an identifier of the egress node and a bit mask bit position assigned to the egress node; and

generating or updating a bit routing table, wherein the generating or updating comprises using information from the advertisement to create an entry of the bit routing table, the entry comprising the identifier of the egress node, the bit mask bit position assigned to the egress node, and an identifier of an egress interface or neighbor node via which the egress node is reachable from the node.

8. The node of claim 7 , wherein the processor is further configured to:

determine a number of equal cost multi-path (ECMP) paths identified in a single set of bit masks.

9. The node of claim 8 , wherein the processor is further configured for:

generating the plurality of sets of bit masks by converting the single set of bit masks into the plurality of sets of bit masks.

10. The node of claim 8 :

wherein modifying the bit string of the packet or the first copy of the packet comprises logically bitwise ANDing the bit string of the packet or the first copy of the packet with the first bit mask;

wherein modifying the bit string of the packet or a second copy of the packet comprises logically bitwise ANDing the bit string of the packet or a second copy of the packet with the second bit mask.

11. The node of claim 7 , wherein the flow value was generated by creating a hash of a multicast address.

12. The node of claim 7 , wherein the processor is further configured to:

generate one or more of the bit masks of the first set using the bit routing table.

13. A system comprising:

a node comprising:

storage means for storing a plurality of sets of masks, wherein each set of the plurality can be used to forward a packet through a respective neighbor node towards one of a plurality of egress nodes, wherein each of the sets comprises M bit masks, wherein M is an integer greater than one, wherein each of the bit masks in each of the sets comprises N bits, wherein N is an integer greater than one, and wherein M and N are different;

network interface means for receiving a packet, wherein the packet comprises a bit string of N bits and a flow value, wherein each bit position of the bit string corresponds to a respective egress node; and

processing means for:

selecting a first set of bit masks from the plurality of sets of bit masks, wherein the selecting the first set of bit masks is based on the flow value;

selecting a first bit mask from the first set;

modifying the packet or a first copy of the packet to create a first modified packet, wherein modifying the packet or the first copy of the packet comprises modifying the bit string of the packet or the first copy of the packet based on the first bit mask;

selecting a second bit mask from the first set;

modifying the packet or a second copy of the packet to create a second modified packet, wherein modifying the packet or the second copy of the packet comprises modifying the bit string of the packet or the second copy of the packet based on the second bit mask;

forwarding the first modified packet to a first neighbor node;

forwarding the second modified packet to a second neighbor node;

receiving an advertisement sent by an egress node of the network, wherein the advertisement comprises an identifier of the egress node and a bit mask bit position assigned to the egress node; and

generating or updating a bit routing table at the node, wherein the generating or updating comprises using information from the advertisement to create an entry of the bit routing table, the entry comprising the identifier of the egress node, the bit mask bit position assigned to the egress node, and an identifier of an egress interface or neighbor node via which the egress node is reachable from the node.

14. The system of claim 13 , wherein the processing means is further configured to:

determine a number of equal cost multi-path (ECMP) paths identified in a single set of bit masks.

15. The system of claim 14 , wherein the processing means is further configured for:

generating the plurality of sets of bit masks by converting the single set of bit masks into the plurality of sets of bit masks.

16. The system of claim 13 , wherein the flow value was created based on a hash of a multicast address.

17. A method comprising:

a node determining first and second shortest paths of equal length between the node and a first egress node of a network, wherein the first egress node is one of a plurality of egress nodes in the network, wherein the network comprises the node;

the node receiving a first packet, wherein the first packet comprises a first bit string of N bits and a first flow value, wherein bit positions of the first bit string correspond to the plurality of egress nodes, respectively;

the node selecting a first set of bit masks from a plurality of sets of bit masks that are concurrently stored in memory of the node, wherein each set of the plurality can be used to forward a packet through a respective neighbor node towards the first egress node, wherein each of the sets comprises M bit masks, wherein M is an integer greater than one, wherein each of the bit masks in each of the sets comprises N bits, wherein the selecting is based on the first flow value;

selecting a first bit mask from the first set;

modifying the first packet or a copy of the first packet to create a modified first packet, wherein modifying the first packet or the copy of the first packet comprises modifying the first bit string of the first packet or the copy of the first packet based on the first bit mask;

forwarding the modified first packet towards the first egress node via the first shortest path that comprises a first neighbor node;

the node receiving a second packet, wherein the second packet comprises a second bit string of N bits and a second flow value, wherein bit positions of the second bit string correspond to the plurality of egress nodes, respectively;

the node selecting a second set of bit masks from the plurality of sets of bit masks, based on the second flow value;

selecting a second bit mask from the second set;

modifying the second packet or a copy of the second packet to create a modified second packet, wherein modifying the second packet or the copy of the second packet comprises modifying the second bit string of the second packet or the copy of the second packet based on the second bit mask;

forwarding the modified second packet towards the first egress node via the second shortest path that comprises a second neighbor node;

receiving, at the node, an advertisement sent by an egress node of the network, wherein the advertisement comprises an identifier of the egress node and a bit mask bit position assigned to the egress node; and

generating or updating a bit routing table at the node, wherein the generating or updating comprises using information from the advertisement to create an entry of the bit routing table, the entry comprising the identifier of the egress node, the bit mask bit position assigned to the egress node, and an identifier of an egress interface or neighbor node via which the egress node is reachable from the node.

18. The method of claim 17 , further comprising:

determining a number of shortest paths of equal length identified in a single set of bit masks.

19. The method of claim 18 , further comprising:

generating the plurality of sets of bit masks by converting the single set of bit masks into the plurality of sets of bit masks.

20. The method of claim 17 , wherein the first flow value was generated as a hash of a multicast address of the first packet.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 5, 2015
From: WIJNANDS, IJSBRAND; SHEPHERD, GREGORY J.; MARTIN, CHRISTIAN J.; ASATI, RAJIV
To: CISCO TECHNOLOGY, INC.
Reel/Frame 034897/0001 →
Continuity (6)
Continuation In Part 14488790 · Sep 17, 2014
Continuation In Part 14488761 · Sep 17, 2014
Continuation In Part 14488810 · Sep 17, 2014
Provisional Application 61878693 · Sep 17, 2013
Provisional Application 61931473 · Jan 24, 2014
Related Publication 20150131658A1 · May 14, 2015