IP Library › Patent Application 16773801
Patent Application
App. No. 16/773,801

APPLICATION-LEVEL NETWORK QUEUEING

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 None
App. No.
16/773,801
Abstract

There is disclosed in one example a network interface card (NIC), comprising: an ingress interface to receive incoming traffic; a plurality of queues to queue incoming traffic; an egress interface to direct incoming traffic to a plurality of server applications; and a queuing engine, including logic to: uniquely associate a queue with a selected server application; receive an incoming network packet; determine that the selected server application may process the incoming network packet; and assign the incoming network packet to the queue.

Claims (36)

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

an ingress interface to receive incoming traffic;

a plurality of queues to queue incoming traffic;

an egress interface to direct incoming traffic to a plurality of server applications; and

a queuing engine, including logic to:

uniquely associate a queue with a selected server application;

receive an incoming network packet;

determine that the selected server application may process the incoming network packet; and

assign the incoming network packet to the queue.

2 . The NIC of claim 1 , wherein determining that the selected server application may process the incoming network packet comprises inspecting an application identifier of the incoming network packet.

3 . The NIC of claim 2 , wherein the application identifier comprises a port number.

4 . The NIC of claim 1 , further comprising means for notifying the selected server application of the assigning.

5 . The NIC of claim 1 , further comprising means to enable the selected server application to bypass an interrupt mechanism and to perform per-thread, non-interfering busy polling.

6 . The NIC of claim 1 , wherein the queuing engine is further to receive a queue mapping for a socket via an extended socket option.

7 . The NIC of claim 1 , wherein the queueing engine further includes logic to uniquely associate a plurality of queues with the selected server application.

8 . The NIC of claim 1 , wherein the queueing engine further includes logic to uniquely assign a second queue to a second selected server application.

9 . The NIC of claim 1 , wherein the queueing engine further includes logic to assign a support queue to handle incoming packets not directed to a queue uniquely assigned to a server application.

10 . The NIC of claim 9 , wherein the queueing engine further includes logic to assign a plurality of support queues.

11 . The NIC of claim 10 , wherein the plurality of support queues number less than a sum of queues uniquely assigned to one or more selected server applications.

12 . A tangible, non-transitory storage medium having stored thereon instructions to instruct a network interface card (NIC) to:

deterministically associate an ingress queue of the NIC with a server function to be serviced by the NIC;

receive an incoming network packet on an ingress interface of the NIC;

determine that the server function may process the incoming network packet; and

assign the incoming network packet to the queue.

13 . The tangible, non-transitory storage medium of claim 12 , wherein determining that the selected server application may process the incoming network packet comprises inspecting an application identifier of the incoming network packet.

14 . The tangible, non-transitory storage medium of claim 13 , wherein the application identifier comprises a port number.

15 . The tangible, non-transitory storage medium of claim 12 , wherein the queueing engine further includes logic to uniquely associate a plurality of queues with the selected server application.

16 . The tangible, non-transitory storage medium of claim 12 , wherein the queueing engine further includes logic to uniquely assign a second queue to a second selected server application.

17 . The tangible, non-transitory storage medium of claim 12 , wherein the queueing engine further includes logic to assign a support queue to handle incoming packets not directed to a queue uniquely assigned to a server application.

18 . A method of providing deterministic per-application packet queueing, comprising:

uniquely associating one or more ingress queues of a network interface card (NIC) with a server function to be serviced by the NIC;

receiving an incoming network packet on an ingress interface of the NIC;

determining that the network packet is directed to the associated server function; and

assigning the incoming network packet to a queue selected from the one or more uniquely associated queues.

19 . The method of claim 18 , wherein determining that the network packet is directed to the associated server function comprises inspecting an application identifier of the incoming network packet.

20 . The method of claim 19 , wherein the application identifier comprises a port number.