IP Library Granted Patent US 9,246,821
Granted Patent B1
US 9,246,821 · App. 14/166,271 · Granted Jan 26, 2016

Systems and methods for implementing weighted cost multi-path using two-level equal cost multi-path tables

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 9,246,821
App. No.
14/166,271
Granted
Jan 26, 2016
Kind
B1
Abstract

This disclosure provides systems, methods, and apparatus for providing a network switch for implementing weighted cost multi-pathing (WCMP). In some implementations, the switch can implement equal cost multi-pathing (ECMP) using ECMP forwarding tables. The ECMP forwarding table may include more than one output port associated with a destination address of an incoming packet. The ECMP forwarding table may become undesirably large if unequal weights were assigned to the output ports. A multi-level ECMP table can be implemented that can allow assigning weights to the output ports while being relatively small. The multi-level ECMP table can include a first level where each entry includes at most a single output port. A second level can include entries having one or more output ports.

Claims (38)

1. A method for generating a forwarding table for a packet switch, comprising:

receiving identities of a plurality of switch output ports associated with at least one destination network address;

receiving weights associated with each of the plurality of switch output ports; and

generating a multi-level equal cost multipath (ECMP) forwarding table based on the number of the plurality of switch output ports and the received weights,

wherein a first level of the multi-level ECMP forwarding table includes:

at least one entry including the identity of only one of the plurality of switch output ports, and

at least one entry including a pointer to an entry in a second level of the multi-level ECMP forwarding table, wherein the entry in the second level includes identities of at least two switch output ports.

2. The method of claim 1 , wherein generating the multi-level ECMP forwarding table includes generating the second level of the multi-level ECMP forwarding table having more than one of the plurality of switch output ports in at least one of its entries.

3. The method of claim 2 , wherein the generating the second level of the multi-level ECMP forwarding table includes storing the second level in a trunk table of a switch.

4. The method of claim 2 , wherein generating the first level of the multi-level ECMP forwarding table includes:

summing the weights associated with each of the plurality of switch output ports to determine a total number of traffic units;

determining a pair of integers a and b such that a times b equals the total number of traffic units; and

equating a number of entries of the first level of the multi-level ECMP table to integer b.

5. The method of claim 4 , wherein generating the first level of the multi-level ECMP forwarding table further includes:

determining the number of entries allocated to each of the plurality of switch output ports by determining a floor of a ratio of the total number of traffic units to the integer a.

6. The method of claim 4 , wherein generating the second level of multi-level ECMP forwarding table entries includes:

determining a remaining number of traffic units associated with each of the plurality of switch output ports by determining a remainder of a division of the weight associated with the respective switch output port by the integer a; and

determining a number of entries in the second level of the ECMP table and the number of switch output ports identified in each of the number of entries in the second level of the ECMP table based on the integer b, the number of entries in the first level of the ECMP table, and the remaining number of traffic units associated with each of the plurality of switch output ports.

7. A packet network switch comprising:

a plurality of network ports configured to communicate data over one or more networks;

a switch matrix coupled to the plurality of network ports and configured to selectively couple any one of the plurality of network ports to another one of the plurality of network ports; and

a forwarding table generating module configured to:

receive identities of the plurality of network ports associated with at least one destination network address;

receive weights associated with each of the plurality of network ports; and

generate a multi-level ECMP forwarding table based on the number of the plurality of network ports and the received weights,

wherein a first level of the multi-level ECMP forwarding table includes:

at least one entry including the identity of only one of the plurality of network ports, and

at least one entry including a pointer to an entry in a second level of the multi-level ECMP forwarding table, wherein the entry in the second level includes identities of at least two network ports.

8. The packet network switch of claim 7 , wherein the second level of the multi-level ECMP forwarding table includes more than one of the plurality of network ports in at least one or its entries.

9. The packet network switch of claim 8 , wherein the forwarding table generating module is further configured to store the second level of the multi-level ECMP forwarding table in a trunk table of the packet network switch.

10. The packet network switch of claim 8 , wherein the forwarding table generating module is further configured to:

sum the weights associated with each of the plurality of network ports to determine a total number of traffic units;

determine a pair of integers a and b such that a times b equals the total number or traffic units; and

equating a number of entries of the first level of the multi-level ECMP table to integer b.

11. The packet network switch of claim 10 , wherein the forwarding table generating module is further configured to determine the number of entries allocated to each of the plurality of network ports by determining a floor of a ratio of the total number of traffic units to the integer a.

12. The packet network switch of claim 10 , wherein the forwarding table generating module is further configured to:

determine a remaining number of traffic units associated with each of the plurality of network ports by determining a remainder of a division of the weight associated with the respective network port by the integer a; and

determine a number of entries in the second level of the ECMP table and the number of network ports identified in each of the number of entries in the second level of the ECMP table based on the integer b, the number of entries in the first level of the ECMP table, and the remaining number of traffic units associated with each of the plurality of network ports.

Assignments (2)
CHANGE OF NAME Recorded Oct 2, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044566/0657 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 16, 2015
From: LI, JIANGBO; LI, QINGXI; YE, FEI; LIN, VICTOR
To: GOOGLE INC.
Reel/Frame 034737/0157 →