IP Library Granted Patent US 12,341,671
Granted Patent B2
US 12,341,671 · App. 18/335,658 · Granted Jun 24, 2025

Generating network flow profiles for computing entities

Inventors: Rohan Gandhi (Pune, IN); AVinash Nigam (Guwahati, IN); Madan Singhal (Pune, IN)
Assignee: VMware LLC
H04L43/065H04L43/026H04L43/04H04L43/062H04L43/0876H04L43/20
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 12,341,671
App. No.
18/335,658
Granted
Jun 24, 2025
Kind
B2
Abstract

A method for creating a flow profile is provided. The method identifies a first plurality of flow measurements, each of which corresponding to one of a plurality of flows exchanged between a computing entity and a service during a first time period. The method, for each of a first plurality of buckets each of which has a pair of lower and upper bounds, increments a counter of the corresponding bucket for each of the plurality of flow measurements that falls within the pair of bounds of that bucket. The method generates a second plurality of buckets by merging and splitting at least some of the first plurality of buckets, identifies a second plurality of flow measurements for the computing entity during a second time period, and distributes these measurements into the second plurality of buckets. The method generate the flow profile by aggregating the first and second pluralities of buckets.

Claims (63)

1. A method for migration of a flow profile of a computing entity, comprising:

receiving, at a first host, a first flow profile of the computing entity, the first flow profile based on first one or more flow measurement values for first one or more flows exchanged between the computing entity and a service while the computing entity is running on a second host;

receiving, at the first host, the computing entity migrated from the second host;

utilizing, at the first host, the first flow profile to reduce a flow rate for at least one of a second one or more flows;

identifying, at the first host, second one or more flow measurement values for the second one or more flows exchanged between the computing entity and the service while the computing entity is running on the first host; and

updating the first flow profile based on the second one or more flow measurement values.

2. The method of claim 1 , wherein the second one or more flows each comprises a set of packets transmitted between the computing entity and another computing entity.

3. The method of claim 1 , further comprising:

receiving, at the first host, a second flow profile of a second computing entity;

configuring, at the first host, a third computing entity; and

utilizing, at the first host, the second flow profile to control flow rate of at least one flow between the third computing entity and the service.

4. The method of claim 1 , further comprising:

obtaining the first flow profile at a controller associated with a plurality of hosts including the first host and the second host; and

selecting, by the controller, based on the first flow profile, the first host for migration of the computing entity from the second host.

5. The method of claim 1 , wherein each of the first one or more flow measurement values comprises one of a flow size, burst size of a flow, packet arrival rate of a flow, or packet arrival intervals associated with a flow.

6. The method of claim 1 , wherein updating the first flow profile based on the second one or more flow measurement values comprises:

for each of a first plurality of buckets, each of which has a lower bound value and an upper bound value, incrementing a counter of the corresponding bucket for each of the first one or more flow measurement values that is between the lower bound value and the upper bound value of the corresponding bucket;

for each of a second plurality of buckets, incrementing a counter of the corresponding bucket for each of the second one or more flow measurement values that is between the lower bound value and the upper bound value of the corresponding bucket; and

updating the first flow profile by aggregating the first plurality of buckets with the second plurality of buckets.

7. The method of claim 6 , further comprising:

generating the second plurality of buckets from the first plurality of buckets by:

merging a first bucket and second bucket of the first plurality of buckets into a single bucket by: setting a lower bound value of the single bucket to the lower bound value of the first bucket and by setting an upper bound value of the single bucket to the upper bound value of the second bucket; and

splitting a third bucket of the first plurality of buckets into a fourth bucket and a fifth bucket by: setting a lower bound value of the fourth bucket to the lower bound value of the third bucket, setting an upper bound value of the fourth bucket to a first value between the lower bound value and the upper bound value of the third bucket, setting a lower bound value of the fifth bucket to a second value between the lower bound value and the upper bound value of the third bucket, and setting an upper bound value of the fifth bucket to the upper bound value of the third bucket.

