28 Listopada 2024 05:52:13
Nawigacja
· Strona Główna
· Forum

· Tomato by Shibby
· FreshTomato


Wątki na forum
Najnowsze dyskusje
· Nowe routery: UX, UC...
· [MOD] FreshTomato-MI...
· [MOD] FreshTomato-AR...
· DIR868l OFW asus vs ...
· [S] Asus RT-AC56U
· Szukam zaproszenia n...
· Asus RT-AC5300 ,prob...
· archer c6 v3.20
· [S] Nighthawk R7000P...
· [S]Asus RT-AC5300 - ...
· Tanie N100 na promce...
· net z telefonu wifi+...
· Tomato - bugi/proble...
· HUAWEI z światłowodem
· Asus TUF-AX3000_V2 p...
· rt-ax88upro częste ...
· [Howto] Xpenology na...
· Jaki router pod Open...
· Ruter z tomato
· Czy to jeszcze NAS?
Najpopularniejsze obecnie wątki
· [MOD] FreshTomato... [908]
· [MOD] FreshTomato... [414]
· DIR868l OFW asus ... [11]
· Nowe routery: UX,... [3]
Ankieta
Jaki procesor posiada twój router?

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

Broadcom ARM
Broadcom ARM
52% [219 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: 419
Musisz zalogować się, aby móc zagłosować.
Rozpoczęto: 02/02/2015 09:38
Twoje IP
18.226.187.210
Zobacz wątek
OpenLinksys » :: OPROGRAMOWANIE :: » Tomato - firmware
 Drukuj wątek
Skrypt problem
stalminator
Witam.
Posiadam taki zestaw Speedstream 4100(ustawiony jako RFC-2684 Bridged)+WNR3500L(tomato-K26USB-1.28.9054MIPSR2-beta-Ext)
Łącze na którym wszystko śmiga to neo 6Mb, na razie podłączony jest tylko mój komputer.
Zmieniłem skrypt z tematu "QOS dla zielonych" pod swoje łącze:

modprobe ipt_layer7
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=5200
WWWMAX=500000
PRIO0="3389,27964,27000:27050,27950,44400"
PRIO1="20:110"
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
$TCA parent 1:1 classid 1:10 htb rate 256kbit ceil 512kbit prio 0
$TCA parent 1:1 classid 1:11 htb rate 2000kbit ceil 4800kbit prio 1
$TCA parent 1:1 classid 1:12 htb rate 1500kbit ceil 4800kbit prio 3
$TCA parent 1:1 classid 1:13 htb rate 128kbit ceil 4800kbit prio 4
$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
$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
iptables -t mangle -A PREROUTING -j BCOUNT
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
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
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
iptables -t mangle -A PREROUTING -j MARK --set-mark 13
iptables -t mangle -A PREROUTING -p udp -m layer7 --l7proto skypetoskype -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -p tcp -m mport --dport 80 layer7 --l7proto httpvideo -j MARK --set-mark 13
iptables -t mangle -A PREROUTING -p tcp -m mport --dport 80 layer7 --l7proto httpaudio -j MARK --set-mark 13
iptables -t mangle -A PREROUTING -p tcp -m layer7 --l7proto exe -j MARK --set-mark 13
iptables -t mangle -A PREROUTING -p tcp -m layer7 --l7proto zip -j MARK --set-mark 13
iptables -t mangle -A PREROUTING -p tcp -m layer7 --l7proto rar -j MARK --set-mark 13
iptables -t mangle -A PREROUTING -p tcp -m layer7 --l7proto tar -j MARK --set-mark 13
iptables -t mangle -A PREROUTING -p tcp -m layer7 --l7proto rpm -j MARK --set-mark 13
iptables -t mangle -A PREROUTING -p tcp -m layer7 --l7proto mp3 -j MARK --set-mark 13
iptables -t mangle -A PREROUTING -p tcp -m layer7 --l7proto ogg -j MARK --set-mark 13
iptables -t mangle -A PREROUTING -p tcp -m layer7 --l7proto flash -j MARK --set-mark 13

I teraz pojawia się problem(?). Niby wszystko działa ok, tzn. zapuszczam ściąganie pliku w Jdownloader z Rapidshare premium, pare plików normalnie pobieram przez www, radio, youtube, odpalam jakąś grę wykorzystującą port z PRIO0 i ping waha się w granicach 30-50. Co mnie niepokoi to wynik komendy "tc -s class show dev br0" przy katowaniu łącza:

class htb 1:11 parent 1:1 leaf 11: prio 1 rate 2000Kbit ceil 4800Kbit burst 4Kb cburst 7599b  
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 0bit 0pps backlog 0b 0p requeues 0 
 lended: 0 borrowed: 0 giants: 0
 tokens: 16015 ctokens: 12369
 
class htb 1:10 parent 1:1 leaf 10: prio 0 rate 256000bit ceil 512000bit burst 1919b cburst 2239b 
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 0bit 0pps backlog 0b 0p requeues 0 
 lended: 0 borrowed: 0 giants: 0
 tokens: 58593 ctokens: 34179
 
class htb 1:1 root rate 5200Kbit ceil 5200Kbit burst 8099b cburst 8099b 
 Sent 237544355 bytes 167559 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 4848bit 0pps backlog 0b 0p requeues 0 
 lended: 159504 borrowed: 0 giants: 0
 tokens: 11953 ctokens: 11953
 
class htb 1:13 parent 1:1 leaf 13: prio 4 rate 128000bit ceil 4800Kbit burst 1759b cburst 7599b 
 Sent 237544355 bytes 167559 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 4840bit 0pps backlog 0b 0p requeues 0 
 lended: 8055 borrowed: 159504 giants: 0
 tokens: 98632 ctokens: 12135
 
class htb 1:12 parent 1:1 leaf 12: prio 3 rate 1500Kbit ceil 4800Kbit burst 3474b cburst 7599b 
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 0bit 0pps backlog 0b 0p requeues 0 
 lended: 0 borrowed: 0 giants: 0
 tokens: 18098 ctokens: 12369
 

Dlaczego pokazuje, że wszystko leci jako prio 4, a inne klasy są puste?

Pozwolę sobie jeszcze na drugie pytanie - po wpisaniu komendy dla interfejsu ppp0 (tc -s class show dev ppp0) pokazuję się coś takiego:

class htb 1:10 parent 1:1 leaf 10: prio 1 rate 260000bit ceil 400000bit burst 1924b cburst 2099b  
 Sent 4045441 bytes 98063 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 400bit 1pps backlog 0b 0p requeues 0 
 lended: 98063 borrowed: 0 giants: 0
 tokens: 56640 ctokens: 40234
 
class htb 1:1 root rate 400000bit ceil 400000bit burst 2099b cburst 2099b 
 Sent 38807738 bytes 176190 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 1392bit 1pps backlog 0b 0p requeues 0 
 lended: 33814 borrowed: 0 giants: 0
 tokens: 34109 ctokens: 34109
 
class htb 1:20 parent 1:1 leaf 20: prio 2 rate 160000bit ceil 400000bit burst 1799b cburst 2099b 
 Sent 4819891 bytes 5300 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 120bit 0pps backlog 0b 0p requeues 0 
 lended: 3581 borrowed: 1719 giants: 0
 tokens: -5371 ctokens: 11167
 
class htb 1:40 parent 1:1 leaf 40: prio 4 rate 28000bit ceil 400000bit burst 1634b cburst 2099b 
 Sent 9056 bytes 12 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 0bit 0pps backlog 0b 0p requeues 0 
 lended: 11 borrowed: 1 giants: 0
 tokens: 193865 ctokens: 29297
 
class htb 1:50 parent 1:1 leaf 50: prio 5 rate 12000bit ceil 400000bit burst 1614b cburst 2099b 
 Sent 29933350 bytes 72815 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 984bit 0pps backlog 0b 0p requeues 0 
 lended: 40721 borrowed: 32094 giants: 0
 tokens: 832681 ctokens: 34453


Skąd bierze się ten podział na klasy? - przy ppp0 nic nie majstrowałem.

Z góry dziękuje za rozwianie moich wątpliwości i ewentualnie za wyrozumiałość, jeśli nawpisywałem jakichś bzdur ;).

