All of lore.kernel.org
 help / color / mirror / Atom feed
* [LARTC] patch: HTB update for ADSL users
@ 2004-06-18 11:45 Ed Wildgoose
  2004-06-18 21:43 ` Andy Furniss
                   ` (20 more replies)
  0 siblings, 21 replies; 22+ messages in thread
From: Ed Wildgoose @ 2004-06-18 11:45 UTC (permalink / raw)
  To: lartc

OK, here it is.  Near perfect bandwidth calculation for ADSL users.  
Patch iproute2 with the HTB stuff and then this:

It's still a hack (as far as I can tell) because we are patching the 
rates tables, and hence I think it is only loosly coupled with the 
actual calculation of bytes in each bucket. 

However, it works very nicely for me!  I have only been lightly testing 
with downloading stuff (hence packet dropping to slow rates), and I can 
set the max download rate to within a few kbyte/sec of the maximum and 
still keep near min ping times.  I assume that the remaining sliver of 
bandwidth is taken up passing packets which arrive in a slight cluster, 
and for packets which I later need to drop (since I'm testing on an 
incoming interface and dropped packets don't count for bandwidth used 
calcs).  However, I seem to be able to get *extremely* close to the max 
with this patch

Obviously all the numbers are hard coded, but they should be suitable 
for all ATM users.  PPoE users will need to do something different (if 
someone can supply the details then I will see what we can do to make a 
more generic patch and use module params.

Note: That this code will probably affect the policer and CBQ modules in 
the same way as HTB, however, I don't have such a setup, so I can't test 
effectiveness (or detriment...).  Feedback appreciated

Note also that rates in your scripts will now be expressed in terms of 
the ATM bandwidth, ie you put in something like the bandwidth you paid 
for, but (of course) you get roughly (bw * 48/53) passing through (this 
is normal, it's the overhead of running ATM).


--- iproute2-2.4.7.20020116/tc/tc_core.c        2000-04-16 
18:42:55.000000000 +0100
+++ iproute2/tc/tc_core.c       2004-06-18 12:20:39.912974518 +0100
@@ -59,10 +59,19 @@
                while ((mtu>>cell_log) > 255)
                        cell_log++;
        }
+
+       // HACK - UK ATM Params
+       int encaps_cell_sz = 53;
+       int encaps_cell_overhead = 5;
+       int encaps_data_sz = encaps_cell_sz - encaps_cell_overhead;
+       int proto_overhead = 10; // PPP Overhead
+
        for (i=0; i<256; i++) {
-               unsigned sz = (i<<cell_log);
-               if (sz < mpu)
-                       sz = mpu;
+               unsigned sz = ((i+1)<<cell_log)-1;
+                sz = sz + proto_overhead;
+               sz = (  (int)((sz-1)/encaps_data_sz) + 1) * encaps_cell_sz;
+//             if (sz < mpu)
+//                     sz = mpu;
                rtab[i] = tc_core_usec2tick(1000000*((double)sz/bps));
        }
        return cell_log;

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

^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2004-06-23 14:00 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-06-18 11:45 [LARTC] patch: HTB update for ADSL users Ed Wildgoose
2004-06-18 21:43 ` Andy Furniss
2004-06-18 23:00 ` Ed Wildgoose
2004-06-19  0:33 ` Andy Furniss
2004-06-19 12:29 ` Ed Wildgoose
2004-06-19 12:54 ` syrius.ml
2004-06-19 13:40 ` Ed Wildgoose
2004-06-20  7:27 ` Jason Boxman
2004-06-20 12:31 ` Andy Furniss
2004-06-20 13:16 ` Ed Wildgoose
2004-06-20 16:46 ` Ed Wildgoose
2004-06-20 17:10 ` Ed Wildgoose
2004-06-21  6:08 ` Jason Boxman
2004-06-21 10:04 ` Ed Wildgoose
2004-06-22  0:38 ` Damion de Soto
2004-06-22  5:15 ` Jason Boxman
2004-06-22  9:54 ` Ed Wildgoose
2004-06-22 10:00 ` Ed Wildgoose
2004-06-22 17:16 ` Jason Boxman
2004-06-22 21:52 ` Jason Boxman
2004-06-23 12:52 ` ThE LinuX_KiD
2004-06-23 14:00 ` Ed Wildgoose

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.