HTB i podzia

Konfiguracja serwerów, usług, itp.
shadow_g
Posty: 12
Rejestracja: 20 marca 2009, 06:36
Lokalizacja: Go³±b

HTB i podział na usługi nie do końca działa

Post autor: shadow_g »

Witam. Mam takie pytanko odnośnie HTB. Czy udało ci się tak ustawić kolejkowanie żeby dobrze chodził internet bez różnicy na to ile osób ściąga, ja próbowałem przerzucić cały ruch, który nie jest zdefiniowany do klasy standardowej ale internet mi muli. Zrobiłem podział łącza na usługi, ponieważ nie chcę dawać indywidualnie. Mam w sieci tylko ze trzy osoby, które non stop ściągają, ale im ograniczyłem za pomocą ,,delay_pools'' w squidzie transfer na poszczególne pliki. I jeszcze mam takiego jednego gracza, który non stop gra w ,,combat arms'' i nie mogę mu zrobić żeby dobrze pingi szły (oddzielne pasma w HTB). Może coś poradzicie?

£ącze to 9MB/700KB, dzielone na dwie karty eth1 i eth2 (karty od lan - sieć wifi przez przezroczyste AP) eth0 karta WAN - nie robiłem jeszcze politykę wysyłania plików (upload).

Poniżej mój skrypt, chodzi o to żeby zrobić tak, że jak któraś usługa nie wykorzystuje pasma to wszystko idzie na port 80 i 8080. Czy trzeba jeszcze coś wpisywać w firewallu?

Kod: Zaznacz cały

#!/bin/bash
#skrypt do kolejkowania po usługach
#tworzę główne klasy dla eth1
tc qdisc del root dev eth1
tc qdisc add dev eth1 root handle 1:0 htb default 40
tc class add dev eth1 parent 1:0 classid 1:1 htb rate 50mbit

#tworzenie podklasy z podziałem na zakres pasma dla poszczególnej podklasy do 1:30 trafia niezdefiniowany ruch
tc class add dev eth1 parent 1:1 classid 1:10 htb rate 2.3mbit ceil 2.9mbit prio 1 
tc class add dev eth1 parent 1:1 classid 1:20 htb rate 1.4mbit ceil 1.6mbit prio 2 
tc class add dev eth1 parent 1:1 classid 1:30 htb rate 0.6mbit ceil 0.8mbit prio 3 
tc class add dev eth1 parent 1:1 classid 1:40 htb rate 0.2mbit ceil 0.4mbit prio 4 
tc class add dev eth1 parent 1:1 classid 1:50 htb  rate 50mbit ceil 50mbit prio 5 

#podział pasma użytkowników na równy przy otwarciu przez nich kilku stron.
tc qdisc add dev eth1 parent 1:10 handle 10:0 sfq perturb 10
tc qdisc add dev eth1 parent 1:20 handle 20:0 sfq perturb 10
tc qdisc add dev eth1 parent 1:30 handle 30:0 sfq perturb 10
tc qdisc add dev eth1 parent 1:40 handle 40:0 sfq perturb 10
tc qdisc add dev eth1 parent 1:50 handle 50:0 sfq perturb 10

#prędkość dla poszczególnych portów
#lokalne połączenia
tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.0.1 flowid 1:50
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip dst 192.168.0.1 flowid 1:50
tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip src 127.0.0.1 flowid 1:50
tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dst 127.0.0.1 flowid 1:50
#proxy 
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip sport 3127 0xffff flowid 1:50
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip dport 3127 0xffff flowid 1:50
#www
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip sport 80 0xffff flowid 1:10
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip dport 80 0xffff flowid 1:10
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip sport 8080 0xffff flowid 1:10
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip dport 8080 0xffff flowid 1:10
#skype, gg
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip sport 443 0xffff flowid 1:20
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip dport 443 0xffff flowid 1:20
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip sport 1550 0xffff flowid 1:20
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip dport 1550 0xffff flowid 1:20
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip sport 53 0xffff flowid 1:20
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip dport 53 0xffff flowid 1:20
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip sport 22 0xffff flowid 1:20
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip dport 22 0xffff flowid 1:20
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip sport 23 0xffff flowid 1:20
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip dport 23 0xffff flowid 1:20

