IP Library Granted Patent US 10,567,510
Granted Patent B2
US 10,567,510 · App. 15/722,698 · Granted Feb 18, 2020

Techniques for routing packets between virtual machines

Inventors: Mesut A. Ergin (Portland, OR); Jr-Shian Tsai (Portland, OR); Janet Tseng (Portland, OR); Ren Wang (Portland, OR); Jun Nakajima (San Ramon, CA); Tsung-Yuan Tai (Portland, OR)
Assignee: INTEL CORPORATION
H04L67/1097H04L45/306H04L45/38H04L45/586H04L47/30H04L43/103
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 10,567,510
App. No.
15/722,698
Granted
Feb 18, 2020
Kind
B2
Abstract

Various embodiments are generally directed to techniques for improving the efficiency of exchanging packets between pairs of VMs within a communications server. An apparatus may include a processor component; a network interface to couple the processor component to a network; a virtual switch to analyze contents of at least one packet of a set of packets to be exchanged between endpoint devices through the network and the communications server, and to route the set of packets through one or more virtual servers of multiple virtual servers based on the contents; and a transfer component of a first virtual server of the multiple virtual servers to determine whether to route the set of packets to the virtual switch or to transfer the set of packets to a second virtual server of the multiple virtual servers in a manner that bypasses the virtual switch based on a routing rule.

Claims (52)

1. An apparatus to control communications comprising:

at least one processor;

a network interface to couple the at least one processor to a network; and

a memory storing instructions which when executed by the at least one processor cause the at least one processor to:

route, by a virtual switch, a set of packets to a first virtual server of a plurality of virtual servers based on an analysis of a destination address of at least one packet of the set of packets, the virtual switch and the plurality of virtual servers to be executed by the at least one processor; and

determine, by the first virtual server based on a routing rule and an analysis of the destination address of the at least one packet, whether to route the set of packets to the virtual switch or to transfer the set of packets to a second virtual server of the plurality of virtual servers in a manner that bypasses the virtual switch.

2. The apparatus of claim 1 , the first virtual server to transfer the set of packets from a memory space in the memory allocated to the first virtual server to a memory space in the memory allocated to the second virtual server.

3. The apparatus of claim 2 , the memory space in the memory allocated to the second virtual server to comprise a packet buffer allocated to a virtual network interface of the second virtual server, the packet buffer to buffer packets received by the second virtual server from either the first virtual server or the virtual switch.

4. The apparatus of claim 1 , the plurality of virtual servers to execute a plurality of application routines, the virtual switch to route the set of packets through the plurality of virtual servers based at least on a type of processing performed by the plurality of application routines.

5. The apparatus of claim 1 , comprising a storage coupled to the at least one processor, the storage comprising a shared memory space accessible to the first virtual server and second virtual server, the first virtual server to transfer the set of packets to the second virtual server by storing the set of packets in the shared memory space.

6. The apparatus of claim 1 , the set of packets to be transferred to the second virtual server in the manner that bypasses a plurality of virtual network interfaces of the first virtual server, the set of packets to be stored in a shared memory space shared by the first and second virtual servers.

7. The apparatus of claim 6 , the memory storing instructions which when executed by the at least one processor cause the at least one processor to:

transfer data between the first virtual server and the second virtual server; and

transfer the set of packets from the first virtual server to the second virtual server based on a determination to transfer the set of packets to the second virtual server in the manner that bypasses the virtual switch.

8. The apparatus of claim 1 , the set of packets received from a first endpoint device coupled to the network at the network interface, and the set of packets transmitted to a second endpoint device via the network after proceeding through the second virtual server.

9. The apparatus of claim 1 , the routing rule to indicate whether to route the set of packets to one of the plurality of virtual servers based on contents of the set of packets, a first packet buffer associated with a first virtual network interface of the first virtual server to store the set of packets received from the virtual switch, the memory storing instructions which when executed by the at least one processor cause the at least one processor to:

monitor a level of fullness of the first packet buffer;

determine the level of fullness is below a threshold; and

reduce a rate of processing of packets within the first virtual server in response to determining the level of fullness is below the threshold.

10. A computer-implemented method for controlling communications comprising:

routing, via a virtual switch executing on a processor, a set of packets to a first virtual server of a plurality of virtual servers based on an analysis of a destination address of at least one packet of the set of packets, the virtual switch and the plurality of virtual servers executing on the processor; and

determining, by the first virtual server based on a routing rule and an analysis of the destination address of the at least one packet, whether to route the set of packets to the virtual switch or to transfer the set of packets to a second virtual server of the plurality of virtual servers in a manner that bypasses the virtual switch.

11. The computer-implemented method of claim 10 , further comprising:

transferring, via the first virtual server, the at least a portion of the set of packets from a memory space in the memory allocated to the first virtual server to a memory space in the memory allocated to the second virtual server.