Edit:Rozkminiłem w końcu, że ppp0 to upload razem z regułami QoS które ustawiłem przez WWW, jednak wciąż nie wiem dlaczego wszystko leci jako prio 4:/, może powinienem skryptem kształtować jakiś inny interfejs niż br0?.
Edytowany przez stalminator dnia 09-12-2010 20:04
 
stalminator
Próbowałem rożnych sprawdzonych skryptów zamieszczanych tutaj na forum, sprawdzałem też różne konfiguracje (upload i download w skrypcie, download skrypt upload QoS przez WWW), czyściłem nvram - wszystko na nic, za każdym cały download dostaje najniższy priorytet (przynajmniej tak pokazuje po wpisaniu tc -s class show dev br0). Próbowałem podziału po IP (dodałem jeden dodatkowy komputer do testów) - wtedy wydaje się że priorytety działają ok. Jednak wolałbym podział po portach/usługach, ponieważ podobnie jak duża część osób tutaj na forum, chciałbym ściągać pliki jednocześnie ciesząc się niskim pingiem w grach. Dlatego rad byłbym wielce gdyby ktoś mógł nakierować mnie na istotę problemu.
 
shibby
wiesz w czym tkwi twoj problem? W tym ze ten skrypt priorytetuje TYLKO download!! Natomiast jak pewnie wiesz by cieszyc nie niskim pingiem potrzebny jest niewysycony WYSYL.

Tak wiec do kompletu musialbys skonfigurowac QoS po portach bo QoS dla odmiany ksztaltuje TYLKO wysyl Smile
Router: Unifi Cloud Gateway Max
Switch: Netgear MS510TXPP
Switch: Unifi USW-Flex-Mini - szt. 2
Wi-Fi: Unifi U6-Lite - szt. 2
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM #1: Synology SA6400
VM #2: Debian, WWW
VM #3: Home Assistant OS
 
