QOS download dla zielonych - gotowy skrypt
|
liamk |
Dodano 03-02-2009 22:47
|
User
Posty: 23
Dołączył: 28/01/2009 23:38
|
Witam,
jako zielonemu brakowalo mi troche takiego tematu na tym forum i 3 noce metada prob i bledow oraz przy pomocy howto http://lartc.org/lartc.html napisalem wreszcie skrypt, ktory w 100% spelnia moje (i pozostalych uzytkownikow mojej sieci) oczekiwania.
Skrypt zapewnia, niezalenie od obciazenia lacza, nawet przy ostrym p2p
1. niskie pingi w grach
2. swobodne korzystanie z www, ftp, pop i innych podstawowych uslug
3. latwa edycje/dopasowanie skryptu do swoich potrzeb
Krytycznie linie sa w miare szczegolowo opisane. Dla twpowych zastosown starczy, ze wyedytujesz sobie CEIL, WWWMAX, DWLMIN = WWWMAX +1, PRIO0, PRIO1.
Dzieki opisom latwo zrozumiesz co do czego sluzy i zmienisz wg. potrzeb.
Do postu dolaczylem czysty skrypt bez opisow i w linuxowym kodowaniu.
ps.
dla calkiem zielonych:
-1. do edycji nie uzywaj notatnika/worpada czy innych edytorow ktore dodja na koncu lini znak konca i nastepnej lini. Polecam vi, zreszta na golym pomidorze i tak wyboru nie ma
0. usun moje komentarze :)
1. skrypt skopiuj do /jffs/fw
2. chmod 700 /jffs/fw
3. w administion->Scripts->Firewall wpisz /jffs/fw
// wczytanie L7, mozna usunac jesli nie uzywasz
modprobe ipt_layer7
// nazwa device. Na std. tomato do download to br0
DEV="br0"
// makra do budowy klas, filtrow i kolejek
TCA="tc class add dev ${DEV}"
TFA="tc filter add dev ${DEV}"
TQA="tc qdisc add dev ${DEV}"
SFQ="sfq perturb 10"
// max download twojego lacza
// zmierz na http://www.speedtest.pl/ i odejmnij pare procent.
// W moim przypadku, dla wyniku 3100 optymala wartosc to 2900
// Im wiecej polaczen na twoim laczu tym wiecej trzeba odjac (u mnie max 300 aktywnych)
// mozesz sprawdzic w Advanced->Conntrack / Netfilter->Count Current
// najlepiej przy maxymalnym obciazeniu
CEIL=2900
// Po przekroczeniu sciagania tylu bits uslugi z PRIO1
// zostana przeniosione do PRIO2.
// Ma to na celu np. odroznienie normlanego ogladania stron www
// od sciagania plikow przez www czy ftp.
// Czyli jesli WWWMAX zostanie przekroczony sciaganie pliku dostanie
// nizszy prio od przegladania www.
WWWMAX=1000000
// Porty o najwyzszym, priorytecie - reszta czeka.
// PRIO jest jednak ograniczone do max 256kbit downloadu.
// Tutaj wpisuj TYLKO porty gier, ssh, telnet, itp.
// Wpsywc mozna po przecinku lub z dwukropkiem jesli zakres
PRIO0="27964,27015:27016,27045"
// Porty o podwyzszonym priorytecie. Tutaj powinny wyladowac
// typowe uslugi jak www, ftp, smpt, pop.
// Po przekroczeniu WWWMAX automatycznie polaczenie
// zostanie wyrzucone z tej kolejki tak aby zawsze
// zapewnic jej przepustowosc (uzyteczne dla L7 skype, L7 shoutcast itp)
PRIO1="20:110"
// PRIO2 - automatycznie wyldujuja tutaj kolosy z PRIO1
// nic nie musisz robic
// PRIO3 - w tej nedznej kolejce :) skoncza wszytkie pakiety z portow
// nie okreslonych w PRIO0 lub PRIO1.
// W praktyce jest to p2p.
// nic nie musisz robic
// porty na ktorych nasluchuja twoje programy P2P
// dzieki temu zwiekszy sie wydajnosc bo sporo pakietow
// zostanie sklasyfikowanych juz przez pierwsza regule.
// Znaczace odciazenie procka routera w w przypadku wielu
// regul L7
P2P="48805"
// usuwanie/tworzenie roota
tc qdisc del dev ${DEV} root
tc qdisc add dev ${DEV} root handle 1: htb
tc class add dev ${DEV} parent 1: classid 1:1 htb rate ${CEIL}kbit
// tworzenie klas
// tutaj okresli gwarantowana i max przepustowosc dla swoich klas
// PAMIETAJ - suma wszystkich gwarantowanych nie moze przekroczyc CEIL
$TCA parent 1:1 classid 1:10 htb rate 256kbit ceil 256kbit prio 0
$TCA parent 1:1 classid 1:11 htb rate 1492kbit ceil ${CEIL}kbit prio 1
$TCA parent 1:1 classid 1:12 htb rate 1024kbit ceil ${CEIL}kbit prio 3
$TCA parent 1:1 classid 1:13 htb rate 128kbit ceil ${CEIL}kbit prio 4
// tworzenie kolejek
$TQA parent 1:10 handle 10: $SFQ
$TQA parent 1:11 handle 11: $SFQ
$TQA parent 1:12 handle 12: $SFQ
$TQA parent 1:13 handle 13: $SFQ
// tworzenie filtrow
$TFA parent 1:0 prio 0 protocol ip handle 10 fw flowid 1:10
$TFA parent 1:0 prio 1 protocol ip handle 11 fw flowid 1:11
$TFA parent 1:0 prio 3 protocol ip handle 12 fw flowid 1:12
$TFA parent 1:0 prio 4 protocol ip handle 13 fw flowid 1:13
// regula zapewniajaca zliczanie pakietow, niezbedna dla
// automatycznego przezucania z PRIO1 do PRIO2 po przekrocznieu WWWMAX
iptables -t mangle -A PREROUTING -j BCOUNT
// reguly dla programow P2P
// procesor twojego routera z pewnoscia je doceni :) gdy uzywasz L7
iptables -t mangle -A PREROUTING -p tcp -m mport --dports ${P2P} -j MARK --set-mark 13
iptables -t mangle -A PREROUTING -p tcp -m mport --dports ${P2P} -j RETURN
iptables -t mangle -A PREROUTING -p udp -m mport --dports ${P2P} -j MARK --set-mark 13
iptables -t mangle -A PREROUTING -p udp -m mport --dports ${P2P} -j RETURN
// reguly dla PRIO0
iptables -t mangle -A PREROUTING -p tcp -m mport --sports ${PRIO0} -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -p tcp -m mport --sports ${PRIO0} -j RETURN
iptables -t mangle -A PREROUTING -p udp -m mport --sports ${PRIO0} -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -p udp -m mport --sports ${PRIO0} -j RETURN
// reguly dla PRIO1
iptables -t mangle -A PREROUTING -p tcp -m mport --sports ${PRIO1} -m bcount --range 0x0-${WWWMAX} -j MARK --set-mark 11
iptables -t mangle -A PREROUTING -p tcp -m mport --sports ${PRIO1} -m bcount --range 0x0-${WWWMAX} -j RETURN
iptables -t mangle -A PREROUTING -p udp -m mport --sports ${PRIO1} -m bcount --range 0x0-${WWWMAX} -j MARK --set-mark 11
iptables -t mangle -A PREROUTING -p udp -m mport --sports ${PRIO1} -m bcount --range 0x0-${WWWMAX} -j RETURN
// reguly dla PRIO2
iptables -t mangle -A PREROUTING -p tcp -m mport --sports ${PRIO1} -m bcount --range $(($WWWMAX+1)) -j MARK --set-mark 12
iptables -t mangle -A PREROUTING -p tcp -m mport --sports ${PRIO1} -m bcount --range $(($WWWMAX+1)) -j RETURN
iptables -t mangle -A PREROUTING -p udp -m mport --sports ${PRIO1} -m bcount --range $(($WWWMAX+1)) -j MARK --set-mark 12
iptables -t mangle -A PREROUTING -p udp -m mport --sports ${PRIO1} -m bcount --range $(($WWWMAX+1)) -j RETURN
// regula dla PRIO3
// tak, naprawde wszystko co nie zostalo wylapane powyzej konczy tutaj
iptables -t mangle -A PREROUTING -j MARK --set-mark 13
// aby zwiekszyc wydajnosc L7 wrzucaj tutaj (koniec tabeli)
// liczba po --set-mark to klasa. Dostepne klasy sa tworzone
// powyzej przez makra $TCA. Odradzam uzycie 10 tutaj.
iptables -t mangle -A PREROUTING -m layer7 --l7proto shoutcast -j MARK --set-mark 11
iptables -t mangle -A PREROUTING -m layer7 --l7proto skypetoskype -j MARK --set-mark 11
liamk załączono następujące plik:
Nie masz uprawnień, by zobaczyć załączniki w tym wątku.
Edytowany przez liamk dnia 07-02-2009 20:04
|
|
|
|
liamk |
Dodano 03-02-2009 22:57
|
User
Posty: 23
Dołączył: 28/01/2009 23:38
|
ps2.
przy konfigurowaniu wlasnych klas bardzo przydatne bedzie podgladanie w czasie rzeczyswistym gdzie trafiaja pakiety
tc -s class show dev br0
ponizej iptables -t mangle -L dla powyzszego skryptu na moim routerku. CONNMARKI sa z tomato upload QOS, konfigurowanego przez interface www.
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
TTL 0 -- anywhere anywhere TTL increment by 1
BCOUNT 0 -- anywhere anywhere
MARK tcp -- anywhere anywhere mport dports 48805 MARK set 0xd
RETURN tcp -- anywhere anywhere mport dports 48805
MARK udp -- anywhere anywhere mport dports 48805 MARK set 0xd
RETURN udp -- anywhere anywhere mport dports 48805
MARK tcp -- anywhere anywhere mport sports 27964,27015:27016,27045 MARK set 0xa
RETURN tcp -- anywhere anywhere mport sports 27964,27015:27016,27045
MARK udp -- anywhere anywhere mport sports 27964,27015:27016,27045 MARK set 0xa
RETURN udp -- anywhere anywhere mport sports 27964,27015:27016,27045
MARK tcp -- anywhere anywhere mport sports ftp-data:pop3 bcount --range 0:1000000 MARK set 0xb
RETURN tcp -- anywhere anywhere mport sports ftp-data:pop3 bcount --range 0:1000000
MARK udp -- anywhere anywhere mport sports 20:pop3 bcount --range 0:1000000 MARK set 0xb
RETURN udp -- anywhere anywhere mport sports 20:pop3 bcount --range 0:1000000
MARK tcp -- anywhere anywhere mport sports ftp-data:pop3 bcount --range 1000001+ MARK set 0xc
RETURN tcp -- anywhere anywhere mport sports ftp-data:pop3 bcount --range 1000001+
MARK udp -- anywhere anywhere mport sports 20:pop3 bcount --range 1000001+ MARK set 0xc
RETURN udp -- anywhere anywhere mport sports 20:pop3 bcount --range 1000001+
MARK 0 -- anywhere anywhere MARK set 0xd
MARK 0 -- anywhere anywhere LAYER7 l7proto shoutcast MARK set 0xb
MARK 0 -- anywhere anywhere LAYER7 l7proto skypetoskype MARK set 0xb
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
QOSO 0 -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
QOSO 0 -- anywhere anywhere
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
TTL 0 -- anywhere anywhere TTL increment by 1
Chain QOSO (2 references)
target prot opt source destination
BCOUNT 0 -- anywhere anywhere
CONNMARK 0 -- anywhere anywhere CONNMARK restore mask 0xff
RETURN 0 -- anywhere anywhere CONNMARK match !0x0/0xff00
CONNMARK udp -- anywhere anywhere udp spt:48805 CONNMARK set-return 0x106/0xff
CONNMARK tcp -- anywhere anywhere tcp spt:48805 CONNMARK set-return 0x106/0xff
CONNMARK udp -- anywhere anywhere udp dpt:domain bcount --range 0:2047 CONNMARK set-return 0x1/0xff
CONNMARK tcp -- anywhere anywhere tcp dpt:domain bcount --range 0:2047 CONNMARK set-return 0x1/0xff
CONNMARK udp -- anywhere s14.pifpaf.pl udp dpts:27960:27970 CONNMARK set-return 0x1/0xff
CONNMARK tcp -- anywhere s14.pifpaf.pl tcp dpts:27960:27970 CONNMARK set-return 0x1/0xff
CONNMARK udp -- starzy anywhere CONNMARK set-return 0x4/0xff
CONNMARK tcp -- starzy anywhere CONNMARK set-return 0x4/0xff
CONNMARK udp -- anywhere anywhere mport dports 27015:27016,27045 CONNMARK set-return 0x2/0xff
CONNMARK tcp -- anywhere anywhere mport dports 27015:27016,27045 CONNMARK set-return 0x2/0xff
CONNMARK tcp -- anywhere anywhere mport dports www,https bcount --range 0:524287 CONNMARK set-return 0x2/0xff
CONNMARK udp -- anywhere anywhere mport dports 20:ssh,25 CONNMARK set-return 0x3/0xff
CONNMARK tcp -- anywhere anywhere mport dports ftp-data:ssh,smtp CONNMARK set-return 0x3/0xff
CONNMARK tcp -- anywhere anywhere mport dports www,https bcount --range 524288+ CONNMARK set-return 0x5/0xff
CONNMARK udp -- anywhere anywhere LAYER7 l7proto skypetoskype CONNMARK set-return 0x105/0xff
CONNMARK tcp -- anywhere anywhere LAYER7 l7proto skypetoskype CONNMARK set-return 0x105/0xff
CONNMARK udp -- anywhere anywhere LAYER7 l7proto httpaudio CONNMARK set-return 0x105/0xff
CONNMARK tcp -- anywhere anywhere LAYER7 l7proto httpaudio CONNMARK set-return 0x105/0xff
CONNMARK udp -- anywhere anywhere LAYER7 l7proto httpvideo CONNMARK set-return 0x105/0xff
CONNMARK tcp -- anywhere anywhere LAYER7 l7proto httpvideo CONNMARK set-return 0x105/0xff
CONNMARK udp -- anywhere anywhere LAYER7 l7proto shoutcast CONNMARK set-return 0x105/0xff
CONNMARK tcp -- anywhere anywhere LAYER7 l7proto shoutcast CONNMARK set-return 0x105/0xff
CONNMARK 0 -- anywhere anywhere CONNMARK set-return 0x7
Edytowany przez liamk dnia 04-02-2009 19:44
|
|
|
|
obsy |
Dodano 04-02-2009 09:52
|
VIP
Posty: 5775
Dołączył: 31/10/2006 20:06
|
A mogę swoje 2grosze?
Skrypt jest na tyle uniwersalny że nadaje się też do innych systemów, więc:
1. Wyjmij br0 do zmiennej na górę. Nie każdy system musi mieć br0.
2. Nie definiuj DWLMIN, już lepiej w skryptach wykorzystaj WWWMAX+ 1 będzie się mniej ludziom mylić po co to jest
3. Określasz już ręcznie CEIL, ale w klasach masz na stałe przypisane wartości na stałe łącznie do 2900. Już lepiej podziel to procentowo zależnie od CEIL, np 10%,50%,20% i reszta.
|
|
|
|
Manieczek |
Dodano 04-02-2009 13:24
|
User
Posty: 22
Dołączył: 10/10/2007 17:14
|
To może jeszcze coś dla bardziej zielonych ? Jak skopiować plik do jffs ? |
|
|
|
banditfr |
Dodano 04-02-2009 14:25
|
User
Posty: 88
Dołączył: 16/01/2009 12:04
|
Cytat Manieczek napisał/a:
To może jeszcze coś dla bardziej zielonych ? Jak skopiować plik do jffs ?
Również chciałem zadać to pytanie
Aha i czy wtedy QOS wbudowany w Tomato mam wyłączyć ? |
|
|
|
shibby |
Dodano 04-02-2009 19:35
|
SysOp
Posty: 17110
Dołączył: 15/01/2009 20:30
|
tak bo ten skrypt ogranicza tylko download. |
|
|
|
liamk |
Dodano 04-02-2009 19:38
|
User
Posty: 23
Dołączył: 28/01/2009 23:38
|
Cytat obsy napisał/a:
A mogę swoje 2grosze?
Skrypt jest na tyle uniwersalny że nadaje się też do innych systemów, więc:
1. Wyjmij br0 do zmiennej na górę. Nie każdy system musi mieć br0.
2. Nie definiuj DWLMIN, już lepiej w skryptach wykorzystaj WWWMAX+ 1 będzie się mniej ludziom mylić po co to jest
3. Określasz już ręcznie CEIL, ale w klasach masz na stałe przypisane wartości na stałe łącznie do 2900. Już lepiej podziel to procentowo zależnie od CEIL, np 10%,50%,20% i reszta.
ad1. poprawione
ad2. poprawione
ad3. poprawione ale nie do konca jak proponowales
dodatkowo dodalem nowe makro P2P dla portow na ktorych nasluchuja softy p2p. Po co puszczac przez L7 to co i tak wiadomo czym jest. |
|
|
|
shibby |
Dodano 04-02-2009 19:49
|
SysOp
Posty: 17110
Dołączył: 15/01/2009 20:30
|
hmm skad wytrzasnales ten port 48805?? |
|
|
|
liamk |
Dodano 04-02-2009 19:56
|
User
Posty: 23
Dołączył: 28/01/2009 23:38
|
Cytat Manieczek napisał/a:
To może jeszcze coś dla bardziej zielonych ? Jak skopiować plik do jffs ?
1. najpierw musisz aktywowac jffs z interface www routera w sekcji administracja
2. przeklej moj skrypt do notatnika, dopasuj pod siebie, wlacz cifs1 (tez z if www routera w adm) zgraj tam skrypt pod nazwa fw.txt
3. zaloguj sie do routera
cp /cifs1/fw.txt /jffs/fw
chmod 700 /jffs/fw
vi /jffs/fw
i pousuwaj ^M z konca lini i inne "dziwne" znaczki formatujace.
help do vi http://pl.wikipedia.org/wiki/Vi_(prog..._(program)
ew. mozesz skrypt wyedytowac np. gedit czy innym normalnym edytorem textu - wtedy nie bedzie problemu z ^M |
|
|
|
liamk |
Dodano 04-02-2009 19:59
|
User
Posty: 23
Dołączył: 28/01/2009 23:38
|
Cytat shibby napisał/a:
hmm skad wytrzasnales ten port 48805??
a nie wiem, tak samo przypelzło
... a powaznie to nie bardzo rozumiem o co chodzi? |
|
|
|
shibby |
Dodano 04-02-2009 20:04
|
SysOp
Posty: 17110
Dołączył: 15/01/2009 20:30
|
to ze wiekszosc p2p potrafi losowac port lub korzystac z 80tki. nie wiem skad pomysl ze wpisanie portu moze zastapic regulki z L7.
dlatego pytam skad wzioles ten port. czy wpisalem pierwszy lepszy by pokazac co trzeba wpisac pod zmienna P2P czy moze ten konkretny port ma jakies znaczenie. |
|
|
|
liamk |
Dodano 04-02-2009 20:16
|
User
Posty: 23
Dołączył: 28/01/2009 23:38
|
Cytat shibby napisał/a:
to ze wiekszosc p2p potrafi losowac port lub korzystac z 80tki. nie wiem skad pomysl ze wpisanie portu moze zastapic regulki z L7.
dlatego pytam skad wzioles ten port. czy wpisalem pierwszy lepszy by pokazac co trzeba wpisac pod zmienna P2P czy moze ten konkretny port ma jakies znaczenie.
no tak, w mojej sieci sa dorosli uzytkownicy, wiec jak im powiem zeby ustawili sobie torrenta na porcie 48805 to tak zrobia. Dlatego wiem, ze wszytko co do mnie przyleci na 48805 to torrent.
Ofc kazdemu przydzielam inny port
48805, 48806, 48807 i potem caly zakres dodaje do klasy 13.
P2P nawiazuja bardzo duzo polaczen wiec ruch na tych portach jest spory i prosta regula moge od razu sklasyfikowac.
>pisales pierwszy lepszy by pokazac...
tak, moj skrypt jest nieco bardziej rozbudowany ale zeby latwiej bylo zrozumiec co sie dzieje uproscilem go troche na potrzeby tego mikro- tutoriala i czasem podaje przykladowe wartosci.
idelanie bylo by uzyc CONNMARK dla takich zastosowan. W weekend moze znajde chwile by to poprawic.
Edytowany przez liamk dnia 04-02-2009 20:20
|
|
|
|
shibby |
Dodano 04-02-2009 20:37
|
SysOp
Posty: 17110
Dołączył: 15/01/2009 20:30
|
hmm ja mam prostrze rozwiazanie:
PRE="iptables -t mangle -A PREROUTING"
$PRE -m layer7 --l7proto bittorrent -j MARK --set-mark 13
i po sprawie. niech sobie userzy robia co chca z portami
downloadu nie ograniczam, kazdy user ma swoje widelki i w nich sie porusza. chce wykorzystac swoja czesc na p2p to prosze bardzo ale wysyl max tyle ile ja chce, zeby nie zatyrac pasma. |
|
|
|
liamk |
Dodano 04-02-2009 20:50
|
User
Posty: 23
Dołączył: 28/01/2009 23:38
|
Cytat shibby napisał/a:
hmm ja mam prostrze rozwiazanie:
PRE="iptables -t mangle -A PREROUTING"
$PRE -m layer7 --l7proto bittorrent -j MARK --set-mark 13
i po sprawie. niech sobie userzy robia co chca z portami
downloadu nie ograniczam, kazdy user ma swoje widelki i w nich sie porusza. chce wykorzystac swoja czesc na p2p to prosze bardzo ale wysyl max tyle ile ja chce, zeby nie zatyrac pasma.
ok, ale gdzie ja chcesz dodac ? na koncu ? nie ma sesu bo tam jest juz 13.
A na poczatku jak ja dasz to masz dwie opcje:
1. bez RETURN i wtedy kazdy pakiet torrenta poleci przez wszytkie regoly (majac juz 13) i ostatecznie i tak trafi na ostania regule, ktora drugi raz mu ustawi 13
2. z RETURN ale wtedy musisz drugi raz robic to samo porownie do patterny L7 dla RETURN. Opcja 2 oplacalna tylko gdy na koncu tabeli masz inne reguly L7.
Generalnie przy uzyciu MARK a nie CONNMARK --set-return, reguly L7 powinny byc dodawane na koncu. |
|
|
|
liamk |
Dodano 07-02-2009 19:48
|
User
Posty: 23
Dołączył: 28/01/2009 23:38
|
---wersja z connmark
Uwaga by w pelni zrozumiec co sie tutaj dzieje powinines najpierw w 100% zrozumiec pierwsza wersje skryptu z pierwszego posta. Nastepnie zastanowac sie czy ponizsze rozwaizanie Ci odpowaida i ew. przerzucic sie na nowe.
---wersja z connmark
Hello,
znalazlem dzis chwile by dopracowac moj skrypt tak aby w pelni wykorzystywal potencial CONNMARK.
Teraz nie ma potrzeby wpisywania regul do mangla na ruch przychodzacy, poniewaz bedzie on korzystac z regul dla ruchu wychodzacego.
Zalety: o wile szybsze dzialanie bo regoly sa wspolne (sprawdzanie tylko na out), mniej pisania i konfiguracji
Wady: reguly klasyfikacji pakietow sa wspolne na in i out, wiec w zaawansowanych zastosowaniach rozwazanie moze okazac sie zbyt malo elastyczne
Ofc. pomimo takich samych regul klasyfikacji pakietu, bedzie mozna ustawaic inne min i max przepustowac dla ruchu in i out.
Opisze tylko nowe w stosunku do poprzeniego skryptu linie.
//------------------------------------------------------
DEV="br0"
TCA="tc class add dev ${DEV}"
TFA="tc filter add dev ${DEV}"
TQA="tc qdisc add dev ${DEV}"
SFQ="sfq perturb 10"
CEIL=2900
tc qdisc del dev ${DEV} root
tc qdisc add dev ${DEV} root handle 1: htb
tc class add dev ${DEV} parent 1: classid 1:1 htb rate ${CEIL}kbit
// uwaga classid powinno pokrywac sie z classid zdefiniowanymi
// przez interface www na ruch out
// aby je sprwdzic wpisz tc -s class show dev vlan1
// tutaj definiujesz min/max dla klasy
$TCA parent 1:1 classid 1:10 htb rate 256kbit ceil 256kbit prio 1
$TCA parent 1:1 classid 1:20 htb rate 1492kbit ceil ${CEIL}kbit prio 2
$TCA parent 1:1 classid 1:30 htb rate 1024kbit ceil ${CEIL}kbit prio 3
$TCA parent 1:1 classid 1:40 htb rate 128kbit ceil ${CEIL}kbit prio 4
$TQA parent 1:10 handle 10: $SFQ
$TQA parent 1:20 handle 20: $SFQ
$TQA parent 1:30 handle 30: $SFQ
$TQA parent 1:40 handle 40: $SFQ
$TFA parent 1:0 prio 10 protocol ip handle 1 fw flowid 1:10
$TFA parent 1:0 prio 20 protocol ip handle 2 fw flowid 1:20
$TFA parent 1:0 prio 30 protocol ip handle 3 fw flowid 1:30
$TFA parent 1:0 prio 40 protocol ip handle 4 fw flowid 1:40
// zliczanie pakietow (teraz bedzie wspolne dla in i out czyli limit przerzucenia do klasy "download" to pewien kompromis, polecam 512kB
iptables -t mangle -A PREROUTING -j BCOUNT
// i bohater nowego skryptu :)
// regula ktora przywraca MARK zdefiniowany przez regoly QOS na out
iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark --mask 0xff
//------------------------------------------------------
liamk załączono następujące plik:
Nie masz uprawnień, by zobaczyć załączniki w tym wątku.
Edytowany przez liamk dnia 07-02-2009 19:54
|
|
|
|
liamk |
Dodano 07-02-2009 19:51
|
User
Posty: 23
Dołączył: 28/01/2009 23:38
|
i klasy
liamk załączono następujące plik:
Nie masz uprawnień, by zobaczyć załączniki w tym wątku.
|
|
|
|
liamk |
Dodano 07-02-2009 20:02
|
User
Posty: 23
Dołączył: 28/01/2009 23:38
|
jesli w pelni zrozumiesz oba rozwazania, dojdziesz do wniosku, ze nic nie stoi na przeszkodzie by uzywac obu jednoczesnie - aby zwiekszyc wydajonsc (w sotsunku do pierwszego rozwazania) i elastycznosc w stosunku do drugiego. Np L7 przepuszczac tylko na out a w in uzyc CONMARK restore, lub zdefiniowac dodatkowa regule tylko dla download itp. W takich zastosowaniach zapewne pomocne okaza sie maski.
Sktyp da sie tez zmienic tak by przy zachowaniu pelnego QOS in i out dzielil lacze miedzy wielu uzytkownikow z przydzielonym imitem. Nalezy wtedy uzyc drzewiastej stkuktury klas. Opisanie tego jendak wykracza poza tutorial dla zielonych dokladne info znajdziesz w howto do ktorego podalem link w pierwszym poscie.
Edytowany przez liamk dnia 07-02-2009 22:07
|
|
|
|
zathril |
Dodano 07-02-2009 20:49
|
User
Posty: 1
Dołączył: 30/09/2008 22:06
|
zna ktoś jakiś program/sposób aby w bardziej automatyczny sposób testowac praktycznie rożne konfiguracja dla QoS? Odpalanie gierki ala CS co chwila żeby sprawdzić jakie są pingi jest czasochłonne a ocena tez subiektywna.
Dzieki za skrypt bo sam bedę się tym teraz starał pobawić i dopasować go do własnych potrzeb. |
|
|
|
liamk |
Dodano 07-02-2009 21:59
|
User
Posty: 23
Dołączył: 28/01/2009 23:38
|
Cytat zathril napisał/a:
zna ktoś jakiś program/sposób aby w bardziej automatyczny sposób testowac praktycznie rożne konfiguracja dla QoS? Odpalanie gierki ala CS co chwila żeby sprawdzić jakie są pingi jest czasochłonne a ocena tez subiektywna.
Dzieki za skrypt bo sam bedę się tym teraz starał pobawić i dopasować go do własnych potrzeb.
ponizsze polecenia pokazuja klasy, ich max/min przepustowaosc, tokeny, aktualne wykorzystanie i sumaryczna ilosc przeslanych danych
upload
tc -s class show dev vlan1
download
tc -s class show dev br0 |
|
|
|
Manieczek |
Dodano 08-02-2009 12:16
|
User
Posty: 22
Dołączył: 10/10/2007 17:14
|
No niestety ten skrypt nie sprawdza się u mnie , pingi w counter strike skaczą mi od 80 do 120 , a to uniemożliwia granie.
|
|
|