1. A method for virtualizing a network interface card, 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; 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.