Traffic Shaping na NSLU2 z Debianem
Traffic Shaping na NSLU2 z Debianem
Witam,
Posiadam Linksysa NSLU2 na którym mam zainstalowanego Debiana. Chciałem się dowiedzieć co muszę zainstalować i jak to skonfigurować, aby ograniczyć predkość uploadu na jednym porcie tcp do 5kb/s ? (pakiety które mogę instalowac to ARM).
p.s.
Jestem dość zielony w temacie linuksowym, więc prosiłbym o dość szczegółowy opis w miare możliwości.
A ja prosiłbym wszystkich o używanie polskich znaczków w tym wątku [dop. moderator].
Posiadam Linksysa NSLU2 na którym mam zainstalowanego Debiana. Chciałem się dowiedzieć co muszę zainstalować i jak to skonfigurować, aby ograniczyć predkość uploadu na jednym porcie tcp do 5kb/s ? (pakiety które mogę instalowac to ARM).
p.s.
Jestem dość zielony w temacie linuksowym, więc prosiłbym o dość szczegółowy opis w miare możliwości.
A ja prosiłbym wszystkich o używanie polskich znaczków w tym wątku [dop. moderator].
-
- Beginner
- Posty: 207
- Rejestracja: 26 czerwca 2006, 01:49
- Lokalizacja: Kraków za firewallem
Re: Traffic Shaping na NSLU2 z Debianem
Zapewne będzie potrzebne jądro z obsługą traffic shaperingu (najlepiej w postaci obsługi htb).szafran pisze:Witam
Posiadam Linksysa NSLU2 na którym mam zainstalowanego Debiana. Chciałem sie dowiedzieć co muszę zainstalować i jak to skonfigurować, aby ograniczyć predkość uploadu na jednym porcie tcp do 5kb/s ? (pakiety które mogę instalować to ARM).
Oraz pakiet iproute.
No to będzie ciężko. Nawet ludzie którzy są anty-zieloni, mogą mieć z tym problemp.s.
Jestem dość zielony w temacie linuksowym więc prosiłbym o dość szczegółowy opis w miarę możliwości
Kod: Zaznacz cały
tc class add dev eth0 parent 1: classid 1:1 htb rate 100kbps ceil 100kbps default 11
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 95kbps ceil 100kbps
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 5kbps ceil 5kbps
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 \
match ip dport 22 0xffff flowid 1:12
Dzięki za odpowiedź.
iproute zainstałowalem, tc dziala:
p.s.
Przy logowaniu pokazuje mi coś takiego:
iproute zainstałowalem, tc dziala:
Tylko teraz gdzie mam tego skrypta wrzucić ?NSLU2:/# tc
Usage: tc [ OPTIONS ] OBJECT { COMMAND | help }
tc [-force] -batch file
where OBJECT := { qdisc | class | filter | action }
OPTIONS := { -s[tatistics] | -d[etails] | -r[aw] | -b[atch] [file] }
TC HTB version 3.3
p.s.
Przy logowaniu pokazuje mi coś takiego:
Jak sprawdzić czy to obsługuje ts czy też nie ?Linux NSLU2 2.6.15-1-nslu2 #2 Tue Mar 7 17:36:32 UTC 2006 armv5tel
-
- Beginner
- Posty: 207
- Rejestracja: 26 czerwca 2006, 01:49
- Lokalizacja: Kraków za firewallem
Zrób sobie wlasny skrypt, np. w /etc/init.d/shaper, a następnie dopisz go do sekwencji startowej odpalając
Albo poprostu spróbuj załadować moduł od htb.
Raczej bedzie, bo to pewnie jadro specjalnie dla tego routerka (albo przynajmniej w zamysle ze bedzie uzyte w jakims routerze), a ludzie ktorzy je przygotowali zapewne o tym pomysleli. Standardowe jadro w debianie nie ma takich rzeczy.
pozdro
Kod: Zaznacz cały
# update-rc.d shaper defaults
Ekspreymentalnie, tzn. odpalając ten skrypt i sprawdzając czy działa i nie daje żadnych błędów.jak sprawdzic czy to obsluguje ts czy tez nie ??
Albo poprostu spróbuj załadować moduł od htb.
Kod: Zaznacz cały
# modprobe sch_htb
pozdro
No wlasnie to nie router tylko NAS.
Router mam wrt54gl i tam wystarczy wrzucić do firewall script (co zreszta mam zrobione), tylko potrzebuje dorzucić na nslu2 tylko tą jedną regułkę i bedzie wszystko tak jak chciałem.
A uruchomienie skryptu daje mi cos takiego:
Router mam wrt54gl i tam wystarczy wrzucić do firewall script (co zreszta mam zrobione), tylko potrzebuje dorzucić na nslu2 tylko tą jedną regułkę i bedzie wszystko tak jak chciałem.
A uruchomienie skryptu daje mi cos takiego:
NSLU2:/etc/init.d# /etc/rc2.d/S20shaper
What is "default"?
Usage: ... qdisc add ... htb [default N] [r2q N]
default minor id of class to which unclassified packets are sent {0}
r2q DRR quantums are computed as rate in Bps/r2q {10}
debug string of 16 numbers each 0-3 {0}
... class add ... htb rate R1 [burst B1] [mpu B] [overhead O]
[prio P] [slot S] [pslot PS]
[ceil R2] [cburst B2] [mtu MTU] [quantum Q]
rate rate allocated to this class (class can still borrow)
burst max bytes burst which can be accumulated during idle period {computed}
mpu minimum packet size used in rate computations
overhead per-packet size overhead used in rate computations
ceil definite upper class rate (no borrows) {rate}
cburst burst but for ceil {computed}
mtu max packet size we create rate map for {1600}
prio priority of leaf; lower are served first {0}
quantum how much bytes to serve from leaf at once {use r2q}
TC HTB version 3.3
RTNETLINK answers: No such file or directory
RTNETLINK answers: No such file or directory
RTNETLINK answers: Invalid argument
We have an error talking to the kernel
-
- Beginner
- Posty: 207
- Rejestracja: 26 czerwca 2006, 01:49
- Lokalizacja: Kraków za firewallem
Może w innej kolejności należy wpisać parametry (pisałem z pamięci):
Albo zamiast "default 11" należy dać "default 1:11", oczywiście poza tym prędkości które tu podałem trzeba pozmieniać adekwatnie do połączenia jakie tam jest i to samo dotyczy portu oczywiście który chcemy ograniczyć.
Kod: Zaznacz cały
tc class add dev eth0 parent 1: classid 1:1 htb default 11 rate 100kbps ceil 100kbps
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 95kbps ceil 100kbps
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 5kbps ceil 5kbps
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 \
match ip dport 22 0xffff flowid 1:12
Skrypt wygląda dokladnie tak:
Ten skrypt, co mam na routerze wyglada tak:
I to się wysadza - z default 1:11 ten sam błąd.#! /bin/sh
tc class add dev eth0 parent 1: classid 1:1 htb rate 100Mbps ceil 100Mbps default 11
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 99Mbps ceil 100Mbps
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 5kbps ceil 5kbps
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 63000 0xffff flowid 1:12
Ten skrypt, co mam na routerze wyglada tak:
Przydało by się, żeby to działało :-/iptables -I FORWARD -p tcp --syn -s 192.168.0.4 -m
connlimit --connlimit-above 300 -j DROP
tc qdisc del root dev eth0
iptables -t mangle -F
iptables -t mangle -X
tc qdisc add dev eth0 root handle 1: htb default 10
tc class add dev eth0 parent 1: classid 1:1 htb rate 640kbit burst 6k prio 0
#------------------------------------------ users download classes
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 300kbit ceil 640kbit burst 6k prio 1
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 48kbit ceil 160kbit burst 6k prio 3
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 48kbit ceil 160kbit burst 6k prio 4
tc class add dev eth0 parent 1:1 classid 1:13 htb rate 240kbit ceil 640kbit burst 6k prio 2
#------------------------------------------ users upload classes
tc class add dev eth0 parent 1:1 classid 1:20 htb rate 48kbit ceil 96kbit burst 6k prio 1
tc class add dev eth0 parent 1:1 classid 1:21 htb rate 16kbit ceil 48kbit burst 6k prio 3
tc class add dev eth0 parent 1:1 classid 1:22 htb rate 16kbit ceil 48kbit burst 6k prio 4
tc class add dev eth0 parent 1:1 classid 1:23 htb rate 16kbit ceil 24kbit burst 8k prio 6
#download classes
tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev eth0 parent 1:11 handle 11: sfq perturb 10
tc qdisc add dev eth0 parent 1:12 handle 12: sfq perturb 10
tc qdisc add dev eth0 parent 1:13 handle 13: sfq perturb 10
#upload classes
tc qdisc add dev eth0 parent 1:21 handle 20: sfq perturb 10
tc qdisc add dev eth0 parent 1:21 handle 21: sfq perturb 10
tc qdisc add dev eth0 parent 1:22 handle 22: sfq perturb 10
tc qdisc add dev eth0 parent 1:23 handle 23: sfq perturb 10
#download classes
tc filter add dev eth0 parent 1:0 prio 1 protocol ip handle 10 fw flowid 1:10
tc filter add dev eth0 parent 1:0 prio 3 protocol ip handle 11 fw flowid 1:11
tc filter add dev eth0 parent 1:0 prio 4 protocol ip handle 12 fw flowid 1:12
tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 13 fw flowid 1:13
#upload classes
tc filter add dev eth0 parent 1:0 prio 1 protocol ip handle 20 fw flowid 1:20
tc filter add dev eth0 parent 1:0 prio 3 protocol ip handle 21 fw flowid 1:21
tc filter add dev eth0 parent 1:0 prio 4 protocol ip handle 22 fw flowid 1:22
tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 23 fw flowid 1:23
#marking DOWNLOAD packets
iptables -t mangle -A POSTROUTING -d 192.168.1.2 -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING -d 192.168.1.3 -j MARK --set-mark 11
iptables -t mangle -A POSTROUTING -d 192.168.1.4 -j MARK --set-mark 12
iptables -t mangle -A POSTROUTING -d 192.168.1.77 -j MARK --set-mark 13
#marking UPLOAD packets
iptables -t mangle -A FORWARD -s 192.168.1.2 -j MARK --set-mark 20
iptables -t mangle -A FORWARD -s 192.168.1.3 -j MARK --set-mark 21
iptables -t mangle -A FORWARD -s 192.168.1.4 -j MARK --set-mark 22
iptables -t mangle -A FORWARD -s 192.168.1.77 -j MARK --set-mark 23
-
- Beginner
- Posty: 207
- Rejestracja: 26 czerwca 2006, 01:49
- Lokalizacja: Kraków za firewallem
Ok, juz chyba wiem co zle napisalem: powinno byc troche inaczej (ten default powinien byc przy dodawaniu qdisc - ktorego zreszta zapomnialem ).szafran pisze:skrypt wyglada dokladnie tak:
i to sie wysadza - z default 1:11 ten sam blad#! /bin/sh
tc class add dev eth0 parent 1: classid 1:1 htb rate 100Mbps ceil 100Mbps default 11
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 99Mbps ceil 100Mbps
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 5kbps ceil 5kbps
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 63000 0xffff flowid 1:12
Kod: Zaznacz cały
#! /bin/sh
tc qdisc add dev eth0 root handle 1: htb default 11
tc class add dev eth0 parent 1: classid 1:1 htb rate 100Mbps ceil 100Mbps
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 99Mbps ceil 100Mbps
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 5kbps ceil 5kbps
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 63000 0xffff flowid 1:12
Ale skoro masz juz jakis inny gotowy skrypt to sie mu przejrzyjmy.
Wyglada rozsadnie, ktoras komenda zwraca blad?ten skrypt co mam na routerze wyglada tak:przydalo by sie zeby to dzialalo :-/ciach