IP Library › Granted Patent US 10,547,559
Granted Patent B2
US 10,547,559 · App. 14/998,138 · Granted Jan 28, 2020

Application-level network queueing

Inventors: Anil Vasudevan (Portland, OR); Kiran A. Patil (Portland, OR); Arun Chekhov Ilango (Hillsboro, OR)
Assignee: Intel Corporation
H04L47/50H04L43/10
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 10,547,559
App. No.
14/998,138
Granted
Jan 28, 2020
Kind
B2
Abstract

In an example, there is disclosed a computing apparatus, having: a network interface configured to provide a plurality of queues; an application; and one or more logic elements comprising a queuing engine to: inspect an incoming packet; and assign the incoming packet to a dedicated queue for the application based on a classifier. There is also disclosed a method of providing a queuing engine, and one or more tangible, non-transitory computer-readable storage mediums having stored thereon executable instructions for providing a queuing engine.

Claims (53)

1. An apparatus, comprising:

a hardware platform;

a network interface configured to provide a plurality of queues and to operate according to a multi-layer networking protocol stack;

first logic implemented on the hardware platform to provide an application; and

second logic implemented on the hardware platform to provide a queuing engine to:

assign a dedicated queue or group of queues to the application;

receive an incoming packet;

inspect the incoming packet in a top-down fashion to identify a destination port for the incoming packet at an application layer of the multi-layer networking protocol stack;

determine that the destination port deterministically corresponds to the application; and

assign the incoming packet to the dedicated queue or group of queues for the application, comprising using a port number as a key to assign the incoming packet to the dedicated queue or group of queues.

2. The apparatus of claim 1 , further comprising means for notifying the application of the assigning.

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

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

5. The apparatus of claim 1 , wherein the application is to:

receive a notification of the assignment of the dedicated queue or group of queues from the network interface, comprising a queue assignment for a socket, wherein the queue assignment is unique to the application; and

assign the socket to a thread associated with the queue assignment.

6. The apparatus of claim 5 , wherein the thread is uniquely associated with the queue assignment in a one-to-one arrangement.

7. The apparatus of claim 5 , wherein a plurality of queue assignments is associated with the thread in an n-to-1 arrangement, wherein n>1.

8. The apparatus of claim 5 , wherein the application is to bypass an interrupt mechanism and to perform per-thread, non-interfering busy polling.

9. The apparatus of claim 5 , wherein the application is to set queue mapping for the socket via an extended socket option.

10. One or more tangible, non-transitory computer-readable mediums having stored thereon instructions for providing a queuing engine to:

assign a dedicated queue or group of queues to an application;

receive an incoming packet;

inspect the incoming packet on a network interface in a top-down fashion to identify a destination port for the incoming packet at an application layer of a networking protocol stack;

determine that the destination port deterministically corresponds to the application; and

assign the incoming packet to the dedicated queue or group of queues for the application, comprising using a port number as a key to assign the incoming packet to the dedicated queue or group of queues.

11. The one or more tangible, non-transitory computer-readable storage mediums of claim 10 , further comprising instructions to notify the application of the assigning.

12. The one or more tangible, non-transitory computer-readable storage mediums of claim 10 , further comprising instructions to enable the application to bypass an interrupt mechanism and to perform per-thread, non-interfering busy polling.

13. The one or more tangible, non-transitory computer-readable storage mediums of claim 10 , wherein the queuing engine is further to receive a queue mapping for a socket via an extended socket option.

14. One or more tangible, non-transitory computer-readable mediums having stored thereon instructions providing an application to:

receive a notification of an assignment of a dedicated queue or group of queues from a network interface, comprising a queue assignment for a socket, wherein the queue assignment is unique to the application; and

assign the socket to a thread associated with the assignment of the dedicated queue or group of queues based on a port number, wherein the port number functions as an application identifier.

15. The one or more tangible, non-transitory computer-readable storage mediums of claim 14 , wherein the thread is uniquely associated with the assignment of the dedicated queue or group of queues in a one-to-one arrangement.

16. The one or more tangible, non-transitory computer-readable storage mediums of claim 14 , wherein a plurality of queue assignments is associated with the thread in an n-to-1 arrangement, wherein n>1.

17. The one or more tangible, non-transitory computer-readable storage mediums of claim 14 , wherein the application is to bypass an interrupt mechanism and to perform per-thread, non-interfering busy polling.

18. The one or more tangible, non-transitory computer-readable storage mediums of claim 14 , wherein the application is to set queue mapping for the socket via an extended socket option.

19. A method of providing application-level network queuing, comprising:

providing a plurality of queues on a network interface;

providing a network-capable application;

second logic implemented on a hardware platform comprising a queuing engine for:

assigning a dedicated queue or group of queues to the application;

receiving an incoming packet;

inspecting the incoming packet in a top-down fashion to identify a destination port for the incoming packet at an application layer of a networking protocol stack;

determining that the destination port deterministically corresponds to the application; and

assigning the incoming packet to the dedicated queue or group of queues for the application, comprising using a port number as a key to assign the incoming packet to the dedicated queue or group of queues.

20. The method of claim 19 , wherein the queuing engine is further to map a queue for a socket via an extended socket option.

21. The method of claim 19 , wherein the application is to:

receive a notification of the assignment of the dedicated queue or group of queues having a queue assignment for a socket, wherein the queue assignment is unique to the application; and

assign the socket to a thread associated with the assignment of the dedicated queue or group of queues.

22. The method of claim 21 , further comprising uniquely associating the thread with the queue assignment in a one-to-one arrangement.

23. The method of claim 21 , wherein a plurality of queue assignments is associated with the thread in an n-to-1 arrangement, wherein n>1.

24. The method of claim 21 , wherein the application is to bypass an interrupt mechanism and to perform per-thread, non-interfering busy polling.

25. The method of claim 21 , wherein the application is to set queue mapping for the socket via an extended socket option.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 15, 2016
From: VASUDEVAN, ANIL; PATIL, KIRAN A.; ILANGO, ARUN CHEKHOV
To: INTEL CORPORATION
Reel/Frame 038290/0649 →
Continuity (1)
Related Publication 20170187640A1 · Jun 29, 2017
Cited By (2)
US 12,255,830 US 12,375,406