IP Library Granted Patent US 11,573,840
Granted Patent B2
US 11,573,840 · App. 16/935,179 · Granted Feb 7, 2023

Monitoring and optimizing interhost network traffic

Inventors: Xin Qi (Redmond, WA); Fenil Kavathia (Sunnyvale, CA); Chidambareswaran Raman (Sunnyvale, CA); Shadab Shah (Sunnyvale, CA); Raju Koganty (San Jose, CA); Jingmin Zhou (Los Gatos, CA)
Assignee: NICIRA, INC.
G06F9/5077G06F9/45558G06F9/505H04L41/0893H04L41/0896H04L41/12H04L43/026H04L43/0876H04L43/16G06F2009/4557H04L43/065
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,573,840
App. No.
16/935,179
Granted
Feb 7, 2023
Kind
B2
Abstract

Some embodiments provide a method for clustering a set of data compute nodes (DCNs), which communicate with each other more frequently, on one or more host machines. The method groups together guest DCNs (GDCNs) that (1) execute on different host machines and (2) exchange network data among themselves more frequently, in order to reduce interhost network traffic. The more frequently-communicating GDCNs can be a set of GDCNs that implement a distributed application, GDCNs of a particular tier in a multi-tier network architecture (e.g., a web tier in a three-tier architecture), GDCNs that are dedicated to a particular tenant in a hosting system, or any other set of GDCNs that exchange data among each other regularly for a particular purpose.

Claims (25)

1. A method for clustering frequently communicating machines, the method comprising:

on a particular host computer and outside of a plurality of machines executing on the particular host computer:

identifying a plurality of data messages as the data messages traverse along a set of datapaths to or from the plurality of machines executing on the particular host computer;

at a first module executing on the particular host computer outside of the plurality of machines, collecting statistics regarding the data messages exchanged between each machine in the plurality of machines executing on the particular host computer and other machines executing on other host computers, and storing the collected statistics in a local data storage of the particular host computer; and

at a second module executing on the particular host computer outside of the plurality of machines, retrieving the stored statistics from the local data storage and providing the collected statistics to a controller to determine whether to move any particular machine on the particular host computer or one or more machines executing on other host computers and exchanging data messages with the particular machine to execute on a set of physical proximate host computers.

2. The method of claim 1 , wherein the first module is part of a hypervisor executing on the particular host computer and the second module is a service virtual machine (SVM) executing on the particular host computer.

3. The method of claim 1 , wherein collecting statistics comprises collecting metadata that identifies sources and destinations of each data message.

4. The method of claim 1 , wherein providing the collected statistics comprises providing the collected statistics to the controller in response to a request from the controller.

5. The method of claim 1 , wherein providing the collected statistics comprises providing the collected statistics to the controller when the collected statistics exceeds a threshold value.

6. The method of claim 5 , wherein the threshold value is a threshold value for the particular machine in the plurality of machines.

7. The method of claim 1 , wherein the first module operates in a kernel space of the particular host computer while the second module operates in a user space of the particular host computer.

8. The method of claim 7 , wherein the second module is a service virtual machine.

9. The method of claim 1 , wherein the particular host computer is one computer for one cluster of machines, while the set of physical proximate host computers includes more than one computer for another cluster of machines.

10. A non-transitory machine readable medium storing a program which when executed by at least one processing unit clusters frequently communicating machines, the program comprising sets of instructions for:

identifying a plurality of data messages as the data messages traverse along a set of datapaths to or from the plurality of machines executing on the particular host computer;

at a first module executing on the particular host computer outside of the plurality of machines, collecting statistics regarding the data messages exchanged between each machine in the plurality of machines executing on the particular host computer and other machines executing on other host computers, and storing the collected statistics in a local data storage of the particular host computer; and

at a second module executing on the particular host computer outside of the plurality of machines, retrieving the stored statistics from the local data storage and providing the collected statistics to a controller to determine whether to move any particular machine on the particular host computer or one or more machines executing on other host computers and exchanging data messages with the particular machine to execute on a set of physical proximate host computers.

11. The non-transitory machine readable medium of claim 10 , wherein the first module is part of a hypervisor executing on the particular host computer and the second module is a service virtual machine (SVM) executing on the particular host computer.

12. The non-transitory machine readable medium of claim 10 , wherein the set of instructions for collecting statistics comprises a set of instructions for collecting metadata that identifies sources and destinations of each data message.

13. The non-transitory machine readable medium of claim 10 , wherein the set of instructions for providing the collected statistics comprises a set of instructions for providing the collected statistics to the controller in response to a request from the controller.

14. The non-transitory machine readable medium of claim 10 , wherein the set of instructions for providing the collected statistics comprises a set of instructions for providing the collected statistics to the controller when the collected statistics exceeds a threshold value.

15. The non-transitory machine readable medium of claim 14 , wherein the threshold value is a threshold value for the particular machine in the plurality of machines.

16. The non-transitory machine readable medium of claim 10 , wherein the first module operates in a kernel space of the particular host computer while the second module operates in a user space of the particular host computer.

17. The non-transitory machine readable medium of claim 16 , wherein the second module is a service virtual machine.

18. The non-transitory machine readable medium of claim 10 , wherein the particular host computer is one computer for one cluster of machines, while the set of physical proximate host computers includes more than one computer for another cluster of machines.

Assignments (1)
MERGER Recorded Jan 27, 2025
From: NICIRA, INC.
To: VMWARE LLC
Reel/Frame 070187/0487 →
Continuity (3)
Continuation 15796245 · Oct 27, 2017
Provisional Application 62414430 · Oct 28, 2016
Related Publication 20200348983A1 · Nov 5, 2020