12. The computer-implemented method of claim 11 , the memory space in the memory allocated to the second virtual server to comprise a packet buffer allocated to a virtual network interface of the second virtual server, the packet buffer to buffer packets received by the second virtual server from either the first virtual server or the virtual switch.

13. The computer-implemented method of claim 10 , further comprising:

executing, via the plurality of virtual servers, a plurality of application routines, the virtual switch to route the set of packets through the plurality of virtual servers based at least on a type of processing performed by the plurality of application routines.

14. The computer-implemented method of claim 10 , comprising:

providing a shared memory space accessible to the first virtual server and second virtual server via a storage, the first virtual server to transfer the set of packets to the second virtual server by storing the set of packets in the shared memory space.

15. The computer-implemented method of claim 10 , the set of packets to be transferred to the second virtual server in the manner that bypasses a plurality of virtual network interfaces of the first virtual server, the set of packets to be stored in a shared memory space shared by the first and second virtual servers.

16. The computer-implemented method of claim 15 , comprising:

executing, via the processor, an instruction to transfer data between the first virtual server and the second virtual server, the processor to transfer the set of packets from the first virtual server to the second virtual server based on a determination to transfer the set of packets to the second virtual server in the manner that bypasses the virtual switch.

17. The computer-implemented method of claim 10 , comprising:

receiving the set of packets from a first endpoint device coupled to a network at a network interface; and

transmitting the set of packets to a second endpoint device via the network after proceeding through the second virtual server.

18. The computer-implemented method of claim 10 , the routing rule to indicate whether to route the set of packets to one of the plurality of virtual servers based on contents of the set of packets, a first packet buffer associated with a first virtual network interface of the first virtual server to store the set of packets received from the virtual switch, the computer-implemented method further comprising:

monitoring a level of fullness of the first packet buffer;

determining the level of fullness is below a threshold; and

reduce a rate of processing of packets within the first virtual server in response to determining the level of fullness is below the threshold.

19. At least one machine-readable non-transitory storage medium comprising instructions that when executed by a processor, cause the processor to:

route, via a virtual switch executed by the processor, a set of packets to a first virtual server of a plurality of virtual servers based on an analysis of a destination address of at least one packet of the set of packets, the virtual switch and the plurality of virtual servers to be executed by the processor; and

determine, la the first virtual server based on a routing rule and an analysis of the destination address of the at least one packet, whether to route the set of packets to the virtual switch or to transfer the set of packets to a second virtual server of the plurality of virtual servers in a manner that bypasses the virtual switch.

20. The at least one machine-readable non-transitory storage medium of claim 19 , the instructions, when executed by the processor, to cause the processor to transfer, la the first virtual server, the set of packets from a memory space in the memory allocated to the first virtual server to a memory space in the memory allocated to the second virtual server.

21. The at least one machine-readable non-transitory storage medium of claim 20 , the memory space in the memory allocated to the second virtual server to comprise a packet buffer allocated to a virtual network interface of the second virtual server, the packet buffer to buffer packets received by the second virtual server from either the first virtual server or the virtual switch.

22. The at least one machine-readable non-transitory storage medium of claim 19 , the instructions, when executed by the processor, to cause the processor to execute, via the plurality of virtual servers, a plurality of application routines, the virtual switch to route the set of packets through the plurality of virtual servers based at least on a type of processing performed by the plurality of application routines.

23. The at least one machine-readable non-transitory storage medium of claim 19 , the instructions, when executed by the processor, to cause the processor to provide a shared memory space accessible to the first virtual server and second virtual server via a storage, the first virtual server to transfer the set of packets to the second virtual server by storing the set of packets in the shared memory space.

24. The at least one machine-readable non-transitory storage medium of claim 19 , the set of packets to be transferred to the second virtual server in the manner that bypasses a plurality of virtual network interfaces of the first virtual server, the set of packets to be stored in a shared memory space shared by the first and second virtual servers.

25. The at least one machine-readable non-transitory storage medium of claim 19 , the instructions, when executed by the processor, to cause the processor to receive the set of packets from a first endpoint device coupled to a network at a network interface, and to transmit the set of packets to a second endpoint device via the network after proceeding through the second virtual server.

26. The at least one machine-readable non-transitory storage medium of claim 19 , the routing rule to indicate whether to route the set of packets to one of the plurality of virtual servers based on contents of the set of packets, a first packet buffer associated with a first virtual network interface of the first virtual server to store the set of packets received from the virtual switch, the instructions, when executed by the processor, to cause the processor to:

monitor a level of fullness of the first packet buffer;

determine the level of fullness is below a threshold; and

reduce a rate of processing of packets within the first virtual server in response to determining the level of fullness is below the threshold.

Continuity (2)
Continuation 14830862 · Aug 20, 2015
Related Publication 20180270309A1 · Sep 20, 2018