Kevin Dorrell, CCIE #20765

01 May 2008

Custom Queueing

Filed under: Queueing : Custom Queue — dorreke @ 15:15

NMC Lab 18.10 has prompted me to have another look at Custom Queueing.  I have always been a bit vague and empirical about how you set the byte-count to determine the bandwidth weighting of each queue, so I thought I would try and take the bull by the horns.

Reading “CCIE Practical Studies Vol II” by Karl Solie and Leah Lynch, I come across something that seems to be not as I understood it.  On page 425, it says:

Each queue is emptied, to its byte or packet limit, and then the next queue is serviced.  […] After a queue’s packet or byte size limitation is met, any new packets destined for that queue are dropped.

Again, on page 426 it says:

With CQ, when a queue is full, the last packet in the queue is transmitted before the next queue is serviced.  If a queue fills up while waiting for service, and new packets for the queue are dropped.

This is not how I had understood it.  I don’t know which is right, the way it is explained in the book or the way I had understood it.  The book seems to imply that the byte count and the packet limit are both tail-drop limits, beyond which packets are discarded.  Instead, I had always understood that the queue limit (in packets) was a tail-drop limit, whereas the byte-count determined the number of bytes that would be serviced before going on to the next queue in the round-robin, even if the queue was not yet empty.

Consider the command queue-list 1 queue 2 byte-count 3000 limit 20.  I thought that this means that each time the queue is served up to 3000 bytes would be taken off the front of the queue and transmitted, and then the scheduler would move on to queue 3, even if queue 2 was not empty yet.  If the queue ever gets full at 20 packets, then the next packet would be tail-dropped.

Suppose we are sending packets of exactly 1500 bytes.  By my understanding, the scheduler would transmit two packets each round-robin.  The queue could hold up to 20 packets, i.e. 30000 bytes.  If there are 10 packets in the queue, the scheduler would transmit 2, leaving 8 in the queue until the round-robin comes round again.

So:

  • The book says that the byte-count and packet-limit are both about tail drop, and the scheduler empties the whole queue.
  • I think that the byte-limit is about the scheduling from the head of the queue, while the packet-limit is about tail-drop from the back of the queue.

Who is right?

Create a free website or blog at WordPress.com.