Packet scheduling methods and apparatus
First Claim
Patent Images
1. A method for scheduling transmission of data packets on a data link, the method comprising:
- a) receiving data packets, each data packet belonging to one of a plurality of classes, the classes having priorities, and assigning each data packet to one of a plurality of queues, each queue capable of accommodating at least one data packet;
b) from a group comprising data packets in the plurality of queues selecting an eligible group of data packets, the eligible group comprising data packets which satisfy an eligibility criterion;
c) determining whether data packets in the eligible group all belong to one or more classes having the same priority or belong to two or more classes having different priorities;
d) if the data packets in the eligible group belong to two or more classes having different priorities, selecting one data packet for transmission on the data link by applying a selection criterion to an eligible sub-group, the eligible sub-group containing those one or more data packets which are in the eligible group and belong to one or more classes having a highest priority;
e) if the data packets in the eligible group all belong to classes having the same priority, selecting one data packet for transmission on the data link by applying a selection criterion to all data packets in the eligible group, wherein the selection criterion comprises a first to finish selection criterion wherein the first to finish selection criterion comprises selecting a packet having a smallest finish time F where F is given by;
where Si is a start time for the packet, Li is a length of the packet, R is a data rate of the data link, and pi is a proportion of the capacity of the data link to which the packet is entitled wherein pi=Qi/N where Qi is a proportion of the capacity of the data link to which a leaf node with which the packet is associated is entitled and N is a number of active queues at the leaf node; and
, f) forwarding the selected packet.
6 Assignments
0 Petitions
Accused Products
Abstract
Providing different levels of quality of service for different data flows being transported over a data link requires a very fast way to schedule individual packets for forwarding on the data link. The invention provides scheduling methods which give preference to higher priority packets while treating lower priority packets fairly. The methods can provide shorter latencies for higher priority packets than can many prior scheduling methods. The methods and apparatus of the invention are readily adaptable for use with scheduling rules provided in the form of hierarchical policy trees.
-
Citations
37 Claims
-
1. A method for scheduling transmission of data packets on a data link, the method comprising:
-
a) receiving data packets, each data packet belonging to one of a plurality of classes, the classes having priorities, and assigning each data packet to one of a plurality of queues, each queue capable of accommodating at least one data packet;
b) from a group comprising data packets in the plurality of queues selecting an eligible group of data packets, the eligible group comprising data packets which satisfy an eligibility criterion;
c) determining whether data packets in the eligible group all belong to one or more classes having the same priority or belong to two or more classes having different priorities;
d) if the data packets in the eligible group belong to two or more classes having different priorities, selecting one data packet for transmission on the data link by applying a selection criterion to an eligible sub-group, the eligible sub-group containing those one or more data packets which are in the eligible group and belong to one or more classes having a highest priority;
e) if the data packets in the eligible group all belong to classes having the same priority, selecting one data packet for transmission on the data link by applying a selection criterion to all data packets in the eligible group, wherein the selection criterion comprises a first to finish selection criterion wherein the first to finish selection criterion comprises selecting a packet having a smallest finish time F where F is given by;
where Si is a start time for the packet, Li is a length of the packet, R is a data rate of the data link, and pi is a proportion of the capacity of the data link to which the packet is entitled wherein pi=Qi/N where Qi is a proportion of the capacity of the data link to which a leaf node with which the packet is associated is entitled and N is a number of active queues at the leaf node; and
,f) forwarding the selected packet. - View Dependent Claims (2, 3, 4, 5, 6)
where Vi−
1 is a previous virtual time value, Li is a length of the forwarded packet and R is a data rate of the link on which the packet is forwarded.
-
-
7. A method for scheduling transmission of data packets on a data link, the method comprising:
-
a) providing a plurality of scheduling engines interlinked to form a hierarchical tree, the hierarchical tree including at least a parent scheduling engine and a plurality of child scheduling engines linked to the parent scheduling engine, each of the child scheduling engines adapted to select and hold a data packet for eventual selection by the parent scheduling engine, the data packets each belonging to one of a plurality of classes, the classes each having a priority;
b) in the parent scheduling engine selecting one data packet from among the data packets being held by the child scheduling engines;
i) selecting an eligible group of data packets, the eligible group consisting of fewer than all of the data packets being held by the child scheduling engines and then selecting the one data packet from among data packets in the eligible group;
ii) if there are any high priority data packets being held by any of the child scheduling engines, selecting one high priority data packet by applying a selection criterion to high priority data packets held by the child scheduling engines;
iii) if there are no high priority data packets held by any of the child scheduling engines but there are low priority data packets held by one or more of the child scheduling engines, selecting one low priority data packet by applying a selection criterion to low priority data packets being held by the child scheduling engines. - View Dependent Claims (8, 9, 10, 11, 12, 13, 14, 15)
where Vi−
1 is a previous virtual time value, Li is a length of the packet passed on and R is a data rate of the link on which the packet is forwarded.
-
-
11. The method of claim 7, wherein the selection criterion is a first to finish selection criterion.
-
12. The method of claim 7 comprising, whenever a data packet belonging to a high priority class becomes available for selection by a child scheduling engine and a data packet already selected and being held by that child scheduling engine belongs to a lower priority class, making the data packet belonging to the high priority class available for selection by the parent scheduling engine in place of the already selected data packet.
-
13. The method of claim 7, wherein the hierarchical tree comprises a plurality of leaf nodes, one or more queues are associated with each leaf node, the one or more queues associated with one leaf node receive only data packets belonging to a class having a high priority and the one or more queues associated with another leaf node receive only data packets belonging to a class having a lower priority.
-
14. The method of claim 7 comprising passing a value representing a priority of a class to which the selected packet belongs to the parent scheduling engine.
-
15. The method of claim 7, wherein the selection criterion is a first to finish selection criterion.
-
16. A method for scheduling transmission of data packets on a data link, the method comprising:
-
a) providing a plurality of schedulers interlinked to forrn a hierarchical tree, the hierarchical tree including a first scheduler adapted to select data packets from among data packets selected by one or more child schedulers, the first scheduler having a parent scheduler adapted to select data packets from a group of one or more data packets including a data packet selected by the first scheduler each child scheduler adapted to select data packets from data packets at heads of one or more queues, each queue capable of receiving one or more data packets, the data packets each belonging to a class, each class having one of two or more priorities;
b) in the first scheduler;
i) providing locations for holding one data packet from each of a plurality of different priorities, and, if any of the locations is vacant and the eligible group includes one or more data packets belonging to classes having the same priority as a priority corresponding to the vacant location, selecting from the eligible group one data packet belonging to a class having the same priority as the priority corresponding to the vacant location;
ii) from a group comprising data packets selected by the child schedulers, selecting an eligible group of data packets, the eligible group comprising data packets eligible for transmission according to an eligibility criterion;
iii) if the data packets in the eligible group do not all belong to classes having the same priority, selecting one data packet from the eligible group by applying a selection criterion to an eligible sub-group, the eligible sub-group containing those one or more data packets which are in the eligible group and belong to classes having a priority higher than or equal to a priority of every other class of packet in the eligible group;
iv) if the data packets in the eligible group all belong to classes having the same priority, selecting one data packet by applying a selection criterion to all data packets in the eligible group; and
,v) making the selected data packet available for forwarding by the parent scheduler. - View Dependent Claims (17, 18, 19, 20)
where Si is a start time for the packet, Li is a length of the packet, R is a data rate associated with the first scheduler, and pi is a proportion of the data rate to which the child scheduler is entitled.
-
-
21. Apparatus for scheduling transmission of data packets on a data link, the apparatus comprising:
-
a) a memory capable of holding a plurality of data packets queued in a plurality of queues;
b) means for keeping a start time, a finish time and a priority for a packet at a head of each of the queues;
c) a scheduling engine adapted to select one packet from a plurality of packets at the heads of the queues, the scheduling engine comprising;
i) a counter for maintaining a virtual time for the scheduling engine;
ii) means for comparing the start time for each packet to the virtual time for the scheduling engine to select an eligible group of packets;
iii) means for comparing the priorities of packets in the eligible group of packets and eliminating from the eligible group packets having a priority lower than a priority for another packet in the eligible group; and
,iv) means for selecting one packet from the eligible group having an earliest finish time. - View Dependent Claims (22, 26, 27, 28)
i) a counter for maintaining a virtual time for the parent scheduling engine; ii) means for comparing the start time for each packet held by a child scheduling engine linked to the parent scheduling engine to the virtual time for the parent scheduling engine to select an eligible group of packets;
iii) means for comparing the priorities of packets in the eligible group of packets and eliminating from the eligible group packets having a priority lower than a priority for another packet in the eligible group; and
,iv) means for selecting one packet from the eligible group having an earliest finish time.
-
-
26. The apparatus of claim 21, wherein the eligible group of packets includes packets having a start time less than or equal to the virtual time.
-
27. The apparatus of claim 26, wherein the scheduling engine comprises means for updating the virtual time maintained by the counter after each time a packet is forwarded.
-
28. The apparatus of claim 27, wherein the updated virtual time, Vi, is given by:
-
where Vi−
1 is a previous virtual time, Li is a length of the forwarded packet and R is a data rate of the data link on which the packet is forwarded.
-
-
23. Apparatus for scheduling the transmission of data packets on a data link, the apparatus comprising a plurality of scheduling engines linked to form a hierarchical tree, the hierarchical tree comprising one or more parent scheduling engines each linked to one or more child scheduling engines, the one or more parent scheduling engines comprising:
-
i) a counter for maintaining a virtual time for the parent scheduling engine;
ii) means for comparing the start time for each packet held by a child scheduling engine linked to the parent scheduling engine to the virtual time for the parent scheduling engine to select an eligible group of packets; and
,iv) means for selecting one packet having a first priority from the eligible group; and
,v) means for selecting another packet having a second priority different from the first priority from the eligible group. - View Dependent Claims (29, 30, 31)
where Vi−
1 is a previous virtual time, Li is a length of the forwarded packet and R is a data rate of the data link on which the packet is forwarded.
-
-
24. A method for scheduling transmission of data packets on a data link, the method comprising:
-
a) providing a plurality of scheduling engines interlinked to form a hierarchical tree, the hierarchical tree including at least a parent scheduling engine and a plurality of child scheduling engines linked to the parent scheduling engine, each of the child scheduling engines adapted to select and hold a data packet for eventual selection by the parent scheduling engine, the data packets each belonging to one of a plurality of classes, the classes each having a priority;
b) in the parent scheduling engine;
i) if any of the child scheduling engines are holding any data packets classified as having a first priority and the parent scheduling engine is not already holding a first priority data packet, selecting one of the first priority data packets by applying a selection criterion to first priority data packets held by the child scheduling engines; and
,ii) if any of the child scheduling engines are holding any data packets classified as having a second priority and the parent scheduling engine is not already holding a second priority data packet, selecting one of the second priority data packets by applying a selection criterion to second priority data packets held by the child scheduling engines. - View Dependent Claims (32, 33, 34)
where Si is a start time for the packet, Li is a length of the packet, R is a data rate associated with the first scheduler, and pi is a proportion of the data rate to which the child scheduler is entitled.
-
-
34. The method of claim 24, wherein the selection criterion is based on a start criterion.
-
25. A method for scheduling transmission of data packets on a data link, the method comprising:
-
a) providing a plurality of schedulers interlinked to form a hierarchical tree, the hierarchical tree including a first scheduler adapted to select data packets from among data packets selected by one or more child schedulers, the first scheduler having a parent scheduler adapted to select data packets from a group of one or more data packets including a data packet selected by the first scheduler, each child scheduler adapted to select data packets from data packets at heads of one or more queues, each queue capable of receiving one or more data packets, the data packets each belonging to a class, each class having one of two or more priorities;
b) in the first scheduler;
i) providing a plurality of locations each able to hold one data packet, each of the locations corresponding to a different one of the two or more priorities;
ii) whenever one or more of the locations is vacant, selecting an eligible group of data packets from a group comprising data packets selected by the child schedulers, the eligible group comprising data packets eligible for transmission according to an eligibility criterion; and
,iii) for each of the vacant locations for which the eligible group comprises one or more packets belonging to a class having a priority equal to the priority of the vacant location, selecting one data packet from the eligible group by applying a selection criterion to an eligible subgroup, the eligible sub-group containing those one or more data packets which are in the eligible group and belong to classes having a priority equal to the priority of the vacant location; and
,iv) holding the selected data packets available for forwarding by the parent scheduler. - View Dependent Claims (35, 36, 37)
where Vi−
1 is a previous virtual time, Li is a length of the forwarded packet and R is a data rate of the data link on which the packet is forwarded.
-
Specification