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!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam!
Mam za zadanie przyśpieszyć proces klasyfikacji pakietów przy użyciu tablic mieszających. Przerobiłem skrypt który wykonuje zbiór reguł, oto on:
system "tc qdisc add dev eth1 root handle 1:0 htb"; system "tc class add dev eth1 parent 1:0 classid 1:1 htb rate 4000kbps ceil 4800kbps quantum 80000"; system "tc class add dev eth1 parent 1:1 classid 1:10 htb rate 1000kbps ceil 1200kbps quantum 3 burst 20k prio 1"; system "tc class add dev eth1 parent 1:1 classid 1:20 htb rate 1000kbps ceil 1200kbps quantum 3 burst 20k prio 3"; system "tc class add dev eth1 parent 1:1 classid 1:30 htb rate 1000kbps ceil 1200kbps quantum 3 burst 10k prio 1"; system "tc class add dev eth1 parent 1:1 classid 1:40 htb rate 1000kbps ceil 1200kbps quantum 3 burst 10k prio 2"; for(my $i = 2; $i < 255; $i++) { #HTTP system "tc filter add dev eth1 protocol ip preference 2 parent 1:0 u32 match ip dst 192.168.0.$i/32 match ip sport 80 0xffff flowid 1:10"; # UDP system "tc filter add dev eth1 protocol ip preference 2 parent 1:0 u32 match ip protocol 17 0xff match ip dst 192.168.0.$i/32 flowid 1:20"; # ftp-data only port 20 system "tc filter add dev eth1 protocol ip preference 2 parent 1:0 u32 match ip dst 192.168.0.$i/32 match ip sport 20 0xffff flowid 1:30"; # FTP system "tc filter add dev eth1 protocol ip preference 2 parent 1:0 u32 match ip dst 192.168.0.$i/32 flowid 1:40"; } }
Drzewko jest bardzo proste, posiada tyko cztery"odnogi" dla różnych protokołów. Każda podklasa posiada zakres reguł z adresami x.x.x2 - x.x.x.254
Teraz moim zadaniem jest użyć tablic mieszających do przyśpieszenia klasyfikacji pakietów, problem w tym że nie wiem jak to zrobić :( oraz w jaki sposób to napisać :/
Proszę o pomoc!
Z góry dzięki :)
Offline
Po pierwsze, to jest kawalek skryptu, lepiej pokaż całość.
Albo źródlo skryptu, skad go wytrzasnąłeś.
Po drugie, prościej jest zrobić same kolejki, a do wrzucania pakietów do kolejek użyć firewalla, modulów MARK lub CLASSIFY.
Iptables ma 10 razy więcej możliwych sposobów dopasowania pakietu.
Ostatnio edytowany przez Jacekalex (2013-02-27 15:17:33)
Offline
tutaj jest cały skrypt: http://wklej.org/id/967679/
Jacekalex napisał(-a):
Po drugie, prościej jest zrobić same kolejki, a do wrzucania pakietów do kolejek użyć firewalla, modulów MARK lub CLASSIFY.
Iptables ma 10 razy więcej możliwych sposobów dopasowania pakietu.
wierze na słowo ale potrzebuje to zrobić z tablicami ;) masz jakieś pomysły jak to zrobić?
Offline
Ten skrypt wygląda nieźle, choć trochę dziwne, że jest rzeźbiony w perlu.
wierze na słowo ale potrzebuje to zrobić z tablicami ;) masz jakieś pomysły jak to zrobić?
Nie musisz wierzyć na słowo.
Napisz lepiej, czy to jest zadanie domowe, czy to ma działać, bo to zazwyczaj są dwie różne sprawy. :D
Twój skrypt "na oko" wygląda prawidłowo.
W każdym razie, jak markujesz połączenie w iptables modułem CONNMARK - a potem MARK dla tc ustalasz na poziomie wartości znacznika CONNMARK, to można filtrować ruch w obie strony, bo znacznik CONNMARK dotyczy bierzącego połączenia zapisanego w tablicy conntrack, a nie pakietu, który wchodzi lub wychodzi z kompa, jak filtr tc.
Tu masz przykład użycia CONNMARK:
http://wampir.mroczna-zaloga.org/archives/21-o-kszt … iu-ruchu.html
To jest ta najważniejsza różnica miedzy iptables a tc.
Informacje o wszystkich aktywnych połączeniach system trzyma w tablicy
/proc/net/ip_conntrack
Ostatnio edytowany przez Jacekalex (2013-02-28 05:52:21)
Offline