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


[url=http://dziecineo.prv.pl][img]http://sopot.i365.pl/neo/i/us4.jpg[/img][/url]

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

[quote=mariaczi]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.[/quote]
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.[/quote]
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


[url=http://dziecineo.prv.pl][img]http://sopot.i365.pl/neo/i/us4.jpg[/img][/url]

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)

[ Generated in 0.008 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00009 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00134 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.218.99.80' WHERE u.id=1
0.00062 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.218.99.80', 1732965365)
0.00041 SELECT * FROM punbb_online WHERE logged<1732965065
0.00047 SELECT topic_id FROM punbb_posts WHERE id=109306
0.00090 SELECT id FROM punbb_posts WHERE topic_id=13258 ORDER BY posted
0.00095 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=13258 AND t.moved_to IS NULL
0.00005 SELECT search_for, replace_with FROM punbb_censoring
0.00088 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=13258 ORDER BY p.id LIMIT 0,25
0.00080 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=13258
Total query time: 0.00655 s