IP Library › Granted Patent US 12,255,830
Granted Patent B2
US 12,255,830 · App. 18/201,068 · Granted Mar 18, 2025

Application-level network queueing

Inventors: Anil Vasudevan (Portland, OR); Kiran A. Patil (Portland, OR); Arun Chekhov Ilango (Hillsboro, OR)
Assignee: Intel Corporation
H04L47/50H04L47/24H04L47/2475H04L49/90H04L49/9068H04L43/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 12,255,830
App. No.
18/201,068
Granted
Mar 18, 2025
Kind
B2
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 (86)

1. At least one non-transitory storage medium storing instructions to be executed by at least one server system, the instructions, when executed by the at least one server system, resulting in the at least one server system being configurable to perform operations comprising:

assigning, based upon respective application-specific quality of service-related data:

one or more queues to respective applications; and/or

respective portions of network traffic to the one or more queues;

wherein:

the respective application-specific quality of service-related data is associated with the respective applications;

the one or more queues are for use in application-level steering of the respective portions of the network traffic;

the respective application-specific quality of service-related data is configurable to be based upon respective application-associated identifier values;

the respective application-associated identifier values are configurable to be based upon respective port numbers associated with the respective applications;

the assigning is configurable to be associated with at least one tail latency;

the respective application-specific quality of service-related data is to be generated based upon policy-related data;

the policy-related data comprises quality of service policy data; and

the policy-related data is to be defined, at least in part, via a management user interface to be provided using an operating system.

2. The at least one non-transitory storage medium of claim 1 , wherein:

the policy-related data comprises user-definable security policy data; and

the user-definable security policy data is to be implemented in association with at least one operating system of the at least one server system.

3. The at least one non-transitory storage medium of claim 1 , wherein:

the respective applications are associated with tenant-associated virtual machines;

the respective applications comprise email and/or web applications; and

the at least one server system is configurable to implement receive-side scaling with respect to queue assignment associated with the respective applications.

4. The at least one non-transitory storage medium of claim 3 , wherein:

the at least one server system is configurable to implement network traffic load balancing in association with the respective applications; and

the at least one server system comprises a scalable distributed computer system.

5. The at least one non-transitory storage medium of claim 4 , wherein:

the one or more queues are configurable to be aligned with application threads.

6. The at least one non-transitory storage medium of claim 1 , wherein:

the respective port numbers comprise port 25 and/or port 80 ; and

the respective port numbers are to be used as respective queue assignment key values.

7. A method implemented using at least one server system, the method comprising:

assigning, based upon respective application-specific quality of service-related data:

one or more queues to respective applications; and/or

respective portions of network traffic to the one or more queues;

wherein:

the respective application-specific quality of service-related data is associated with the respective applications;

the one or more queues are for use in application-level steering of the respective portions of the network traffic;

the respective application-specific quality of service-related data is configurable to be based upon respective application-associated identifier values;

the respective application-associated identifier values are configurable to be based upon respective port numbers associated with the respective applications;

the assigning is configurable to be associated with at least one tail latency;

the respective application-specific quality of service-related data is to be generated based upon policy-related data;

the policy-related data comprises quality of service policy data; and

the policy-related data is to be defined, at least in part, via a management user interface to be provided using an operating system.

8. The method of claim 7 , wherein:

the policy-related data comprises user-definable security policy data; and

the user-definable security policy data is to be implemented in association with at least one operating system of the at least one server system.

9. The method of claim 7 , wherein:

the respective applications are associated with tenant-associated virtual machines;

the respective applications comprise email and/or web applications; and

the at least one server system is configurable to implement receive-side scaling with respect to queue assignment associated with the respective applications.

10. The method of claim 9 , wherein:

the at least one server system is configurable to implement network traffic load balancing in association with the respective applications; and

the at least one server system comprises a scalable distributed computer system.

11. The method of claim 10 , wherein:

the one or more queues are configurable to be aligned with application threads.

12. The method of claim 7 , wherein:

the respective port numbers comprise port 25 and/or port 80 ; and

