IP Library Granted Patent US 12,277,436
Granted Patent B2
US 12,277,436 · App. 18/316,209 · Granted Apr 15, 2025

Integrating virtualization and host networking

Inventors: Junfei Wu (Beijing, CN); Yan Wang (Beijing, CN); Haitao Zuo (Beijing, CN)
Assignee: VMware LLC
G06F9/45558G06F2009/45595
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,277,436
App. No.
18/316,209
Granted
Apr 15, 2025
Kind
B2
Abstract

The disclosure provides for integrating virtual machine (VM) and host networking, forwarding port data and occupation status to host and VM endpoints. Examples synchronize, by a host agent, port reservations with a guest agent on a first VM on the host; receive an indication that a VM port on the first VM is occupied; based at least on receiving the indication that the VM port is occupied, update the port reservations to include that a host port corresponding to the VM port is occupied; receive incoming external traffic on the host port; and based at least on the port reservations and receiving the incoming external traffic on the host port, route the incoming external traffic to the VM port on the first VM. VM-based application behavior thus appears more similar to that of native applications.

Claims (61)

1. A method of integrating virtual machine (VM) and host networking, the method comprising:

receiving an indication that a first VM port on a first VM is occupied;

based at least on receiving the indication that the first VM port on the first VM is occupied, updating port reservations to indicate that a first host port corresponding to the first VM port on the first VM is occupied;

synchronizing, by a host agent on a host, the port reservations with a second VM that is running on the host;

receiving incoming external traffic on the first host port;

based at least on the port reservations and receiving the incoming external traffic on the first host port, routing the incoming external traffic to the first VM port on the first VM; and

while the first host port remains occupied, blocking the second VM from occupying a second VM port corresponding to the first host port.

2. The method of claim 1 , wherein the first host port has a same port number value as the first VM port.

3. The method of claim 1 , wherein the first host port corresponding to the first VM port on the first VM is occupied by a first application executing on the first VM, the method further comprising:

while the first host port remains occupied, blocking other applications on the first VM from occupying the first host port corresponding to the first VM port.

4. The method of claim 1 , further comprising while the first host port remains occupied, blocking an application on the host or the second VM from occupying the first host port corresponding to the first VM port.

5. The method of claim 1 , wherein the first VM has a first application and the second VM has a second application, the method further comprising:

sending, by the second application, internal traffic to the first application using the first VM port; and

based at least on the port reservations and receiving the internal traffic on the second VM port, routing the internal traffic to the first VM port on the first VM.

6. The method of claim 1 , further comprising:

upon synchronizing the port reservations:

updating, by the host agent on the host, a host network address translation (NAT) on the host;

updating, by a first guest agent on the first VM, a first NAT component on the first VM; and

updating, by a second guest agent on the second VM, a second NAT component on the second VM.

7. The method of claim 1 , further comprising:

adding, by the host agent, port forwarding rules which identify where to route traffic, the port forwarding rules being used by each of the host, the first VM, and the second VM.

8. A computer system for integrating virtual machine (VM) and host networking, the computer system comprising:

a processor; and

a non-transitory computer readable medium having stored thereon program code for transferring data to another computer system, the program code causing the processor to:

receive an indication that a first VM port on a first VM is occupied;

based at least on receiving the indication that the first VM port on the first VM is occupied, update port reservations to indicate that a first host port corresponding to the first VM port on the first VM is occupied;

synchronize, by a host agent on a host, the port reservations with a second VM that is running on the host;

receive incoming external traffic on the first host port;

based at least on the port reservations and receiving the incoming external traffic on the first host port, route the incoming external traffic to the first VM port on the first VM; and

while the first host port remains occupied, block the second VM from occupying a second VM port corresponding to the first host port.

9. The computer system of claim 8 , wherein the first host port has a same port number value as the first VM port.

10. The computer system of claim 8 , wherein the first host port corresponding to the first VM port on the first VM is occupied by a first application executing on the first VM, wherein the program code is further operative to:

while the first host port remains occupied, block other applications on the first VM from occupying the first host port corresponding to the first VM port.

11. The computer system of claim 8 , wherein the program code is further operative to:

while the first host port remains occupied, block an application on the host or the second VM from occupying the first host port corresponding to the first VM port.

