ďťż
 
 
   podział łącza = 1 użytkownik ma kilka komputerów
 
 

Tematy

 
    
 

 

 

 

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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • minister.pev.pl

  •  

     


     

     
    Copyright 2003. MĂłj serwis