Techniques to utilize queues for network interface devices
View Patent ↗In general, in one aspect, included are descriptions of providing a single network interface from physical network interfaces that provides a number of receive queues equal to the sum of the number of receive queues provided by each of the physical network interfaces.
1. A method comprising:
providing capability to receive packets from a plurality of physical network interfaces, each of the physical network interfaces capable of providing a number of receive queues that is greater than or equal to one, each physical network interface comprising a DMA (Direct Memory Access) engine, a media access controller, a physical layer interface, and a Peripheral Component Interconnect (PCI) type interface;
providing a single network interface from the plurality of physical network interfaces that provides a number of receive queues equal to the sum of the number of receive queues provided by each of the plurality of physical network interfaces; and
for a received packet, selecting a one of the receive queues of the single network interface; and
queueing an entry to the selected one of the receive queues for the received packet, the entry corresponding to a packet transferred by DMA by a one of the plurality of physical network interfaces.
2. The method of claim 1 , further comprising:
performing a hash based on fields in a header of a packet.
3. The method of claim 2 , wherein the hash comprises a hash on, at least one of: (1) Internet Protocol source and destination addresses and (2) source and destination ports.
4. The method of claim 1 , wherein the single network interface comprises a virtual network interface.
5. The method of claim 1 , further comprising performing at least one of load balancing and link aggregation.
6. The method of claim 1 , further comprising enqueuing a packet received by a one of the network interfaces and selecting a receive queue provided by a different one of the network interfaces.
7. A system, comprising:
multiple processors;
multiple physical network interfaces, each physical network interface capable of providing a number of receive queues that is greater than or equal to one, each physical network interface comprising a DMA (Direct Memory Access) engine, a media access controller, a physical layer interface, and a Peripheral Component Interconnect (PCI) type interface; and
logic to
provide a single network interface from the plurality of physical network interfaces that provides a number of receive queues equal to the sum of the number of receive queues provided by each of the plurality of physical network interfaces;
for a received packet, select a one of the receive queues of the single network interface; and
queue an entry to the selected one of the receive queues for the received packet, the entry corresponding to a packet transferred by DMA by a one of the plurality of physical network interfaces.
8. The system of claim 7 , wherein the logic further comprises logic to perform a hash based on fields in a header of a packet.
9. The system of claim 8 , wherein the hash comprises a hash on, at least one of: (1) Internet Protocol source and destination addresses and (2) source and destination ports.
10. The system of claim 7 , wherein the single network interface comprises a virtual network interface.
11. The system of claim 7 , wherein the logic further comprises to perform at least one of load balancing and link aggregation.
12. The system of claim 7 , wherein the logic further comprises logic to select a receive queue provided by a second, different, one of the network interfaces for a packet received by a first one of the network interfaces.
13. A non-transitory computer-readable medium comprising instructions stored thereon which when executed by a machine cause the machine to: provide a single network interface based on a plurality of physical network interfaces, each of the plurality of physical network interfaces capable of providing a number of receive queues that is greater than or equal to one, each physical network interface comprising a DMA (Direct Memory Access) engine, a media access controller, a physical layer interface, and a Peripheral Component Interconnect (PCI) type interface, the single network interface to provide a number of receive queues equal to the sum of the number of receive queues provided by each of the plurality of physical network interfaces; and for a received packet, select a one of the receive queues of the single network interface; and queue an entry to the selected one of the receive queues for the received packet, the entry corresponding to a packet transferred by DMA by a one of the plurality of physical network interfaces.
14. The non-transitory computer-readable medium of claim 13 , wherein the instructions comprise instructions which when executed by a machine cause the machine to perform a hash based on fields in a header of a packet.
15. The non-transitory computer-readable medium of claim 14 , wherein the hash comprises a hash on, at least one of: (1) Internet Protocol source and destination addresses and (2) source and destination ports.
16. The non-transitory computer-readable medium of claim 13 , wherein the single network interface comprises a virtual network interface.
17. The non-transitory computer-readable medium of claim 13 , wherein the instructions comprise instructions which when executed by the machine cause the machine to perform at least one of load balancing and link aggregation.