stalminator
Zgadza się, jednak gdy sprawdzałem działanie tego skryptu miałem skonfigurowany upload przez QoS w taki sposób:

img704.imageshack.us/img704/7955/forumvn.jpg
img829.imageshack.us/img829/7329/forum1t.jpg

Gra którą testowałem używa portu 44400, który jest ujęty zarówno w skrypcie jak i w konfiguracji QoS. Mimo to podczas gry, gdy uruchamiam polecenie tc -s class show dev br0 w miejscu w którym powinien być jakiś ruch (prio 0) nic się nie dzieje:



class htb 1:10 parent 1:1 leaf 10: prio 0 rate 256000bit ceil 512000bit burst 1919b cburst 2239b
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 rate 0bit 0pps backlog 0b 0p requeues 0
 lended: 0 borrowed: 0 giants: 0
 tokens: 58593 ctokens: 34179


W ogóle tak jak wspominałem wyżej nie mogę znaleźć przyczyny, dlaczego całemu ruchowi przypisywany jest najniższy priorytet. Ping w grze paradoksalnie jest w miarę OK, może wynika to po prostu z ograniczenia downloadu (akurat to skrypt robi dobrze), a nie z poprawnego działania reguł? .
 
shibby

Cytat

Gra którą testowałem używa portu 44400


klient czy serwer?
Router: Unifi Cloud Gateway Max
Switch: Netgear MS510TXPP
Switch: Unifi USW-Flex-Mini - szt. 2
Wi-Fi: Unifi U6-Lite - szt. 2
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM #1: Synology SA6400
VM #2: Debian, WWW
VM #3: Home Assistant OS
 
stalminator
Client. Ale nawet przeglądając www ruch ten powinien być klasyfikowany jako prio 1, a cokolwiek bym nie robił to we wszystkich klasach oprócz najniższej jest cisza.
 
shibby
jako client posiadasz a zobacz na skrypt jak kwalifikuje prio0
-m mport --sports ${PRIO0}

czyli, gdzie zrodlem jest prio0 a nie destination. Nic wiec dziwnego ze nie zalicza ruchu do prio0


A tak z innej beczki, pisales ze podzieliles tez lacze po ip. Sprawdzales wtedy jak zachowuje sie gra przy sciaganiu? Kolejka SFQ powinna dbac o to by samemu sobie nie zapchac lacza.
Router: Unifi Cloud Gateway Max
Switch: Netgear MS510TXPP
Switch: Unifi USW-Flex-Mini - szt. 2
Wi-Fi: Unifi U6-Lite - szt. 2
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM #1: Synology SA6400
VM #2: Debian, WWW
VM #3: Home Assistant OS
 
stalminator
Fakt, z tym portem gry rzeczywiście nie pomyślałem, że to ja powinienem być serwerem, żeby reguła zadziałała. Mimo wszystko gdy ustawiam do testów zakres portów powiedzmy 1:65000 jako prio0, to dalej nic się nie łapie. Cały ruch pokazuje jako prio4.
Dzieląc po IP nie sprawdzałem jak się gra podczas ściągania, ale przecież, o ile się nie mylę, dzieląc prawidłowo po IP gwarantuję niski ping tylko innym - tzn. nie ważne co u siebie robię, inni mogą komfortowo grać, czy tam robić co im się podoba. Natomiast w obrębie mojego IP żeby cieszyć się niskimi opóźnieniami muszę powyłączać wszystko co obciąża łącze. Przeglądając forum wyczytałem że najlepiej dzielić łącze albo po usługach, albo po IP, mieszane metody się nie sprawdzają.
Głównym powodem dla którego zdecydowałem się właśnie na Tomato, zamiast jakiegoś prostego user-friendly rutera była chęć zautomatyzowanego zarządzania łączem - najpierw ustalam sobie zasady co kiedy ma mieć pierwszeństwo, a potem nie zaprzątam sobie głowy tym że coś się ściąga w tle i chcąc np. zagrać po prostu włączam grę bez strachu że coś mi orze łącze.
No nic, nie zamierzam się jeszcze poddawać ;P, będę drążył temat aż w końcu znajdę przyczynę - chociażby z wielkiej ciekawości co robię nie tak.
 
shibby

Cytat

Natomiast w obrębie mojego IP żeby cieszyć się niskimi opóźnieniami muszę powyłączać wszystko co obciąża łącze.


no wlasnie nie tak do konca. regulka SFQ powinna dbac o zarzadzanie polaczeniami w ramach danej klasy. Reasumujac powinna dbac bys sam sobie pasma nie zapchal Smile
Router: Unifi Cloud Gateway Max
Switch: Netgear MS510TXPP
Switch: Unifi USW-Flex-Mini - szt. 2
Wi-Fi: Unifi U6-Lite - szt. 2
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM #1: Synology SA6400
VM #2: Debian, WWW
VM #3: Home Assistant OS
 
