[LARTC] How HTB treats priorities?

Linux Advanced Routing and Traffic Control

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

 



On Monday 30 December 2002 23:35, ISC Robert Krycza=B3o wrote:
> Hello,
>
> Thank you for your replies. Let me summarize your opinions....
>
> Let's assume I have 512 kbit/s synchronous link to my upstream provider=
=2E
> I have two customers named "B" and "C". I want to be sure that they get=
 at
> last 8kbit/s. I want to limit maximum traffic generated per each custom=
er
> to 128 kbit/s.
>
> A tree that follows describes what I did.
>
>   A
>  / \
> B   C
>
>  Class A rate and ceiling is set to something like 490kbit/sek (or lowe=
r)
> to move queues to my linux traffic shaper. I set equal prios, rate for =
B
> and C equals 8 kbit/s, ceiling for B and C equals 128 kbit/s. This setu=
p
> is supposed to fulfill my needs. It should work as expected, right?
No.  Why don't you take rate =3D ceil =3D 128kbit/s ??  If A uses all it =
can, 128,=20
there is still 512-128 left for the other as his mimum bandwidth.  Or do =
you=20
want so say 8kilobyte ?

> Now I try to improve my setup. What I require is to divide customer B a=
nd
> C traffic into 3 classes - interactive(D,G) , www (E,H) and other
> (F,I)respectively. I dont want to allow customer B or C traffic to go o=
ver
> 128kbit/s.I expanded last tree and created following tree.
>      A
>    /   \
>   B     C
>  /|\   /|\
> D E F G H I
>
> D,G rate=3D4/ceil=3D64
> E,H rate=3D3/ceil=3D128
> F,I rate=3D1/ceil=3D32
>
> Priorities for all classes are the same.
>
> Lets assume all classes try to send at their maximum speed trying to
> saturate the link. According to what you have written class D will get
> 64kbit/s, class E 128kbit/s and class F will get 32kbit/s. The sum is
> 224kbit/s if I am correct. Am I right?
Yes.  So the rate of the parent B must also be at least 224kbit/s.  And n=
ot=20
8kbis/s like you wrote before.

> I dont want it to happen since customers have paid for 128kbit/s with
> guaranteed rato of 8kbit/s. Is there a way to acomplish my task???. Can=
 it
> be done using HTB only?
Yes, make the sum of D,E and F =3D 128kbit/s.

> >> >Remaining bandwidth inside class B is distributed first to class D,
> >>
> >> then E and then F and is limited by ceiling parameter . Right???
> >>       yes, what you have said is right.
> >
> > Confirmed.  Lowest prio classes are allowed to send first.
>
> It is intuitive. Thanks for confirmation. Anyway, classes D,E,F are
> limited only by their ceil, not by ceil of class B. Hm?. Performance
> reasons, right?
I have some rules on the faq page on www.docum.org regarding the rate and=
 ceil=20
of parent and child classes.  If you follow these rules, it will be easie=
r to=20
understand how each class will behave.

> >>   I remember having read something about the "rate" parameter of a
> >> parent HTB class.  I think it was that the "rate" parameter isn't
> >> used, only the "ceil" parameter (of a parent HTB class) is important=
=2E
> >> Check the list archive and the HTB home page because I'm not sure.
> >
> > Nor the rate, nor the ceil are respected if the child class can send.
> > So if B  end C can send the remaining bandwidth, they will.  Even if =
the
> > parent ceil  is not permitting it.
>
> Well... I hoped for opposite. If the ceiling of parent class is not
> respected, then setting htb up the way I require is rather impossible.?
> Right:( ?
No.  You have to see the rate as a minimum bandwidth and also like a=20
"proportion".  I mean if you have a class with child rate =3D 10 and an o=
ther=20
child class with rate =3D 30, the first class will get 25% of the bandwid=
th. =20
So the real value of rate doesn't mather.

> >>   If what I have written is true, there is a possibility that
> >> bandwidth
> >> is not distributed equally between classes B and C.
> >
> > Indeed.  This can be true IF class B and C have different rates.  But=
 I
> > did  some tests and it seems to be that remaining bandwidth is splitt=
ed
> > 50-50 and  according to the rates.  Strange.  I will test it further
> > tomorrow.  But the  prio of the parent is respected.  So the parent w=
ith
> > the lowest prio get all  remaining bandwidth.
>
> I would like to see the results, if you were so kind...
I didn't had the time to write it down, but it seems to me that each pare=
nt=20
class can use it's rate like it should be, but the remaining bandwidth is=
=20
splitted 50-50 and according to the quantums.

> >> >What if C and B have different rates?
> >> >Is prio parameter taken into account when htb tries to meet
> >> guaranteed rate rules?
> >>
> >>    I think the "prio" parameter is only used after all classes have
> >> reached their guaranteed minimum rate, to allow the user to create
> >> classes that will borrow bandwidth over other classes.
> >
> > Yep.
>
> OK. You have cleared thing up:)
I think there is a page on the htb homepage that state that only prio of =
leaf=20
classes are used.  In fact if you have a htb setup, and you asks the setu=
p,=20
the prio of non-leaf classes isn't even shown.  On the other hand, I did =
some=20
small tests and the prio parameter seems to be important.  I really have =
to=20
do some tests .....

> This FAQ is a nice piece of work Stef:) Well done:)
It's a nice of work that needs a rewrite :)
Its more a bunch of questions and answers :)

> It goes to B and then to its children, right? I mean, there are no
> classifiers (filters) pointing to class B directly, only to its childre=
n.
The filters doesn't mather.  As long as the packets end in a leaf class.

Stef

--=20

stef.coene@docum.org
 "Using Linux as bandwidth manager"
     http://www.docum.org/
     #lartc @ irc.oftc.net



[Index of Archives]     [LARTC Home Page]     [Netfilter]     [Netfilter Development]     [Network Development]     [Bugtraq]     [GCC Help]     [Yosemite News]     [Linux Kernel]     [Fedora Users]
  Powered by Linux