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  2013-02-27 14:00:45

  Gutek18 - Nowy użytkownik

Gutek18
Nowy użytkownik
Zarejestrowany: 2013-02-27

hash table + htb!! pomocy!!

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:

Kod:

    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

 

#2  2013-02-27 15:13:41

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: hash table + htb!! pomocy!!

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)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#3  2013-02-27 16:01:27

  Gutek18 - Nowy użytkownik

Gutek18
Nowy użytkownik
Zarejestrowany: 2013-02-27

Re: hash table + htb!! pomocy!!

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

 

#4  2013-02-28 05:40:40

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: hash table + htb!! pomocy!!

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

Kod:

/proc/net/ip_conntrack

Ostatnio edytowany przez Jacekalex (2013-02-28 05:52:21)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

Stopka forum

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