stalminator
Spróbowałem innej metody, po wstępnych testach wygląda na to że działa, oto skrypt:


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=5200

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

$TCA parent 1:1 classid 1:10 htb rate 256kbit ceil 512kbit prio 1
$TCA parent 1:1 classid 1:20 htb rate 2000kbit ceil 4800kbit prio 2
$TCA parent 1:1 classid 1:30 htb rate 1500kbit ceil 4800kbit prio 3
$TCA parent 1:1 classid 1:40 htb rate 256kbit ceil 4800kbit 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

iptables -t mangle -A PREROUTING -j BCOUNT

iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark --mask 0xff


tc -s class show dev br0:


class htb 1:10 parent 1:1 leaf 10: prio 1 rate 256000bit ceil 512000bit burst 1919b cburst 2239b  
[b] Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 0bit 0pps backlog 0b 0p requeues 0 
 lended: 0 borrowed: 0 giants: 0
 tokens: 58593 ctokens: 34179 [/b]
 
class htb 1:1 root rate 5200Kbit ceil 5200Kbit burst 8099b cburst 8099b 
 Sent 5730004383 bytes 3838440 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 174160bit 15pps backlog 0b 0p requeues 0 
 lended: 2544678 borrowed: 0 giants: 0
 tokens: 12097 ctokens: 12097
 
class htb 1:20 parent 1:1 leaf 20: prio 2 rate 2000Kbit ceil 4800Kbit burst 4Kb cburst 7599b 
 Sent 215707116 bytes 160180 pkt (dropped 67, overlimits 0 requeues 0) 
 rate 159064bit 14pps backlog 0b 0p requeues 0 
 lended: 95352 borrowed: 64828 giants: 0
 tokens: 15828 ctokens: 12291
 
class htb 1:30 parent 1:1 leaf 30: prio 3 rate 1500Kbit ceil 4800Kbit burst 3474b cburst 7599b 
 Sent 5422116034 bytes 3606527 pkt (dropped 6090, overlimits 0 requeues 0) 
 rate 15016bit 1pps backlog 0b 0p requeues 0 
 lended: 1154679 borrowed: 2451848 giants: 0
 tokens: 17848 ctokens: 12291
 
class htb 1:40 parent 1:1 leaf 40: prio 4 rate 256000bit ceil 4800Kbit burst 1919b cburst 7599b 
 Sent 92258213 bytes 71733 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 72bit 0pps backlog 0b 0p requeues 0 
 lended: 43731 borrowed: 28002 giants: 0
 tokens: 56396 ctokens: 12252


Po odpaleniu Team Viewer'a (port 5938):


class htb 1:10 parent 1:1 leaf 10: prio 1 rate 256000bit ceil 512000bit burst 1919b cburst 2239b  
 Sent 12629 bytes 154 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 128bit 0pps backlog 0b 0p requeues 0 
 lended: 154 borrowed: 0 giants: 0
 tokens: 56152 ctokens: 32959


Ustawienia QoS:

img406.imageshack.us/img406/4633/tomatol.jpg

Testowałem również grę i pojawiło się dodatkowe pytanie. Najpierw objaśniający screenshot:

img442.imageshack.us/img442/7356/warsow1.jpg

Czy można uniknąć takiego wzrastania pingu w jakiś inny sposób niż poprzez zmniejszenie maksymalnej prędkości klas?
 
shibby
wątpie. Nie podoba mi sie klasa highest, nie dałeś żadnego pola manewru tylko 200-200kbps.
Router: Unifi Cloud Gateway Max
Switch: Netgear MS510TXPP
Switch: Unifi USW-Flex-Mini - szt. 2
Wi-Fi: Unifi U6-Lite - szt. 2
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM #1: Synology SA6400
VM #2: Debian, WWW
VM #3: Home Assistant OS
 
stalminator
Jakie w takim razie byłoby najbardziej sensowne ustawienie dla klasy highest?. Skoro ustawienia są wspólne dla uploadu i downloadu, to w ustawieniach QoS (Classification) nie powinienem ustawić dla każdej klasy opcji Src or Dst ?, obecnie jak widać wszędzie mam tylko Dst Port.
 
stalminator
Postanowiłem spróbować podzielić łącze po IP, oto efekt mojej męki:

TCA="tc class add dev br0"
TFA="tc filter add dev br0"
TQA="tc qdisc add dev br0"
SFQ="sfq perturb 10"
POST="iptables -t mangle -A POSTROUTING ! -s 192.168.2.1/24"
tc qdisc del dev br0 root
tc qdisc add dev br0 root handle 1: htb
tc class add dev br0 parent 1: classid 1:1 htb rate 6000kbit
$TCA parent 1:1 classid 1:10 htb rate 1500kbit ceil 4500kbit prio 2
$TCA parent 1:1 classid 1:11 htb rate 1500kbit ceil 4500kbit prio 2
$TCA parent 1:1 classid 1:12 htb rate 1000kbit ceil 3000kbit prio 3
$TCA parent 1:1 classid 1:13 htb rate 500kbit ceil 2000kbit prio 4
$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
$TFA parent 1:0 prio 2 protocol ip handle 10 fw flowid 1:10
$TFA parent 1:0 prio 2 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
$POST -d 192.168.2.2 -j MARK --set-mark 10
$POST -d 192.168.2.3 -j MARK --set-mark 11
$POST -m iprange --dst-range 192.168.2.4-192.168.2.10 -j MARK --set-mark 12
$POST -m iprange --dst-range 192.168.2.100-192.168.2.110 -j MARK --set-mark 13

