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

Re: shaping: dividing bandwidth between router & NAT hosts

Stephan Balmer wrote at 2010-02-11 03:04 -0600:
> > I am working on setting up a router/server running Debian Squeeze.  I have had 
> > a lot to learn and have managed to understand iptables and have mostly set up 
> > filtering.
> What sort of link are we talking about? Symmetric/Asymmetric? Bandwidth?

Well, sorry but it could be anything.  I may at times have to move the router 
and my only requirements of the connection is that it be reliable, at least say 
20kilobytes/s, and have a public IP address.

> > Now I would like to set up traffic control.  I have been reading documentation 
> > and have been looking for an eth0 ingress way to delay packets in order to 
> > control download bandwidth, but maybe ingress shaping is not a viable solution.  
> > Perhaps it is the ACKs that I need to shape instead: delay the outgoing ACKs to 
> > control downloads and delay the outgoing data to control the uploads.  Will 
> > that work?
> I haven't looked lately, but on Linux you'll propably have to set up imq devices
> for ingress shaping. Ingress shaping is indeed controversial. It is also a lot
> simpler than delaying ACK packets based on traffic going the other direction.

I would rather not use something controversial, or preferably anything else not 
included in standard Debian squeeze.

> Personally I wouldn't delay ACK packets, but prioritise them over other
> packets. They don't hurt your throughput.

I understand that ACKs won't hurt throughput, but have supposed that delaying 
them would help control downloads.  If the sender does not receive an ACK until 
later hopefully they will see a low-bandwidth link and slow down.

If I prioritize ACKs over other packets, won't that make it even harder to 
control downloads?  That is, ACKs go out first so the sender sends faster?

Take this scenario, with these interfaces:
eth0: WAN
eth1: host connected
wlan0: random

Say the router starts downloading a Debian ISO and uses all the bandwidth at 80 
kilobytes/s.  Now the eth1 host wants to download another one.  I would like 
ideally to be able to say eth1 gets 80% and local gets 20%, but that seems to 
be difficult to accomplish.  It seems that it would be a while (if ever) before 
eth1 gets a significant amount of bandwidth.  Add to this wlan0 which will be 
unsecured and may be using lots of bandwidth (perhaps I could just give it a 
flat limit).  Is there some way to balance this, if loosely?  Perhaps just 
using a certain TCP congestion algorithm?  Or can I prioritize ACKs from the 
different interfaces?


Attachment: signature.asc
Description: Digital signature

Reply to: