Event-driven cell scheduler and method for supporting multiple service categories in a communication network
First Claim
Patent Images
1. A method for scheduling transmission times for a plurality of packets on an outgoing link for a communication network, comprising the steps of:
- A) enqueuing, by a memory controller, the packets in a plurality of per connection data queues in at least one packet memory, wherein each queue has a queue ID;
B) notifying, by the memory controller, at least one multiservice category scheduler, where a data queue is empty immediately prior to the memory controller enqueuing the packets, that a first arrival has occurred;
C) calculating, by a calculation unit of the multiservice category scheduler, using service category and present state information associated with a connection stored in a per connection context memory, an earliest transmission time, TIME EARLIEST and an updated PRIORITY INDEX and updating and storing present state information in a per connection context memory;
D) generating, by the calculation unit, a "task" wherein the task includes;
D1) the queue ID;
D2) the TIME EARLIEST; and
D3) the PRIORITY INDEX;
E) inserting the task into one of at least a first calendar queue;
F) storing, by the calendar queue, at the calculated TIME EARLIEST, the task in one of a plurality of priority task queues;
G) removing, by a priority task decoder, at a time equal to or greater than TIME EARLIEST in accordance with a time opportunity, the task from the priority task queue and generating a request to the memory controller;
H) dequeueing the packet by the memory controller and transmitting the packet;
I) notifying, by the memory controller, where more packets remain to be transmitted, the multiservice category scheduler that the per connection queue is unempty;
J) calculating, by the calculation unit, an updated TIME EARLIEST and an updated PRIORITY INDEX based on service category and present state information associated with the connection, and updating and storing present state information in the per connection context memory;
K) generating, where the per connection queue is unempty, a new task using the updated TIME EARLIEST, by the calculation unit, for the connection and returning to step E, and otherwise, where the per connection queue is empty, waiting for the notification by the memory controller and returning to step C.
2 Assignments
0 Petitions
Accused Products
Abstract
The event scheduler (100; 200) and method (300) of the present invention solve the problem of mixing multiple service categories on the same physical link or media by utilizing a calendar queue scheduling method (i.e., based on prior actual transmission times of previous packets). The event-driven cell scheduler is, for example used in an asynchronous transfer mode ATM network and may, for example, be embodied in software, hardware and firmware.
243 Citations
23 Claims
-
1. A method for scheduling transmission times for a plurality of packets on an outgoing link for a communication network, comprising the steps of:
-
A) enqueuing, by a memory controller, the packets in a plurality of per connection data queues in at least one packet memory, wherein each queue has a queue ID; B) notifying, by the memory controller, at least one multiservice category scheduler, where a data queue is empty immediately prior to the memory controller enqueuing the packets, that a first arrival has occurred; C) calculating, by a calculation unit of the multiservice category scheduler, using service category and present state information associated with a connection stored in a per connection context memory, an earliest transmission time, TIME EARLIEST and an updated PRIORITY INDEX and updating and storing present state information in a per connection context memory; D) generating, by the calculation unit, a "task" wherein the task includes; D1) the queue ID; D2) the TIME EARLIEST; and D3) the PRIORITY INDEX; E) inserting the task into one of at least a first calendar queue; F) storing, by the calendar queue, at the calculated TIME EARLIEST, the task in one of a plurality of priority task queues; G) removing, by a priority task decoder, at a time equal to or greater than TIME EARLIEST in accordance with a time opportunity, the task from the priority task queue and generating a request to the memory controller; H) dequeueing the packet by the memory controller and transmitting the packet; I) notifying, by the memory controller, where more packets remain to be transmitted, the multiservice category scheduler that the per connection queue is unempty; J) calculating, by the calculation unit, an updated TIME EARLIEST and an updated PRIORITY INDEX based on service category and present state information associated with the connection, and updating and storing present state information in the per connection context memory; K) generating, where the per connection queue is unempty, a new task using the updated TIME EARLIEST, by the calculation unit, for the connection and returning to step E, and otherwise, where the per connection queue is empty, waiting for the notification by the memory controller and returning to step C. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A method for scheduling transmission of a packet, the method comprising the steps of:
-
determining, upon receipt of said packet, a corresponding per-connection queue for said packet; determining, upon determination of the corresponding per-connection queue, whether said per-connection queue is empty; generating, upon determination that said per-connection queue is empty, a request for scheduling said packet; calculating at least a desired execution time and a priority for said request; storing said request until at least the desired execution time; and storing said request in one of a plurality of priority queues corresponding to the priority calculated for the request. - View Dependent Claims (13, 14)
-
-
15. An event scheduler for scheduling transmission times for a plurality of packets, the event scheduler receiving a request for each packet to be scheduled, the event scheduler comprising:
-
a priority queue for each of a plurality of priorities supported by the event scheduler; logic for calculating at least a desired execution time and a priority for each request; and a real time task scheduler, responsive to a real time clock, for determining when the real time clock is at least equal to the desired execution time of a request and, upon said determination, for storing said request in a corresponding priority queue. - View Dependent Claims (16, 17)
-
-
18. An apparatus for scheduling transmission times for a plurality of packets, the apparatus comprising:
-
a per-connection queue for each of a plurality of connections supported by the apparatus; logic for determining, upon receipt of each packet, a corresponding perconnection queue for said packet; logic for determining, upon determination of the corresponding per-connection queue, whether said per-connection queue is empty; logic for generating, upon determination that said per-connection queue is empty, a request for scheduling said packet; logic for calculating at least a desired execution time and a priority for said request; logic for storing said request until at least the desired execution time; and logic for storing said request in one of a plurality of priority queues corresponding to the priority calculated for the request. - View Dependent Claims (19, 20)
-
-
21. An apparatus comprising a computer usable medium having computer readable program code means embodied therein for scheduling transmission times for a plurality of packets, the computer readable program code means comprising:
-
computer readable program code means for determining, upon receipt of each packet, a corresponding per-connection queue for said packet; computer readable program code means for determining, upon determination of the corresponding per-connection queue, whether said per-connection queue is empty; computer readable program code means for generating, upon determination that said per-connection queue is empty, a request for scheduling said packet; computer readable program code means for calculating at least a desired execution time and a priority for said request; computer readable program code means for storing said request until at least the desired execution time; and computer readable program code means for storing said request in one of a plurality of priority queues corresponding to the priority calculated for the request. - View Dependent Claims (22, 23)
-
Specification