Linux zarządzanie pasmem transmisji danych

Wiedza podstawą skutecznego zarządzania

Zasada ta znajduje zastosowanie także w zarządzaniu siecią. Jak dotąd jesteśmy w stanie wdrożyć interesujące nas rozwiązania, ale nie wiemy, jak sieć się zachowuje: kto ją przeciąża i czy mechanizmy działają poprawnie? Ważne jest dla nas, w jakim stopniu wykorzystujemy swoje łącze, który z klientów jest bardziej, a który mniej aktywny, któremu wprowadzić dodatkowe ograniczenia np. na wysyłanie danych? Do tego wszystkiego posłuży nam pakiet lstat.

Ostatnim rozważanym problemem będzie blokowanie osób, które nie płacą. Najprostszą metodą jest wyłączenie im maskarady. Można jednak zrobić to trochę sprytniej, wyłączając np. funkcjonalność sieci. Sieć będzie działać, ale zamiast dowolnej strony www, pokaże się strona z treścią: "Proszę uregulować należności, numer konta itp.".

Skrypt wysyłanie.sh

#modprobe imq

iptables -t mangle -F

iptables -t mangle -X

iptables -t mangle -A PREROUTING -i eth1 -j IMQ

ip link set imq0 up

#definiowanie zmiennych

min=5kbit

max_up=32kbit

# czyszczenie

tc qdisc del root dev imq0

#przydzielanie domyślnego kanału głównego i określenie domyślnej klasy

tc qdisc add dev imq0 root handle 1:0 htb

#definicja klasy głównej

tc class add dev imq0 parent 1:0 classid 1:1 htb rate 128kbit ceil 128kbit

#definiowanie użytkownika

tc class add dev imq0 parent 1:1 classid 1:2 htb rate $min ceil $max_up

# filtry przydziału do klas

#Klient 1

tc filter add dev imq0 protocol ip parent 1:0 u32 match ip src 192.168.0.10 flowid 1:2

# sfq - uczciwe dzielenie w ramach wszystkich klas

tc qdisc add dev imq0 parent 1:2 handle 2:0 sfq perturb 1

#Zakładamy, że użytkownik 1 to "maniak" wysyłania, a inni użytkownicy mieszczą się w normie. Dlatego nie trzeba ograniczać wszystkich, chyba że statystyki wykażą, że jest to konieczne.

A więc do dzieła...

Pierwszym etapem jest przygotowanie jądra systemu do wykorzystania HTB oraz IMQ. Opisane rozwiązanie dotyczy wersji 2.4.25. Zakładamy jednak, że w nowszych wersjach nie będzie istotnych zmian. Ważnym elementem jest też zmiana źródeł (patchowanie) oraz instalacja pakietów do zarządzania łączem (iproute2, iptables). Dla uproszczenia wszystkie czynności związane z tym fragmentem przygotowania systemu zebrane zostały w ramce "Pierwszy etap".

Instalacja lstat

Lstat jest pakietem służącym do monitoringu obciążeń systemu. Możliwy jest monitoring:

  • zasobów obliczeniowych (obciążenie procesora, pamięci),
  • zasobów dyskowych (użycie dysków),
  • zasobów sieciowych (przepływ pakietów, tłok w sieci).
Zajmijmy się trzecim zagadnieniem. Interesują nas wielkość: przepływu danych oraz źródła największego obciążenia sieci.

Pakiet lstat standardowo nie jest dostępny w większości dystrybucji. Pakiet można pobrać ze stronyhttp://lstat.sf.net . Przed instalacją pakietu lstat należy pobrać i zainstalować pakiet RRD-tools ze stronyhttp://people.ee.ethz.ch/~oetiker/webtools/rrdtool/ .

tar -xzvf rrdtool.tar.gz

cd rrdtool-1.0.34

./configure

make

make install

make site-perl-install

Istotna jest ostatnia linijka. Jeśli nie zainstalujemy bibliotek Perla, dojdzie do błędów podczas instalacji lstat.


TOP 200