Patent ID: 8619787
Filing Date: 2013-12-31
Classification: G06F,H04L

Abstract:
1. A method of scheduling packets for transmission by a network processor having a plurality of processing modules and at least one shared memory with packet data, the method comprising: generating, by a traffic manager of the network processor, a scheduling hierarchy comprising a tree structure of a root scheduler and N scheduler levels, wherein a scheduler is a branch node and a queue is a leaf node of the scheduling hierarchy, wherein N is a positive integer; generating, by the network processor, one or more tasks corresponding to each of a plurality of received packets associated with one or more data flows of the network processor; enqueuing, by the traffic manager, a task provided by one of the plurality of processing modules of the network processor to an associated queue of the scheduling hierarchy, the queue associated with a data flow of the received task, each queue having a corresponding parent scheduler at each of one or more next levels of the scheduling hierarchy up to the root scheduler; determining, by each of the one or more corresponding parent schedulers and root scheduler, one or more tasks to schedule from a given queue based on a default packet size of the packet corresponding to the task; reading the corresponding packet data from the at least one shared memory; updating, at each corresponding parent scheduler at each of one or more next levels of the scheduling hierarchy up to the root scheduler, an actual size of the packet data; updating one or more corresponding scheduling weights of each corresponding parent scheduler at each of one or more next levels of the scheduling hierarchy up to the root scheduler based on the actual size of the packet data, wherein the one or more corresponding scheduling weights comprise (i) an arbitration bucket value, wherein the arbitration bucket value corresponds to a weight of the corresponding node of the scheduling hierarchy, and (ii) a traffic shaping value, wherein the traffic shaping value corresponds to a desired data rate of the corresponding node of the scheduling hierarchy; determining, based on the arbitration bucket value, a frequency of selecting the corresponding node for scheduling; and temporarily removing, based on the traffic shaping value, the corresponding node from the scheduling hierarchy, thereby making the node unavailable for scheduling and enforcing a data rate limit on the corresponding node.