#tworzę główne klasy dla eth2
tc qdisc del root dev eth2
tc qdisc add dev eth2 root handle 1:0 htb default 40
tc class add dev eth2 parent 1:0 classid 1:1 htb rate 50mbit

#tworzenie podklasy z podziałem na zakres pasama dla poszczególnej podklasy do 1:30 trafia niezdefiniowany ruch
tc class add dev eth2 parent 1:1 classid 1:10 htb rate 2.3mbit ceil 2.9mbit prio 1 
tc class add dev eth2 parent 1:1 classid 1:20 htb rate 1.4mbit ceil 1.6mbit prio 2 
tc class add dev eth2 parent 1:1 classid 1:30 htb rate 0.6mbit ceil 0.8mbit prio 3 
tc class add dev eth2 parent 1:1 classid 1:40 htb rate 0.2mbit ceil 0.4mbit prio 4 
tc class add dev eth2 parent 1:1 classid 1:50 htb rate 50mbit ceil 50mbit prio 5 

#podział pasma użytkowników na rowny przy otwarciu przez nich kilku stron
tc qdisc add dev eth2 parent 1:10 handle 10:0 sfq perturb 10
tc qdisc add dev eth2 parent 1:20 handle 20:0 sfq perturb 10
tc qdisc add dev eth2 parent 1:30 handle 30:0 sfq perturb 10
tc qdisc add dev eth2 parent 1:40 handle 40:0 sfq perturb 10
tc qdisc add dev eth2 parent 1:50 handle 50:0 sfq perturb 10

#prędkość dla poszczególnych portów
#lokalne połączenia
tc filter add dev eth2 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.0.1 flowid 1:50
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dst 192.168.0.1 flowid 1:50
tc filter add dev eth2 protocol ip parent 1:0 prio 1 u32 match ip src 127.0.0.1 flowid 1:50
tc filter add dev eth2 protocol ip parent 1:0 prio 1 u32 match ip dst 127.0.0.1 flowid 1:50
#proxy
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip sport 3127 0xffff flowid 1:50
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dport 3127 0xffff flowid 1:50
#www
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip sport 80 0xffff flowid 1:10
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dport 80 0xffff flowid 1:10
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip sport 8080 0xffff flowid 1:10
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dport 8080 0xffff flowid 1:10
#skype,gg
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip sport 443 0xffff flowid 1:20
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dport 443 0xffff flowid 1:20
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip sport 1550 0xffff flowid 1:20
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dport 1550 0xffff flowid 1:20
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip sport 53 0xffff flowid 1:20
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dport 53 0xffff flowid 1:20
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip sport 22 0xffff flowid 1:20
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dport 22 0xffff flowid 1:20
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip sport 23 0xffff flowid 1:20
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dport 23 0xffff flowid 1:20
#gry
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip sport 5400 0xffff flowid 1:30
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dport 5400 0xffff flowid 1:30
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip sport 28000 0xffff flowid 1:30
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dport 28000 0xffff flowid 1:30
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip sport 23000 0xffff flowid 1:30
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dport 23000 0xffff flowid 1:30
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip sport 1102 0xffff flowid 1:30
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dport 1102 0xffff flowid 1:30
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip sport 15400 0xffff flowid 1:30
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dport 15400 0xffff flowid 1:30
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip sport 29300 0xffff flowid 1:30
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dport 29300 0xffff flowid 1:30
tomii
Junior Member
Posty: 687
Rejestracja: 21 października 2007, 13:27

Post autor: tomii »

Czy dobrze zrozumiałem: nie podzieliłeś jeszcze uploadu i nie możesz zapewnić pingów?
Skoro masz 2 karty do klientów to dlaczego nie korzystasz z imq?
shadow_g
Posty: 12
Rejestracja: 20 marca 2009, 06:36
Lokalizacja: Go³±b

Post autor: shadow_g »

A bez imq nie da rady tego zrobić, bo to są sieciówki na lan, więc mogę cały transfer podzielić na pół (9MB/2) i dopiero go dalej dzielić na poszczególnych kartach (dac po 4,5MB na jedna i 4,5 na drugą), a do podziału uploadu wykorzystuje już stary skrypt z cbq i przycina jak chce ale dalej problem z pingami dla gier. Może coś w regułkach HTB trzeba zmienić i czy nie trzeba gdzieś dać jeszcze markowania pakietów, i jak trzeba to prosiłbym o jakiś przykład.
tomii
Junior Member
Posty: 687
Rejestracja: 21 października 2007, 13:27

