Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2009-01-27 14:18:49

  Szczur[R] - Użytkownik

Szczur[R]
Użytkownik
Skąd: Czestochowa
Zarejestrowany: 2006-03-29

HTB na imq + squid (miss/hit) - nie trzyma pasma

Witam.

Obecnie lapie wszystko w mangle pre/postrouting i kieruje do imq, dziala ok, trzyma limity.
Wyglada to tak:

eth0 - wan
eth2,3 - dwie podsieci lanu
debian sarge, imq BA, kernel 2.6.18.8, iptables 1.3.8, iproute 2.6.18, squid 2.5 stable9

Kod:

#przekierowanie na squida
$IPTABLES -t nat -A PREROUTING -s 10.1.0.0/24 -p tcp --dport 80 -j DNAT --to 10.1.0.1:8080
$IPTABLES -t nat -A PREROUTING -s 10.1.0.0/24 -p tcp --dport 8080 -j DNAT --to 10.1.0.1:8080
$IPTABLES -t nat -A PREROUTING -s 10.2.0.0/24 -p tcp --dport 80 -j DNAT --to 10.2.0.1:8080
$IPTABLES -t nat -A PREROUTING -s 10.2.0.0/24 -p tcp --dport 8080 -j DNAT --to 10.2.0.1:8080

#download wrzucam do imq0
$IPTABLES -t mangle -A POSTROUTING -o eth2 -j IMQ --todev 0
$IPTABLES -t mangle -A POSTROUTING -o eth3 -j IMQ --todev 0
#upload wrzucam do imq1
$IPTABLES -t mangle -A PREROUTING -i eth2 -j IMQ --todev 1
$IPTABLES -t mangle -A PREROUTING -i eth3 -j IMQ --todev 1

#htb uzywam nastepujaco:
$tc qdisc add dev imq0 root handle 1:0 htb default 99
$tc qdisc add dev imq1 root handle 2:0 htb default 99
$tc class add dev imq0 parent 1:0 classid 1:1 htb rate 5mbit ceil 5mbit
$tc class add dev imq1 parent 2:0 classid 2:1 htb rate 2mbit ceil 2mbit

#to co sie nigdzie nie zakwalifikuje trafia tu
$tc class add dev imq0 parent 1:1 classid 1:99 htb rate 100kbit ceil 256kbit
$tc qdisc add dev imq0 parent 1:99 handle 99:0 sfq perturb 10

$tc class add dev imq1 parent 2:1 classid 2:99 htb rate 10kbit ceil 100kbit
$tc qdisc add dev imq1 parent 2:99 handle 99:0 sfq perturb 10

#i dalej sa klienci, dla przykldu jeden z nich
#WPIS 10.2.0.28 - 128
$tc class add dev imq0 parent 1:1 classid 1:128 htb rate $d ceil $dm
$tc filter add dev imq0 protocol ip parent 1:0 u32 match ip dst 10.2.0.128 flowid 1:128
$tc qdisc add dev imq0 parent 1:128 handle 128:0 sfq perturb 10

$tc class add dev imq1 parent 2:1 classid 2:128 htb rate $u ceil $um
$tc filter add dev imq1 protocol ip parent 2:0 u32 match ip src 10.2.0.128 flowid 2:128
$tc qdisc add dev imq1 parent 2:128 handle 128:0 sfq perturb 10

Nalozylem na squida patcha ZPH i chcialbym puszczac oddzielnie ruch lokalny (squid HIT, dns itp.), z lenistwa pomyslalem ze wystarczylo by "wybic" z mangle ten ruch ktorego nie chce kolejkowac i po sprawie ;) tak wiec tez zroblem dla squida, skrypt wygladal jak wyzej z tym ze:

Kod:

#download
$IPTABLES -t mangle -A POSTROUTING -o eth2 -p tcp --sport 8080 -m tos --tos 0x8 -j ACCEPT
$IPTABLES -t mangle -A POSTROUTING -o eth2 -j IMQ --todev 0
$IPTABLES -t mangle -A POSTROUTING -o eth3 -p tcp --sport 8080 -m tos --tos 0x8 -j ACCEPT
$IPTABLES -t mangle -A POSTROUTING -o eth3 -j IMQ --todev 0
(...)

i dziala PRAWIE zadowalajaco, hity ze squida leca ile tylko moga, a wszystko inne trafia w kolejke. No ale ze czesc ludzi mam na radiu, to trzeba to jednak jakos ograniczyc do rozsadnej wartosci - i tu problem, nie moge nad tym zapanowac w zaden sposob, zrobilem tak:

Kod:

##$IPTABLES -t mangle -A POSTROUTING -o eth2 -p tcp --sport 8080 -m tos --tos 0x8 -j ACCEPT
$IPTABLES -t mangle -A POSTROUTING -o eth2 -p tcp --sport 8080 -m tos --tos 0x8 -j IMQ --todev 2
(...)

zeby te HIT'y skierowac do dodatkowego imq, a na nim:

Kod:

$tc qdisc add dev imq2 root handle 3:0 htb default 99
$tc class add dev imq2 parent 3:0 classid 3:1 htb rate 3000kbit ceil 3000kbit
$tc class add dev imq2 parent 3:1 classid 3:99 htb rate 2900kbit ceil 2900kbit
$tc qdisc add dev imq2 parent 3:99 handle 99:0 sfq perturb 10

