IP Library Granted Patent US 9,021,475
Granted Patent B2
US 9,021,475 · App. 13/463,287 · Granted Apr 28, 2015

Systems and methods for SR-IOV pass-thru via an intermediary device

Inventors: Chitti Nimmagadda (Cupertino, CA); Rajiv Mirani (Santa Clara, CA); Raghu Goyal (Karnataka, IN); Saurabh Dave (Karnataka, IN)
Assignee: Citrix Systems, Inc.
G06F9/5077G06F9/45558G06F2009/45579H04L12/6418
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,021,475
App. No.
13/463,287
Filed
May 3, 2012
Granted
Apr 28, 2015
Kind
B2
Art Unit
2196
USPC
718/1
Abstract

This disclosure describes a system for Single Root I/O Virtualization (SR-IOV) pass-thru for network packet processing via a virtualized environment of a device. The system includes a device comprising a virtualized environment and a plurality of virtual machines having a virtual network interface for receiving and transmitting network packets. A driver for the physical network interface of the device creates a plurality of virtual devices corresponding to the physical network interface, which appear as a Peripheral Component Interconnect (PCI) device to the virtualized environment. A virtual device of the plurality of virtual devices is assigned via the virtualized environment to each virtual machine of the plurality of virtual machines. The virtual machine uses the virtual device assigned to the virtual machine, to receive and transmit network packets via the physical network interface of the device.

Claims (27)

1. A method for Single Root I/O Virtualization (SR-IOV) pass-thru for network packet processing via a virtualized environment of a device, the method comprising:

(a) establishing, on a device, a virtualized environment comprising a service virtual machine creating a plurality of virtual machines, each virtual machine of the plurality of virtual machines having a virtual network interface for receiving and transmitting network packets;

(b) accessing, by the service virtual machine, a first driver for a physical network interface of the device to create a plurality of virtual devices responsive to a configuration of the first driver via a user interface provided by the service virtual machine, the plurality of virtual devices corresponding to the physical network interface, the physical network interface comprising a Single Root I/O Virtualization (SR-IOV) enabled device, each virtual device of the plurality of virtual devices appearing as a Peripheral Component Interconnect (PCI) device to the virtualized environment;

(c) assigning, via the service virtual machine, a virtual device of the plurality of virtual devices to each virtual machine of the plurality of virtual machines, wherein each virtual machine of the plurality of virtual machines is an unprivileged domain comprising a second driver to communicate to the virtual device; and

(d) receiving and transmitting, by the virtual machine using the virtual device assigned to the virtual machine while bypassing the service virtual machine, network packets via the physical network interface of the device.

2. The method of claim 1 , wherein step (a) further comprises executing, by the device intermediary to a plurality of clients and a plurality of severs, each virtual machine of the plurality of virtual machines as one of a virtualized packet processing engine or a virtualized application delivery controller.

3. The method of claim 1 , wherein step (a) further comprises executing, by the device comprising multiple cores, each virtual machine on a corresponding core of the device.

4. The method of claim 1 , wherein step (a) further comprises establishing, by the device, the virtual network interface comprising one of an emulated network interface card or a para-virtualized network interface card.

5. The method of claim 1 , wherein step (b) further comprises accessing the first driver to create a predetermined number of virtual devices for the physical network interface.

6. The method of claim 1 , wherein step (b) further comprises accessing the first driver to create a virtual device that comprises a promiscuous mode.

7. The method of claim 1 , wherein step (c) further comprises assigning, via the service virtual machine, each virtual device to a virtual machine, each virtual machine identified by a global unique identifier.

8. The method of claim 1 , wherein step (d) further comprises receiving and transmitting, by the virtual machine, network packets via the physical network interface of the device without processing of the network packets by the service virtual machine.

9. A system for Single Root I/O Virtualization (SR-IOV) pass-thru for network packet processing via a virtualized environment of a device, the system comprising:

a device comprising a virtualized environment;

a service virtual machine of the virtualized environment creating a plurality of virtual machines of the virtualized environment;

the plurality of virtual machines of the virtualized environment, each virtual machine of the plurality of virtual machines having a virtual network interface for receiving and transmitting network packets;

a physical network interface of the device, the physical network interface comprising a Single Root I/O Virtualization (SR-IOV) enabled device;

a first driver for the physical network interface of the device accessed by the service virtual machine to create a plurality of virtual devices responsive to a configuration of the first driver via a user interface provided by the service virtual machine, the plurality of virtual devices corresponding to the physical network interface, each virtual device of the plurality of virtual devices appearing as a Peripheral Component Interconnect (PCI) device to the virtualized environment;

wherein via the service virtual machine a virtual device of the plurality of virtual devices is assigned to each virtual machine of the plurality of virtual machines, wherein each virtual machine of the plurality of virtual machines is an unprivileged domain comprising a second driver to communicate to the virtual device; and

wherein the virtual machine, using the virtual device assigned to the virtual machine, receives and transmits network packets via the physical network interface of the device while bypassing the service virtual machine.

10. The system of claim 9 , wherein the device is intermediary to a plurality of clients and a plurality of severs and each virtual machine of the plurality of virtual machines comprises one of a virtualized packet processing engine or a virtualized application delivery controller.

11. The system of claim 9 , wherein the device comprises multiple cores and the device executes each virtual machine on a corresponding core of the device.

12. The system of claim 9 , wherein the virtual network interface comprises one of an emulated network interface card or a para-virtualized network interface card.

13. The system of claim 9 , wherein the first driver creates a predetermined number of virtual devices for the physical network interface.

14. The system of claim 9 , wherein the first driver creates a virtual device that comprises a promiscuous mode.

15. The system of claim 9 , wherein each virtual device is assigned to a virtual machine, each virtual machine identified by a global unique identifier.

16. The system of claim 9 , wherein the virtual machine receives and transmits network packets via the physical network interface of the device the physical network interface of the device without processing of the network packets by the service virtual machine.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 23, 2013
From: NIMMAGADDA, CHITTI; MIRANI, RAJIV; GOYAL, RAGHU; DAVE, SAURABH
To: CITRIX SYSTEMS, INC.
Reel/Frame 031459/0176 →
Continuity (2)
Provisional Application 61482553 · May 4, 2011
Related Publication 20120284712A1 · Nov 8, 2012