IP Library Granted Patent US 11,740,919
Granted Patent B2
US 11,740,919 · App. 16/876,703 · Granted Aug 29, 2023

System and method for hardware offloading of nested virtual switches

Inventors: Lee Ballard (Georgetown, TX); Andy Butcher (Cedar Park, TX)
Assignee: Dell Products L.P.
G06F9/45558H04L45/38H04L49/70G06F2009/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 11,740,919
App. No.
16/876,703
Granted
Aug 29, 2023
Kind
B2
Abstract

An information handling system includes a processor and NIC coupled to the processor via a communication interface. The NIC includes a network port. The processor instantiates a virtual network including at least two virtual switches and a virtual machine. The NIC receives a first flow from a first virtual switch, the first flow directing data packets received on the network port and destined for the virtual machine to a second virtual switch, and receives a second flow from the second virtual switch, the second flow directing the data packets to the virtual machine. The NIC further receives a data packet on the network port, determines that the data packet is destined for the virtual machine, and routes the data packet to a virtual function associated with the virtual machine based on the first and second flows, without first routing the first data packet to either of the virtual switches.

Claims (75)

1. An information handling system, comprising:

a processor; and

a network interface card (NIC) coupled to the processor via a communication interface, and including a network communication port coupled to a network;

wherein the processor is configured to instantiate a virtual network including at least two virtual switches and a virtual machine; and

wherein the NIC is configured to:

receive a first flow from a first virtual switch, the first flow directing data packets received on the network communication port and destined for the virtual machine to a second virtual switch;

create a first flow table in response to receiving the first flow;

store the first flow in the first flow table;

receive a second flow from the second virtual switch, the second flow directing the data packets to the virtual machine;

create a second flow table in response to receiving the second flow;

store the second flow in the second flow table;

receive a first data packet on the network communication port;

determine that the first data packet is destined for the virtual machine; and

route the first data packet to a virtual function associated with the virtual machine based on the first and second flows, without first routing the first data packet to either of the first or second virtual switches.

2. The information handling system of claim 1 , wherein in routing the first data packet to the virtual function, the NIC is further configured to route the first data packet to the virtual machine.

3. The information handling system of claim 2 , wherein in routing the first data packet to the virtual machine, the first data packet traverses the communication interface only one time.

4. The information handling system of claim 1 , wherein the first and second virtual switches are Open Virtual Switches.

5. The information handling system of claim 1 , wherein, prior to receiving the first data packet:

the NIC is further configured to:

receive a second data packet on the network communication port;

determine that a destination for the second data packet is unknown to the NIC; and

route the second data packet to the first virtual switch via the communication interface in response to determining that the destination is unknown; and

the first virtual switch is configured to send the first flow to the NIC in response to receiving the second data packet.

6. The information handling system of claim 5 , wherein:

the first virtual switch is further configured to:

route the second data packet to the second virtual switch via the NIC; and

the second virtual switch is configured to send the second flow to the NIC in response to receiving the second data packet.

7. The information handling system of claim 6 , wherein the NIC is further configured to:

link the first flow to the second flow for data packets destined for the virtual machine.

8. The information handling system of claim 1 , wherein the NIC includes a memory device, and the NIC is further configured to:

store the first and second flows in the memory device.

9. A method, comprising:

coupling a network interface card (MC) to a processor via a communication interface, wherein the NIC includes a network communication port coupled to a network;

instantiating, by the processor, a virtual network including at least two virtual switches and a virtual machine;

receiving, by the NIC, a first flow from a first virtual switch, the first flow directing data packets received on the network communication port and destined for the virtual machine to a second virtual switch;

creating a first flow table in response to receiving the first flow;

storing the first flow in the first flow table;

receiving a second flow from the second virtual switch, the second flow directing the data packets to the virtual machine;

creating a second flow table in response to receiving the second flow;

storing the second flow in the second flow table;

receiving a first data packet on the network communication port;

determining that the first data packet is destined for the virtual machine; and

routing, by the NIC, the first data packet to a virtual function associated with the virtual machine based on the first and second flows, without first routing the first data packet to either of the first or second virtual switches.

10. The method of claim 9 , wherein in routing the first data packet to the virtual function, the method further comprises:

routing, by the NIC, the first data packet to the virtual machine.

11. The method of claim 10 , wherein in routing the first data packet to the virtual machine, the first data packet traverses the communication interface only one time.

12. The method of claim 9 , wherein the first and second virtual switches are Open Virtual Switches.

13. The method of claim 9 , wherein, prior to receiving the first data packet, the method further comprises:

receiving, by the NIC, a second data packet on the network communication port;

determining, by the NIC, that a destination for the second data packet is unknown to the NIC;

routing, by the NIC, the second data packet to the first virtual switch via the communication interface in response to determining that the destination is unknown; and

configuring the first virtual switch to send the first flow to the NIC in response to receiving the second data packet.

14. The method of claim 13 , further comprising:

routing, by the first virtual switch, the second data packet to the second virtual switch via the NIC; and

sending, by the second virtual switch, the second flow to the NIC in response to receiving the second data packet.

15. The method of claim 14 , further comprising:

linking, by the NIC, the first flow to the second flow for data packets destined for the virtual machine.

16. The method of claim 9 , wherein the NIC includes a memory device, and the method further comprises:

storing, by the NIC, the first and second flows in the memory device.

17. A network interface card (NIC), comprising:

a memory device;

a communication interface coupled to a processor; and

a network communication port coupled to a network;

wherein the NIC is configured to:

receive a first flow from a first virtual switch of a virtual network instantiated by the processor, the first flow directing data packets received on the network communication port and destined for the virtual machine to a second virtual switch of the virtual network;

create a first flow table in the memory in response to receiving the first flow;

store the first flow in the first flow table;

receive a second flow from the second virtual switch, the second flow directing the data packets to a virtual machine instantiated by the processor;

create a second flow table in the memory in response to receiving the second flow;

store the second flow in the second flow table;

link the first flow to the second flow for data packets destined for the virtual machine;

receive a first data packet on the network communication port;

determine that the first data packet is destined for the virtual machine; and

route the first data packet to a virtual function associated with the virtual machine based on the first and second flows, without first routing the first data packet to either of the first or second virtual switches.

18. The NIC of claim 17 , wherein in routing the first data packet to the virtual function, the NIC is further configured to route the first data packet to the virtual machine, wherein in routing the first data packet to the virtual machine, the first data packet traverses the communication interface only one time.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053574/0221) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060333/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053578/0183) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060332/0864 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053573/0535) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060333/0106 →
RELEASE OF SECURITY INTEREST AT REEL 053531 FRAME 0108 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0371 →
SECURITY INTEREST Recorded Aug 21, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 053578/0183 →
SECURITY INTEREST Recorded Aug 21, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 053573/0535 →
SECURITY INTEREST Recorded Aug 21, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 053574/0221 →
SECURITY AGREEMENT Recorded Aug 18, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 053531/0108 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 18, 2020
From: BALLARD, LEE; BUTCHER, ANDY
To: DELL PRODUCTS, LP
Reel/Frame 052689/0037 →
Continuity (1)
Related Publication 20210357242A1 · Nov 18, 2021
Cited By (5)
US 12,483,387 US 12,483,388 US 12,483,389 US 12,483,390 US 12,489,607