TCAU="tc class add dev imq0 parent 2:1 classid"
TFAU="tc filter add dev imq0 parent 2:0 prio"
TQAU="tc qdisc add dev imq0"
PRE="iptables -t mangle -A PREROUTING ! -d 192.168.2.1/24"
modprobe imq
modprobe ipt_IMQ
ip link set imq0 up
tc qdisc del dev imq0 root
tc qdisc add dev imq0 root handle 2: htb
tc class add dev imq0 parent 2: classid 2:1 htb rate 450kbit
$TCAU 2:10 htb rate 150kbit ceil 350kbit prio 2
$TCAU 2:11 htb rate 150kbit ceil 350kbit prio 2
$TCAU 2:12 htb rate 50kbit ceil 200kbit prio 3
$TCAU 2:13 htb rate 50kbit ceil 200kbit prio 4
$TQAU parent 2:10 handle 10: $SFQ
$TQAU parent 2:11 handle 11: $SFQ
$TQAU parent 2:12 handle 12: $SFQ
$TQAU parent 2:13 handle 13: $SFQ
$TFAU 2 protocol ip handle 10 fw flowid 2:10
$TFAU 2 protocol ip handle 11 fw flowid 2:11
$TFAU 3 protocol ip handle 12 fw flowid 2:12
$TFAU 4 protocol ip handle 13 fw flowid 2:13
$PRE -s 192.168.2.2 -j MARK --set-mark 10
$PRE -s 192.168.2.3 -j MARK --set-mark 11
$PRE -m iprange --src-range 192.168.2.4-192.168.2.10 -j MARK --set-mark 12
$PRE -m iprange --src-range 192.168.2.100-192.168.2.110 -j MARK --set-mark 13
$PRE -j IMQ --todev 0


Download działa OK, natomiast upload hula bez ograniczeń. Jak zauważyłem wcześniej interfejs wysyłu u mnie to ppp0. Czy jest jakiś sposób żeby "powiązać" ppp0 które mam z imq0 którego nie mam?. A może coś innego robię źle?.

EDIT: Zaeksperymentowałem i poprostu wstawiłem ppp0 zamiast imq0 - czy taka akcja w ogóle ma sens?
Edytowany przez stalminator dnia 21-12-2010 19:06
 
shibby

Cytat

EDIT: Zaeksperymentowałem i poprostu wstawiłem ppp0 zamiast imq0 - czy taka akcja w ogóle ma sens?


tak, sam tak mam Smile
Router: Unifi Cloud Gateway Max
Switch: Netgear MS510TXPP
Switch: Unifi USW-Flex-Mini - szt. 2
Wi-Fi: Unifi U6-Lite - szt. 2
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM #1: Synology SA6400
VM #2: Debian, WWW
VM #3: Home Assistant OS
 
stalminator
Każdy rozwiązany problem rodzi kolejny ;P, mój skrypt obecnie wygląda tak:

TCA="tc class add dev br0"
TFA="tc filter add dev br0"
TQA="tc qdisc add dev br0"
SFQ="sfq perturb 10"
P0="44400:45000,27900:28030,62000"
POST="iptables -t mangle -A POSTROUTING ! -s 192.168.2.1/24"
tc qdisc del dev br0 root
tc qdisc add dev br0 root handle 1: htb
tc class add dev br0 parent 1: classid 1:1 htb rate 6144kbit
$TCA parent 1:1 classid 1:10 htb rate 1536kbit ceil 4608kbit prio 2
$TCA parent 1:1 classid 1:11 htb rate 1536kbit ceil 4608kbit prio 2
$TCA parent 1:1 classid 1:12 htb rate 1024kbit ceil 3072kbit prio 3
$TCA parent 1:1 classid 1:13 htb rate 512kbit ceil 2048kbit prio 4
$TCA parent 1:1 classid 1:6 htb rate 512kbit ceil 5144kbit prio 0
$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
$TQA parent 1:6 handle 6: pfifo limit 20
$TFA parent 1:0 prio 2 protocol ip handle 10 fw flowid 1:10
$TFA parent 1:0 prio 2 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
$TFA parent 1:0 prio 0 protocol ip handle 6 fw flowid 1:6
$POST -d 192.168.2.2 -j MARK --set-mark 10
$POST -d 192.168.2.3 -j MARK --set-mark 11
$POST -m iprange --dst-range 192.168.2.4-192.168.2.10 -j MARK --set-mark 12
$POST -m iprange --dst-range 192.168.2.100-192.168.2.110 -j MARK --set-mark 13
$POST -p tcp -m mport --dports ${P0} -j MARK --set-mark 6
$POST -p udp -m mport --dports ${P0} -j MARK --set-mark 6

