Linux zarządzanie pasmem transmisji danych
- Aleksander Wala,
- 01.09.2004
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.".
#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
- 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).
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.