Methods and systems providing fair queuing and priority scheduling to enhance quality of service in a network
First Claim
1. A method for limiting latency for latency-critical network traffic, comprising:
- receiving at a queue structure a plurality of data packets associated with at least one source, wherein said queue structure comprises a plurality of queues, and wherein each queue of said plurality of queues is ranked in said queue structure;
identifying an attribute associated with one of said plurality of data packets;
determining a queue of said plurality of queues to receive said one of said plurality of data packets, wherein said queue is identified based upon said attribute, and wherein said queue is ranked in said queue structure based at least in part upon said attribute;
placing said one of said plurality of data packets into said queue; and
dequeuing said one of said plurality of data packets from said queue structure based at least in part upon the rank of said queue in said queue structure.
8 Assignments
0 Petitions
Accused Products
Abstract
Integrated Bandwidth Latency Scheduler apparatus, method and system (collectively, IBLS) combines Fair Queuing and Priority Schedulers in a single stage to provide bandwidth fairness guarantees as well as latency prioritization. The IBLS includes a scheduler and process that dequeues packets from multiple queues in an order based upon an algorithm of the IBLS that arranges and dequeues those queues having the highest priority based on content therein. The IBLS also utilizes quotas and deficit counters to ensure that packets from each source receive their fair portion of the outgoing link bandwidth. To determine which first in first out queue an incoming data packet is placed, the enqueue agent utilized by the present invention classifies incoming packets based on the type of data included within the data packet, the source of the packet, the type of data flow, or another attribute of the packet, such as a header associated with the packet. Additionally, a weighted fair queuing algorithm provides express paths to latency critical components of user flows while providing overall bandwidth guarantees, and uses bandwidth borrowing from non-critical flows to ensure latency prioritization for high priority flows.
-
Citations
66 Claims
-
1. A method for limiting latency for latency-critical network traffic, comprising:
-
receiving at a queue structure a plurality of data packets associated with at least one source, wherein said queue structure comprises a plurality of queues, and wherein each queue of said plurality of queues is ranked in said queue structure;
identifying an attribute associated with one of said plurality of data packets;
determining a queue of said plurality of queues to receive said one of said plurality of data packets, wherein said queue is identified based upon said attribute, and wherein said queue is ranked in said queue structure based at least in part upon said attribute;
placing said one of said plurality of data packets into said queue; and
dequeuing said one of said plurality of data packets from said queue structure based at least in part upon the rank of said queue in said queue structure. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26)
establishing a latency critical second stage queue structure; and
receiving at said latency critical second stage queue structure said one of said plurality of data packets where said attribute indicates that said one of said plurality of data packets represents data that is latency critical.
-
-
20. The method of claim 19, further comprising the steps of:
-
establishing a latency non-critical second stage queue structure; and
receiving at said latency non-critical second stage queue structure said one of said plurality of data packets where said attribute indicates that said one of said plurality of data packets represents data that is latency non-critical.
-
-
21. The method of claim 20, wherein said step of establishing a latency non-critical second stage queue structure comprises establishing a latency non-critical second stage queue structure comprising a plurality of latency non-critical queues.
-
22. The method of claim 21, further comprising the step of maintaining a non-critical queue structure deficit for each latency non-critical queue, wherein said deficit represents the quantity of data, within one or more data packets, that may be immediately dequeued from each respective queue within the non-critical second stage queue structure.
-
23. The method of claim 22, further comprising the step of maintaining a critical queue structure quota for each latency critical queue within said critical queue structure quota, wherein said quota represents an additional quantity of data, within one or more data packets, that may be consecutively dequeued from a respective queue within the critical second stage queue structure.
-
24. The method of claim 23, further comprising the steps of borrowing at least a portion of said non-critical queue structure deficit and adding said portion to said critical queue structure quota.
-
25. The method of claim 20, wherein the step of receiving comprises receiving at said latency non-critical second stage queue structure said one of said plurality of data packets subsequent to said one of said plurality of data packets being dequeued from said queue structure.
-
26. The method of claim 1, further comprising the step of mapping each one of said plurality of queues within said queue structure to an associated element within an active priority bucket, wherein said associated element points to an active list or inactive list associated with said active priority bucket, wherein said active list identifies the queues prepared to immediately dequeue a data packet, and wherein said inactive list identifies the queues that contain data packets but are not prepared to immediately dequeue the data packets.
-
27. A computer program product for limiting latency for latency-critical network traffic, comprising:
-
a computer readable storage medium having computer-readable program code means embodied in said medium, said computer-readable program code means comprising;
computer readable program code means for receiving at a queue structure a plurality of data packets associated with at least one source, wherein said queue structure comprises a plurality of queues, and wherein each queue of said plurality of queues is ranked in said queue structure;
computer readable program code means for identifying an attribute associated with one of said plurality of data packets; and
computer readable program code means for determining a queue of said plurality of queues to receive said one of said plurality of data packets, wherein said queue is identified based upon said attribute, and wherein said queue is ranked in said queue structure based at least in part upon said attribute;
computer readable program code means for placing said one of said plurality of data packets into said queue; and
computer readable program code means for dequeuing said one of said plurality of data packets from said queue structure based at least in part upon the rank of said queue in said queue structure. - View Dependent Claims (28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52)
computer readable program code means for establishing a latency critical second stage queue structure; and
computer readable program code means for receiving at said latency critical second stage queue structure said one of said plurality of data packets where said attribute indicates that said one of said plurality of data packets represents data that is latency critical.
-
-
46. The computer program product of claim 45, further comprising:
-
computer readable program code means for establishing a latency non-critical second stage queue structure; and
computer readable program code means for receiving at said latency non-critical second stage queue structure said one of said plurality of data packets where said attribute indicates that said one of said plurality of data packets represents data that is latency non-critical.
-
-
47. The computer program product of claim 46, wherein said computer readable program code means for establishing a latency non-critical second stage queue structure comprises computer readable program code means for establishing a latency non-critical second stage queue structure comprising a plurality of latency non-critical queues.
-
48. The computer program product of claim 47, further comprising computer readable program code means for maintaining a non-critical queue structure deficit for each latency non-critical queue, wherein said deficit represents the quantity of data, within one or more data packets, that may be immediately dequeued from each respective queue within the non-critical second stage queue structure.
-
49. The computer program product of claim 48, further comprising computer readable program code means for maintaining a critical queue structure quota for each latency critical queue within said critical queue structure quota, wherein said quota represents an additional quantity of data, within one or more data packets, that may be consecutively dequeued from a respective queue within the critical second stage queue structure.
-
50. The computer program product of claim 49, further comprising computer readable program code means for borrowing at least a portion of said non-critical queue structure deficit and adding said portion to said critical queue structure quota.
-
51. The computer program product of claim 46, wherein the computer readable program code means for receiving comprises computer readable program code means for receiving at said latency non-critical second stage queue structure said one of said plurality of data packets subsequent to said one of said plurality of data packets being dequeued from said queue structure.
-
52. The computer program product of claim 27, further comprising computer readable program code means for mapping each one of said plurality of queues within said queue structure to an associated element within an active priority bucket, wherein said associated element points to an active list or inactive list associated with said active priority bucket, wherein said active list identifies the queues prepared to immediately dequeue a data packet, and wherein said inactive list identifies the queues that contain data packets but are not prepared to immediately dequeue the data packets.
-
53. A system for limiting latency for latency-critical network traffic, comprising:
-
a queue structure comprising a plurality of ranked queues, wherein said queue structure receives a plurality of data packets from a source;
an enqueue agent, wherein said enqueue agent identifies an attribute associated with one of said plurality of data packets, and wherein said enqueue agent determines a queue of said plurality of queues to receive said one of said plurality of data packets, wherein said queue is identified based upon said attribute, and wherein said queue is ranked in said queue structure based at least in part upon said attribute; and
a dequeue agent, wherein said dequeuing agent dequeues said one of said plurality of data packets from said queue structure based at least in part upon the rank of said queue in said queue structure. - View Dependent Claims (54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66)
-
Specification