podzia

Masz problemy z siecią bądź internetem? Zapytaj tu
robotix
Posty: 6
Rejestracja: 16 września 2008, 16:22

podział łącza - 1 użytkownik ma kilka komputerów

Post autor: robotix »

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.

Kod: Zaznacz cały

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
Junior Member
Posty: 687
Rejestracja: 21 października 2007, 13:27

Post autor: tomii »

Według mnie masz błąd w:

Kod: Zaznacz cały

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:

Kod: Zaznacz cały

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
Posty: 6
Rejestracja: 16 września 2008, 16:22

Post autor: robotix »

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:

Kod: Zaznacz cały

...
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
Junior Member
Posty: 687
Rejestracja: 21 października 2007, 13:27

Post autor: tomii »

Kod: Zaznacz cały

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
Posty: 6
Rejestracja: 16 września 2008, 16:22

Post autor: robotix »

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ć

Kod: Zaznacz cały

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

Kod: Zaznacz cały

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
Junior Member
Posty: 687
Rejestracja: 21 października 2007, 13:27

Post autor: tomii »

Do swoich, a do głównej nie ma.

A i co jeszcze ze sposobem kolejkowania czy analogicznie jak z filtrami - nie rozumiem.
robotix
Posty: 6
Rejestracja: 16 września 2008, 16:22

Post autor: robotix »

Chodziło o to, że jeśli filtry do swoich to za nimi analogicznie kolejkowanie:

Kod: Zaznacz cały

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
Junior Member
Posty: 687
Rejestracja: 21 października 2007, 13:27

Post autor: tomii »

Tak ale handle chyba powinno być za każdym razem inne i dałbym:

Kod: Zaznacz cały

tc qdisc add dev eth1 parent 1:6 handle 7:0 sfq perturb 10
dla klasy nadrzędnej danego użytkownika.
robotix
Posty: 6
Rejestracja: 16 września 2008, 16:22

Post autor: robotix »

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
Junior Member
Posty: 687
Rejestracja: 21 października 2007, 13:27

Post autor: tomii »

A jak dam osobne kolejkowanie dla każdego komputera / klasy to SFQ zwolni trochę szybciej pasmo tak czy nie
Nie.
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ę.
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
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ń adresy/kazy mają zapuszczone i dlatego szukam sposobu na to aby dzieciaki mogły korzystać na innych komputerach bez problemu, oraz z innych usług.
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ć).
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.
Dokładnie tak ale mało kto tak robi.
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 :?:
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.
ODPOWIEDZ