08 Września 2024 05:05:15
Nawigacja
· Strona Główna
· Forum

· Tomato by Shibby
· FreshTomato


Wątki na forum
Najnowsze dyskusje
· [S] i7-7700T + płyta
· Wireguard na FreshTo...
· [MOD] FreshTomato-MI...
· [MOD] FreshTomato-AR...
· Jaki router kupić?
· Openvpn+klient android
· Bandwidth -Dzienne M...
· TOMATO VPN GUI - kon...
· [MOD] Tomato64 (x86-64)
· Jaki router do 1000/...
· [S] ASUS RT-AX89X
· Czy to jeszcze NAS?
· Switch zasilany prze...
· [Howto] Xpenology na...
· Asus TUF-AX3000_V2 p...
· Kto "steruje" MAC ad...
· Omv raid 0
· [S] Orange Pi Lite
· Ustawienie domyślne...
· AX-88U - po wgraniu ...
Najpopularniejsze obecnie wątki
· [MOD] FreshTomato... [901]
· [MOD] FreshTomato... [412]
· Wireguard na Fres... [12]
· [S] i7-7700T + p... [2]
Ankieta
Jaki procesor posiada twój router?

Broadcom MIPSEL
Broadcom MIPSEL
36% [151 głosów]

Broadcom ARM
Broadcom ARM
52% [217 głosów]

Atheros
Atheros
5% [22 głosów]

Marvell
Marvell
1% [4 głosów]

Ralink
Ralink
1% [3 głosów]

Intel/AMD/VIA
Intel/AMD/VIA
1% [5 głosów]

Żaden z powyższych
Żaden z powyższych
4% [15 głosów]

Ogółem głosów: 417
Musisz zalogować się, aby móc zagłosować.
Rozpoczęto: 02/02/2015 09:38
Twoje IP
3.145.152.16
Zobacz wątek
OpenLinksys » :: OPROGRAMOWANIE :: » Tomato - firmware
 Drukuj wątek
QOS download dla zielonych - gotowy skrypt
liamk
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
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
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.
Masz niepotrzebny ruter, uszkodzony czy nie - ch?tnie przygarn? go.
http://eko.one.pl - prawie wszystko o OpenWrt
http://openrouter.info
 
Manieczek
To może jeszcze coś dla bardziej zielonych ? Jak skopiować plik do jffs ?
 
banditfr

Cytat

Manieczek napisał/a:
To może jeszcze coś dla bardziej zielonych ? Jak skopiować plik do jffs ?


Również chciałem zadać to pytanie Smile
Aha i czy wtedy QOS wbudowany w Tomato mam wyłączyć ?
 
shibby
tak bo ten skrypt ogranicza tylko download.
 
liamk

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
hmm skad wytrzasnales ten port 48805??
 
liamk

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

Cytat

shibby napisał/a:
hmm skad wytrzasnales ten port 48805??


a nie wiem, tak samo przypelzło Smile

... a powaznie to nie bardzo rozumiem o co chodzi?
 
shibby
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

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
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 Smile

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

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 Smile

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
---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
i klasy
liamk załączono następujące plik:
Nie masz uprawnień, by zobaczyć załączniki w tym wątku.
 
liamk
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 Smile dokladne info znajdziesz w howto do ktorego podalem link w pierwszym poscie.
Edytowany przez liamk dnia 07-02-2009 22:07
 
zathril
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

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
No niestety ten skrypt nie sprawdza się u mnie , pingi w counter strike skaczą mi od 80 do 120 , a to uniemożliwia granie.
 
Przejdź do forum
Zaloguj
Wprowadź adres e-mail lub nazwę użytkownika

Hasło



Nie masz jeszcze konta? Zarejestruj się.

Zapomniałeś/aś hasła?
Aktualnie online
· Gości online: 59

· Użytkowników online: 0

· Łącznie użytkowników: 24,115
· Najnowszy użytkownik: Ja
Czat
Musisz się zalogować, aby opublikować wiadomość.

maxikaaz
27-07-2024 15:07
@servee - na początek router do rozebrania i obejrzenia, ciężko wróżyć tak tylko po objawach

maxikaaz
27-07-2024 14:55
@servee - cały kontroler nie pada tak sobie z powodu "zbiegu okoliczności",
więc prawdopodobnie gdzieś przepięcie.

servee
25-07-2024 13:33
@maxikaaz: działało, aż pewnego pięknego dnia przestało działać. W tym dniu była też burza, ale to raczej zbieg okoliczności.

maxikaaz
25-07-2024 11:38
@servee - o ile problem jest w obrębie samych wyjść (dławiki, warystory), to naprawialne, ale jeśli w samym SoC - to nienaprawialne ze względu na koszta. A co było przyczyną?

servee
25-07-2024 09:22
W routerze RT-N18u siadły mi wszystkie porty LAN oraz WAN. Działa tylko radio. To jest naprawialne?

ptyku
29-06-2024 15:16
hi, mam problem z routerkiem RT-AC88u a dokładniej z wgraniem nowego firmware.

tamtosiamto
03-06-2024 16:24
poszlo w koncu -najpierw przez restoration jakies stare ddwrt, potem z menu update plik ac66u z art o zmianie 868l->ac66u

tamtosiamto
02-06-2024 21:44
trx size 44560384 > memory size 33554432 nigdy czegos takiego nie widzialem podczas flashowania rutera

tamtosiamto
02-06-2024 21:37
wgrywanie ddwrt z opisu zmiany softu z dlinka na asusa nic nie daje, dalej startuje tomato, wgranie ddwrt dla ac66u wchodzi, ale z niego tez nie da sie wgrac ofw asusa i merlina, kicha

tamtosiamto
02-06-2024 19:57
Probowal ktos wrocic z tomata do OFW ASAUSa na przerowbionym DIR868l -> rt-ac66u ? Ni cholery nie moge dac sobie rady.

84,766,011 unikalnych wizyt