Mam jistou ideu Prosil bych vsechny kompetentni, zda by mi mohli informovat, je-li to mozne.
Situace: Rekneme, ze mame lajnu 11mbit/s z ni by bylo nutne v pripade pripojeni ucastnika na INET odebrat vzdy, dynamicky, rekneme 256kbit/s. Pri pripojeni dalsiho tech zminenych 256 shapovat, tak aby kazdy jel presne na 1/2 256 atd. Dale, rad bych zbylou lajnu co zustane z 11mbitu na vnitrni traffic, take dynamicky, nechal volnou pro toho kdo se pripoji, s urcitymi vyjimkami. Predstavoval bych si to nasledovne. Budu mit jista IP/MAC, ktere budou mit vzdy prioritu v uzivani bandwidthe, oznacim je A, zbytek bude mit B. Jak by to melo fungovat?: Dva uzivatele kategorie B cosi tahaji uvnitr a kdosi dalsi, jedno jestli A nebo B, si serfuje na plne pecky. Pripoji se uzivatel A a bude si chtit neco stahnout, take uvnitr. Zde by se mela projevit jeho priorita. On dostane pridelen pokud mozno co nejvetdi kus lajny a ty dve B.cka se podeli o ten zbytek. Az A prestane vytezovat lajnu, pak obe B dostanou zase vsechny zbyle prostredky pro sebe.
Otazka: Jak narocna takova aplikace/skript? bude pod Linuxem? Pujde to vubec?
Já píšu aplikaci, která se snaží zjistit optimální rozložení tříd sdílení rychlosti, aby se rychlost linek jakž takž pohybovala v rozmezí, které si lidi zaplatili. Není to úplná legrace, až to bude hotové, zveřejním to normálně jako open source projekt na Freshmeatu.
Ale samotná formulace dotazu zavání nedostatkem zkušeností. Zajímalo by mě, jak si dospěl k tomu, že bys měl k dispozici 11 Mbit. Určitě ne podle teoretické maximální rychlosti Wi-Fi, že ne ? ;-)
O tom jak je narocne napsat aplikaci zajistujici mnou popsane funkce nedokazu diskutovat, protoze sam neprogramuji
Nu nedostatek zkusenosti... priznam se, ze nemam zatim moc velke zkusenosti s wifi prenosem ve volnem poli mimo budovy. Co se tyka rychlosti uvnitr budovy vytahl jsem z toho cca 800-900kbps, neni to sice tech 11, ale cislo 11 jsme pouzil protoze se bavime o maximalni udavane rychlosti wifi, mohl jsem tam napsat treba X.
Samotne HTB je jednoduché, musí být přikompilované v kernelu, a musí být použita verze utility tc (traffic control), která ovládání HTB podporuje.
Ovšem na vytvoření jedné třídy rychlosti je potřeba třech volání tc (kromě vytvoření parent class) a minimálně jedno (spíš čtyři volání) iptables pro markování packetů - mark, accept, mark výstupu ze squida, accept výstupu ze squida.
Samozřejmě za předpokladu, že pro každé IP vytvoříme jednu HTB class, což je jediný rozumný způsob využití.
Celá věc se značně komplikuje, pokud chceme, aby jedna IP adresa jela např. rychlostí 32 kbps, druhá 128 kbps, a obě si přitom mohli půjčovat volné pásmp. Resp. doku na lince nemáme agregaci, je to jednoduché, ale jakmile se s agregací začne, tak se celá věc začíná opravdu drasticky komplikovat - musíme vytvořit třídy pro vyšší zaručené rychlosti, a do té strčíme jednu společnou třídu pro nižší zaručené, apod. Já už s tím laboruju půl roku - a pořád se nechová přesně tak, jak by mělo.
Ahoj,
no ja jsem to prave tak udelal. Je parent, ten ma pod sebou jeden class a pod nim jsou dalsi classy, ktere reprezentuji jednotive virtualni linky. Pak je tam definovan filtr, ktery rika jaka adresa pada so jake linky. Zkousel jsem prenosy a chovalo se to dobre, vcetne pujcovani volne kapacity mezi sebou.
Testoval jsem to na eth, takze jsem si rekl ze kapacita linky je jakoby 512Kbps, na tom jsem definoval jednu 256, jednu 128 a zbytek (default).
AKorat ze mi to uplne nevyhovovalo, rotoze jsem to potreboval stelovat na vstupu, nikoliv na vystupu. Takze jsem si k tomu jeste patchnul kernel na IMQ podporu. imq device se da pouzit jako vstup (preroute v iptables) a na jeho vystup potom nasadit HTB.
Nerozumim te zmince o agregaci. Podle me by melo jit rozhazovat vse co se da definovat filtrem.
JT