Slackware Linux trafic shaping dedicated server
ultima actualizare 28.11.2004

Slackware Linux 10.0
Kernel 2.4.28
Bridging- OPTIONAL - e valabil numai in cazul in care este server dedicat pentru shaping
HTB tools - 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.28   http://www.kernel.org
     - 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


OPTIONAL !! 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-util s-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 - http://www.arny.ro/htb/htb_tools-0.2.5.tar.gz
   
      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.

      - se descarca sursele de la http://arny.ro/htb/htb_tools-0.2.5.tar.gz

        - dezarhivarea si compilea sursei:

root@slackware:/home/arny# tar -zxvf htb_tools-0.2.5.tar.gz
root@slackware:/home/arny# cd htb_tools-0.2.5
root@slackware:/home/arny/htb_tools-0.2.5# make

     - in urma compilarii vor rezulta binarele q_parser, q_show si q_checkcfg;

(trebuie sa aveti drepturi de root)
- executati make install ca sa instalati binarele q_parser, q_show, q_checkcfg, htb, tc in directorul /sbin, iar in /etc/htb se vor instala cele doua fisiere de configurare: eth0-qos.cfg ;eth1-qos.cfg

- (optional) daca vreti sa vedeti traficul generat de q_show pe web, atunci trebuie sa instalati/configurati fisierul q_show.php. Instalarea se face cu make install_web. Modul de utilizare/configurare le gasiti aici

.        - se verifica corectitudinea fisierelor de configurare din /etc/htb :

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.

      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


Web q_show
       Idea de functionare este simpla. Un cron job colecteaza datele de trafic intr-un fisier .log, si anume q_show.log. De aici este treaba unui script .php (q_show.php) care parseaza fiserul si afiseaza continutul intr-o pagina web.

Configurare
      Inainte de toate trebuie sa aveti php instalat si un server httpd functional. Sa presupunem ca aveti domeniu.ro si directorul implicit, pentru paginile web, este /var/www/htdocs/. Executati make install_web, confirmati cu ENTER directorul implicti. In /var/www/htdocs/ se va crea directorul webhtb si se va instala in el scriptul php.

      - adaugati in crontab: (explicatiile le gasiti in web/README-ro)

*/1 * * * * /sbin/q_show -i eth1 -f /etc/htb/eth1-qos.cfg -1 > /var/www/htdocs/webhtbb/q_show.log

La adresa http://www.domeniu.ro/webhtb/q_show.php puteti vedea traficul. vezi captura


Pentru utilizatorii RedHat/Fedora Core

      La http://rpms.xcyb.org/fedora.us/ este un src.rpm de htb_tools facut de Mihai Maties <mihai AT xcyb.org> pentru http://fedora.us.

Binarele rezultate din acest src.rpm sunt disponibile la adresele:

http://download.fedora.us/fedora/redhat/9/i386/RPMS.testing/    (Red Hat 9)
http://download.fedora.us/fedora/fedora/1/i386/RPMS.testing/    (Fedora Core 1)
http://download.fedora.us/fedora/fedora/2/i386/RPMS.testing/    (Fedora Core 2)

      Src.rpm-ul mai contine pe langa fisierul sursa (htb_util-0.2.4-pre1.tar.gz) si 2 patch-uri care:
1. corecteaza niste erori in scriptul de start;
2. face posibila compilarea sursei pe FC2 (si probabil si pe alte distributii cu glibc mai nou).
      Patch-urile nu se adreseaza neaparat distributiilor RH/FC, de ele pot beneficia si altii.



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.ne t/howto.html

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




This document is copyright (c) arny All rights reserved.
Powered by slackware

Page made with Quanta Plus