8. The method of claim 1 , wherein the computing entity comprises one of a virtual computing instance (VCI), a physical computing device, or a plurality of VCIs.

9. A non-transitory computer readable medium comprising instructions that, when executed by one or more processors of a computing system, cause the computing system to perform a method for migration of a flow profile of a computing entity, the method comprising:

receiving, at a first host, a first flow profile of the computing entity, the first flow profile based on first one or more flow measurement values for first one or more flows exchanged between the computing entity and a service while the computing entity is running on a second host;

receiving, at the first host, the computing entity migrated from the second host;

utilizing, at the first host, the first flow profile to reduce a flow rate for at least one of a second one or more flows;

identifying, at the first host, second one or more flow measurement values for the second one or more flows exchanged between the computing entity and the service while the computing entity is running on the first host; and

updating the first flow profile based on the second one or more flow measurement values.

10. The non-transitory computer readable medium of claim 9 , wherein each of the second one or more flows comprises a set of packets transmitted between the computing entity and another computing entity.

11. The non-transitory computer readable medium of claim 9 , the method further comprising:

receiving, at the first host, a second flow profile of a second computing entity;

configuring, at the first host, a third computing entity; and

utilizing, at the first host, the second flow profile to control flow rate of at least one flow between the third computing entity and the service.

12. The non-transitory computer readable medium of claim 9 , the method further comprising:

obtaining the first flow profile at a controller associated with a plurality of hosts including the first host and the second host; and

selecting, by the controller, based on the first flow profile, the first host for migration of the computing entity from the second host.

13. The non-transitory computer readable medium of claim 9 , wherein each of the first one or more flow measurement values comprises one of a flow size, burst size of a flow, packet arrival rate of a flow, or packet arrival intervals associated with a flow.

14. The non-transitory computer readable medium of claim 9 , wherein updating the first flow profile based on the second one or more flow measurement values comprises:

for each of a first plurality of buckets, each of which has a lower bound value and an upper bound value, incrementing a counter of the corresponding bucket for each of the first one or more flow measurement values that is between the lower bound value and the upper bound value of the corresponding bucket;

for each of a second plurality of buckets, incrementing a counter of the corresponding bucket for each of the second one or more flow measurement values that is between the lower bound value and the upper bound value of the corresponding bucket; and

updating the first flow profile by aggregating the first plurality of buckets with the second plurality of buckets.

15. The non-transitory computer readable medium of claim 14 , the method further comprising: generating the second plurality of buckets from the first plurality of buckets by:

merging a first bucket and second bucket of the first plurality of buckets into a single bucket by: setting a lower bound value of the single bucket to the lower bound value of the first bucket and by setting an upper bound value of the single bucket to the upper bound value of the second bucket; and

splitting a third bucket of the first plurality of buckets into a fourth bucket and a fifth bucket by: setting a lower bound value of the fourth bucket to the lower bound value of the third bucket, setting an upper bound value of the fourth bucket to a first value between the lower bound value and the upper bound value of the third bucket, setting a lower bound value of the fifth bucket to a second value between the lower bound value and the upper bound value of the third bucket, and setting an upper bound value of the fifth bucket to the upper bound value of the third bucket.

16. The non-transitory computer readable medium of claim 9 , wherein the computing entity comprises one of a virtual computing instance (VCI), a physical computing device, or a plurality of VCIs.

17. A computer system, comprising:

a memory comprising instructions; and

at least one processors coupled to the memory and configured to execute the instructions and cause the computer system to perform a method for migration of a flow profile of a computing entity, the method comprising:

receiving, at a first host, a first flow profile of the computing entity, the first flow profile based on first one or more flow measurement values for first one or more flows exchanged between the computing entity and a service while the computing entity is running on a second host;

receiving, at the first host, the computing entity migrated from the second host;

