Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Podział pasma przy użyciu algorytmu HTB.

lukpio3 07 Sie 2011 21:01 1322 8
  • #1 07 Sie 2011 21:01
    lukpio3
    Poziom 21  

    Witam.
    Napisałem już konfigurację HTB. Wygląda to następująco: Sieć LAN - serwer + 10 klientów. Oczywiście nie wszyscy są podłączeni. Na stałem z sieci będzie korzystało 5 klientów, pozostałe 5 adresów dałem na zapas bo planuje że będą podłączać się do sieci również inne hosty ale to sporadycznie. HTB ma przydzielać pasmo w ten sposób że gdy w sieci jest tylko jeden host dostaje od 100% pasma, gdy jest dwóch pasmo jest dzielone po połowie dla każdego hosta, gdy trzech pasmo na 3 itd. Poniżej zamieszczam swoją konfigurację. Pierwszy raz mam styczność z HTB zatem proszę o wyrozumiałość. Czy jest na forum osoba która mogła by zerknąć w kod i powiedzieć czy dobrze to zrobiłem? Bardzo proszę. Oto kod:

    Code:

    CALE=8700kbit
    ETH_CEIL=8000kbit
    USER=16kbit
    USER_CEIL=100kbit

    IP_SERWER=192.168.0.2
    IP_USER1=192.168. 0.10
    IP_USER2=192.168. 0.11
    IP_USER3=192.168. 0.12
    IP_USER4=192.168. 0.13
    IP_USER5=192.168. 0.14
    IP_USER6=192.168. 0.15
    IP_USER7=192.168. 0.16
    IP_USER8=192.168. 0.17
    IP_USER9=192.168. 0.18
    IP_USER10=192.168. 0.19

    tc qdisc del root dev eth0

    tc qdisc add dev eth0 root handle 1:0 htb

    tc class add dev eth0 parent 1:0 classid 1:1 htb rate $CALE ceil $CALE

    tc class add dev eth0 parent 1:1 classid 1:2 htb rate $ETH_CEIL ceil $ETH_CEIL

    tc class add dev eth0 parent 1:2 classid 1:3 htb rate $USER ceil $USER_CEIL
    tc class add dev eth0 parent 1:2 classid 1:4 htb rate $USER ceil $USER_CEIL
    tc class add dev eth0 parent 1:2 classid 1:5 htb rate $USER ceil $USER_CEIL
    tc class add dev eth0 parent 1:2 classid 1:6 htb rate $USER ceil $USER_CEIL
    tc class add dev eth0 parent 1:2 classid 1:7 htb rate $USER ceil $USER_CEIL
    tc class add dev eth0 parent 1:2 classid 1:8 htb rate $USER ceil $USER_CEIL
    tc class add dev eth0 parent 1:2 classid 1:9 htb rate $USER ceil $USER_CEIL
    tc class add dev eth0 parent 1:2 classid 1:10 htb rate $USER ceil $USER_CEIL
    tc class add dev eth0 parent 1:2 classid 1:11 htb rate $USER ceil $USER_CEIL
    tc class add dev eth0 parent 1:2 classid 1:12 htb rate $USER ceil $USER_CEIL

    tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:3
    tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:4
    tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:5
    tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:6
    tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:7
    tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:8




    tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:9
    tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:10
    tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:11
    tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:12

    tc filter add dev eth0 protocol ip preference 2 parent 1:0 u32 match ip dstS $IP_USER1 flowid 1:4
    tc filter add dev eth0 protocol ip preference 2 parent 1:0 u32 match ip dstS $IP_USER2 flowid 1:4
    tc filter add dev eth0 protocol ip preference 2 parent 1:0 u32 match ip dstS $IP_USER3 flowid 1:4
    tc filter add dev eth0 protocol ip preference 2 parent 1:0 u32 match ip dstS $IP_USER4 flowid 1:4
    tc filter add dev eth0 protocol ip preference 2 parent 1:0 u32 match ip dstS $IP_USER5 flowid 1:4
    tc filter add dev eth0 protocol ip preference 2 parent 1:0 u32 match ip dstS $IP_USER6 flowid 1:4
    tc filter add dev eth0 protocol ip preference 2 parent 1:0 u32 match ip dstS $IP_USER7 flowid 1:4
    tc filter add dev eth0 protocol ip preference 2 parent 1:0 u32 match ip dstS $IP_USER8 flowid 1:4
    tc filter add dev eth0 protocol ip preference 2 parent 1:0 u32 match ip dstS $IP_USER9 flowid 1:4
    tc filter add dev eth0 protocol ip preference 2 parent 1:0 u32 match ip dstS $IP_USER10 flowid 1:4

    tc qdisc add dev eth0 parent 1:3 handle 3:0 sfq perturb 10

    tc qdisc add dev eth0 parent 1:4 handle 4:0 sfq perturb 10
    tc qdisc add dev eth0 parent 1:5 handle 5:0 sfq perturb 10
    tc qdisc add dev eth0 parent 1:6 handle 6:0 sfq perturb 10
    tc qdisc add dev eth0 parent 1:7 handle 7:0 sfq perturb 10
    tc qdisc add dev eth0 parent 1:8 handle 8:0 sfq perturb 10
    tc qdisc add dev eth0 parent 1:9 handle 9:0 sfq perturb 10
    tc qdisc add dev eth0 parent 1:10 handle 10:0 sfq perturb 10
    tc qdisc add dev eth0 parent 1:11 handle 11:0 sfq perturb 10
    tc qdisc add dev eth0 parent 1:12 handle 12:0 sfq perturb 10
    tc qdisc add dev eth0 parent 1:13 handle 13:0 sfq perturb 10



    Te wielkości przepustowości są narazie takie czysto teoretyczne bo muszę jeszcze porobić dokładne pomiary łącza. Bardzo proszę o ewentualne uwagi odnośnie kodu.
    Pozdrawiam.

    0 8
  • #3 07 Sie 2011 21:14
    lukpio3
    Poziom 21  

    A czy ten generator kolego działa na widnowsie? Bo problem polega na tym że ja nie jestem zwolennikiem serwera X-ów na linuxie, mam jądro własnej konfiguracji i serwera X-ów w ogóle nie wkompilowywałem. Korzystam z konsoli.

    0
  • #4 07 Sie 2011 21:19
    hermes-80
    Poziom 43  

    To akurat jest generator skryptu HTB dla routerów opartych na linuxie nie wiem jak to wygląda na win.
    Oczywiście, że wygenerowany skrypt trzeba przystosować pod swoja maszynę (to co przedstawiłeś wygląda podobnie).
    Wygeneruj, zobacz, zmodyfikuj i przetestuj.

    Sory ;) źle zrozumiałem ;) to jest aplikacja pod WIN.

    0
  • #5 07 Sie 2011 21:22
    lukpio3
    Poziom 21  

    A może teraz zadam głupie pytanie ale na prawdę tego nie wiem. Ten skrypt który przygotowywałem robiłem na windowsie w oparciu o różne artykuły i how to. Tylko nie wiem zupełnie jak to się wprowadza. Czy każdą linijkę należy wprowadzić jako osobne polecenie w konsoli? Czy może jest jakiś plik konfiguracyjny w linuxie do którego należy to wpisać? Proszę o wyrozumiałość, robię to poraz pierwszy ...

    0
  • #6 07 Sie 2011 21:24
    hermes-80
    Poziom 43  

    Firewall, lub jako skrypt wywołany z pliku - powłoka bash/sh.
    tc to przecież jest program jak grep czy cat on to wprowadza.

    0
  • #7 07 Sie 2011 21:30
    lukpio3
    Poziom 21  

    Czyli robię to jako normalny skrypt tzn #!/bin/bash itd zapisuję go gdzieś i następie ten skrypt uruchamiam, tak? A jeśli coś jest nie tak to co wtedy? Poprawiam skrypt, uruchamiam ponownie i stary zostaje nadpisany nowym? :)

    Druga sprawa, jak mogę sprawdzić poprawność działania skryptu? Są jakieś programy które potrafią to sprawdzić? Oczywiście mowa tu o programach działających pod konsolą bo jak wspomniałem X-ów nie mam.

    0
  • #8 07 Sie 2011 21:36
    hermes-80
    Poziom 43  

    Najlepiej wklej go do pliku firewall. Żeby zmienić konfiguracje musisz zrestartować service z nową konfiguracją.

    To jest skrypt przycinający pasmo na poszczególne IP klienckie. Więc najprostszym sposobem sprawdzenia tego jest odpalenie ściągania jakiegoś pliku na adresie klienta i sprawdzenie przepustowości dobrym do tego jest wget, lub manual od TC i sprawdzanie jak się ruch po klasach rozkłada.

    0
  • #9 07 Sie 2011 21:40
    lukpio3
    Poziom 21  

    Ok, w takim razie tak zrobię. Ten plik firewall w jakim katalogu mogę znaleźć? Gdzieś w /etc powinien być? Wiem że mogę poszukać ale obecnie nie jestem przy linuxie, będę dopiero jutro.

    Ok, pytanie nie aktualne. Już wiem jak to należy zrobić w moim systemie :). Dziękuje za pomoc. Jak będę miał jeszcze pytania to będę pytał.
    Pozdrawiam.

    0