US 12,218,846 B2
System and method for multi-path load balancing in network fabrics
Mohammadreza Alizadeh Attar, Santa Clara, CA (US); Thomas J. Edsall, Los Gatos, CA (US); Sarang M. Dharmapurikar, Cupertino, CA (US); and Janakiramanan Vaidyanathan, San Ramon, CA (US)
Assigned to Cisco Technology, Inc., San Jose, CA (US)
Filed by Cisco Technology, Inc., San Jose, CA (US)
Filed on Jan. 19, 2024, as Appl. No. 18/418,169.
Application 18/418,169 is a continuation of application No. 18/059,713, filed on Nov. 29, 2022, granted, now 11,888,746.
Application 18/059,713 is a continuation of application No. 17/007,526, filed on Aug. 31, 2020, granted, now 11,528,228, issued on Dec. 13, 2022.
Application 17/007,526 is a continuation of application No. 14/308,464, filed on Jun. 18, 2014, granted, now 10,778,584, issued on Sep. 15, 2020.
Claims priority of provisional application 61/900,302, filed on Nov. 5, 2013.
Prior Publication US 2024/0163216 A1, May 16, 2024
Int. Cl. H04L 47/125 (2022.01); H04L 45/00 (2022.01)
CPC H04L 47/125 (2013.01) [H04L 45/38 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A method comprising:
transmitting, from a first network device, packets on a plurality of paths to a second network device, wherein each path corresponds to a at least one of an uplink of a plurality of uplinks of the first network device;
receiving, from the second network device, feedback data indicating a performance of each path of the plurality of paths between the first and second network devices based on the packets transmitted by the first network device;
maintaining, for each path of the plurality of paths and based on the feedback data, one or more performance metrics characterizing the performance of the path experienced by the packets sent on a corresponding uplink of the first network device;
receiving, at the first network device, one or more additional packets of a flow from a source end device to a destination end device, wherein the destination end device is reachable through the second network device, wherein the one or more additional packets of the flow are received subsequent to one or more previously received packets of the flow, and wherein the first network device selected a previously selected path for the flow in connection with previously received packets of the flow;
selecting, for the one or more additional packets of the flow, a path from the plurality of paths to the second network device based at least in part on the performance metrics of the paths,
wherein the selected path is the previously selected path for the flow when the performance metric of the previously selected path satisfies a minimum performance threshold, and wherein the selected is a different path from the previously selected path if the previously selected path fails to satisfy the minimum performance threshold;
encapsulating the one or more additional packets of the flow with a tunnel header, wherein the tunnel header includes data for determining the performance of the selected path; and
transmitting the one or more encapsulated additional packets to the second network device via the uplink corresponding to the selected path.