|
podział łącza = 1 użytkownik ma kilka komputerów
robotix - 16-09-2008 16:40
Witam
Proszę o wyrozumiałość ponieważ uczę się dopiero o iptables i iproute2, chciałem sobie napisać podział łącza dla kilku użytkowników jednak zawsze jest pokazywany przykład drzewa z 1 klasą główną i liśćmi do niej a ja mam taki problem że u mnie kilku użytkowników ma po kilka komputerów, nawet do 7 sztuk na 1 użytkownika.
Napisałem sobie poniższy kod i zwracam się więc do bardziej doświadczonych użytkowników forum czy taki zapis jest poprawny, czy dobrze rozumuję z podklasami i podziałem pasma dla 1 użytkownika na kilka komputerów. tc qdisc del root dev eth1 tc qdisc add dev eth1 root handle 1:0 htb default 1 r2q 10 tc class add dev eth1 parent 1:0 classid 1:1 htb rate 9500kbit ceil 9500kbit quantum 811
tc class add dev eth1 parent 1:1 classid 1:2 htb rate 256kbit ceil 256kbit quantum 22 tc class add dev eth1 parent 1:1 classid 1:3 htb rate 256kbit ceil 256kbit quantum 22 tc class add dev eth1 parent 1:1 classid 1:4 htb rate 512kbit ceil 512kbit quantum 44 // poniżej user ma 2 komputery, jego pasmo to 256kbit symetryczne tc class add dev eth1 parent 1:1 classid 1:5 htb rate 128kbit ceil 256kbit quantum 11 tc class add dev eth1 parent 1:5 classid 1:6 htb rate 128kbit ceil 256kbit quantum 11 // poniżej user ma 3 komputery, jego pasmo to 512kbit symetryczne tc class add dev eth1 parent 1:1 classid 1:7 htb rate 171kbit ceil 512kbit quantum 15 tc class add dev eth1 parent 1:7 classid 1:8 htb rate 171kbit ceil 512kbit quantum 15 tc class add dev eth1 parent 1:7 classid 1:9 htb rate 171kbit ceil 512kbit quantum 15 .... tc filter add dev eth1 protocol ip parent 1:0 u32 match ip dst 192.168.101.22 flowid 1:2 tc filter add dev eth1 protocol ip parent 1:0 u32 match ip dst 192.168.101.20 flowid 1:3 tc filter add dev eth1 protocol ip parent 1:0 u32 match ip dst 192.168.101.26 flowid 1:4 tc filter add dev eth1 protocol ip parent 1:0 u32 match ip dst 192.168.101.27 flowid 1:5 tc filter add dev eth1 protocol ip parent 1:0 u32 match ip dst 192.168.101.31 flowid 1:6 tc filter add dev eth1 protocol ip parent 1:0 u32 match ip dst 192.168.101.37 flowid 1:7 tc filter add dev eth1 protocol ip parent 1:0 u32 match ip dst 192.168.101.43 flowid 1:8 tc filter add dev eth1 protocol ip parent 1:0 u32 match ip dst 192.168.101.155 flowid 1:9 ... tc qdisc add dev eth1 parent 1:2 handle 2:0 sfq perturb 10 tc qdisc add dev eth1 parent 1:3 handle 3:0 sfq perturb 10 tc qdisc add dev eth1 parent 1:4 handle 4:0 sfq perturb 10 tc qdisc add dev eth1 parent 1:5 handle 5:0 sfq perturb 10 tc qdisc add dev eth1 parent 1:6 handle 6:0 sfq perturb 10 tc qdisc add dev eth1 parent 1:7 handle 7:0 sfq perturb 10 tc qdisc add dev eth1 parent 1:8 handle 7:0 sfq perturb 10 tc qdisc add dev eth1 parent 1:9 handle 7:0 sfq perturb 10 ...
tomii - 16-09-2008 16:52
Według mnie masz błąd w:
tc class add dev eth1 parent 1:1 classid 1:7 htb rate 171kbit ceil 512kbit quantum 15 tc class add dev eth1 parent 1:7 classid 1:8 htb rate 171kbit ceil 512kbit quantum 15 tc class add dev eth1 parent 1:7 classid 1:9 htb rate 171kbit ceil 512kbit quantum 15
Po pierwsze to starczy ci na dwa komputery (jeśli 1:7 ma podklasy to nie powinieneś nic kierować do tej kolejki "luzem"). Po drugie suma rate klasy podrzędnych (dzieci) nie może być większa od rate rodzica, z ceil jest to samo.
ad 1 i 2:
tc class add dev eth1 parent 1:1 classid 1:5 htb rate 128kbit ceil 256kbit quantum 11 tc class add dev eth1 parent 1:5 classid 1:6 htb rate 128kbit ceil 256kbit quantum 11
też jest błędne 4. Rozumiem że to tylko upload lub download? Domyślną klasę stwórz oddzielnie.
robotix - 16-09-2008 17:05
Weźmy przykład tylko dla tych 3 komputerów no właśnie chodzi o to że nie bardzo to rozumiem jak stworzyć podkolejkę do podziału na 3 komputery.
1:7 to jest pierwszy komputer 1:8 - drugi komputer 1:9 - trzeci komputer użytkownik ma 512/512 dla wszystkich 3 komputerów
Czy muszę dać dodatkowo przed tymi 3 kompami jeszcze 1 klasę i ma to wyglądać tak jeśli chcę dzielić dla 1 użytkownika na 3 komputery:
... tc class add dev eth1 parent 1:1 classid 1:6 htb rate 512kbit ceil 512kbit quantum 15
tc class add dev eth1 parent 1:6 classid 1:7 htb rate 171kbit ceil 512kbit quantum 15 tc class add dev eth1 parent 1:6 classid 1:8 htb rate 171kbit ceil 512kbit quantum 15 tc class add dev eth1 parent 1:6 classid 1:9 htb rate 171kbit ceil 512kbit quantum 15
Co do rate to faktycznie daje ono gwarantowane minimum ale ceil i le może pożyczyć od łącza na maksimum i chodzi o to aby 1 użytkownik miał dla tych 3 komputerów 512/512 ale jeśli tylko pracuje 1 komputer to ma mieć 512/512 jeśli pracują 2 komputery to mają mieć gwarantowane 256/256 każdy z nich.
Bo jeśli podzielę też ceil dla klas 7-9 to 3 komputery będą miały maksymalnie 171 kbit czy tak?
tomii - 16-09-2008 17:13
tc class add dev eth1 parent 1:1 classid 1:6 htb rate 512kbit ceil 512kbit quantum 15
tc class add dev eth1 parent 1:6 classid 1:7 htb rate 171kbit ceil 512kbit quantum 15 tc class add dev eth1 parent 1:6 classid 1:8 htb rate 171kbit ceil 512kbit quantum 15 tc class add dev eth1 parent 1:6 classid 1:9 htb rate 171kbit ceil 512kbit quantum 15
tak jest poprawnie ale to ograniczy tylko albo upload albo download zeleży od czego jest u ciebie dany interfejswan czy lan)
robotix - 16-09-2008 17:24
Zgadza się, kolejkę mam tylko na razie dla downloadu pisaną, eth1 mam dla lanu. Najpierw muszę załapać o co w tym chodzi od czego co jest a dopiero potem podmienię sobie na eth0 i będę miał gotowy upload.
Jeśli to jest poprawnie to co z filtrami czy na główną klasę mają kierować
tc filter add dev eth1 protocol ip parent 1:0 u32 match ip dst 192.168.101.37 flowid 1:6 tc filter add dev eth1 protocol ip parent 1:0 u32 match ip dst 192.168.101.43 flowid 1:6 tc filter add dev eth1 protocol ip parent 1:0 u32 match ip dst 192.168.101.155 flowid 1:6
czy do swoich klas
tc filter add dev eth1 protocol ip parent 1:0 u32 match ip dst 192.168.101.37 flowid 1:7 tc filter add dev eth1 protocol ip parent 1:0 u32 match ip dst 192.168.101.43 flowid 1:8 tc filter add dev eth1 protocol ip parent 1:0 u32 match ip dst 192.168.101.155 flowid 1:9
a jeśli tylko do swoich to co z główną klasą nie ma na niej filtra :?: a i co jeszcze ze sposobem kolejkowania czy analogicznie jak z filrami :?:
tomii - 16-09-2008 17:26
Do swoich, a do głównej nie ma.
A i co jeszcze ze sposobem kolejkowania czy analogicznie jak z filtrami - nie rozumiem.
robotix - 16-09-2008 17:47
Chodziło o to, że jeśli filtry do swoich to za nimi analogicznie kolejkowanie:
tc filter add dev eth1 protocol ip parent 1:0 u32 match ip dst 192.168.101.37 flowid 1:7 tc filter add dev eth1 protocol ip parent 1:0 u32 match ip dst 192.168.101.43 flowid 1:8 tc filter add dev eth1 protocol ip parent 1:0 u32 match ip dst 192.168.101.155 flowid 1:9
tc qdisc add dev eth1 parent 1:7 handle 7:0 sfq perturb 10 tc qdisc add dev eth1 parent 1:8 handle 7:0 sfq perturb 10 tc qdisc add dev eth1 parent 1:9 handle 7:0 sfq perturb 10
tomii - 16-09-2008 17:53
Tak ale handle chyba powinno być za każdym razem inne i dałbym:
tc qdisc add dev eth1 parent 1:6 handle 7:0 sfq perturb 10
dla klasy nadrzędnej danego użytkownika.
robotix - 17-09-2008 09:03
Fakt co do handle to przy powielaniu nie zmieniłem po prostu cyferek, czyli co uważasz że nie przypisywać kolejkowania dla danego komputera użytkownika tylko dla głównej kolejki, tylko że jeśli on zapuści na 3 komputerach Aresa to zapcha sobie łącze / główną kolejkę.
A jak dam osobne kolejkowanie dla każdego komputera / klasy to SFQ zwolni trochę szybciej pasmo tak czy nie :?:
Kilka komputerów mam przeważnie wykorzystane w szkołach w pracowniach komputerowych i w kawiarenkach na wsiach i tam dzieciaki instalują co chcą i przez cały dzień aresy/kazy mają zapuszczone i dlatego szukam sposobu na to aby dzieciaki mogły korzystać na innych komputerach bez problemu, oraz z innych usług.
PS. Jak uporam się z tym to chciałbym dodatkowo zrobić dla każdego z osobna podział na usługi (ICMP, WWW, Poczta, FTP, reszta=p2p) i dać dla nich priorytety (w kolejności jak podane usługi) czy to robi się tak że zakłada się dla nich klasy a potem filtrami przekierowuje do odpowiedniej.
Tylko w głównej kolejce ROOT jest default a co w przypadku jeśli chciałbym ten ruch p2p dać na default dla danego IP komputera, bo jeśli te 4 usługi rozpoznam filtrami to p2p już nie muszę tylko właśnie jak zrobić default w podklasach :?:
tomii - 17-09-2008 11:14
Nie. Jak masz jedna kolejkę nadrzędną powiedzmy 1:6 i trzy podrzędne powiedzmy 6:1 6:2 i 6:3 to ja bym wrzucił komputery do tych właśnie 6:1 6:2 i 6:3 Jak masz wystarczająco łącza aby dać wszystkim kolejki po np. 256 to daj im i pilnuj żeby nie wyszły z nich i powinno być dobrze (wszyscy powinni swobodnie korzystać). Dokładnie tak ale mało kto tak robi. Tak jak pisałem dla root, utwórz specjalną kolejkę na default toka będzie lepiej. A w podklasach to co chcesz wyłapujesz filtrami (koniecznie w pierwszej kolejności), a potem resztę to co zostanie wyłapujesz przez IP.
robotix - 17-09-2008 12:14
dzięki,
trochę mi to naświetliło sprawę i pozwoli mi pokombinować z podziałem ...
zanotowane.pldoc.pisz.plpdf.pisz.plminister.pev.pl
|