Re: Question about htb class

Linux Advanced Routing and Traffic Control

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



eme@xxxxxxxxxxxxxxx wrote:
> On Mon, 23 Aug 2004 23:58:51 +0100
> Andy Furniss <andy.furniss@xxxxxxxxxxxxx> wrote:
> 
> 
>>Hideaki Nemoto wrote:
>>
>>>Hi everyone.
>>>
>>>I'm new to this list and I have some questions
>>>regarding HTB class.
>>>I was trying to see how tc sets the parameters for
>>>HTB, but really couldnt understand them.
>>>So, I thought that I might ask the wizards.
>>>It's mainly from the source code.
>>>
>>>1. What is the cell_log ?
>>>(its everywhere in the code)
>>>
>>>2. Why does htb calculate its burst(buffer) with
>>>tc_xmit_time() ? Is opt.rate.buffer supposed to 
>>>have the time it takes to transmit the packet ?
>>>(in q_htb.c around 223 lines)
>>
>>>3. What does rtab and ctab arrays do ?
>>>And what kind of value should be in there ?
>>>(its set in tc_core.c tc_calc_rtable())
>>>
>>>I'd really appreciate your help.
>>>Thankyou very much in advance.
>>
>>I can't say about HTB, but I've been playing with Ed Wildgooses patch 
>>for DSL users -
>>
>>http://mailman.ds9a.nl/pipermail/lartc/2004q2/012752.html
>>
>>cell_log is used to look up the delay for a packet to be transmitted at 
>>a certain rate. A rate table is made using cell_log to give granularity 
>>- for me using htb it gets calculated with MTU 1600 which means it's 3.
>>
>>Three means the table has a dispatch time entry for every 8 bytes packet 
>>size, as a counter gets shifted left by cell_log to generate the table.
>>
>>HTB / whatever looks up the transmit time for a packet by shifting its' 
>>length right by cell_log and using the result as an index for the table.
> 
> 
> Thanks for the answer, Andy.
> I think I'm starting to understand.
> 
> Does the "transmit time" here, mean "time the kernel should take in
> order to send out the packet" ?
> 
> OK, so here's how I understood. Please correct me if I'm wrong.
> 
> 1. When the kernel receives a packet, it gets the transmit time
> corresponding to the packet length.
> 
> xmit_time = rtab[pkt_len>>cell_log];
> 
> 2. Then, the kernel sends that packet using xmit_time ?
> (If xmit_time was like 10 milli sec, it consumes 10 milli sec to
> sends the packet ? Or does it wait for xmit_time to send it)
> 
> Is my understanding correct ?
> 

It's the qdisc that uses the rate table(s). On my setup with HTB  a
table is generated for the rate and ceil of each class.

When HTB dequeues a packet it doesn't always know how long it is until
it's gone (eg. I use SFQ on leafs), so I guess it will look up the time
from the len of the skb that sfq returns and delay dequeueing the next
packet from that class until that time has passed.

I suppose burst an requeue complicate things - I don't really know how
HTB does things :-)

Andy.





_______________________________________________
LARTC mailing list / LARTC@xxxxxxxxxxxxxxx
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/

[Index of Archives]     [LARTC Home Page]     [Netfilter]     [Netfilter Development]     [Network Development]     [Bugtraq]     [GCC Help]     [Yosemite News]     [Linux Kernel]     [Fedora Users]
  Powered by Linux