CBQ,HTB - obecny dotaz

Ing. Pavel PaJaSoft Janousek janousek na fonet.cz
Středa Duben 3 15:06:54 CEST 2002


Lumir Unzeitig wrote:
> neni mi jasne, jak realne zajistit uzivateli (nebo skupine uzivatelu)
> urcitou cast pasma na routeru s 2 rozhranimi a byl bych opravdu rad, pokud

	Zasadni rozdil mezi CBQ a HTB je ten, ze CBQ __NEUMI__ (resp. jeho
Linuxova implementace, treba to jinde (CISCO?) je lepsi) rozdelit pasmo
mezi vice fyzickych zarizeni...

> Jak chapu CBQ a HTB, dokazou rozdelit  definovane pasmo na vystupu z
> rozhrani (uvazujme download k uzivateli) podle urcitych filtru.
> Pokud bude v urcitem case probihat "soucasne" i vystup z druheho rozhrani
> (uvazujme upload ven) musi se download i upload podelit o sirku pasma od
> poskytovatele.  A v tom pripade

	Zasadni problem je ten, zda-li mate full ci half duplexni linku -
vetsina poradnych ISP Vam proda full duplexni linku => pokud mate linku
kapacity X a stahujete rychlosti Y, stejnou rychlosti (aspon teoreticky)
muzete hrnout data ven (tedy Y).

> 1\nevim, jak se podeli jednotlive tridy uzivatelu uvnitr o toto zuzene pasmo
> (u "tc" se definuje konstantni hodnota, zpravidla max. sirka pronajateho
> pasma )

	U zadneho 'tc' se nic nedefinuje, 'tc' neni nic jineho nez trosku
sofistikovanejsi nadstavba nad nekolika systemovymi volanimi (prominte
za 'sprdnuti', ale bez radne terminologie bysme se daleko nedostali). 

	Maximalni sirku pronajateho pasma definujete ve tride (class). Probiha
to zhruba nasledovne - nejprve definujete disciplinu (qdisc), dle ktere
se budou packety tridit (CBQ, HTB, SFQ (pouzivam pro fyzicke zpomalovaci
fronty a je super) apod.), fyzickou prenosovou kapacitu media pod., pote
definujete tridu (class) vcetne zadane rychlosti apod. no a nakonec
definujete jednotlive filtry (filter) - tedy v podstate usmernujete tok
obecnych packetu do sych trid. Packety, ktere neprojdou zadnym
porovnanim => nezaradite je do trid budou zpracovany defaultne... -
schvalne si nabootujte cisty Linux bez shaperu a podivejte se, co Vam
system sdeli pri:

/sbin/tc -s qdisc show dev eth0
/sbin/tc -s class show dev eth0
/sbin/tc -s filter show dev eth0

	a uvidite, ze i kdyz nic nedefinujete, sitovy subsystem vzdy pracuje ve
stejnem rezimu...

	Obecne se da rici, ze kazda trida ma PRAVE jednoho potomka (s vyjimkou
korene, of cource) a kazda trida ma zadneho az nekonecne potomku.

> Mym cilem je, aby subjekt uvnitr mel k dispozici vzdy definovanou max. sirku
> pasma pro oba smery komunikace a tim neomezoval ostatni
> stahujici/posilajici.

	Jinymi slovy, chcete mu definovat maximalni sirku pasma, ale pokud mu
ji nekdo vyuzije ma smulu - vytvorte jednoduchou CBQ tridu 'typu'
bounded => nesmi si pujcovat od rodice s max. sirkou a smerujte do ni
veskery provoz daneho subjektu - ostatni uz nechte na std. sitovem
subsystemu, on to pochopi a korektne zapracuje... Je treba si uvedomit,
ze je nutno svlast smerovat provoz IN/OUT, pokud chcete udelat
half-duplex, jednoduse class bude jeden, ale filtru bude nekolik...:-)

-----------------------------------------------------------------------
Ing. Pavel Janousek (PaJaSoft)                 FoNet, spol. s r. o.
Vyvoj software, Intranet / Internet          Sokolova 67, 619 00 Brno
E-mail: mailto:Janousek na FoNet.Cz             Tel.: +420  5  4324 4749
SMS:    mailto:P.Janousek na SMS.Paegas.Cz      Fax.: +420  5  4324 4751
WWW:    http://WWW.FoNet.Cz/               E-mail: mailto:Info na FoNet.Cz
-----------------------------------------------------------------------


Další informace o konferenci Linux