Dobry den, nevi nekdo, ktery algoritmus pro omezeni sirky pasma je nejrychlejsi (CBQ,HTB,TBF...)? A v kombinaci s jakym oznacovanim paketu? Pouzival jsem CBQ, pak jsem presel na HTB, ale porad to neni ono. (vyzkousel jsem jak MARK tak 32ku) Mam 2GHz router, nekolik stovek uzivatelu s vetsinou 100Mbit pristupem a jde to vsechno pres jednu masinu (musi). Bohuzel, jakmile zacnu uzivatelum omezovat sirku pasma, zatez stroje vyskoci strasne nahoru (presneji softirq). Ma nekdo napad?
diky
Ono je to presne ako s firewallovymi pravidlami, daju sa napisat efektivne a menej efektivne a potom podla toho vyzera aj zatezenie stroja.
Odporucam sa pozriet na lartc.org a hlavne prehladat prislusny mailing list lartc@. Ale na stroji s 2GHz procesorom, nieje problem shapovat niekolko stoviek zakaznikov a na dual-proc masinach az niekolko tisic, co by malo na bezne pomery byt dostacujuce...
Co sa tyka tej narocnosti CBQ a HTB, tak na strankach Devik-a (autor HTB) su grafy, kde je jasne vidiet, ako je HTB rychlejsie oproti CBQ.
Inak hit poslednych mesiacov v shapingu je hsfc, ktore dosahuje daleko lepsie vysledky pri zdielani pasma ako HTB a je aj viac presnejsie ako HTB.
S tou hardwarovou náročností bych to opravdu neviděl až tak zle. Shapujeme cca. 200 klientů, na 3 rozhraních, v obou směrech na CPU Duron 700. Bez jakýchkoliv problémů. Chybku by ale mohli dělat třebas i síťové karty, nějaký chybka v markování či něco podobného. Pokud budete potřebovat pomoc, stačí napsat...
ziju v domneni, ze vice CPU v tomhle pripade je celkem k nicemu. Pokud se hlavni rezie s frontovanim packetu deje v ramci kodu volaneho hw prerusenim pri prichodu packetu, pak vice CPU muze mit naopak negativni vliv ne? (volani multi cpu zamku atd). Preruseni od hw zpracovava stejne v jednom case jen jeden CPU.
Rad se necham vyvest z omylu...
Pokud se nepletu tak i na x86 SMP arch pod rozumnym OS lze diky APIC smerovat HW preruseni(obsluhu) na urcite CPU. x86 na to sice nebyla nikdy stavena, ale diky ruznym HW/SW berlickam ktere se casem objevily to funguje. Pro klasicke UNIXove arch (Alpha, Sparc, Power...) je to zamozrejmost.
HSFC je sucastou vanila kernelu a nieje treba nic patchovat. Tak isto aj iproute2 ma v sebe podporu pre HSFC - treba ale pouzit najnovsiu verziu z http://developer.osdl.org/dev/iproute2/
Priklady a dokumentaciu treba hladat v ALTQ, kedze linuxova implementacia HSFC vznikla podla implementacie v ALTQ.
Ahojky vsem! Rad bych se zeptal predevsim tech, kteri maji nejake *osobni* zkusenosti s ALTQ a PF (FreeBSD/OpenBSD), zda by se nejak daly secist a podtrhnou rozdily, resp. klady a zapory reseni oproti HTB + TC.
Na internetove brane nam cca 2 roky beha RH s HTB a v zasade nemame s touto kombinaci problemy. Trochu mi vsak prekazi uroven abstrakce, konkretne nemoznost pouziti logickych jmen u trid (toto kdysi devik planoval, reps. byl o to zadan) a take nutnost vytvareni trid pro prichozi a odchozi datovy tok na ruznych rozhranich. Tusim, ze tohle bylo mozne resit pomoci IMQ, ktere je vsak jiz delsi dobu neudrzovane.
Diky vsem za informace...
Mas pravdu a nikdo se ani nepre. Pokud se podivas na originalni sajt (http://trash.net/~kaber/imq/), tak tam nic tak zajimaveho neni. IMQ se nechtel delsi dobu nikdo ujmout, a tak mi nepripadalo moudre na nem neco produktivniho stavet, hlavne z duvodu drivejsiho problemu s nestabilitou.
Bla bla. No vlastne moje slova potvrzuje pred momentem nalezeny clanek - http://www.root.cz/clanek/2446
I tak Ti diky za info
No ono to s historiou IMQ je dost zaujimave. Len pre pripomenutie:
- prvotny napad a implementaciu spravil Devik (quick & dirty)
- potom sa toho ujal Patrick McHardy - Kaber, ktory to spravoval pocas doby kedy to pouzival. Pocas skoro 1 roka prispelo zopar ludi patchmi, ale aj tak sa IMQ velmi nevylepsilo (stale tam bol problem s lokalne generovanymi packetmi a ich dropovanim)
- kedze Kaber to prestal pouzivat a aj udrzovat, a vseobecne sa vedelo a designovych problemoch povodneho IMQ, tak vznikli 2 nove implementacie:
* www.linuximq.net
* pupa.da.ru/imq/
z toho www.linuximq.net sa povazuje za lepsiu a stabilnejsiu implementaciu.
- aby to nebolo este dost, nedavno vznikla dalsia nova implementacia z ceskych luhu a haju od Jiriho Fojtaseka - http://hyperfighter.jinak.cz/qos/
Cize IMQ je zive viac ako dost, ale pokial sa nezmenia urcite designove veci, tak vzdy je tu riziko, ze to moze padat v 2 konkretnych situaciach:
- dropovanie lokalne generovanych packetov (krasny vertex storm efekt - cim viac packetov sa zahodi o to viac ich kernel vygeneruje a tak sa vlastne pochova) [toto uz nejako vyriesili ludia od netfilter-u a uvazuje sa so zaclenenim do www.linuximq.net]
- ingress shaping (ono v podstate ingress shaping nieje vobec dobry napad a lepsie je pouzit namiesto toho predradeny shaping bridge i ked samozrejme, ze to vo vsetkych pripadoch nieje mozne)
Takze pokial mate router, na ktorom chcete pouzivat IMQ a nebudete sa snazit shapovat lokalne generovane packety, tak mozete s kludom nasadit www.linuximq.net a skoro pokojne spavat.
pomoci tohoto to resim ja
#!/bin/sh
# **************************** Definice parametru ****************************
TC=/sbin/tc
IPTABLES=/usr/sbin/iptables
INET_IFACE=eth0
LAN_IFACE=eth1
INET_SPEED_UPLOAD=256Kbit
INET_SPEED_DOWNLOAD=256Kbit
GARANCE1=32Kbit
GARANCE2=64Kbit
GARANCE3=128Kbit
GARANCE4=256Kbit
MAXIMUM1=64Kbit
MAXIMUM2=128Kbit
MAXIMUM3=256Kbit
MAXIMUM4=512Kbit
BURST=64k
USER_01=192.168.1.55 #Uzivatel 1
USER_02=192.168.1.62 #Uzivatel 2
# **************************** Definice parametru ****************************
#
############################### DOWNLOAD ############################
#
# Smazani vsech qdiscu na LAN interfacu
$TC qdisc del dev $LAN_IFACE root >/dev/null
# Pridani ROOT tridy na LAN interface
$TC qdisc add dev $LAN_IFACE root handle 1:0 htb default 20
#Nastaveni rychlosti tridy dle rychlosti pripojeno do internetu
$TC class add dev $LAN_IFACE parent 1:0 classid 1:1 htb rate $INET_SPEED_DOWNLOAD burst $BURST
#Nastaveni rychlosti trid na LAN rozhrani
$TC class add dev $LAN_IFACE parent 1:1 classid 1:11 htb rate $GARANCE1 ceil $MAXIMUM2 burst $BURST #Klient 1
$TC class add dev $LAN_IFACE parent 1:1 classid 1:12 htb rate $GARANCE1 ceil $MAXIMUM2 burst $BURST #Klient 2
# ******************** Markovani paketu **************************************
# Oznaceni paketu dle cilove IP adresy
$IPTABLES -t mangle -A POSTROUTING -o $LAN_IFACE -d $USER_01 -j MARK --set-mark 1
$IPTABLES -t mangle -A POSTROUTING -o $LAN_IFACE -d $USER_02 -j MARK --set-mark 2
# Trizeni paketu do pridelenych trid
$TC filter add dev $LAN_IFACE parent 1:0 protocol ip handle 1 fw flowid 1:11
$TC filter add dev $LAN_IFACE parent 1:0 protocol ip handle 2 fw flowid 1:12
#
############################### UPLOAD ############################
#
# Smazani vsech qdiscu na INET interfacu
$TC qdisc del dev $INET_IFACE root >/dev/null
# Pridani ROOT tridy na LAN interface
$TC qdisc add dev $INET_IFACE root handle 1:0 htb default 20
#Nastaveni rychlosti tridy dle rychlosti pripojeno do internetu
$TC class add dev $INET_IFACE parent 1:0 classid 1:1 htb rate $INET_SPEED_UPLOAD burst $BURST
#Nastaveni rychlosti trid na INET rozhrani
$TC class add dev $INET_IFACE parent 1:1 classid 1:11 htb rate $GARANCE1 ceil $MAXIMUM1 burst $BURST #Klient 1
$TC class add dev $INET_IFACE parent 1:1 classid 1:12 htb rate $GARANCE1 ceil $MAXIMUM3 burst $BURST #Klient 2
#******************** Markovani paketu **************************************
# Oznaceni paketu dle cilove IP adresy
$IPTABLES -t mangle -A PREROUTING -i $LAN_IFACE -s $USER_01 -j MARK --set-mark 31
$IPTABLES -t mangle -A PREROUTING -i $LAN_IFACE -s $USER_02 -j MARK --set-mark 32
# Trizeni paketu do pridelenych trid
$TC filter add dev $INET_IFACE parent 1:0 protocol ip handle 31 fw flowid 1:11
$TC filter add dev $INET_IFACE parent 1:0 protocol ip handle 32 fw flowid 1:12
Zdravim,
do oblibenych otazek bych jeste pridal
"Jak osahapovat download procesu bezici na routeru"
Podnikl jsem v tomto smeru nejaky uspech(
http://www.czfree.net/forum/showthread.php?threadid=9822&referrerid=0 )
ale nebyl cas to dokoncit. Nechce v tom nekdo pokracovat a dat vedet jak to dopadlo?
Dik & shapovani zdar
Pri cteni vsech techto clanku, jsem dostal chut si HBT taky vyzkouset. Ale nez neco delam, tak planuju jak na to.
Jestli jsem to dobre pochopil, tak pokud by slo jen o pristup na internet funguje deleni pasma v pohode. Pokud by nekdo pristupoval k tomutop serveru jako na File server, a chtel vyuzit maximalky sitovky, coz je 100Mbit tak ma smulu a dostane jen pridelenych napr. 80kB. Mam pravdu?
Jestli ano, nesel by tento problem resit virtualnim rozhranim? A povesit IMAP, SAMBU ... treba jen na tento virtualni interface? Prave ze nevim, jestli dojde k shapovani i na virtualnim interface kdyz byl vytvoren z fyzickeho?
Muze mi nekdo potvrdit nebo vyvratit tuto ideu?
Diky
Shapovat s HTB (a pokud vím tak i se všemi ostatními disciplínami s třídami) pouze linku s pevným rate, to znamená, že by jsi musel dát u kořenu rate 320 (nebo ještě lépe o pár procent nižší, dle ztrát na uplinku a kvality shapování u providera), a na ten převis do 640 se vybodnout.
To jsem ještě já :-) Teoreticky by asi šlo modifikovat HTB nebo vytvořit novou disciplínu, která by rate u kořenu měnila podle délky front, a rate a ceil u listů by byly dány poměrem k rate kořenu. Těžko ale říct, jestli se do toho někdo pustí, asi to nebude úplně triviální ;-)