1. A scheduling method for a multi-level class hierarchy having a plurality of layers, each layer containing a plurality of queues, the method comprising: inserting all queues containing at least one packet in a first scheduler; inserting into a second scheduler queues contained in the first scheduler that do not exceed their maximum rate; dequeuing from the first scheduler until a queue exceeding a maximum rate of the queue is reached; and dequeuing from the second scheduler when a queue exceeding a maximum rate of the queue is reached in the first scheduler; and wherein the first scheduler employs a first binary search tree to make a dequeuing selection.