TCAU="tc class add dev ppp0 parent 2:1 classid"
TFAU="tc filter add dev ppp0 parent 2:0 prio"
TQAU="tc qdisc add dev ppp0"
PRE="iptables -t mangle -A PREROUTING ! -d 192.168.2.1/24"
modprobe imq
modprobe ipt_IMQ
ip link set ppp0 up
tc qdisc del dev ppp0 root
tc qdisc add dev ppp0 root handle 2: htb
tc class add dev ppp0 parent 2: classid 2:1 htb rate 512kbit
$TCAU 2:10 htb rate 96kbit ceil 384kbit prio 2
$TCAU 2:11 htb rate 96kbit ceil 384kbit prio 2
$TCAU 2:12 htb rate 32kbit ceil 256kbit prio 3
$TCAU 2:13 htb rate 32kbit ceil 256kbit prio 4
$TCAU 2:6 htb rate 128kbit ceil 384kbit prio 0
$TQAU parent 2:10 handle 10: $SFQ
$TQAU parent 2:11 handle 11: $SFQ
$TQAU parent 2:12 handle 12: $SFQ
$TQAU parent 2:13 handle 13: $SFQ
$TQAU parent 2:6 handle 6: pfifo limit 20
$TFAU 2 protocol ip handle 10 fw flowid 2:10
$TFAU 2 protocol ip handle 11 fw flowid 2:11
$TFAU 3 protocol ip handle 12 fw flowid 2:12
$TFAU 4 protocol ip handle 13 fw flowid 2:13
$TFAU 0 protocol ip handle 6 fw flowid 2:6
$PRE -s 192.168.2.2 -j MARK --set-mark 10
$PRE -s 192.168.2.3 -j MARK --set-mark 11
$PRE -m iprange --src-range 192.168.2.4-192.168.2.10 -j MARK --set-mark 12
$PRE -m iprange --src-range 192.168.2.100-192.168.2.110 -j MARK --set-mark 13
$PRE -p tcp -m mport --sports ${P0} -j MARK --set-mark 6
$PRE -p udp -m mport --sports ${P0} -j MARK --set-mark 6
$PRE -j IMQ --todev 0


Utworzyłem nową klasę tylko dla gier (ściągnąłem to od kogoś kto umieścił swój skrypt na forum) i pozmieniałem trochę dla testów gwaranty i maksy dla poszczególnych klas.
Chciałbym teraz uzyskać statystyki per user w Bandwitdth Monitor, w poprzedniej wersji skryptu (podział tylko po usługach) nie było z tym problemu - dodałem na końcu skryptu taki wpis i działało:

ip link set imq0 up name komp1
iptables -t mangle -A PREROUTING -s 192.168.2.2 -j IMQ --todev 0
iptables -t mangle -A POSTROUTING -d 192.168.2.2 -j IMQ --todev 0
ip link set imq1 up name komp2
iptables -t mangle -A PREROUTING -s 192.168.2.3 -j IMQ --todev 1
iptables -t mangle -A POSTROUTING -d 192.168.2.3 -j IMQ --todev 1
ip link set imq2 up name komp3
iptables -t mangle -A PREROUTING -s 192.168.2.4 -j IMQ --todev 2
iptables -t mangle -A POSTROUTING -d 192.168.2.4 -j IMQ --todev 2
ip link set imq3 up name komp4
iptables -t mangle -A PREROUTING -s 192.168.2.5 -j IMQ --todev 3
iptables -t mangle -A POSTROUTING -d 192.168.2.5 -j IMQ --todev 3
ip link set imq4 up name komp5
iptables -t mangle -A PREROUTING -s 192.168.2.6 -j IMQ --todev 4
iptables -t mangle -A POSTROUTING -d 192.168.2.6 -j IMQ --todev 4
ip link set imq5 up name komp6
iptables -t mangle -A PREROUTING -s 192.168.2.7 -j IMQ --todev 5
iptables -t mangle -A POSTROUTING -d 192.168.2.7 -j IMQ --todev 5


Próbowałem dodać to do obecnego skryptu w rożnych miejscach i usuwając imq0 (trzy pierwsze linijki dla komp1) jednak bez pozytywnego rezultatu. Może trzeba to zrobić w jeszcze jakiś inny sposób?.
 
shibby
poniewaz uzywasz ppp0 to

Cytat

modprobe imq
modprobe ipt_IMQ
$PRE -j IMQ --todev 0


ci nie potrzebne.

