IP Library Granted Patent US 9,317,310
Granted Patent B2
US 9,317,310 · App. 13/893,069 · Granted Apr 19, 2016

Systems and methods for handling virtual machine packets

Inventors: Ariel Hendel (Cupertino, CA); Karagada Ramarao Kishore (Saratoga, CA)
Assignee: Broadcom Corporation
G06F9/45533G06F2009/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,317,310
App. No.
13/893,069
Granted
Apr 19, 2016
Kind
B2
Abstract

Systems and methods for handling virtual machine packets are provided. In some aspects, a method includes receiving, by a network interface controller, an indicator of a packet from a virtual machine. The indicator bypasses a virtual switch coupled to the virtual machine. The method also includes determining, in response to receiving the indicator, whether the packet is designated for accelerated processing. The method also includes providing the indicator to the virtual switch for processing if the packet is determined not to be designated for accelerated processing. The method also includes processing, by the network interface controller, the packet for transmission if the packet is determined to be designated for accelerated processing.

Claims (40)

1. A method for handling virtual machine packets, the method comprising:

receiving, by a network interface controller, indicators of packets from a virtual machine, wherein the indicators bypass a virtual switch coupled to the virtual machine;

determining, in response to receiving each of the indicators and based at least in part on an amount of processing resources available for managing each of the packets by the virtual switch, whether each of the packets is designated for accelerated processing;

providing, via the virtual machine, one of indicators to the virtual switch for processing for one of the packets that is determined not to be designated for accelerated processing; and

processing, by the network interface controller and bypassing the virtual switch, another of the packets for transmission, wherein the another of the packets is determined to be designated for accelerated processing.

2. The method of claim 1 , wherein the one of the indicators comprises at least one of a header of the one of the packets, a payload of the one of the packets, and a memory address of the one of the packets.

3. The method of claim 1 , wherein a central processing unit implements the virtual machine and the virtual switch, wherein the virtual switch is configured to route the one of the packets from the virtual machine to a destination of the one of the packets, and wherein the network interface controller is coupled to the central processing unit.

4. The method of claim 1 , wherein determining whether each of the packets is designated for accelerated processing comprises comparing each of the indicators of each of the packets to an entry in a flow table, and wherein each of the respective packets is determined to be eligible for accelerated processing if the respective indicator of the respective packet matches the entry in the flow table.

5. The method of claim 1 , wherein providing, via the virtual machine, the one of the indicators to the virtual switch comprises providing the one of the indicators to the virtual machine, and wherein the virtual machine is configured to provide the indicator to the virtual switch.

6. The method of claim 1 , wherein the one of the indicators comprises a header of the one of the packets and a payload of the one of the packets, and wherein providing the one of the indicators to the virtual switch comprises:

discarding the payload; and

providing the header to the virtual switch.

7. The method of claim 1 , wherein processing the another of the packets for transmission comprises queuing the another of the packets for transmission at the network interface controller.

8. The method of claim 1 , wherein processing the another of the packets for transmission comprises determining whether the another of the packets satisfies one or more rules.

9. The method of claim 8 , wherein determining whether the another of the packets satisfies one or more rules comprises comparing the another of the packets to an entry in an access table, and wherein the another of the packets is determined to satisfy the one or more rules if the another of the packets matches the entry in the access table.

10. The method of claim 9 , further comprising:

determining usage statistics of the entry in the access table; and

updating the entry based on the usage statistics.

11. The method of claim 8 , wherein processing the another of the packets for transmission further comprises queuing the another of the packets for transmission when the another of the packets is determined to satisfy the one or more rules.

12. The method of claim 11 , wherein another of the indicators comprises a header of the another of the packets, and wherein queuing the another of the packets for transmission comprises retrieving a payload of the another of the packets from memory.

13. The method of claim 8 , wherein the one or more rules are based on at least one of network address translation, overlay control, access control, flow control, and mirror control.

14. A system for handling virtual machine packets, the system comprising:

a memory comprising instructions for handing virtual machine packets; and

a processor configured to execute the instructions to:

receive a first header of a first packet and a second header of a second packet;

determine, in response to receiving each of the first and second headers and based at least in part on whether the first and second headers are associated with an audio stream or a video stream, whether each of the first and second packets is designated for accelerated processing;

provide the first header to a virtual switch for processing when the first packet is determined not to be designated for accelerated processing, the virtual switch being coupled to the system; and

process the second packet, bypassing the virtual switch, when the second packet is determined to be designated for accelerated processing.

15. The system of claim 14 , wherein the first and second headers are received from a virtual machine coupled to the virtual switch, and wherein the first and second headers bypass the virtual switch.

16. The system of claim 15 , wherein the second packet is processed for transmission, and wherein processing the second packet for transmission comprises:

determining a target transmission rate; and

retrieving a payload of the second packet from memory at the target transmission rate.

17. The system of claim 14 , wherein a destination of the second packet is a virtual machine coupled to the virtual switch, wherein the second packet is processed for transmission to the virtual machine.

18. A computer program product comprising instructions stored in a non-transitory computer-readable storage medium, the instructions comprising:

instructions to receive, by a network interface controller, indicators of packets from a virtual machine, wherein the indicators bypass a virtual switch coupled to the virtual machine;

instructions to determine, in response to receiving each of the indicators and based at least in part on an amount of processing resources available for managing each of the packets by the virtual switch, whether each of the packets is designated for accelerated processing;

instructions to provide, via the virtual machine, one of indicators to the virtual switch for processing for one of the packets that is determined not to be designated for accelerated processing; and

instructions to process, by the network interface controller and bypassing the virtual switch, another of the packets for transmission, wherein the another of the packets is determined to be designated for accelerated processing.

19. The computer program product of claim 18 , wherein the one of the indicators comprises at least one of a header of the one of the packets, a payload of the one of the packets, and a memory address of the one of the packets.

20. The computer program product of claim 18 , wherein the instructions to determine whether each of the packets is designated for accelerated processing comprises instructions to compare each of the indicators of each of the packets to an entry in a flow table, and wherein each of the respective packets is determined to be eligible for accelerated processing if the respective indicator of the respective packet matches the entry in the flow table.

Assignments (7)
CORRECTIVE ASSIGNMENT TO CORRECT THE PATENT NUMBER 9,385,856 TO 9,385,756 PREVIOUSLY RECORDED AT REEL: 47349 FRAME: 001. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Mar 22, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 051144/0648 →
CORRECTIVE ASSIGNMENT TO CORRECT THE EFFECTIVE DATE PREVIOUSLY RECORDED ON REEL 047229 FRAME 0408. ASSIGNOR(S) HEREBY CONFIRMS THE THE EFFECTIVE DATE IS 09/05/2018. Recorded Oct 29, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047349/0001 →
MERGER Recorded Oct 4, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047229/0408 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: BROADCOM CORPORATION
Reel/Frame 041712/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2017
From: BROADCOM CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041706/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: BROADCOM CORPORATION
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037806/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 14, 2013
From: HENDEL, ARIEL; KISHORE, KARAGADA RAMARAO
To: BROADCOM CORPORATION
Reel/Frame 030414/0697 →
Continuity (2)
Provisional Application 61759318 · Jan 31, 2013
Related Publication 20140215463A1 · Jul 31, 2014