IP Library Granted Patent US 9,135,037
Granted Patent B1
US 9,135,037 · App. 13/350,470 · Granted Sep 15, 2015

Virtual network protocol

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,135,037
App. No.
13/350,470
Granted
Sep 15, 2015
Kind
B1
Abstract

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for receiving an outgoing packet from a source virtual machine; obtaining a secret key for the source virtual machine, the secret key not being known by a destination virtual machine; obtaining a unique token derived at least partly from the secret key and a network address of the destination virtual machine; encapsulating the outgoing packet in a second packet along with the token and a token expiration time; and sending the second packet to the destination virtual machine.

Claims (62)

1. A method implemented by a data processing apparatus, the method comprising:

in a user process space of a host operating system, wherein the host operating system hosts one or more distinct virtual machines each being a hardware virtualization, performing the following:

receiving, at a first communication process of the host operating system, an outgoing packet from a source virtual machine (VM) of the one or more distinct virtual machines, the outgoing packet destined for a destination VM, wherein the destination VM is one of the one or more distinct virtual machines hosted by the host operating system;

obtaining, from a VM registry, a source secret key for the source VM, the source secret key not being known by the destination VM;

requesting a first token from the VM registry, the request including the source secret key and data identifying the destination VM;

obtaining the first token, from the VM registry, the first token being used to establish a unidirectional virtual network pair between the source VM and the destination VM, wherein the first token is derived at least partly from both a destination secret key for the destination VM and a network address of the destination VM, where the destination secret key is not known by the source VM;

encapsulating, at the first communication process of the host operating system, the outgoing packet in a second packet along with the first token and a token expiration time;

receiving, at a second communication process of the host operating system, the second packet directed to the destination VM;

verifying the first token wherein verifying the first token comprises:

generating, in the user process space, a verification token based on at least the destination secret key for the destination VM and the network address of the destination VM; and

verifying the token in response to determining that the first token matches the verification token; and

de-encapsulating the second packet and providing the outgoing packet to the destination VM responsive to the verifying.

2. The method of claim 1 wherein the second packet includes a second token that the destination VM can use to send a packet to the source VM.

3. The method of claim 1 wherein the token is a hash-based message authentication code.

4. The method of claim 1 wherein a respective guest operating system executes on each of the virtual machines.

5. The method of claim 1 wherein the destination VM is on a same physical machine as the source VM.

6. The method of claim 1 wherein the outgoing packet is a layer three packet.

7. The method of claim 1 wherein the second packet is a layer four packet.

8. The method of claim 1 wherein the user process space has reduced privileges as compared to a process space wherein a kernel of the host operating system executes.

9. The method of claim 1 wherein obtaining the secret key for the source VM comprises obtaining the secret key from a process which maintains a mapping between virtual machines, as identified by their respective network addresses, and the physical machine they are hosted on.

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:

in a user process space of a host operating system, wherein the host operating system hosts one or more distinct virtual machines each being a hardware virtualization, performing the following:

receiving, at a first communication process of the host operating system, an outgoing packet from a source virtual machine (VM) of the one or more distinct virtual machines, the outgoing packet destined for a destination VM, wherein the destination VM is one of the one or more distinct virtual machines hosted by the host operating system;

obtaining, from a VM registry, a source secret key for the source VM, the source secret key not being known by the destination VM;

requesting a first token from the VM registry, the request including the source secret key and data identifying the destination VM;

obtaining the first token, from the VM registry, the first token being used to establish a unidirectional virtual network pair between the source VM and the destination VM, wherein the first token is derived at least partly from both a destination secret key for the destination VM and a network address of the destination VM, where the destination secret key is not known by the source VM;

encapsulating, at the first communication process of the host operating system, the outgoing packet in a second packet along with the first token and a token expiration time;

receiving, at a second communication process of the host operating system, the second packet directed to the destination VM;

verifying the first token wherein verifying the first token comprises:

generating, in the user process space, a verification token based on at least the destination secret key for the destination VM and the network address of the destination VM; and

verifying the token in response to determining that the first token matches the verification token; and

de-encapsulating the second packet and providing the outgoing packet to the destination VM responsive to the verifying.

11. The storage medium of claim 10 wherein the second packet includes a token that the destination VM can use to send a packet to the source VM.

12. The storage medium of claim 10 wherein the token is a hash-based message authentication code.

13. The storage medium of claim 10 wherein a respective guest operating system executes on each of the virtual machines.

14. The storage medium of claim 10 wherein the destination VM is on a same physical machine as the source VM.

15. The storage medium of claim 10 wherein the outgoing packet is a layer three packet.

16. The storage medium of claim 10 wherein the second packet is a layer four packet.

17. The storage medium of claim 10 wherein the user process space has reduced privileges as compared to a process space wherein a kernel of the host operating system executes.

18. The storage medium of claim 10 wherein obtaining the secret key for the source VM comprises obtaining the secret key from a process which maintains a mapping between virtual machines, as identified by their respective network addresses, and the physical machine they are hosted on.

19. A system comprising:

a storage medium encoded with instructions;

data processing apparatus operable to execute the instructions to perform operations comprising:

in a user process space of a host operating system, wherein the host operating system hosts one or more distinct virtual machines each being a hardware virtualization, performing the following:

receiving, at a first communication process of the host operating system, an outgoing packet from a source virtual machine (VM) of the one or more distinct the virtual machines, the outgoing packet destined for a destination VM, wherein the destination VM is one of the one or more distinct virtual machines hosted by the host operating system;

obtaining, from a VM registry, a source secret key for the source VM, the source secret key not being known by the destination VM;

requesting a first token from the VM registry, the request including the source secret key and data identifying the destination VM;

obtaining the first token, from the VM registry, the first token being used to establish a unidirectional virtual network pair between the source VM and the destination VM, wherein the first token is derived at least partly from both a destination secret key for the destination VM and a network address of the destination VM, where the destination secret key is not known by the source VM;

encapsulating, at the first communication process of the host operating system, the outgoing packet in a second packet along with the first token and a token expiration time;

receiving, at a second communication process of the host operating system, the second packet directed to the destination VM;

verifying the first token wherein verifying the first token comprises:

generating, in the user process space, a verification token based on at least the destination secret key for the destination VM and the network address of the destination VM; and

verifying the token in response to determining that the first token matches the verification token; and

de-encapsulating the second packet and providing the outgoing packet to the destination VM responsive to the verifying.

20. The system of claim 19 wherein the second packet includes a token that the destination VM can use to send a packet to the source VM.

21. The system of claim 19 wherein the token is a hash-based message authentication code.

22. The system of claim 19 wherein a respective guest operating system executes on each of the virtual machines.

23. The system of claim 19 wherein the destination VM is on a same physical machine as the source VM.

24. The system of claim 19 wherein the outgoing packet is a layer three packet.

25. The system of claim 19 wherein the second packet is a layer four packet.

26. The system of claim 19 wherein the user process space has reduced privileges as compared to a process space wherein a kernel of the host operating system executes.

27. The system of claim 19 wherein obtaining the secret key for the source VM comprises obtaining the secret key from a process which maintains a mapping between virtual machines, as identified by their respective network addresses, and the physical machine they are hosted on.

Assignments (2)
CHANGE OF NAME Recorded Oct 2, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044334/0466 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 4, 2013
From: PETRESCU-PRAHOVA, CRISTIAN; KERN, CHRISTOPH; ANDERSON, EVAN K.; BEDA, JOSEPH S., III
To: GOOGLE INC.
Reel/Frame 030150/0631 →