Zeby zrobic statsy per user z wykorzystaniem imq musisz miec odpowiednia modyfikację tomarto z imq16. domyslnie w tomato jest tylko imq2.
Router: Unifi Cloud Gateway Max
Switch: Netgear MS510TXPP
Switch: Unifi USW-Flex-Mini - szt. 2
Wi-Fi: Unifi U6-Lite - szt. 2
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM #1: Synology SA6400
VM #2: Debian, WWW
VM #3: Home Assistant OS
 
stalminator
Obecnie mój firmware to Twoja kompilacja :) (tomato-K26USB-1.28.8052RAF-MIPSR2-xxx-Ext) wiec imq16 jest. Wywaliłem te linijki co podałeś + dodatkowo tę:

ip link set ppp0 up
to chyba też nie potrzebne ?.

Dodatkowo przypomniało mi się że wcześniej "uziemiłem" wszystkie interfejsy służące to podglądu statystyk (ifconfig komp1 down, ifconfig komp2 down, etc.) dlatego nic nie pokazywało w Bandwidth Monitor, postawiłem je na nogi (ifconfig komp1 up, ifconfig komp2 up, etc.) i... działa - ładnie pokazuje kto jak używa łącze :).
 
stalminator
Problemów ciąg dalszy, muszę dojść czemu to nie działa po będę cały czas o tym myślał przy wigilijnym stole ;P.
Obecny stan skryptu:

TCA="tc class add dev br0 parent 1:1 classid"
TFA="tc filter add dev br0 parent 1:0 prio"
TQA="tc qdisc add dev br0"
SFQ="sfq perturb 10"
P0="5938,44400,45000,27900:28030,62000:62010"
POST="iptables -t mangle -A POSTROUTING ! -s 192.168.2.1/24"
tc qdisc del dev br0 root
tc qdisc add dev br0 root handle 1: htb
tc class add dev br0 parent 1: classid 1:1 htb rate 6144kbit
$TCA 1:11 htb rate 1536kbit ceil 4096kbit prio 2 quantum 1500
$TCA 1:12 htb rate 1536kbit ceil 4096kbit prio 2 quantum 1500
$TCA 1:13 htb rate 1024kbit ceil 3072kbit prio 3 quantum 1500
$TCA 1:14 htb rate 512kbit ceil 2048kbit prio 4 quantum 1500
$TCA 1:15 htb rate 512kbit ceil 2048kbit prio 0 quantum 1500
$TQA parent 1:11 handle 11: $SFQ
$TQA parent 1:12 handle 12: $SFQ
$TQA parent 1:13 handle 13: $SFQ
$TQA parent 1:14 handle 14: $SFQ
$TQA parent 1:15 handle 15: pfifo limit 20
$TFA 2 protocol ip handle 11 fw flowid 1:11
$TFA 2 protocol ip handle 12 fw flowid 1:12
$TFA 3 protocol ip handle 13 fw flowid 1:13
$TFA 4 protocol ip handle 14 fw flowid 1:14
$TFA 0 protocol ip handle 15 fw flowid 1:15
$POST -d 192.168.2.2 -j MARK --set-mark 11
$POST -d 192.168.2.3 -j MARK --set-mark 12
$POST -m iprange --dst-range 192.168.2.4-192.168.2.10 -j MARK --set-mark 13
$POST -m iprange --dst-range 192.168.2.100-192.168.2.110 -j MARK --set-mark 14
$POST -p tcp -m mport --dports ${P0} -j MARK --set-mark 15
$POST -p udp -m mport --dports ${P0} -j MARK --set-mark 15

TCAU="tc class add dev ppp0 parent 2:1 classid"
TFAU="tc filter add dev ppp0 parent 2:0 prio"
TQAU="tc qdisc add dev ppp0"
PRE="iptables -t mangle -A PREROUTING ! -d 192.168.2.1/24"
tc qdisc del dev ppp0 root
tc qdisc add dev ppp0 root handle 2: htb
tc class add dev ppp0 parent 2: classid 2:1 htb rate 512kbit
$TCAU 2:11 htb rate 96kbit ceil 384kbit prio 2 quantum 1600
$TCAU 2:12 htb rate 96kbit ceil 384kbit prio 2 quantum 1600
$TCAU 2:13 htb rate 32kbit ceil 256kbit prio 3 quantum 1600
$TCAU 2:14 htb rate 32kbit ceil 256kbit prio 4 quantum 1600
$TCAU 2:15 htb rate 96kbit ceil 256kbit prio 0 quantum 1600
$TQAU parent 2:11 handle 11: $SFQ
$TQAU parent 2:12 handle 12: $SFQ
$TQAU parent 2:13 handle 13: $SFQ
$TQAU parent 2:14 handle 14: $SFQ
$TQAU parent 2:15 handle 15: pfifo limit 20
$TFAU 2 protocol ip handle 11 fw flowid 2:11
$TFAU 2 protocol ip handle 12 fw flowid 2:12
$TFAU 3 protocol ip handle 13 fw flowid 2:13
$TFAU 4 protocol ip handle 14 fw flowid 2:14
$TFAU 0 protocol ip handle 15 fw flowid 2:15
$PRE -s 192.168.2.2 -j MARK --set-mark 11
$PRE -s 192.168.2.3 -j MARK --set-mark 12
$PRE -m iprange --src-range 192.168.2.4-192.168.2.10 -j MARK --set-mark 13
$PRE -m iprange --src-range 192.168.2.100-192.168.2.110 -j MARK --set-mark 14
$PRE -p tcp -m mport --sports ${P0} -j MARK --set-mark 15
$PRE -p udp -m mport --sports ${P0} -j MARK --set-mark 15