the respective port numbers are to be used as respective queue assignment key values.

13. At least one server system comprising:

processor circuitry;

storage storing instructions to be executed by the processor circuitry, the instructions when executed by the processor circuitry resulting in the at least one server system being configurable to perform operations comprising:

assigning, based upon respective application-specific quality of service-related data:

one or more queues to respective applications; and/or

respective portions of network traffic to the one or more queues;

wherein:

the respective application-specific quality of service-related data is associated with the respective applications;

the one or more queues are for use in application-level steering of the respective portions of the network traffic;

the respective application-specific quality of service-related data is configurable to be based upon respective application-associated identifier values;

the respective application-associated identifier values are configurable to be based upon respective port numbers associated with the respective applications;

the assigning is configurable to be associated with at least one tail latency;

the respective application-specific quality of service-related data is to be generated based upon policy-related data;

the policy-related data comprises quality of service policy data; and

the policy-related data is to be defined, at least in part, via a management user interface to be provided using an operating system.

14. The at least one server system of claim 13 , wherein:

the policy-related data comprises user-definable security policy data; and

the user-definable security policy data is to be implemented in association with at least one operating system of the at least one server system.

15. The at least one server system of claim 13 , wherein:

the respective applications are associated with tenant-associated virtual machines;

the respective applications comprise email and/or web applications; and

the at least one server system is configurable to implement receive-side scaling with respect to queue assignment associated with the respective applications.

16. The at least one server system of claim 15 , wherein:

the at least one server system is configurable to implement network traffic load balancing in association with the respective applications; and

the at least one server system comprises a scalable distributed computer system.

17. The at least one server system of claim 16 , wherein:

the one or more queues are configurable to be aligned with application threads.

18. The at least one server system of claim 13 , wherein:

the respective port numbers comprise port 25 and/or port 80 ; and

the respective port numbers are to be used as respective queue assignment key values.

