IP Library Granted Patent US 9,237,087
Granted Patent B1
US 9,237,087 · App. 13/418,951 · Granted Jan 12, 2016

Virtual machine name resolution

Inventors: Pankaj Risbood (Bangalore, IN); Vivek Sahasranaman (Bangalore, IN)
Assignee: Google Inc.
H04L45/00
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 9,237,087
App. No.
13/418,951
Granted
Jan 12, 2016
Kind
B1
Abstract

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for virtual machine name resolution. In one aspect, a method includes receiving a first outgoing packet from a source virtual machine executing on the data processing apparatus destined for a destination virtual machine, wherein the destination virtual machine belongs to a first cluster of virtual machines, and wherein the first outgoing packet identifies the destination virtual machine using a unique name for the destination virtual machine; determining an internal network address of the destination virtual machine based at least in part on the unique name for the destination virtual machine; and sending the first outgoing packet to the destination virtual machine by sending the packet to the internal network address.

Claims (45)

1. A method implemented by data processing apparatus, the method comprising: maintaining, by the data processing apparatus, data that associates, for each of a plurality of virtual machines in a first cluster of virtual machines launched by a first user, a unique name for the virtual machine with an internal network address for the virtual machine, wherein the internal network address for the virtual machine is a network address used by other virtual machines in the first cluster to communicate with the virtual machine over an internal network; receiving, by a process executing on the data processing apparatus and from a source virtual machine executing on the data processing apparatus, a first outgoing packet destined for a recipient; determining that the first outgoing packet identifies the recipient by a unique name for the recipient instead of by a network address for the recipient; in response to determining that the first outgoing packet identifies the recipient by the unique name for the recipient instead of by a network address for the recipient, determining, by the process executing on the data processing apparatus and from the maintained data, that the unique name is associated in the maintained data with an internal network address of a destination virtual machine that belongs to the first cluster of virtual machines, wherein the unique name for the destination virtual machine is assigned to the destination virtual machine by a name association system when the destination virtual machine is launched; and sending the first outgoing packet to the internal network address of the destination virtual machine.

2. The method of claim 1 , wherein the process executes in a user space of an operating system.

3. The method of claim 1 , wherein the source virtual machine belongs to the first cluster of virtual machines.

4. The method of claim 1 , wherein the unique name is a string of characters, the string of characters comprising an internal domain name corresponding to the first cluster of virtual machines.

5. The method of claim 1 , further comprising obtaining the data from a respective data processing apparatus hosting each of the plurality of virtual machines.

6. The method of claim 1 , wherein the data is published by a name association system over a publisher-subscriber channel.

7. The method of claim 6 , further comprising:

joining a discovery group used by the name association system to publish the data, wherein the discovery group only publishes data for virtual machines in the first cluster of virtual machines.

8. The method of claim 1 , wherein the source virtual machine belongs to a second, different cluster of virtual machines.

9. The method of claim 1 , further comprising:

receiving a second outgoing packet destined for a second recipient;

determining that the second outgoing packet identifies the second recipient by a second unique name for the second recipient instead of by a network address of the second recipient;

in response to determining that the second outgoing packet identifies the second recipient by a second unique name for the second recipient instead of by a network address of the second recipient, determining whether the second unique name is associated with any internal network address of any virtual machine belonging to the first cluster of virtual machines in the maintained data;

in response to determining that the second unique name is not associated with any internal network address in the maintained data, obtaining an external network address corresponding to the second unique name from a Domain Name System service; and

sending the second outgoing packet to the obtained external network address.

10. A non-transitory storage medium encoded with instructions which, when executed by data processing apparatus, cause the data processing apparatus to perform operations comprising: maintaining, by the data processing apparatus, data that associates, for each of a plurality of virtual machines in a first cluster of virtual machines launched by a first user, a unique name for the virtual machine with an internal network address for the virtual machine, wherein the internal network address for the virtual machine is a network address used by other virtual machines in the first cluster to communicate with the virtual machine over an internal network; receiving, by a process executing on the data processing apparatus and from a source virtual machine executing on the data processing apparatus, a first outgoing packet destined for a recipient; determining that the first outgoing packet identifies the recipient by a unique name for the recipient instead of by a network address for the recipient; in response to determining that the first outgoing packet identifies the recipient by a unique name for the recipient instead of by a network address for the recipient, determining, by the process executing on the data processing apparatus and from the maintained data, that the unique name is associated in the maintained data with an internal network address of a destination virtual machine that belongs to the first cluster of virtual machines, wherein the unique name for the destination virtual machine is assigned to the destination virtual machine by a name association system when the destination virtual machine is launched; and sending the first outgoing packet to the internal network address of the destination virtual machine.

