Zdravim,
pojal jsem shaping trochu jinym zpusobem a asi by bylo zajimave to konfrontovat.
Moje cile a jejich dosazeni
-aby clovek co ma pusteny p2p neobtezoval ostatni
-aby se dal parit CS, bezohledu na to kdo co taha
-aby jelo Radio1 pres internet bez cukani (btw:ukazalo se tez jako dobry diag. nastroj,
protoze se da krasne rychle pustit : 'mplayer http://live.atlas.cz/radio1/radio1-20.asx' - nejlepe hodit do skriptu.)
-aby www brouzdani melo "prioritu" a jel "rozumne" rychle
-kdyz dojde na nejhorsi situaci, tzn nekdo taha neco velkyho z www, tak aby mi to jelo aspon polovicni rychlosti
Realizace :
Downloadu delim na 3 classy, podle priority. Prvni - rekneme interaktivni, druha - puvodne mineno "prostredni",nyni pouze na web, treti -nizkoprioritni- na vsechno ostatni.
Konfiguraci jsem okoukal z wondershaperu na lartc.org, ale skript si stavim vlastni.(Kromtoho wondershaper neni pripraveny na nasi konfiguraci 2 sitovkama)
Bohuzel je to dost komplexni situace a neobejde se bez zjednodusujicich predpokladu :
1) na routeru nebezi zadny proces generujici traffic [ zejmena Squid a take Apache-kdyz nemame dost bandwithu pro sebe, nebudeme ho jeste davat cizim(navic nahodny charakter pristupu by ztezoval diagnostiku) ]
2) aby jsem se nazamotal z klasifikace bandwithu, predpokladam apriori vsecheno ma nizkou prioritu
3) do prioritni tridy nasypu : CS(podle src port), Radio1 (podle src IP ), DNS resolvy, ACK-y [tim
si popravde receno nejsem jisty, v uploadu urcite, ale v downloadu ? ]
4) prostredni tridu delim na poloviny podle dst ip, abych mel zarucenou pulku pasma kdyz si nekdo pusti download [delim linku mezi 2 rodiny,predpokladam ze v ramci 1 rodiny se lidi sami dohodou "kdo to prave brzdi"]
5) zatim shapuji pouze download, uzivatelum jsem zakazal blokovat upload(ke cti jim slouzi ze to vesmes dodrzuji). Situaci jsem tak podstatne zjednodusil a vyhnul se fwmarku(casem asi bude).
Upload zatim to resim tak, ze je tam 1 sfq-cko -je na 1 radek a udela to spoustu prace
Rad bych sem napsal ze vsechno chodilo na 100%, ale menil jsem skripty do toho navic UPC rozdrbalo rychlost a kvalitu linky, takze aspon to co (nekdy) uspesne fungovalo :
-prioritizace CS - pri plnym zatizeni linky ukazovalo CS ping temer jako na prazdno
-prioritizace Radia 1 - at se delo cokoliv, buffer byl dost plny takze ani necuklo
-web se delil fifty fifty , takze vzdy se dalo pozitelne brouzdat, i kdyz to bylo trochu pomale.
-kdyz nikdo nic nedelal, p2p traffic si zabral celou linku a plnou rychlosti stahoval
-web stanky se zacinaji nacitat rychleji a celkova doba natazeni je kratsi, i kdyz nekdo jiny mam p2p na plny kotel. (to je ovsem jeste necim jinym, a to perturbem)
PERTURB:
-zajimave, ze tomuhle parametru se nikdo moc nevenuje, i kdyz jeho vliv je znacny - obvykle je perturb 10sec. domnivam se ze v dusledku to znamena, ze kdyz je 100% zatizena linka a odklepnu v browseru URL, tak browser bude muset 1-10 sec "zivorit" s jakousi zbytkovou kapacitou, nez HTB prepocita "kolik a kam tece" a prideli mu jeho urcenou cast pasma. Receno jeste vulgarneji, perturb="cas, kdy shaping nefunguje". Pri perturbu 10 vychazi prumerny cas cekani 5 sec, a to uz je na brouzdani dost poznat.
Proto mam vsude perturb nejmensi(tzn 1sec). Byla tu obava, ze to pak bude zrat moc CPU, tak jsem nainstaloval HOTSANIC a obcas to kontroluji(shaping mam tak jednoduchy,jak to jde a router(dual 133MHz pentium 1) ma trvale zatizeni 5-10% obou CPU, takze v pohode)
POZOR - cely odstavec o perturbu je "hypoteza ve stadiu overovani",takze ruku do ohne za nej nedam !
Porovnani s shapingem popsanym v clanku
-co se mi libi, ze kombinace HTB+PRIO krasne resi tento problem - pomery trid "prioritizovana/normalni/nedulezita" mam nastaveny fixne a tise predpokladam, ze v prioritizovane tride je traffic do 5kb, takze na web se vzdycky dostane. Pokud by ovsem nekdo tuto tridu nedejboze zaplacl(map transfer v CS,vetsi stream radia1, tunelovani X pres SSH) tak na web nezustane nic - coz je jednoznacne chyba.
-na druhou stranu, toto deleni primarne podle IP adresy ma jednu fundamentalni nevyhodu : kdyz si 2 ze 3 vasich uzivatelu pusti trvale p2p na "co to da", udelaji z vasi krasne 256kbit linky 80kbit socku, coz uz pri brouzdani sakra poznate.
Zaver : Tim ze delim primarne podle druhu mi umoznuje webem "vytlouct" p2p z linky, kdyz je treba.
Dale vyzyvam zde pritomne ctene ctenare, aby popsali jakym zpusobem shapuji a jak dobre to funguje...
Tyhle moznosti (tvoje a moje) jsou v celku ekvivalentni. Kazda ma svoje vyhody a nevyhody, ktery jsi shrnul, takze neni co dodat. Snad jen to, ze ja se ridil heslem, ze kazdej uzivatel ma pravo na svuj dil at se deje co se deje...
Pokud najdu cas, zkusim vymyslet nejakou hybridni kombinaci...
No, koukam ze jsem to asi moc prechvalil, me se to zas tak dokonaly nezda :) Skripty nemam ve forme vhodne k publikovani, ale do vikendu to zkusim napravit a postnu to sem. I kdyz popravde receno si myslim, ze ten slovni popis zbehlemu clovekovi k (re)konstrukci staci, a zacatecnikovi nepomuzou ani skripty...
Toz, pro ty,kterym to chybelo : skript je na :
http://www.sweb.cz/dvorak.vaclav/htb-vdv.zip
Nicmene - jak jsem to ted editoval a korigoval, uvedomil jsem si ze uzivatele+jejich chovani+poskytovatel+shaping tvori dohromady skoro organicky system, takze kdyz to fungovalo bezchybne 3 mesice, zitra uz to fungovat nemusi, natozpak v jine siti, s jinymi uzivateli. Je to zpusobeno volnejsim pristupem a povicero predpoklady pri jeho budovani-to je cena za rychlost. Tudiz kdyz se vyrazne zmeni chovani uzivatelu, bude ho treba opravit.
Zaver : Pokud vyzadujete spolehlivejsi system,nebo nemate takove zkusenosti s shapovanim a nevadi vam pripadna pomalost linky, je system pana Podgorneho pro vas lepsim resenim.
perturb je čas v sekundách mezi změnami hashovací funkce v sfq - tato změna pomáhá čelit případům, kdy se vám do jednoho slotu v hashovací funkci dostane jedna nebo více velmi aktivních např. "stahovacích" sessions společně se jinou např. "interaktivní" session, která je tímto bržděna a smysl sfq je tímto potlačen - díky perturb tento stav vydrží maximálně "perturb" sekund :)