utilizing, at the first host, the first flow profile to reduce a flow rate for at least one of a second one or more flows;

identifying, at the first host, second one or more flow measurement values for the second one or more flows exchanged between the computing entity and the service while the computing entity is running on the first host; and

updating the first flow profile based on the second one or more flow measurement values.

18. The computer system of claim 17 , wherein the second one or more flows each comprises a set of packets transmitted between the computing entity and another computing entity.

19. The computer system of claim 17 , the method further comprising:

receiving, at the first host, a second flow profile of a second computing entity;

configuring, at the first host, a third computing entity; and

utilizing, at the first host, the second flow profile to control flow rate of at least one flow between the third computing entity and the service.

20. The computer system of claim 17 , the method further comprising:

obtaining the first flow profile at a controller associated with a plurality of hosts including the first host and the second host; and

selecting, by the controller, based on the first flow profile, the first host for migration of the computing entity from the second host.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067103/0030 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 15, 2023
From: GANDHI, ROHAN; NIGAM, AVINASH; SINGHAL, MADAN
To: VMWARE, INC.
Reel/Frame 063965/0887 →
Priority Claims (1)
IN 202041049307 · Nov 11, 2020 · national
Continuity (3)
Continuation 17452936 · Oct 29, 2021
Continuation 17172101 · Feb 10, 2021
Related Publication 20230327967A1 · Oct 12, 2023
References Cited (63)
US 5029164A · Goldstein et al. · 1991 [cited by applicant]
US 6262976B1 · McNamara · 2001 [cited by applicant]
US 7161902B2 · Carter et al. · 2007 [cited by applicant]
US 9866441B2 · Day · 2018 [cited by applicant]
US 10320681B2 · Hira et al. · 2019 [cited by applicant]
US 10447544B2 · Day · 2019 [cited by applicant]
US 11036538B2 · Lecuyer · 2021 [cited by examiner]
US 11165676B1 · Gandhi · 2021 [cited by examiner]
US 11533265B2 · Gandhi · 2022 [cited by examiner]
US 11711307B2 · Pallagatti Kotrabasappa · 2023 [cited by examiner]
US 11843543B2 · Gandhi · 2023 [cited by examiner]
US 12170622B2 · Pallagatti Kotrabasappa · 2024 [cited by examiner]
US 20030069970A1 · Kim et al. · 2003 [cited by applicant]
US 20030193893A1 · Wen et al. · 2003 [cited by applicant]
US 20040064557A1 · Karnik et al. · 2004 [cited by applicant]
US 20120075996A1 · Wan William Lau et al. · 2012 [cited by applicant]
US 20120304175A1 · Damola · 2012 [cited by examiner]
US 20130215743A1 · Pannell · 2013 [cited by applicant]
US 20140078903A1 · Edsall · 2014 [cited by examiner]
US 20140108854A1 · Antony · 2014 [cited by examiner]
US 20150039764A1 · Beloglazov · 2015 [cited by examiner]
US 20150055474A1 · Eyada · 2015 [cited by examiner]
US 20150138970A1 · Tabatabaee et al. · 2015 [cited by applicant]
US 20150180780A1 · Froese et al. · 2015 [cited by applicant]
US 20150281100A1 · Kurita · 2015 [cited by applicant]
US 20160094450A1 · Ghanwani et al. · 2016 [cited by applicant]
US 20160134161A1 · Hui et al. · 2016 [cited by applicant]
US 20160164791A1 · Zahemszky et al. · 2016 [cited by applicant]
US 20160188378A1 · Chao et al. · 2016 [cited by applicant]
US 20170026283A1 · Williams et al. · 2017 [cited by applicant]
US 20170295101A1 · Hira et al. · 2017 [cited by applicant]
US 20180115472A1 · Chen et al. · 2018 [cited by applicant]
US 20180316571A1 · Andrade et al. · 2018 [cited by applicant]
US 20180349166A1 · Movsisyan et al. · 2018 [cited by applicant]
US 20190288948A1 · Hira et al. · 2019 [cited by applicant]
US 20200026538A1 · Cui et al. · 2020 [cited by applicant]
US 20200106671A1 · Goel et al. · 2020 [cited by applicant]
US 20200159726A1 · Miller et al. · 2020 [cited by applicant]
US 20220141139A1 · Wong · 2022 [cited by examiner]
Traffic-sensitive Live Migration of Virtual Machines (Year: 2017). [cited by examiner]
Virtual Machine Migration Planning in Software-Defined Networks (Year: 2019). [cited by examiner]
Alizadeh, M. et al., “CONGA: Distributed Congestion-Aware Load Balancing for Datacenters,” in SIGCOMM 2014. [cited by applicant]
Brakmo, L S_ et al., “TCP Vegas: End to End Congestion Avoidance on a Global Internet,” IEEE J.Sel_ A. Commun., 2006. [cited by applicant]
“Broadcom buffer statistics tracking,” https://people.ucsc.edu/_warner/Bufs/queue-monitor.html. [cited by applicant]
“Broadcom memory and bandwidth growth,” https://www.linkedin.com/pulse/comparing-broadcom-silicons-used-datacenter-switches-reza-toghraee. [cited by applicant]
Cardwell, N. et al., “BBR: Congestion-Based Congestion Control,” Queue, 2016. [cited by applicant]
Chekuri, C. et al., “On Multi-dimensional Packing Problems,” in SODA, 1999. [cited by applicant]
Fall, K. et al., “Comparisons of Tahoe, Reno and Sack TCP,” ACM SIGCOMM CCR, 1996. [cited by applicant]
Guo, C. et al., “SecondNet: A Data Center Network Virtualization Architecture with Bandwidth Guarantees,” in ACM CoNEXT, 2010. [cited by applicant]
He, K. et al., “AC/DC TCP: Virtual Congestion Control Enforcement for Datacenter Networks,” in ACM SIGCOMM, 2016. [cited by applicant]
Jacobson, V., “Congestion Avoidance and Control,” ACM SIGCOMM CCR, 1988. [cited by applicant]
Jang, K. et al., “Silo: Predictable Message Latency in the Cloud,” 2015. [cited by applicant]
Katta, N. et al., “CLOVE: How I Learned to Stop Worrying About the Core and Love the Edge,” in ACM HotNets, 2016. [cited by applicant]
Kumar, A. et al., “BwE: Flexible, Hierarchical Bandwidth Allocation for WAN Distributed Computing,” in ACM SIGCOMM, 2015. [cited by applicant]
Mitt Al, R et al., “TIMELY: RTT-based Congestion Control for the Datacenter,” in ACM SIGCOMM, 2015. [cited by applicant]
Radhakrishnan, S. et al., “SENIC: Scalable NIC for End-Host Rate Limiting,” in USENIX NSDI, 2014. [cited by applicant]
Roy, A. et al., “Inside the Social Network's {Datacenter) Network,” in SIGCOMM, 2015. [cited by applicant]
Saeed, A. et al., “Carousel: Scalable Traffic Shaping at End Hosts,” in ACM SIGCOMM, 2017. [cited by applicant]
Shieh, A. et al., “Sharing the Data Center Network.” in Usenix NSDI, 2011. [cited by applicant]
“TCP Burst Attack,” https://blog.radware.com/security/2018/02/burst-attack-protection/. [cited by applicant]
“TCP INCAST,” https://www.pdl.cmu.edu/Incast/. [cited by applicant]
Zhang, Q. et al., “High-Resolution Measurement of Data Center Microbursts,” in ACM IMC, 2017. [cited by applicant]
Zhu, Y. et al., “ECN or Delay: Lessons Learnt from Analysis of DCQCN and TIMELY,” in ACM CoNEXT, 2016. [cited by applicant]