# US 10,122,681 B1 · Network address translation for virtual machines

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,122,681 B1
- Document ID: US10122681B1
- Status: Granted
- Kind: B1
- Application number: 15/001,471
- Filed: 2016-01-20
- Granted: 2018-11-06
- Earliest claimed: 2011-01-13
- Assignees: Google Inc.
- Applicants: Google LLC
- Inventors: Evan K. Anderson
- Web page: https://patentgrep.com/patent/US10122681B1

## CPC

- H04L 61/256: NAT traversal
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- H04L 49/3009: {Header conversion, routing tables or routing tags}
- H04L 61/2503: Translation of Internet protocol [IP] addresses
- H04L 61/2517: using port numbers
- H04L 61/2535: {Multiple local networks, e.g. resolving potential IP address conflicts}
- H04L 61/255: Maintenance or indexing of mapping tables
- H04L 67/1001: for accessing one among a plurality of replicated servers
- H04L 69/16: Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L 69/22: Parsing or analysis of headers
- G06F 2009/45595: {Network integration; Enabling network access in virtual machine instances}
- H04L 2101/604: Address structures or formats
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for receiving a packet from a client, the packet having header information including a destination Internet Protocol (IP) address, a destination port, a source IP address, and a source port, and wherein the source IP address and source port are associated with the client; selecting a destination virtual machine based on the destination port; modifying the packet by replacing the destination IP address in the header information with an IP address of the selected destination virtual machine; and sending the modified packet to the destination virtual machine.

## Claims

### Claim 1

A computer-implemented method comprising:
receiving, at a gateway, a packet from a client, the packet having header information including a destination Internet Protocol (IP) address and a destination port;
selecting, by the gateway, a destination virtual machine based on the destination port included in the header information, wherein the destination virtual machine is a hardware virtualization having a particular IP address and is available for processing data included in the packet, and wherein selecting the destination virtual machine based on the destination port comprises converting the destination port using a transformation to determine a transformed destination port and selecting the destination virtual machine based on the transformed destination port;
in response to selecting the destination virtual machine based on the destination port:
modifying, by the gateway, the header information of the packet to replace the destination IP address with the particular IP address of the selected destination virtual machine without modifying source information in the header information and without modifying the destination port in the header information of the packet; and
sending, by the gateway, the packet with the modified destination IP address over a network to a host machine that hosts the selected destination virtual machine and that is configured to (i) modify the destination port in the header information after the destination virtual machine is selected based on the destination port and (ii) send the packet with the modified destination IP address and the modified destination port to the destination virtual machine that was selected by the gateway based on the destination port.

### Claim 2 (depends on 1)

The method of claim 1, wherein the destination port indicates that the destination virtual machine be selected using a load balancing scheme and wherein the destination virtual machine is selected using the load balancing scheme.

### Claim 3 (depends on 1)

The method of claim 1, further comprising modifying the packet by replacing the destination port in the header information with a port different from the destination port.

### Claim 4 (depends on 1)

The method of claim 1, wherein the packet is a layer 2 or a layer 3 packet.

### Claim 5 (depends on 1)

The method of claim 1, wherein the packet is part of a transmission control protocol (TCP) connection between the client and the destination virtual machine.

### Claim 6 (depends on 5)

The method of claim 5, wherein a host operating system that hosts the destination virtual machine maintains an end point of the TCP connection.

### Claim 7 (depends on 1)

The method of claim 1, comprising:
storing, in a gateway table at the gateway, the modified destination IP address in association with an indication of the client and the destination IP address and without an indication of the modified destination port.

### Claim 8

A non-transitory, computer readable medium having instructions stored thereon that, when executed by data processing apparatus, cause the data processing apparatus to perform operations comprising:
receiving, at a gateway, a packet from a client, the packet having header information including a destination Internet Protocol (IP) address and a destination port;
selecting, by the gateway, a destination virtual machine based on the destination port included in the header information, wherein the destination virtual machine is a hardware virtualization having a particular IP address and is available for processing data included in the packet, and wherein selecting the destination virtual machine based on the destination port comprises converting the destination port using a transformation to determine a transformed destination port and selecting the destination virtual machine based on the transformed destination port;
in response to selecting the destination virtual machine based on the destination port:
modifying, by the gateway, the header information of the packet to replace the destination IP address with the particular IP address of the selected destination virtual machine without modifying source information in the header information and without modifying the destination port in the header information of the packet; and
sending, by the gateway, the packet with the modified destination IP address over a network to a host machine that hosts the selected destination virtual machine and that is configured to (i) modify the destination port in the header information after the destination virtual machine is selected based on the destination port and (ii) send the packet with the modified destination IP address and the modified destination port to the destination virtual machine that was selected by the gateway based on the destination port.

### Claim 9 (depends on 8)

The non-transitory, computer readable medium of claim 8, wherein the destination port indicates that the destination virtual machine be selected using a load balancing scheme and wherein the destination virtual machine is selected using the load balancing scheme.

### Claim 10 (depends on 8)

The non-transitory, computer readable medium of claim 8, the operations further comprising modifying the packet by replacing the destination port in the header information with a port different from the destination port.

### Claim 11 (depends on 8)

The non-transitory, computer readable medium of claim 8, wherein the packet is a layer 2 or a layer 3 packet.

### Claim 12 (depends on 9)

The non-transitory, computer readable medium of claim 9, wherein the packet is part of a transmission control protocol (TCP) connection between the client and the destination virtual machine.

### Claim 13 (depends on 12)

The non-transitory, computer readable medium of claim 12, wherein a host operating system that hosts the destination virtual machine maintains an end point of the TCP connection.

### Claim 14

A system comprising:
a non-transitory, computer readable medium having instructions stored thereon; and
data processing apparatus configured to execute the instructions to perform operations comprising:
receiving, at a gateway, a packet from a client, the packet having header information including a destination Internet Protocol (IP) address and a destination port;
selecting, by the gateway, a destination virtual machine based on the destination port included in the header information, wherein the destination virtual machine is a hardware virtualization having a particular IP address and is available for processing data included in the packet, and wherein selecting the destination virtual machine based on the destination port comprises converting the destination port using a transformation to determine a transformed destination port and selecting the destination virtual machine based on the transformed destination port;
in response to selecting the destination virtual machine based on the destination port:
modifying, by the gateway, the header information of the packet to replace the destination IP address with the particular IP address of the selected destination virtual machine without modifying source information in the header information and without modifying the destination port in the header information of the packet; and
sending, by the gateway, the packet with the modified destination IP address over a network to a host machine that hosts the selected destination virtual machine and that is configured to (i) modify the destination port in the header information after the destination virtual machine is selected based on the destination port and (ii) send the packet with the modified destination IP address and the modified destination port to the destination virtual machine that was selected by the gateway based on the destination port.

### Claim 15 (depends on 14)

The system of claim 14, wherein the destination port indicates that the destination virtual machine be selected using a load balancing scheme and wherein the destination virtual machine is selected using the load balancing scheme.

### Claim 16 (depends on 14)

The system of claim 14, the operations further comprising modifying the packet by replacing the destination port in the header information with a port different from the destination port.