modprobe imq numdevs=7
modprobe ipt_IMQ
ip link set imq0 up name LoBer
iptables -t mangle -A PREROUTING -s 192.168.2.2 -j IMQ --todev 0
iptables -t mangle -A POSTROUTING -d 192.168.2.2 -j IMQ --todev 0
ip link set imq1 up name VicPCWifi
iptables -t mangle -A PREROUTING -s 192.168.2.3 -j IMQ --todev 1
iptables -t mangle -A POSTROUTING -d 192.168.2.3 -j IMQ --todev 1
ip link set imq2 up name Powolniak
iptables -t mangle -A PREROUTING -s 192.168.2.4 -j IMQ --todev 2
iptables -t mangle -A POSTROUTING -d 192.168.2.4 -j IMQ --todev 2
ip link set imq3 up name VicMac
iptables -t mangle -A PREROUTING -s 192.168.2.5 -j IMQ --todev 3
iptables -t mangle -A POSTROUTING -d 192.168.2.5 -j IMQ --todev 3
ip link set imq4 up name E52
iptables -t mangle -A PREROUTING -s 192.168.2.6 -j IMQ --todev 4
iptables -t mangle -A POSTROUTING -d 192.168.2.6 -j IMQ --todev 4
ip link set imq5 up name ViciPhone
iptables -t mangle -A PREROUTING -s 192.168.2.7 -j IMQ --todev 5
iptables -t mangle -A POSTROUTING -d 192.168.2.7 -j IMQ --todev 5
ip link set imq6 up name 6440b
iptables -t mangle -A PREROUTING -s 192.168.2.8 -j IMQ --todev 6
iptables -t mangle -A POSTROUTING -d 192.168.2.8 -j IMQ --todev 6

Podział na IP działa, statystyki per user w BM też, natomiast nie działa klasa prio 0 (tylko porty), próbowałem ustawić też tylko jeden port np. --dport 80 i --sport 80, czyli przeglądając www powinien ruch iść jako prio 0, a tak się nie dzieje. Jakiś pomysł w czym leży problem?.
 
stalminator
Problem rozwiązany :D. Za bardzo chciałem skrócić skrypt, oto przyczyna:

POST="iptables -t mangle -A POSTROUTING ! -s 192.168.2.1/24"
PRE="iptables -t mangle -A PREROUTING ! -d 192.168.2.1/24"

Czyli skrypt sterował ruchem tylko między ruterem a konkretnymi adresami IP użytkowników - dlatego nie wyłapywał połączeń na konkretnych portach w połączeniach internetowych.

Tak więc zamiast skrótowego wpisu:



$POST -p tcp -m mport --dports ${P0} -j MARK --set-mark 15
$POST -p udp -m mport --dports ${P0} -j MARK --set-mark 15

$PRE -p tcp -m mport --sports ${P0} -j MARK --set-mark 15
$PRE -p udp -m mport --sports ${P0} -j MARK --set-mark 15


trzeba było wpisać całą linijke:


iptables -t mangle -A POSTROUTING -p tcp -m mport --dports ${P0} -j MARK --set-mark 15
iptables -t mangle -A POSTROUTING -p udp -m mport --dports ${P0} -j MARK --set-mark 15

iptables -t mangle -A PREROUTING -p tcp -m mport --sports ${P0} -j MARK --set-mark 15
iptables -t mangle -A PREROUTING -p udp -m mport --sports ${P0} -j MARK --set-mark 15
 
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: 81

· Użytkowników online: 0

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

Maniek91PL
06-11-2024 22:37
dzięki !Grin

maxikaaz
29-10-2024 14:27
@Maniek91PL - Administration=> Admin Access, i tam masz "Allow Wireless Access" do zaznaczenia

Maniek91PL
26-10-2024 22:07
siemka! ktoś przypomni co się ustawiało jeśli nie mogę wejść od strony wifi do tomato? od lan działa

overflow2
04-10-2024 17:34
Kupowałem Asusy n10u albo n12d1 ale nie widzę ich, chyba już nie produkują, Chodzi o coś nowego i taniego. Transfery niewielkie.

maxikaaz
04-10-2024 09:38
@overflow2 patrząc po dostępności funkcji w nowych kompilacjach, to chyba nawet WRT54G/GL jeszcze ma OpenVPN, albo jakiś odpowiednik... zależy, na jakie transfery liczysz.

overflow2
30-09-2024 20:53
Jaki aktualnie najtańszy router do tomato do openvpn?

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ą?

96,049,335 unikalnych wizyt