Slackware Linux trafic shaping dedicated server



Slackware Linux 10.0
Kernel 2.4.27
Bridging
HTB tool - limitare/alocare upload si download
// Begin disclaimer // Nu sunt responsabil de felul in care folositi aceasta informatie. Este descrierea pe care am folosit-o eu si functioneaza in conditiile descrise de mine. Daca calculatorul pe care instalati & configurati htb-tools, bridging o ia razna sau se defecteaza - nu sunt responsabil pentru acesta. // End disclaimer //

Slackware Linux 10.0   http://www.slackware.com/
     Instalare Slackware Linux - Slackware-HOWTO - in engleza
     Instalare Slackware Linux - Slackware-HOWTO - in romana
Kernel 2.4.27   Gel camuflaj natural
     - se poate folosi kernel-ul implicit din slackware linux 10.0 care are deja selectate aceste optiuni;
     - in cazul in care se compileaza din surse, se vor selecta urmatoarele optiuni pentru HTB:

#
# QoS and/or fair queueing
#
CONFIG_NET_SCHED=y
CONFIG_NET_SCH_CBQ=m
CONFIG_NET_SCH_HTB=m
CONFIG_NET_SCH_CSZ=m
CONFIG_NET_SCH_HFSC=m
CONFIG_NET_SCH_PRIO=m
CONFIG_NET_SCH_RED=m
CONFIG_NET_SCH_SFQ=m
CONFIG_NET_SCH_TEQL=m
CONFIG_NET_SCH_TBF=m
CONFIG_NET_SCH_GRED=m
CONFIG_NET_SCH_DELAY=m
CONFIG_NET_SCH_DSMARK=m
CONFIG_NET_SCH_INGRESS=m
CONFIG_NET_QOS=y
CONFIG_NET_ESTIMATOR=y
CONFIG_NET_CLS=y
CONFIG_NET_CLS_TCINDEX=m
CONFIG_NET_CLS_ROUTE4=m
CONFIG_NET_CLS_ROUTE=y
CONFIG_NET_CLS_FW=m
CONFIG_NET_CLS_U32=m
CONFIG_NET_CLS_RSVP=m
CONFIG_NET_CLS_RSVP6=m
CONFIG_NET_CLS_POLICE=y


Linux bridging   http://bridge.sourceforge.net/

     - inainte de a instala utilitarele de bridging trebuie compilat in kernel suportul de bridge:

#
# Appletalk devices
#
...
CONFIG_BRIDGE=y
...

     - descarcati utilitarele de bridging
http://keihanna.dl.sourceforge.net/sourceforge/bridge/bridge-utils-1.0.4.tar.gz

     - inainte de a incepe compilarea, asigurativa ca cele doua placi de retea sunt setate corespunzator, adica driverele sunt incarcate si functioneaza.

NU SETATI NICI UN IP PE INTERFETELE DE RETEA, DEZACTIVATI ORICE SCRIPT CARE AR PUTEA SETA IP-uri PE PLACILE DE RETEA (DHCP), rulati ifconfig eth0 down si ifconfig eth1 down pentru a fi sigur ca nu e nici o interfata activa, dezactivati chiar si loopback -ul, ifconfig lo down.
     Pentru cei ce folosesc Slackware comentati cu # toate liniile din /etc/rc.d/rc.inet1 pentru a fi sigur ca la bootare nu se va activa nici o interfata.

IP-urile pe interfete se vor seta dupa ce utilitarele vor fi compilate/instalate.

     - configure; make; make install - sunt comenzile ce trebuie rulate dupa dezarhivarea sursei;
     - ca sa fie mai usor de setat interfetele precum si bridge-ul descarcati acest script (rc.bridge) si il copiati in directorul /etc/rc.d/ ;
     - toate acestea fiind facute se face executabil fisierul rc.bridge si se trece in /etc/rc.d/rc.local linia (la bootare va ridica bridge-ul):

/etc/rc.d/rc.bridge


HTB tool    http://sgi.rdscv.ro/~ionuts/htb-tools
   
      Hierarchical Token Bucket ( HTB ) inlocuieste cu succes Class Based Queueing ( CBQ ) datorita modului de operare precis si usor de inteles pentru toata lumea. Diferenta fata de CBQ este ca banda se aloca unei ( sau mai multe ) clase iar in momentul in care banda alocata clasei este depasita ea poate imprumuta ( temporar ) banda dintr-o alta clasa unde nu este folosita la maxim sau deloc. In plus, fata de CBQ, se pot aloca unul sau mai multi clienti unei clase. Toate clasele si toti clientii se stabilesc intr-un fisier de configurare.

       Printr-o serie de programe ( HTB tools ) se poate simplifica configurarea, monitorizarea operatiunii de alocare de banda atat upload-ul cat si download-ul.
