[LARTC] HTB burstable for 2 interface , how ?

Leonardo Balliache leoball@opalsoft.net
Sun, 06 Jul 2003 23:54:41 -0400


Hi, Don:

  > INTERNET
  > |
  > |eth0 202=2E14=2E41=2E1
  > BW=2EManager
  > | |
  > | +----eth1----192=2E168=2E1=2E0/24
  > |
  > +------eth2----192=2E168=2E2=2E0/24
  >
  > Total incoming bandwidth to eth0 is 1024kbps
  > should be shared to eth1 and eth2, which mean each get 512Kbps and
  > burstable to 1024Kbps if other host is idle=2E

 > This doesn't make sense to me.
 > The fact that an internal host is idle does not justify not sending
 > traffic TO it.
 >
 > The suggestions to use IMQ+HTB seem to miss the problem that
 > if someone sends 1024 to eth1 then nobody has a chance to even
 > begine to send anything to eth2.

Why not?

Ignore those bandwidth controller devices for a moment.

TCP flows compete to cope the available bandwidth. If your link capacity is 
1024kbit and you start sending 1024kbit to the interface eth1 and sometime 
later (the time you want) begin to send 1024 kbit to interface eth2, you 
can be truly sure that when flows stabilize each of them will be try to 
cope 50% of the available bandwidth defined by the link capacity. Finally 
each flow will be 512kbit.

Now put on your controller devices. They can control the upper level of the 
flows but no the flows themselve. TCP is always testing the bandwidth 
availability trying to get more share from it. What stop this? When a 
packet is dropped the inner congestion control mechanism is fired and TCP 
reduce automatically its rate. Finally the fight converge to every flow 
sharing the upper level defined by the controller device, as soon as those 
flows have enough packets to reclaim it.

Conclusion: use your bandwidth controllers but never forget the TCP natural 
behavior.

Best regards,

Leonardo Balliache