Programmable broadband gateway hierarchical output queueing
AssigneeCenturyLink Intellectual Property LLC
InventorChristopher William Gunner
Life of this patent
Estimating the term…
Abstract
An improved method of hierarchical output queueing of packets for a network scheduler of a network gateway that determines delays needed to conform to applicable rate shaping, and enqueues the packets based on the delay. Queues are associated with different classes of service (CoS), and within each class, each queue has a different scheduled time upon which it becomes available for dequeuing. A single set of CoS queues can support a large number of devices, improving the efficiency of software-based queuing by reducing the number of queues and simplifying queue polling.
Claims17
A method of scheduling packets for transmission over a network via a gateway device, comprising:
- configuring, at the gateway device, a first plurality of queues to each have a first scheduled time, where the first plurality of queues is associated with a first class of service (CoS), the first scheduled time of each of queue of the first plurality of queues is different, and packets stored in each respective queue of the first plurality of queues become available for dequeuing at the first scheduled time of the respective queue;
- configuring, at the gateway device, a second plurality of queues to each have a second scheduled time, where the second plurality of queues is associated with a second CoS, the second scheduled time of each of queue of the second plurality of queues is different, and packets stored in each respective queue of the second plurality of queues become available for dequeuing at the second scheduled time of the respective queue;
- receiving a first packet at the gateway device, directed to a first device;
- determining, by the gateway device, that the first packet is associated with the first CoS;
- determining, by the gateway device, that the first packet is to be enqueued in the first plurality of queues based on the first CoS;
- determining, by the gateway device, a first rate shaper and a second rate shaper of a plurality of rate shapers to apply to the first packet;
- computing, by the gateway device, a first future time for transmission of the first packet over the network to produce a first flow rate of the first rate shaper;
- computing, by the gateway device, a second future time for transmission of the first packet over the network to produce a second flow rate of the second rate shaper;
- determining, by the gateway device, that the first future time is later than the second future time;
- selecting, by the gateway device, a first queue of the first plurality of queues into which to enqueue the first packet based on the first queue having a first scheduled time that is closest to the first future time while being equal-to-or-sooner than the first future time;
- enqueuing, by the gateway device, the first packet into the first queue;
- dequeuing, by the gateway device, packets from the first plurality of queues and from the second plurality of queues for transmission over the network, where the first packet is dequeued from the first queue at or after the first schedule time of the first queue;
- transmitting, by the gateway device, the first packet to the first device via the network after the first packet is dequeued;
- configuring, by the gateway device, a third plurality of queues to each have a third scheduled time, where the third plurality of queues is associated with the first CoS, the third scheduled time of each of queue of the third plurality of queues is different, and packets stored in each respective queue of the third plurality of queues become available for dequeuing at the third scheduled time of the respective queue;
- configuring, by the gateway device, a fourth plurality of queues to each have a fourth scheduled time, where the fourth plurality of queues is associated with the second CoS, the fourth scheduled time of each of queue of the fourth plurality of queues is different, and packets stored in each respective queue of the fourth plurality of queues become available for dequeuing at the fourth scheduled time of the respective queue;
- imposing, by the gateway device, a first aggregate rate to packets dequeued from the first plurality of queues and the second plurality of queues prior to transmitting those packets over the network to a first plurality of devices;
- imposing, by the gateway device, a second aggregate rate to packets dequeued from the third plurality of queues and the fourth plurality of queues prior to transmitting those packets over the network to a second plurality of devices;
- and
- determining, by the gateway device whether the first device is of the first plurality of devices or of the second plurality of devices, wherein the enqueuing of the first packet to the first queue of the first plurality of queues is further based on the first device being of the first plurality of devices.
A computing device comprising:
- a processor;
- a network interface;
- and
- a memory including instruction operable to be executed by the processor to perform a set of actions to configure the processor to:
- configure a first plurality of queues in the memory to each have a first scheduled time, where the first plurality of queues is associated with a first class of service (CoS), the first scheduled time of each of queue of the first plurality of queues is different, and packets to be stored in each respective queue of the first plurality of queues will become available for dequeuing in accordance with the first scheduled time of the respective queue;
- configure a second plurality of queues in the memory to each have a second scheduled time, where the second plurality of queues is associated with a second CoS, the second scheduled time of each of queue of the second plurality of queues is different, and packets to be stored in each respective queue of the second plurality of queues will become available for dequeuing in accordance with the second scheduled time of the respective queue;
- receive a first packet directed to a first recipient device;
- determine that the first packet is associated with the first CoS;
- determine that the first packet is to be enqueued in the first plurality of queues based on the first CoS;
- determine a first rate shaper and a second rate shaper of a plurality of rate shapers to apply to the first packet;
- compute a first future time for transmission of the first packet via the network interface to produce a first flow rate of the first rate shaper;
- compute a second future time for transmission of the first packet via the network interface to produce a second flow rate of the second rate shaper;
- determine that the first future time is later than the second future time;
- select a first queue of the first plurality of queues into which to enqueue the first packet based on the first queue having a first scheduled time that is closest to the first future time while being equal-to-or-sooner than the first future time;
- enqueue the first packet into the first queue;
- dequeue packets from the first plurality of queues and from the second plurality of queues for transmission over the network, where the first packet is dequeued from the first queue at or after the first schedule time of the first queue;
- transmit the first packet to the first device via the network after the first packet is dequeued;
- configure a third plurality of queues to each have a third scheduled time, where the third plurality of queues is associated with the first CoS, the third scheduled time of each of queue of the third plurality of queues is different, and packets stored in each respective queue of the third plurality of queues become available for dequeuing at the third scheduled time of the respective queue;
- configure a fourth plurality of queues to each have a fourth scheduled time, where the fourth plurality of queues is associated with the second CoS, the fourth scheduled time of each of queue of the fourth plurality of queues is different, and packets stored in each respective queue of the fourth plurality of queues become available for dequeuing at the fourth scheduled time of the respective queue;
- impose a first aggregate rate to packets dequeued from the first plurality of queues and the second plurality of queues prior to transmitting those packets over the network to a first plurality of devices;
- impose a second aggregate rate to packets dequeued from the third plurality of queues and the fourth plurality of queues prior to transmitting those packets over the network to a second plurality of devices;
- and
- determine whether the first device is of the first plurality of devices or of the second plurality of devices, wherein the enqueuing of the first packet to the first queue of the first plurality of queues is further based on the first device being of the first plurality of devices.
A non-transitory computer-readable storage medium storing processor-executable instructions for controlling a processor of a computing device, comprising program code to configure the processor to:
- configure a first plurality of queues in a memory to each have a first scheduled time, where the first plurality of queues is associated with a first class of service (CoS), the first scheduled time of each of queue of the first plurality of queues is different, and packets to be stored in each respective queue of the first plurality of queues will become available for dequeuing in accordance with the first scheduled time of the respective queue;
- configure a second plurality of queues in the memory to each have a second scheduled time, where the second plurality of queues is associated with a second CoS, the second scheduled time of each of queue of the second plurality of queues is different, and packets to be stored in each respective queue of the second plurality of queues will become available for dequeuing in accordance with the second scheduled time of the respective queue;
- receive a first packet directed to a first recipient device;
- determine that the first packet is associated with the first CoS;
- determine that the first packet is to be enqueued in the first plurality of queues based on the first CoS;
- determine a first rate shaper and a second rate shaper of a plurality of rate shapers to apply to the first packet;
- compute a first future time for transmission of the first packet via a network interface to produce a first flow rate of the first rate shaper;
- compute a second future time for transmission of the first packet via the network interface to produce a second flow rate of the second rate shaper;
- determine that the first future time is later than the second future time;
- select a first queue of the first plurality of queues into which to enqueue the first packet based on the first queue having a first scheduled time that is closest to the first future time while being equal-to-or-sooner than the first future time;
- enqueue the first packet into the first queue
- dequeue packets from the first plurality of queues and from the second plurality of queues for transmission over the network, where the first packet is dequeued from the first queue at or after the first schedule time of the first queue;
- transmit the first packet to the first device via the network after the first packet is dequeued;
- configure a third plurality of queues to each have a third scheduled time, where the third plurality of queues is associated with the first CoS, the third scheduled time of each of queue of the third plurality of queues is different, and packets stored in each respective queue of the third plurality of queues become available for dequeuing at the third scheduled time of the respective queue;
- configure a fourth plurality of queues to each have a fourth scheduled time, where the fourth plurality of queues is associated with the second CoS, the fourth scheduled time of each of queue of the fourth plurality of queues is different, and packets stored in each respective queue of the fourth plurality of queues become available for dequeuing at the fourth scheduled time of the respective queue;
- impose a first aggregate rate to packets dequeued from the first plurality of queues and the second plurality of queues prior to transmitting those packets over the network to a first plurality of devices;
- impose a second aggregate rate to packets dequeued from the third plurality of queues and the fourth plurality of queues prior to transmitting those packets over the network to a second plurality of devices;
- and
- determine whether the first device is of the first plurality of devices or of the second plurality of devices, wherein the enqueuing of the first packet to the first queue of the first plurality of queues is further based on the first device being of the first plurality of devices.
Dependencies are inferred from the claim text.