- q_parser citeste un fisier de configurare ( in fisier sunt stabilite clasele, clientii, limitarile de banda ) si genereaza un script pentru setarile HTB;
- q_show afiseaza in timp real situatia traficului si a benzii alocate pentru fiecare clasa/client conform fisierului de configurare.
- q_checkcfg se foloseste la verificarea fisierului de configurare.

      Ca sa intelegeti mai bine cum functioneaza, am folosit o banda de 256kbps pe care am impartit-o la 4 clienti, fiecare client are minim garantat 48kbps si maxim garantat 64kbps upload/download.

      -binarul tc din pachetul htb3 htb3.6-020525.tgz trebuie copiat in directorul /sbin ;
      -se descarca sursele htb_util-0.2.4-pre1_cv-1_quantum-1536-sin.tar.bz2 de la http://sgi.rdscv.ro/~ionuts/htb-tools

        - dezarhivarea si compilea sursei:

root@slackware:/home/arny# tar -jxvf htb_util-0.2.4-pre1_cv-1_quantum-1536-sin.tar.bz2
root@slackware:/home/arny# cd htb_util-0.2.4-pre1_cv-1_quantum-1536-sin
root@slackware:/home/arny/htb_util-0.2.4-pre1_cv-1_quantum-1536-sin# make

     - in urma compilarii vor rezulta binarele q_parser, q_show si q_checkcfg, binare ce trebuie copiate in directorul /sbin;

       - descarcati cele doua fisiere de configurare pentru upload eth0-qos.cfg si eth1-qos.cfg pentru download; in fisier veti gasi explicatie pentru fiecare element in parte.

eth0-qos.cfg
eth1-qos.cfg

       - fisierele de configurare se salveaza in /etc/htb si se verifica corectitudinea fisierelor:
q_checkcfg /etc/htb/eth0-qos.cfg

Default bandwidth: 8



Class class_1, CIR: 192, MIR: 256

** 4 clients, CIR2: 192, MIR2: 256



1 classes; CIR / MIR = 192 / 256; CIR2 / MIR2 = 192 / 256

q_checkcfg /etc/htb/eth1-qos.cfg

Default bandwidth: 8



Class class_1, CIR: 192, MIR: 256

** 4 clients, CIR2: 192, MIR2: 256



1 classes; CIR / MIR = 192 / 256; CIR2 / MIR2 = 192 / 256

- fisierele de configurare sunt corecte din punct de vedere sintactic.

      In arhiva htb_util-0.2.4-pre1_cv-1_quantum-1536-sin.tar.bz2 veti gasi un script de pornire, oprire, restartare a htb-tools, se pot aplica limitarile mult mai simplu ca si inainte. Scriptul se numeste htb si trebuie copiat in /etc/rc.d.

      Am facut un scrip pentru cei ce folosesc Slackware Linux si nu numai. Cu acest script puteti porni/opri, monitoriza limitarile/garantarile pe upload/download sau amandoua deodata.
      Scriptul se numeste rc.htb, trebuie sa fie executabil si se copieaza in /etc/rc.d. In fisier o sa gasiti descrierea la fiecare linie precum si modul de utilizare.

      Pentru a porni la bootare limitarile/garantarile pentru upload si download trebuie sa treceti in/etc/rc.local linia:

/etc/rc.d/rc.htb start

            - daca vreti sa limitati/garantati banda doar pentru download atunci se foloseste comanda:
/etc/rc.d/rc.htb start_eth1

            - daca vreti sa limitati/garantati banda doar pentru upload atunci se foloseste comanda:

/etc/rc.d/rc.htb start_eth0

Cu ajutorul binarului q_show se poate urmari, in timp real, traficul & ocuparea benzii pentru fiecare client (download).
       Se lanseaza comanda:

/etc/rc.d/rc.htb show_eth1

            - veti obtine pe consola traficul & ocuparea de banda:
class_1 224.80 2 192 256
 client_1 62.25 1 48 64
 client_2 51.05 1 48 64
 client_3 48.25 1 48 64
 client_4 63.25 1 48 64
_default_ 0 0 0 0


DEBUGING
       In cazul in care la rularea comenzii /etc/rc.d/rc.htb start_ethx vedeti eroarea:

Q_SHOW is /sbin/q_show \/ Q_PARSER is /sbin/q_parser \/ Q_CHECKCFG is /sbin/q_checkcfg \/ PAGER is /usr/bin/less \/ CONF_DIR is /etc/htb \/ REMOVE is /usr/bin/rm \/ TC is /sbin/tc Applying traffic rules for device . Checking the config file..../etc/rc.d/htb: line 81: [:/sbin/q_checkcfg: unary operator expected FAILED The configuration file contains errors.

      - atunci trebuie sa aveti neaparat binarul tc din htb3.6-020525.tgz in /sbin.

       - daca nici asa nu fuctioneaza atunci inlocuiti /etc/rc.d/htb cu acesta > htb < .



Documentatie:
Instalare Slackware Linux - Slackware-HOWTO - in engleza
Instalare Slackware Linux - Slackware-HOWTO - in romana

Linux Advanced Routing & Traffic Control HOWTO http://www.lartc.org/ sau http://www.docum.org/;

Bridging HOWTO http://bridge.sourceforge.net/howto.html

HTB - tools Implementing Real Time Packet Forwading Policies using HTB.