11. The storage medium of claim 10 , wherein the process executes in a user space of an operating system.

12. The storage medium of claim 10 , wherein the source virtual machine belongs to the first cluster of virtual machines.

13. The storage medium of claim 10 , wherein the unique name is a string of characters, the string of characters comprising an internal domain name corresponding to the first cluster of virtual machines.

14. The storage medium of claim 10 , the operations further comprising obtaining the data from a respective data processing apparatus hosting each of the plurality of virtual machines.

15. The storage medium of claim 10 , wherein the data is published by a name association system over a publisher-subscriber channel.

16. The storage medium of claim 15 , the operations further comprising:

joining a discovery group used by the name association system to publish the data, wherein the discovery group only publishes data for virtual machines in the first cluster of virtual machines.

17. The storage medium of claim 10 , wherein the source virtual machine belongs to a second, different cluster of virtual machines.

18. The storage medium of claim 10 , the operations further comprising:

receiving a second outgoing packet destined for a second recipient;

determining that the second outgoing packet identifies the second recipient by a second unique name for the second recipient instead of by a network address of the second recipient;

in response to determining that the second outgoing packet identifies the second recipient by a second unique name for the second recipient instead of by a network address of the second recipient, determining whether the second unique name is associated with any internal network address of any virtual machine belonging to the first cluster of virtual machines in the maintained data;

in response to determining that the second unique name is not associated with any internal network address in the maintained data, obtaining an external network address corresponding to the second unique name from a Domain Name System service; and

sending the second outgoing packet to the obtained external network address.

19. A system comprising one or more data processing apparatus and one or more storage devices storing instructions that when executed by the data processing apparatus cause the data processing apparatus to perform operations comprising: maintaining, by the data processing apparatus, data that associates, for each of a plurality of virtual machines in a first cluster of virtual machines launched by a first user, a unique name for the virtual machine with an internal network address for the virtual machine, wherein the internal network address for the virtual machine is a network address used by other virtual machines in the first cluster to communicate with the virtual machine over an internal network; receiving, by a process executing on the data processing apparatus and from a source virtual machine executing on the data processing apparatus, a first outgoing packet destined for a recipient; determining that the first outgoing packet identifies the recipient by a unique name for the recipient instead of by a network address for the recipient; in response to determining that the first outgoing packet identifies the recipient by a unique name for the recipient instead of by a network address for the recipient, determining, by the process executing on the data processing apparatus and from the maintained data, that the unique name is associated in the maintained data with an internal network address of a destination virtual machine that belongs to the first cluster of virtual machines, wherein the unique name for the destination virtual machine is assigned to the destination virtual machine by a name association system when the destination virtual machine is launched; and sending the first outgoing packet to the internal network address of the destination virtual machine.

20. The system of claim 19 , wherein the process executes in a user space of an operating system.

21. The system of claim 19 , wherein the source virtual machine belongs to the first cluster of virtual machines.

22. The system of claim 19 , wherein the unique name is a string of characters, the string of characters comprising an internal domain name corresponding to the first cluster of virtual machines.

23. The system of claim 19 , the operations further comprising obtaining the data from a respective data processing apparatus hosting each of the plurality of virtual machines.

24. The system of claim 19 , wherein the data is published by a name association system over a publisher-subscriber channel.

25. The system of claim 24 , the operations further comprising:

joining a discovery group used by the name association system to publish the data, wherein the discovery group only publishes data for virtual machines in the first cluster of virtual machines.

26. The system of claim 19 , wherein the source virtual machine belongs to a second, different cluster of virtual machines.

27. The system of claim 19 , the operations further comprising:

receiving a second outgoing packet destined for a second recipient;

determining that the second outgoing packet identifies the second recipient by a second unique name for the second recipient instead of by a network address of the second recipient;

in response to determining that the second outgoing packet identifies the second recipient by a second unique name for the second recipient instead of by a network address of the second recipient, determining whether the second unique name is associated with any internal network address of any virtual machine belonging to the first cluster of virtual machines in the maintained data;

in response to determining that the second unique name is not associated with any internal network address in the maintained data, obtaining an external network address corresponding to the second unique name from a Domain Name System service; and

sending the second outgoing packet to the obtained external network address.

Assignments (2)
CHANGE OF NAME Recorded Oct 2, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044566/0657 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2012
From: RISBOOD, PANKAJ; SAHASRANAMAN, VIVEK
To: GOOGLE INC.
Reel/Frame 028306/0784 →
Continuity (1)
Provisional Application 61453490 · Mar 16, 2011