i nie dziala ;( iptables -t mangle -vnL pokazuje ze te pakiety ze squida wpadaja w imq2 ale leca ile wlezie, nie ma mowy o kontroli.
po tej porazce porzucilem calkiem koncepcje stwierdzajac ze zrobie to bardziej po ludzku urzywajac mangle forward, co zalatwi mi tez za jednym zamachem min. zapytania do lokalnego dnsa, wzorujac sie na przykladzie od ZlyZwierz zrobilem tak:

Kod:

#przekierowanie na squida
$IPTABLES -t nat -A PREROUTING -s 10.1.0.0/24 -p tcp --dport 80 -j DNAT --to 10.1.0.1:8080
$IPTABLES -t nat -A PREROUTING -s 10.1.0.0/24 -p tcp --dport 8080 -j DNAT --to 10.1.0.1:8080
$IPTABLES -t nat -A PREROUTING -s 10.2.0.0/24 -p tcp --dport 80 -j DNAT --to 10.2.0.1:8080
$IPTABLES -t nat -A PREROUTING -s 10.2.0.0/24 -p tcp --dport 8080 -j DNAT --to 10.2.0.1:8080

#lapie ruch
$IPTABLES -t mangle -N SUMA_DL
$IPTABLES -t mangle -A FORWARD -i eth0 -j SUMA_DL
$IPTABLES -t mangle -A OUTPUT -o eth1 -p tcp --sport 8080 -m tos --tos 0x0 -j SUMA_DL
$IPTABLES -t mangle -A OUTPUT -o eth2 -p tcp --sport 8080 -m tos --tos 0x0 -j SUMA_DL

$IPTABLES -t mangle -N SUMA_UL
$IPTABLES -t mangle -A FORWARD -o eth0 -j SUMA_UL
$IPTABLES -t mangle -A INPUT -i eth1 -p tcp --dport 8080 -j SUMA_UL
$IPTABLES -t mangle -A INPUT -i eth2 -p tcp --dport 8080 -j SUMA_UL

#i wrzucam do imq
$IPTABLES -t mangle -A SUMA_DL -j IMQ --todev 0
$IPTABLES -t mangle -A SUMA_UL -j IMQ --todev 1

dalej jest HTB identyczne jak w pierwszym przykladzie zrobione, na tym etapie nie trzyma mi uploadu, download sie kolejkuje normalnie, hity ze squida leca pelna predkoscia - na razie ich nie proboje jeszcze ograniczac bo i tak juz mi qos nie dziala prawidlowo wiec utknalem -.-
probowalem z imq na BA jak i AB, efekt ten sam, iptables pokazuje ze pakiety wpadaja w te regolki i do imq pozniej, ale efektu brak - podobnie jak w pierwszej wersji z pre/postrouting. nie mam pojecia co spapralem, obczytalem juz chyba caly internet, tydzien sie z tym prawie mecze i nic - czarna dupa ;/


pozdr


http://sopot.i365.pl/neo/i/us4.jpg

Offline

 

#2  2009-01-29 14:44:11

  mariaczi - Użytkownik

mariaczi
Użytkownik
Zarejestrowany: 2007-10-02

Re: HTB na imq + squid (miss/hit) - nie trzyma pasma

Taka pierwsza mysli mi przyszla: zrobić dodatkową kolejkę na SQUIDa na IMQ a filtrami wyłapać co leci na port squida i jego adres i przeprznac w ta kolejke.

Offline

 

#3  2009-01-29 15:07:28

  bolos_11 - Użytkownik

bolos_11
Użytkownik
Zarejestrowany: 2006-10-30

Re: HTB na imq + squid (miss/hit) - nie trzyma pasma

mariaczi napisał(-a):

Taka pierwsza mysli mi przyszla: zrobić dodatkową kolejkę na SQUIDa na IMQ a filtrami wyłapać co leci na port squida i jego adres i przeprznac w ta kolejke.

latwo powiedziec :D:D:D: trudno zrobic :D:D:
hehe

Offline

 

#4  2009-01-29 18:55:19

  Szczur[R] - Użytkownik

Szczur[R]
Użytkownik
Skąd: Czestochowa
Zarejestrowany: 2006-03-29

Re: HTB na imq + squid (miss/hit) - nie trzyma pasma

Taka pierwsza mysli mi przyszla: zrobić dodatkową kolejkę na SQUIDa na IMQ a filtrami wyłapać co leci na port squida i jego adres i przeprznac w ta kolejke.

1. bez sensu, bo musisz dac klientowi 2x upload, powiedzmy mial 512kbit to teraz bedzie mial 512dla www + 512 dla !www - no bo jak zmusisz htb do zliczania sumarycznie z dwoch interfejsow ;>
2. przeciez w tej chwili nie moge ograniczyc tego na imq1 to uwazasz ze jak bede chcial to zrobic na imq2,3,5 czy 199 to cos zmieni?
3. pomijajac 1i2 - jest sens kilka razy dublowac roch ?

problem chyba lezy gdzie indziej, pewnie jakis szczegol/pierdolka i szlak mnie trafia bo powinno dzialac...

pozdr


http://sopot.i365.pl/neo/i/us4.jpg

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)