IP Library Granted Patent US 9,535,871
Granted Patent B2
US 9,535,871 · App. 13/686,544 · Granted Jan 3, 2017

Dynamic routing through virtual appliances

Inventors: Roni Luxenberg (Raanana, IL); Uri Lublin (Raanana, IL)
Assignee: Red Hat Israel, Ltd.
G06F15/00G06F9/45558H04L67/327G06F2009/4557G06F2009/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 9,535,871
App. No.
13/686,544
Granted
Jan 3, 2017
Kind
B2
Abstract

A computing device executes a virtual machine that provides a service to a client. The computing device monitors one or more conditions associated with at least one of the virtual machine or the client. The computing device receives a data packet from the client, wherein the data packet is addressed to the virtual machine. The computing device determines, based on the one or more conditions, whether to route the data packet from the client through a virtual appliance before sending the data packet to the virtual machine.

Claims (46)

1. A method comprising:

executing, by a processing device, a hypervisor;

identifying a first virtual machine comprising a first virtual appliance, a second virtual machine comprising a second virtual appliance, and a third virtual machine comprising a virtual server that provides a service to a client of the virtual server;

receiving from the client, by the processing device, a data packet that is addressed to the virtual server;

in response to receiving the data packet, routing, by the hypervisor, the packet to the virtual server via the first virtual appliance and the second virtual appliance, wherein the routing comprises:

writing, by the hypervisor, the data packet to a buffer in a shared memory;

mapping, by the hypervisor, the buffer to a memory space of the first virtual appliance;

receiving from the first virtual appliance, by the hypervisor, a first signal indicating that the first virtual appliance has completed operating on the data packet;

in response to the first signal, mapping, by the hypervisor, the buffer to a memory space of the second virtual appliance;

receiving from the second virtual appliance, by the hypervisor, a second signal indicating that the second virtual appliance has completed operating on the data packet; and

in response to the second signal, sending, by the hypervisor, the data packet to the virtual server.

2. The method of claim 1 wherein the routing of the data packet from the client to the virtual server is transparent to the client.

3. A non-transitory computer readable storage medium having instructions that, when executed by a processing device, cause the processing device to:

execute, by the processing device, a hypervisor;

identify a first virtual machine comprising a first virtual appliance, a second virtual machine comprising a second virtual appliance, and a third virtual machine comprising a virtual desktop that provides a service to a client of the virtual desktop;

receive from the client, by the processing device, a data packet that is addressed to the virtual desktop;

in response to receiving the data packet, route, by the hypervisor, the packet to the virtual desktop via the first virtual appliance and the second virtual appliance, wherein to route the packet the hypervisor is to:

write, by the hypervisor, the data packet to a buffer in a shared memory;

map, by the hypervisor, the buffer to a memory space of the first virtual appliance;

receive from the first virtual appliance, by the hypervisor, a first signal indicating that the first virtual appliance has completed operating on the data packet;

in response to the first signal, map, by the hypervisor, the buffer to a memory space of the second virtual appliance;

receive from the second virtual appliance, by the hypervisor, a second signal indicating that the second virtual appliance has completed operating on the data packet; and

in response to the second signal, send, by the hypervisor, the data packet to the virtual desktop.

4. The non-transitory computer readable storage medium of claim 3 , wherein the routing of the data packet from the client to the virtual desktop is transparent to the client.

5. A computing device comprising:

a memory to store instructions for a first virtual machine comprising a first virtual appliance, a second virtual machine comprising a second virtual appliance, and a third virtual machine comprising a virtual server that provides a service to a client of the virtual server; and

a processing device operatively coupled to the memory, wherein the processing device is to:

execute, by the processing device, a hypervisor;

receive from the client, by the processing device, a data packet that is addressed to the virtual server;

in response to receiving the data packet, route, by the hypervisor, the packet to the virtual server via the first virtual appliance and the second virtual appliance, wherein to route the packet, the hypervisor is to:

write the data packet to a buffer in a shared memory;

map the buffer to a memory space of the first virtual appliance;

receive, from the first virtual appliance, a first signal indicating that the first virtual appliance has completed operating on the data packet;

in response to the first signal, map the buffer to a memory space of the second virtual appliance;

receive, from the second virtual appliance, a second signal indicating that the second virtual appliance has completed operating on the data packet; and

in response to the second signal, send the data packet to the virtual server.

6. The computing device of claim 5 , wherein the routing of the data packet from the client to the virtual server is transparent to the client.

7. The method of claim 1 wherein the first signal received from the first virtual appliance is an interrupt.

8. The method of claim 1 wherein the data packet is modified by the operating on the data packet by the first virtual appliance, and wherein the hypervisor further receives from the first virtual appliance the modified data packet.

9. The method of claim 8 wherein the modified data packet is provided to the hypervisor by the first virtual appliance via a zero copy operation.

10. The non-transitory computer readable storage medium of claim 3 wherein the first signal received from the first virtual appliance is an interrupt.

11. The non-transitory computer readable storage medium of claim 3 wherein the data packet is modified by the operating on the data packet by the first virtual appliance, and wherein the hypervisor further receives from the first virtual appliance the modified data packet.

12. The non-transitory computer readable storage medium of claim 11 wherein the modified data packet is provided to the hypervisor by the first virtual appliance via a zero copy operation.

13. The computing device of claim 5 wherein the first signal received from the first virtual appliance is an interrupt.

14. The computing device of claim 5 wherein the data packet is modified by the operating on the data packet by the first virtual appliance, and wherein the hypervisor further receives from the first virtual appliance the modified data packet.

15. The computing device of claim 14 wherein the modified data packet is provided to the hypervisor by the first virtual appliance via a zero copy operation.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 27, 2012
From: LUXENBERG, RONI; LUBLIN, URI
To: RED HAT ISRAEL, LTD.
Reel/Frame 029359/0188 →
Continuity (1)
Related Publication 20140149490A1 · May 29, 2014