Hi,
I write a per flow rate control qdisc. I posted it to LARTC list. Some
discussion about it is here
http://mailman.ds9a.nl/pipermail/lartc/2005q2/015381.html
I think I need more feedback and suggestion on it so I repost the patch
here. Please read the thread and get a picture about why and how.
The kernel patch is agains kernel 2.6.11, the iproute2 patch is against
iproute2-2.6.11-050314.
The test scenario is like this
www server <- [ eth0 eth1 ] -> www clients
The attached t.sh is used to generate test rules. Clients download a
big ISO file from www server, so flows' rate can be estimated by view
progress.
I have some test on it and it works well. It provides good fairness.
When all slot being used, in most time, the real rate can keep at
specified guaranteed rate. But I know it should receive more test.
I have some consideration though
1. In the test sometimes there a pair of unbalanced stream and don't get
balanced quickly. One stream get 8.4kbps and another get 11.5kbps. How
to find the flow with highest traffic and punish it most?
2. The default ceil equals to rate. Should I calculate it as
ceil = rate * 1.05 * limit, or
ceil = rate * 1.05?
3. when flow slots are full, optionally reclassify untraceable traffic
into another specified class, instead of dropping it?
TODO:
1. rtnetlink related code should be improved;
2. dump() and dump_stat();
Regards
--
lark
t.sh
Description: Binary data
iproute2-2.6.11-050314-perflow.diff
Description: Binary data
linux-2.6.11-perflow-r3.diff
Description: Binary data
|