Post autor: tomii »

Pokaż wynik polecenia:

Kod: Zaznacz cały

tc -s qdisc show dev ethX
dla twoich interfejsów?

Jakie przykładowe pingi masz?
Co ci pokazuje ,,speed test'', ,,iptraf'', jakie jest wysycenie łącza?
shadow_g
Posty: 12
Rejestracja: 20 marca 2009, 06:36
Lokalizacja: Go³±b

Post autor: shadow_g »

To co mi pokazuje:

Kod: Zaznacz cały

tc -s qdisc

Kod: Zaznacz cały

debian:/home/cris# tc -s qdisc show dev eth1
qdisc htb 1: root r2q 10 default 40 direct_packets_stat 0
 Sent 1289546482 bytes 1019408 pkt (dropped 0, overlimits 703950 requeues0)
 rate 0bit 0pps backlog 0b 0p requeues 0
qdisc sfq 10: parent 1:10 limit 127p quantum 1514b perturb 10sec
 Sent 1003910981 bytes 462418 pkt (dropped 100, overlimits 0 requeues 0)
 rate 0bit 0pps backlog 0b 0p requeues 0
qdisc sfq 20: parent 1:20 limit 127p quantum 1514b perturb 10sec
 Sent 664240 bytes 2844 pkt (dropped 0, overlimits 0 requeues 0)
 rate 0bit 0pps backlog 0b 0p requeues 0
qdisc sfq 30: parent 1:30 limit 127p quantum 1514b perturb 10sec
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 rate 0bit 0pps backlog 0b 0p requeues 0
qdisc sfq 40: parent 1:40 limit 127p quantum 1514b perturb 10sec
 Sent 33078027 bytes 65169 pkt (dropped 0, overlimits 0 requeues 0)
 rate 0bit 0pps backlog 0b 0p requeues 0
qdisc sfq 50: parent 1:50 limit 127p quantum 1514b perturb 10sec
 Sent 251893234 bytes 159491 pkt (dropped 0, overlimits 0 requeues 0)
 rate 0bit 0pps backlog 0b 0p requeues 0

debian:/home/cris# tc -s qdisc show dev eth2

qdisc htb 2: root r2q 10 default 40 direct_packets_stat 1
 Sent 749189043 bytes 639448 pkt (dropped 0, overlimits 553398 requeues 0)
 rate 0bit 0pps backlog 0b 0p requeues 0
qdisc sfq 10: parent 2:10 limit 127p quantum 1514b perturb 10sec
 Sent 721425189 bytes 402597 pkt (dropped 0, overlimits 0 requeues 0)
 rate 0bit 0pps backlog 0b 0p requeues 0
qdisc sfq 20: parent 2:20 limit 127p quantum 1514b perturb 10sec
 Sent 730007 bytes 2405 pkt (dropped 0, overlimits 0 requeues 0)
 rate 0bit 0pps backlog 0b 0p requeues 0
qdisc sfq 30: parent 2:30 limit 127p quantum 1514b perturb 10sec
 Sent 399180 bytes 932 pkt (dropped 0, overlimits 0 requeues 0)
 rate 0bit 0pps backlog 0b 0p requeues 0
qdisc sfq 40: parent 2:40 limit 127p quantum 1514b perturb 10sec
 Sent 26634613 bytes 46417 pkt (dropped 0, overlimits 0 requeues 0)
 rate 0bit 0pps backlog 0b 0p requeues 0
qdisc sfq 50: parent 2:50 limit 127p quantum 1514b perturb 10sec
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 rate 0bit 0pps backlog 0b 0p requeues 0
Na ,,speed test'' nieraz mam nawet tylko 120kbit.
Wygląda na to, że nic nie trafia do żadnej z klas poza klasą domyślną 1:40.
tomii
Junior Member
Posty: 687
Rejestracja: 21 października 2007, 13:27

Post autor: tomii »

A spróbuj wpisać wartości transferu w liczbach całkowitych?
shadow_g
Posty: 12
Rejestracja: 20 marca 2009, 06:36
Lokalizacja: Go³±b

Post autor: shadow_g »

Nic nie daje wpisanie stałych wartości, może problem leży po stronie konfiguracji na interfejsach, może trzeba jeszcze na eth0 ustawić limity. Interfejsy to eth0 - wan, eth1, eth2 - lan.
ODPOWIEDZ