12. The computer system of claim 8 , wherein the first VM has a first application and the second VM has a second application, wherein the program code is further operative to:

send, by the second application, internal traffic to the first application using the first VM port; and

based at least on the port reservations and receiving the internal traffic on the second VM port, route the internal traffic to the first VM port on the first VM.

13. The computer system of claim 8 , wherein the program code is further operative to:

upon synchronizing the port reservations:

update, by the host agent on the host, a host network address translation (NAT) on the host;

update, by a first guest agent on the first VM, a first NAT component on the first VM; and

update, by a second guest agent on the second VM, a second NAT component on the second VM.

14. The computer system of claim 8 , wherein the program code is further operative to:

add, by the host agent, port forwarding rules which identify where to route traffic, the port forwarding rules being used by each of the host, the first VM, and the second VM.

15. A non-transitory computer storage medium having stored thereon program code executable by a first computer system, the program code embodying a method comprising:

receiving an indication that a first VM port on a first VM is occupied;

based at least on receiving the indication that the first VM port on the first VM is occupied, updating port reservations to indicate that a first host corresponding to the first VM port on the first VM is occupied;

synchronizing, by a host agent on a host, the port reservations with a second VM that is running on the host;

receiving incoming external traffic on the first host port;

based at least on the port reservations and receiving the incoming external traffic on the first host port, routing the incoming external traffic to the first VM port on the first VM; and

while the first host port remains occupied, blocking the second VM from occupying a second VM port corresponding to the first host port.

16. The non-transitory computer storage medium of claim 15 , wherein the first host port has a same port number value as the first VM port.

17. The non-transitory computer storage medium of claim 15 , wherein the first host port corresponding to the first VM port on the first VM is occupied by a first application executing on the first VM, the method further comprising:

while the first host port remains occupied, blocking other applications on the first VM from occupying the first host port corresponding to the first VM port.

18. The non-transitory computer storage medium of claim 15 , the method further comprising while the first host port remains occupied, blocking an application on the host or the second VM from occupying the first host port corresponding to the first VM port.

19. The non-transitory computer storage medium of claim 15 , wherein the first VM has a first application and the second VM has a second application, the method further comprising:

sending, by the second application, internal traffic to the first application using the first VM port; and

based at least on the port reservations and receiving the internal traffic on the second VM port, routing the internal traffic to the first VM port on the first VM.

20. The non-transitory computer storage medium of claim 15 , the method further comprising:

adding, by the host agent, port forwarding rules which identify where to route traffic, the port forwarding rules being used by each of the host, the first VM, and the second VM.

Assignments (1)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0242 →
Continuity (3)
Continuation 16815162 · Mar 11, 2020
Continuation PCTCN2020072490 · Jan 16, 2020
Related Publication 20230281033A1 · Sep 7, 2023
References Cited (18)
US 8560707B2 · Jacob et al. · 2013 [cited by applicant]
US 11681542B2 · Wu · 2023 [cited by examiner]
US 20080034167A1 · Sharma · 2008 [cited by examiner]
US 20090292858A1 · Lambeth et al. · 2009 [cited by applicant]
US 20130148511A1 · Banga et al. · 2013 [cited by applicant]
US 20130174150A1 · Nakajima et al. · 2013 [cited by applicant]
US 20130185404A1 · Patel et al. · 2013 [cited by applicant]
US 20160196158A1 · Nipane · 2016 [cited by examiner]
US 20180063036A1 · Chandrashekhar · 2018 [cited by examiner]
US 20180159826A1 · YiSan et al. · 2018 [cited by applicant]
US 20180267816A1 · Lin et al. · 2018 [cited by applicant]
US 20190306109A1 · Masputra et al. · 2019 [cited by applicant]
US 20200127891A9 · Johnson et al. · 2020 [cited by applicant]
US 20210149835A1 · Johnsen et al. · 2021 [cited by applicant]
US 20210152477A1 · Johnsen et al. · 2021 [cited by applicant]
US 20210184895A1 · Nunes et al. · 2021 [cited by applicant]
WO 2016041421A1 · 2016 [cited by applicant]
Pai, et al., “A Transparent Framework for Enabling Incoming TCP Connections to Hosts Behind a NAT Gateway”, IEEE Xplore, copyright 2003, 4 pages. [cited by applicant]