Continuity (4)
Continuation 17566381 · Dec 30, 2021
Continuation 16773801 · Jan 27, 2020
Continuation 14998138 · Dec 26, 2015
Related Publication 20230300078A1 · Sep 21, 2023
References Cited (129)
US 6256660B1 · Govindaraju et al. · 2001 [cited by applicant]
US 6295532B1 · Hawkinson · 2001 [cited by applicant]
US 7433949B2 · Xu et al. · 2008 [cited by applicant]
US 7702739B1 · Cheng et al. · 2010 [cited by applicant]
US 7937499B1 · Tripathi · 2011 [cited by applicant]
US 8650168B2 · Rathi · 2014 [cited by examiner]
US 9378047B1 · Gould et al. · 2016 [cited by applicant]
US 9619286B1 · Wagner et al. · 2017 [cited by applicant]
US 10169235B2 · Saha et al. · 2019 [cited by applicant]
US 10547559B2 · Vasudevan et al. · 2020 [cited by applicant]
US 10756816B1 · Dreier · 2020 [cited by applicant]
US 11474868B1 · Musa et al. · 2022 [cited by applicant]
US 20020114277A1 · Kyusojin · 2002 [cited by applicant]
US 20020184446A1 · Kagan · 2002 [cited by examiner]
US 20030118029A1 · Maher, III · 2003 [cited by examiner]
US 20040215847A1 · Dirstine et al. · 2004 [cited by applicant]
US 20040230875A1 · Kapauan et al. · 2004 [cited by applicant]
US 20060143710A1 · Desai et al. · 2006 [cited by applicant]
US 20060212589A1 · Hayer et al. · 2006 [cited by applicant]
US 20060233100A1 · Luft et al. · 2006 [cited by applicant]
US 20070067324A1 · Burkhardt · 2007 [cited by applicant]
US 20070067770A1 · Thomasson · 2007 [cited by applicant]
US 20070130367A1 · Kashyap · 2007 [cited by applicant]
US 20070143430A1 · Johnson et al. · 2007 [cited by applicant]
US 20080285560A1 · Curtis · 2008 [cited by examiner]
US 20090217369A1 · Abeni et al. · 2009 [cited by applicant]
US 20100169888A1 · Hare · 2010 [cited by examiner]
US 20100202289A1 · Madan · 2010 [cited by examiner]
US 20110019552A1 · Karaoguz et al. · 2011 [cited by applicant]
US 20110128923A1 · Cilli et al. · 2011 [cited by applicant]
US 20110142064A1 · Dubal et al. · 2011 [cited by applicant]
US 20110296415A1 · Khan et al. · 2011 [cited by applicant]
US 20120020214A1 · Brown et al. · 2012 [cited by applicant]
US 20120039337A1 · Jackowski et al. · 2012 [cited by applicant]
US 20120078994A1 · Jackowski et al. · 2012 [cited by applicant]
US 20120084438A1 · Raleigh · 2012 [cited by examiner]
US 20120240119A1 · Xie et al. · 2012 [cited by applicant]
US 20120240185A1 · Kapoor et al. · 2012 [cited by applicant]
US 20130077486A1 · Keith · 2013 [cited by applicant]
US 20130138760A1 · Tsirkin · 2013 [cited by applicant]
US 20130142066A1 · Yamaguchi et al. · 2013 [cited by applicant]
US 20130203422A1 · Masputra et al. · 2013 [cited by applicant]
US 20130204965A1 · Masputra et al. · 2013 [cited by applicant]
US 20130298201A1 · Aravindakshan et al. · 2013 [cited by applicant]
US 20140064295A1 · Deisinger et al. · 2014 [cited by applicant]
US 20140075567A1 · Raleigh · 2014 [cited by examiner]
US 20140096165A1 · Bei et al. · 2014 [cited by applicant]
US 20140098671A1 · Raleigh · 2014 [cited by examiner]
US 20140137215A1 · Hummel · 2014 [cited by examiner]
US 20140280709A1 · Li et al. · 2014 [cited by applicant]
US 20140281058A1 · Solihin · 2014 [cited by applicant]
US 20140351206A1 · Lim · 2014 [cited by applicant]
US 20150012864A1 · Goodwin · 2015 [cited by examiner]
US 20150049769A1 · Tamir et al. · 2015 [cited by applicant]
US 20150055468A1 · Agarwal et al. · 2015 [cited by applicant]
US 20150067819A1 · Shribman et al. · 2015 [cited by applicant]
US 20150156124A1 · Tsuji · 2015 [cited by applicant]
US 20150277997A1 · Pope et al. · 2015 [cited by applicant]
US 20150334008A1 · Kim et al. · 2015 [cited by applicant]
US 20160232111A1 · Chang et al. · 2016 [cited by applicant]
US 20160378545A1 · Ho · 2016 [cited by applicant]
US 20170048774A1 · Cheng et al. · 2017 [cited by applicant]
US 20170103031A1 · Liu et al. · 2017 [cited by applicant]
US 20170147522A1 · Yu et al. · 2017 [cited by applicant]
US 20170187640A1 · Vasudevan et al. · 2017 [cited by applicant]
US 20170324637A1 · Emam et al. · 2017 [cited by applicant]
US 20180287923A1 · Emam et al. · 2018 [cited by applicant]
US 20180335957A1 · Enz et al. · 2018 [cited by applicant]
US 20190079883A1 · Wang et al. · 2019 [cited by applicant]
US 20190245924A1 · Li · 2019 [cited by applicant]
US 20200127934A1 · Fu · 2020 [cited by applicant]
US 20200186579A1 · Adams et al. · 2020 [cited by applicant]
US 20200396126A1 · L'Ecuyer et al. · 2020 [cited by applicant]
US 20210075745A1 · Badger · 2021 [cited by applicant]
US 20210216459A1 · Benhanokh et al. · 2021 [cited by applicant]
CN 1429024A · 2003 [cited by examiner]
CN 104376036 · 2015 [cited by applicant]
CN 103038652B · 2016 [cited by examiner]
JP 2002185509 · 2002 [cited by applicant]
JP 2015527755 · 2015 [cited by applicant]
WO 2017112326 · 2017 [cited by applicant]
Extended European Search Report for European Patent Application No. 16879810.6, dated May 22, 2019. [cited by applicant]
Final Office Action for U.S. Appl. No. 16/773,801, dated Dec. 5, 2022. [cited by applicant]
International Search Report and Written Opinion for PCT Patent Application No. PCT/US2016/063718, dated Mar. 8, 2017. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 16/773,801, dated Jan. 25, 2022. [cited by applicant]
Office Action and Search Report for Chinese Patent Application No. 201611054171.8, dated Aug. 6, 2019. [cited by applicant]
Office Action for Chinese Patent Application No. 201611054171.8, dated Feb. 28, 2020. [cited by applicant]
Office Action for Japanese Patent Application No. 2016-234995, dated Jul. 31, 2018. [cited by applicant]
Office Action for Japanese Patent Application No. 2016-234995, dated Nov. 21, 2017. [cited by applicant]
Office Action for U.S. Appl. No. 16/773,801, dated Jul. 15, 2022. [cited by applicant]
Office Action for U.S. Appl. No. 16/773,801, dated Jul. 6, 2022. [cited by applicant]
Office Action for U.S. Appl. No. 16/773,801, dated Mar. 30, 2021. [cited by applicant]
Office Action for U.S. Appl. No. 16/773,801, dated Sep. 13, 2021. [cited by applicant]
“DSCP to Queue”, retrieved online via https://www.cisco.com/assets/sol/sb/Switches_Emulators_v2_3_5_xx/help/350_550/tesla_350_550_olh/dscp_to_queue.html; Nov. 16, 2021. [cited by applicant]
“PyMOTW”, Published Jan. 2, 2014; Publisher: Doug Hellmann (The Phython Standard Library by Example). [cited by applicant]
“Using threads to Handle Sockets”, Published May 14, 201; Publisher: Levi. [cited by applicant]
Herbert, T., “[Patch] net: add Documentation/networking/scaling.txt”, Jul. 31, 2011; retrieved online via https://www.spinics.net/lists/linux-doc/msg02975.html, Nov. 1, 2021. [cited by applicant]
Extended European Search Report from European Patent Application No. 20931601.7 notified Apr. 4, 2024, 7 pgs. [cited by applicant]
Final Office Action from U.S. Appl. No. 16/849,915 notified Sep. 21, 2023, 38 pgs. [cited by applicant]
International Search Report and Written Opinion from PCT/US2016/065116 notified Apr. 9, 2021, 10 pgs. [cited by applicant]
Non-Final Office Action from U.S. Appl. No. 16/849,915 notified May 1, 2023, 29 pgs. [cited by applicant]
Notice of Allowance from U.S. Appl. No. 16/849,915 notified Feb. 21, 2024, 11 pgs. [cited by applicant]
Office Action from Chinese Patent Application No. 202111569280.4 notified Jun. 19, 2024, 8 pgs. [cited by applicant]
Office Action from Chinese Patent Application No. 202111569280.4 notified Nov. 30, 2023, 3 pgs. [cited by applicant]
“Configure Class of Service”, <https://docs.vmware.com/en/VMware-SD-WAN/5.4/VMware-SD-WAN-Ad...stration-Guide/GUID-AF976888-0795-4EDC-AC0F-4C81E4F541F2.html> May 22, 2023, 4 pgs. [cited by applicant]
“Dynamic Multipath Optimization”, <https://docs.vmware.com/en/VMware-SD-WAN/5.4/VMware-SD-WAN-A...tration-Guide/GUID-BEDE8CBD-D55B-4AB4-949C-E7CC35ADF034.html> accessed online Dec. 8, 2023, 20 pgs. [cited by applicant]
“Dynamic Multipath Optimization”, White Paper, Dec. 2020, 18 pgs. [cited by applicant]
“Embracing the Future of Data Management: the Potential Benefits of Application Device Queue in VMware VSAN”, <https://www.mrvsan.com/embracing-the-future-of-data-management-the-potential-benefits-of-application-device-… [cited by applicant]
“Mellanox Message Acceleration Software Enables Lowest-Latency for a Wide Range of Financial Services and Web 2.0 Applications,” Press Release, Mellanox Technologies, May 16, 2011, 3 pgs. [cited by applicant]
“Optimizing storage applications based on Kemel TCP/IP stack”, ACM, Aug. 17-20, 2020, Edmonton, Canada, 10 pgs. [cited by applicant]
“Show 257: VeloCloud SD-WAN: Sponsored”, <https://packetpushers.net/podcast/show-257-velocloud-sd-wan-sponsored/> Oct. 2, 2015, 4 pgs. [cited by applicant]
“Software Defined Cloud Connector for WSS”, Symantec 2018, 5 pgs. [cited by applicant]
“VeloCloud's SD-WAN puts packet steering on steroids to optimize performance”, <https://www.networkworld.com/article/939110/veloclouds-sd-wan-puts-packet-steering-on-steroids-to-optimize-performance.html> accessed onlin… [cited by applicant]
“VMware SD-WAN Edge platform specifications”, Nov. 2023, 18 pgs. [cited by applicant]
“VMware SD-WAN QoS Overview”, DMPO and integration with MPLS QoS, Solution Overview, 9 pgs. [cited by applicant]
Bureddy, Devendar, “Enabling Exascale Co-Design Architecture”, Mellanox Technologies, OSU MUG, Aug. 2016, 130 pgs. [cited by applicant]
Dumazet, Eric, “Busy Polling: Past, Present, Future”, Google, netdev 2.1, Montreal, 2017, 4 pgs. [cited by applicant]
Harris, Jim, “SPDK NVMe-oF TCP Transport”, <https://spdk.io/news/2018/11/15/nvme_tcp/> Nov. 15, 2018, 1 pg. [cited by applicant]
Intel, “Performance Testing Application Device Queues (ADQ) with Redis”, Solution Brief, Intel Connectivity, Ethernet Networking Division, Mar. 8, 2019, 7 pgs. [cited by applicant]
Kamath, Aditya, “Performance Analysis of Linux Kernel Library User-Space Top Stack”, Salesforce engineering, <https://engineering.salesforce.com/performance-analysis-of-linux-kernel-library-user-space-tcp-stack-be75fb19… [cited by applicant]
Li, Huaicheng , et al., “LeapIO: Efficient and Portable Virtual NVMe Storage”, Proceedings of the Twenty-Fifth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS '2… [cited by applicant]
Ousterhout, Amy, et al., “Shenango: Achieving High CPU Efficiency for Latency-sensitive Datacenter Workloads” , Proceedings of the 16th USENIX Symposium on Networked Systems Design and Implementation (NSDI '19). Feb. 26… [cited by applicant]
Vasudevan, Anil, “Intel Ethernet 80 Series With Application Device Queues [ADQ]”, Interconnect Day, Apr. 8, 2019, 23 pgs. [cited by applicant]
Xing, Michael, et al., “A New Windows Monolithic NVMe SSD Driver in Cloud”, 2019 Storage Developer Conference, Sep. 23-26, 2019, Santa Clara, CA, 26 pgs. [cited by applicant]
Yang, Ziye, “SPDK based user space NVMe over TCP transport solution”, 2019 Storage Developer Conference, Intel Corporation, Sep. 23-26, 2019, Santa Clara, CA, 29 pgs. [cited by applicant]
Yang, Ziye, et al., “uNVMe-TCP: A User Space Approach to Optimizing NVMe over Fabrics TCP Transport”, Springer Nature Switzerland AG 2020, pp. 125-142. [cited by applicant]
Extended European Search Report from European Patent Application No. 24177348.0 notified Jul. 1, 2024, 7 pgs. [cited by applicant]
Notice of Allowance from U.S. Appl. No. 16/849,915 notified Aug. 5, 2024, 23 pgs. [cited by applicant]
Office Action from Chinese Patent Application No. 202111569280.4 notified Nov. 18, 2024, 6 pgs. [cited by applicant]