Messages in this thread | | | Date | Mon, 26 Jan 2004 12:32:30 +0300 | From | "Vladimir B. Savkin" <> | Subject | Re: [RFC/PATCH] IMQ port to 2.6 |
| |
On Sun, Jan 25, 2004 at 10:09:48PM -0500, jamal wrote: > On Sun, 2004-01-25 at 19:11, Vladimir B. Savkin wrote: > > On Sun, Jan 25, 2004 at 06:45:16PM -0500, jamal wrote: > [..] > > > > With typical internet traffic patterns, policing will drop many packets, > > and shaping will not. > > What is typical internet traffic? I guess you mean TCP (thats what 90% > of the traffic is) > In that case, the effect of dropping or delaying on throughput is > similar. Studies i have seen indicate that throughput is directly > proportional to the square root of the drop probability > (drop is what you get when you police). > It is also influenced by the delay (which is what you introduce when you > shape). I have not seen anything in favor of shaping; i could be wrong > (so if you know of something or have experimented pass the data).
Yes, I have experimented. Shaping works much better: much less packets dropped, much better donwload rates for clients.
> For detailed analysis at least fro RENO, this would be a good reference: > http://citeseer.nj.nec.com/padhye98modeling.html > [snip] > Maybe i am misunderstanding what you are after. > couldnt you use -i ppp+ -j mark --set-mark x in the ingress/prerouting > and use the fwmark to shape on the egress? > Post your script examples. >
I want to shape traffic that comes from upstream to clients connected via PPTP.
Here is a part of my scripts:
DEVICE=imq0 /sbin/tc qidisc add dev $DEVICE root handle 10: htb r2q 1 default 100 /sbin/tc class add dev $DEVICE parent 10:0 classid 10:1 est 1sec 8sec htb \ rate 10Mbit burst 400k /sbin/tc class add dev $DEVICE parent 10:1 classid 10:2 est 1sec 8sec htb \ rate 180kbps ceil 180kbps burst 3000 # default class for users /sbin/tc class add dev $DEVICE parent 10:2 classid 10:101 est 1sec 8sec htb \ rate 20kbps burst 1k ceil 50kbps cburst 1k /sbin/tc qdisc add dev $DEVICE parent 10:101 wrr \ dest ip 128 1 wmode1=1 wmode2=1 /sbin/tc filter add dev $DEVICE protocol ip parent 10:0 \ prio 100 handle 1 fw flowid 10:101 # more classes to follow ...
The limit 50kbps is artificial, so there's no bottleneck in connection from upstream to this router. I cannot allocate all the channel bandwidth to clients for some political reasons. Then, I mark packets I want to go to this default user class with mark "1", like this:
iptables -t mangle -A FORWARD -i $UPLINK_DEV -d $CLIENTS_NET \ -j IMQ --todev 0 # traffic from internet to clients iptables -t mangle -A FORWARD -i $UPLINK_DEV -d $CLIENTS_NET \ -j MARK --set-mark 1 # default class # here I can change fwmark for packets that deserve # some special treatment
So, I shape traffic destined to clients, and I use "wrr" to divide bandwidth fairly. I cannot attach qdisc to an egress device because there's no single one, each client has its own ppp interface.
Well, I could move this shaping upstream, but what if upstream router was some dumb cisco with no "wrr" qdisc?
~ :wq With best regards, Vladimir Savkin.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |