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/