I thought the same thing a year ago. You set an htb class bigger than Vmax in the output ethernet, the you can attach esfq or WRR (sfq only works with conecctions and I need to work with destination ip addresses). But it never works.
Now I understand that if you set the class bigger than Vmax. The queue is always empty, and the qdisc is never used. You can adjust the htb class smaller than Vmin. Then you have a no-empty queue and the qdisc should work. But you are going to lose bandwidth if your ISP in sending to you a speed bigger than Vmin.
Internet (Vmax-Vmin)------>Ethernet input Linux box--------->Ethernet output linux box----------->Some lan users
The idea is all lan users get the same bandwidth in any moment. Nobody can get more bandwidth than the others.
Any other idea?
Santiago
On Wed, 29 Aug 2007 20:12:09 +0200, Javier Ors wrote
>
>
> As far as I undestand, at least sfq should work without knowing the actual bandwith (you don't need to specify it in the qdisc creation). The problem with it is that it only works in the bottleneck of the network, where the queues form, which is usually the machine which has the hardware that makes the connection to the Internet. For example in this configuration...
>
> Internet <--- cable/dsl/etc. ---> Router/Modem <---ethernet---> Firewall <---ethernet---->LAN
>
> shaping outgoing traffic (traffic to the internet) with only sfq, esfq, prio, etc... will be useless if it is done in the firewall, becouse the queues will form in the router. It could be done in the same router if it has the capability (for example, it runs Linux inside and it is accessible by ssh or telnet). I haven't tried WRR but the same should be applied.
>
> Theoretically, at least as I see it, HTB could also be used without knowing the actual speed in the bottleneck, you just should set the root class to a speed higher than Vmax and adjust the rates of the leaf classes to the desired ratios, or playing with the quantums so that it behaves like a WRR or DRR (which is that it uses internally when the classes are borrowing). But I have made many attempts in this sense and all of them have been unsuccessful, don't know why.
>
> For incoming traffic it is another story, it can be done in the firewall, but it is a little trickier.
>
> Even more theoretically, outgoing shaping maybe could be done also in the firewall if the router supports ECN, so that the queues could be formed in the firewall using this information without nedding to reduce the bandwith, but this is just a mental experiment which still have pending to brought to practice, so don't pay much attention to this...
>
> --
> Este mensaje ha sido analizado por
> en busca de virus y otros contenidos peligrosos,
> y se considera que está limpio.
> MailScanner agradece a por su apoyo.
The original question:
I have this problem:
I have an Internet line input with variable speed. I have a max speed and a
min speed: Vmax and Vmin.
The speed is always changing between Vmax and Vmin. I want to share the
actual bandwidth (you don't not how much, you only know the speed is between
Vmax and Vmin) for N clients. The bandwidth should be shared so nobody can
get more bandwidth than the others.
There is some queue disciplines like esfq and WRR (w. But theses ones only
work
if you know the actual bandwidth. HTB works only width fixed bandwidth too.
I have studied all shaping and queue disciplines in linux, and I don't have
a real solution yet.
Do you have any idea?
Santiago
--
Open WebMail Project (http://openwebmail.org)
There is some queue disciplines like esfq and WRR (w. But theses ones only
> work if you know the actual bandwidth.