US 11,983,577 B2
Monitoring and optimizing interhost network traffic
Xin Qi, Redmond, WA (US); Fenil Kavathia, Sunnyvale, CA (US); Chidambareswaran Raman, Sunnyvale, CA (US); Shadab Shah, Sunnyvale, CA (US); Raju Koganty, San Jose, CA (US); and Jingmin Zhou, Los Gatos, CA (US)
Assigned to Nicira, Inc., Palo Alto, CA (US)
Filed by Nicira, Inc., Palo Alto, CA (US)
Filed on Feb. 6, 2023, as Appl. No. 18/106,168.
Application 18/106,168 is a continuation of application No. 16/935,179, filed on Jul. 21, 2020, granted, now 11,573,840.
Application 16/935,179 is a continuation of application No. 15/796,245, filed on Oct. 27, 2017, granted, now 10,725,833, issued on Jul. 28, 2020.
Claims priority of provisional application 62/414,430, filed on Oct. 28, 2016.
Prior Publication US 2023/0185630 A1, Jun. 15, 2023
Int. Cl. G06F 9/50 (2006.01); G06F 9/455 (2018.01); H04L 41/0893 (2022.01); H04L 41/0896 (2022.01); H04L 41/12 (2022.01); H04L 43/026 (2022.01); H04L 43/0876 (2022.01); H04L 43/16 (2022.01); H04L 43/065 (2022.01)
CPC G06F 9/5077 (2013.01) [G06F 9/45558 (2013.01); G06F 9/505 (2013.01); H04L 41/0893 (2013.01); H04L 41/0896 (2013.01); H04L 41/12 (2013.01); H04L 43/026 (2013.01); H04L 43/0876 (2013.01); H04L 43/16 (2013.01); G06F 2009/4557 (2013.01); H04L 43/065 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A method for clustering a first plurality of machines that execute on a larger first plurality of host computers to execute on a smaller second plurality of host computers, the method comprising:
defining a graph that comprises (i) a plurality of nodes each of which represents a machine, (ii) a plurality of edges each of which is between a respective pair of nodes and represents communication between the respective pair of machines represented by the pair of nodes, and (iii) a plurality of weights each of which is associated with a respective edge and represents an amount of communication between the respective pair of machines represented by the respective pair of nodes connected by the respective edge;
initializing a plurality of machine groups to include one machine group for each machine in the first plurality of machines;
sorting the edges using a data structure that arranges the edges based on the edge weights such that an edge with a largest edge weight representing a largest amount of communication between a pair of machines is a first edge in the data structure;
iteratively (i) selecting an edge based on the sorted edges in the data structure, (ii) merging a respective pair of machine groups to which the respective pair of machines associated with the selected edge belong, and (iii) resorting the edges by rearranging the data structure, until a number of groups equals a number of host computers in the second plurality of host computers.