IP Library Granted Patent US 7,672,299
Granted Patent B2
US 7,672,299 · App. 11/479,046 · Granted Mar 2, 2010

Network interface card virtualization based on hardware resources and software rings

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 7,672,299
App. No.
11/479,046
Granted
Mar 2, 2010
Kind
B2
Abstract

A method for virtualizing a network interface card includes creating a first plurality of virtual NICs, assigning each of a plurality of receive rings on the network interface card (NIC) to one of the first plurality of virtual NICs, and if the number of virtual NICs is greater than the number of receive rings on the NIC, creating a first software ring corresponding to one of the plurality of receive rings on the NIC, creating a first plurality of software receive rings associated with the first software ring, creating a second plurality of virtual NICs, and assigning each of the first plurality of software receive rings to one of the second plurality of virtual NICs, wherein the plurality of receive rings is less than a sum of the first plurality of virtual NICs and the second plurality of virtual NICs.

Claims (61)

1. A method for virtualizing a network interface card, comprising:

creating a first plurality of virtual NICs by a host;

assigning each of a plurality of receive rings on the network interface card (NIC) to one of the first plurality of virtual NICs;

determining whether the first plurality of virtual NICs is greater in number than the plurality of receive rings on the NIC;

in response to determining that the first plurality of virtual NICs is greater in number than the plurality of receive rings on the NIC:

creating a first software ring corresponding to one of the plurality of receive rings on the NIC;

creating a first plurality of software receive rings associated with the first software ring;

creating a second plurality of virtual NICs; and

assigning each of the first plurality of software receive rings to one of the second plurality of virtual NICs,

wherein the plurality of receive rings on the NIC is lesser in number than a sum of the first plurality of virtual NICs and the second plurality of virtual NICs.

2. The method of claim 1 , further comprising:

creating a second software ring associated with one selected from a group consisting of one of the first plurality of virtual NICs and one of the second plurality of virtual NICs;

creating a second plurality of software receive rings associated with the second software ring;

creating a third plurality of virtual network interface cards; and

assigning each of the second plurality of software receive rings to one of the third plurality of virtual NICs.

3. The method of claim 1 , wherein packets are sent from the NIC to one of the plurality of receive rings on the NIC using a classifier associated with the NIC, and wherein packets are sent from the first software ring to one of the plurality of software receive rings associated with the first software ring using a software classifier associated with the first software ring.

4. The method of claim 1 , wherein each of the second plurality of virtual NICs is associated with one of a plurality of serialization stacks.

5. The method of claim 4 , wherein each of the plurality of serialization stacks is associated with one of a plurality of packet destinations.

6. The method of claim 5 , wherein each of the plurality of packet destinations is one selected from a group consisting of a container, a virtual machine, and a service.

7. The method of claim 1 , wherein the first software ring is located in a Media Access Control (MAC) layer of a host.

8. A system, comprising:

a network interface card (NIC) comprising a plurality of receive rings; and

a host operatively connected to the NIC, comprising:

a first plurality of virtual NICs, wherein the first plurality of virtual NICs is greater in number than the plurality of receive rings on the NIC;

a first software ring located in a Media Access Control (MAC)lay er of the host and comprising a software classifier;

a first plurality of software receive rings associated with the first software ring; and

a second plurality of virtual NICs;

wherein each of the plurality of receive rings is associated with one selected from a group consisting of one of the first plurality of virtual NICs and the first software ring,

wherein at least one of the first plurality of software receive rings is associated with one of the second plurality of virtual NICs; and

wherein the plurality of receive rings on the NIC is lesser in number than a sum of the first plurality of virtual NICs and the second plurality of virtual NICs.

9. The system of claim 8 , further comprising:

a second software ring configured to receive packets from one of the first plurality of software receive rings;

a second plurality of software receive rings associated with the second software ring; and

a third plurality of virtual NICs,

wherein at least one of the second plurality of software receive rings is associated with one of the third plurality of virtual NICs.

10. The system of claim 8 , further comprising:

a plurality of serialization stacks,

wherein at least one of the first plurality of virtual NICs is associated with one of the plurality of serialization stacks.

11. The system of claim 10 , further comprising:

a plurality of packet destinations, wherein each of the plurality of serialization stacks is associated with one of the plurality of packet destinations.

12. The system of claim 11 , wherein each of the plurality of packet destinations is at least one selected from a group consisting of a container, a virtual machine, and a service.

13. A computer readable medium having computer readable program code embodied therein for causing a computer system to execute a method for virtualizing a network interface card (NIC), the method comprising:

creating a first plurality of virtual NICs;

assigning each of a plurality of receive rings on the network interface card (NIC) to one of the first plurality of virtual NICs;

determining whether the first plurality of virtual NICs is greater in number than the plurality of receive rings on the NIC;

in response to determining that the first plurality of virtual NICs is greater in number than the plurality of receive rings on the NIC:

creating a first software ring corresponding to one of the plurality of receive rings on the NIC;

creating a first plurality of software receive rings associated with the first software ring;

creating a second plurality of virtual NICs; and

assigning each of the first plurality of software receive rings to one of the second plurality of virtual NICs,

wherein the plurality of receive rings on the NIC is lesser in number than a sum of the first plurality of virtual NICs and the second plurality of virtual NICs.

14. The computer usable medium of claim 13 , further comprising:

creating a second software ring associated with one selected from a group consisting of one of the first plurality of virtual NICs and one of the second plurality of virtual NICs;

creating a second plurality of software receive rings associated with the second software ring;

creating a third plurality of virtual network interface cards; and

assigning each of the second plurality of software receive rings to one of the third plurality of virtual NICs.

15. The computer usable medium of claim 13 , wherein packets are sent from the NIC to one of the plurality of receive rings on the NIC using a classifier associated with the NIC, and wherein packets are sent from the first software ring to one of the plurality of software receive rings associated with the first software ring using a software classifier associated with the first software ring.

16. The computer usable medium of claim 13 , wherein each of the second plurality of virtual NICs is associated with one of a plurality of serialization stacks.

17. The computer usable medium of claim 16 , wherein each of the plurality of serialization stacks is associated with one of a plurality of packet destinations.

18. The computer usable medium of claim 17 , wherein each of the plurality of packet destinations is one selected from a group consisting of a container, a virtual machine, and a service.

19. The computer usable medium of claim 13 , wherein the first software ring is located in a Media Access Control (MAC) layer of a host.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037305/0238 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 30, 2006
From: DROUX, NICOLAS G.; TRIPATHI, SUNAY; BELGAIED, KAIS
To: SUN MICROSYSTEMS, INC.
Reel/Frame 018073/0815 →