Maxik píše:dokud nejede parent na maxlimit zadne priority router neresi vsechny fronty jsou si rovny, pokud se dostane na maxlimit tak zacne stahovat ty s nejnizsi prioritou na limitat pokud to porad nestaci tak, sunda i ty dalsi s prioritou vyssi. Jakym zpusobem to pocita presne tez nevim, ale funguje to dobre tak proc to resit.
Není úplně přesné. Priorita ovlivňuje dvě věci - pořadí odesílání a pak i pořadí pro určování kolik maximálně daná třída dostane.
Pokud danou frontou teče míň než limitat (jsou zelené) tak tyto fronty se odesílají jako první, pořadí v jakém se data jednotlivých front odesílají je určena prioritou. Vždy se nejdříve odvysílají všechny fronty v zelené (v pořadí dle priorit, pokud má víc zelených tříd stejnou prioritu, vysílají se round-robin), teprve pak se řeší ty, které jsou nad limitat.
Druhé nasazení priority je určení kolik maximálně třída dostane, nastane v okamžiku, kdy daná třída tlačí víc, než limitat.
Funguje to tak, že pokud ve frontách je nějaký tok, tak prvně každé aktivní frontě přidělí limitat (dle mého názoru neštastné označení, ale budiž), bez ohledu na prioroty. Z toho vyjde, kolik ještě může přidělovat než dojde k naplnění maxlimit v rámci stromu. Potom jde postupně dle priorit a přiděluje round-robinově volnou kapacitu dokud nenarazí na strop maxlimit stromu nebo dané třídy. Pokud nějaká fronta dojde na svůj maxlimit a nadřazený strom ještě umožňuje víc, tak pokračuje v přidělování i dalším prioritám nad to limitat (než se zastaví n vyčerpání maxlimitů).
V okamžiku, kdy je tok nad limitat, tak prioprita u toho koncového uzlu se aplikuje pro výpočet toho limitu, kolik ta fronta má celkově dostat. V okamažiku vysílání je to už trošku jinak. Data se také začnou třídit dle priorit, ale i úrovni vnoření, jak vysoko ve stromu si ta třída půjčila nad limitat. V podstatě tím, že třída má víc než limitat, tak pokud k její naplnění si půjčila od parenta, tak se přesune k tomu danému parentu. Následuje vysílání dat utříděné dle priorit od koncovch uzlů, když je vše z nich venku, tak se jde o úroveň stromu výše a dle priorit se odvysílá vše, co je přesunuto k této urovní a opět se jde ve stromu výš, dokud není vše odvysíláno.
Maxik píše:Rekl bych ze limitat je minimum na ktere tu frontu muze priskrtit, tj pokud jedeme pod maxlimitem parentu vubec ho nejaky limitat nezajima. Rad se necham poucit jestli je to jinak.
Ono je to naopak. Dokud daná fronta jede do limitat, tak se vůbec neřeší kolik je maxlimit parentů. Vždy se prvně přidělí limitat a teprve pak se řeší, zda můžu dávat ještě více, než narazím na maxlimit parenta nebo třídy. Zkuš si to, že dej maxlimit parenta na 1 Mbps a limitat fronty pod tím na 2 Mbps, pojede to těma dvěma.
hapi píše:nastav si dvě qt:
1. limit at 10000k max limit 10000k
11. limit at na 1000k max limit 10000k parent 1 prio 1
12. limit at na 2000k max limit 10000k parent 1 prio 1
pokud budu na obou stahovat jak šílenej, dostanu z první 3333k a z druhý 6666k přesně v poměru jejich limit at. (ověřeno)
Takhle to vyjde pokud ty 11 a 12 budou toky stejného charakteru/provozu a nejlépe TCP. Pokud každé bude něco zcela jiného a jinak agresivního, tak se to tak přesně 1:2 neposkládá. Mohlo by to dopadnout i 4,5 Mbps ku 5,5 Mbps, ale horší to nebude. 11 má garant 1 Mbps a 12 má 2 Mbps, zbývajících 7 Mbps se může podělit mezi ně 1:1.
hapi píše:1. limit at 10000k max limit 10000k
11. limit at na 1000k max limit 10000k parent 1 prio 1
12. limit at na 2000k max limit 10000k parent 1 prio 2
pokud budu na obou stahovat jak šílenej, dostanu z první 8000k a z druhý 2000k přesně podle prio. (neověřeno, pouze teorie)
Funguje a chová se tak i v reálu.11 dostane garant 1 Mbps a 12 dostane 2 Mbps, následně dle priority 11 vyžere i zbývajících 7 Mbps. Pokud by v 1 jako maxlimit bylo 15 Mbps, tak 11 dostane 10 Mbps a 12 bude mít 5 Mbps.