TrafficManagement

From Frotmail Projects
Jump to navigation Jump to search

Handleiding thumb

Installatie & Configuratie

Opzetten database

In de map staat een bestand 'db.sql'. Maak in MySQL een nieuwe database en importeer de gegevens uit db.sql.

Config.inc.php

Vervolgens moeten we enkele instellingen maken in deze file, voorbeeld:

<?php
$dbhost = 'localhost';
$dbuser = 'trafficuser';
$dbpass = 'trafficpass';
$dbname = 'traffic';

//connectie maken
$db = mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname);

//ssh connectie params
$ssh['host'] = 'localhost';
$ssh['port'] = '22';
$ssh['key'] = '/var/www/sshkey.key';

//Interne netwerkkaart
$internal_nic = "eth1";
$external_nic = "eth0";

//Afmetingen grafische objecten
$node_height = 50;
$node_width = 200;
$node_hspacing = 30;

$diagram_height = 400;
$diagram_width = 700;
$diagram_offset = 100;

$debug = 0;
?>

Het meeste spreekt voor zich en hier besteed ik dus zo min mogelijk aandacht aan.

Nadat deze file is aangemaakt zou de web-interface zichtbaar moeten zijn op het adres waarop deze is geïnstalleerd.

Configure Uplinks

Voor we iets kunnen toevoegen moeten we de uplinks configureren. We moeten tenminste 1 LAN adapter en 1 WAN adapter toevoegen. Bijvoorbeeld:

Interface:         eth0
Download Speed:    100000000
Upload Speed:      100000000
Type:              LAN

Voor de LAN adapter zijn alleen deze 4 velden verplicht

De overige velden worden alleen gebruikt voor de WAN adapter:

Bijvoorbeeld:

Interface:         eth1
Ip:                212.212.212.212
Netmask:           255.255.255.0
Network:           212.212.212.0/24
Download Speed:    1000000
Upload Speed:      1000000
Gateway:           212.212.212.1
Type:              WAN

Configure Firewall

Hieruit wordt een iptables script gegenereerd welke de markings voor zijn rekening zal nemen.

Let op!: Ieder pakketje kan slechts 1 marking mee krijgen, de markings worden uitgedeeld op volgorde van marking nummer. Deze volgorde is ook terug te zien in de lijst.

Wanneer je dus HTTP voor iedereen wilt beperken op 0,5 mbit behalve voor de admin, zal je "admin" en kleiner marking nummer moeten geven als "HTTP" Voorbeeld:

Naam      Omschrijving              Mark
Admin     ip adres van admin pc       1
HTTP      Alle HTTP verkeer          50
Misc      Alle overige pakketjes    170

In deze setup zal de pc van Admin alleen door de marking 1 worden verwerkt

Voorbeeld invulling:

Name     Protocol   Source   Destination   SrcPort DstPort  Mark
AdminUp  tcp        10.0.0.5                                 1
AdminDwn tcp                 10.0.0.5                        1
HTTP     tcp                                       80       10
SMTP     tcp                                       25       20

Let op!: Wanneer je een firewall regel maakt (en dus aan een mark koppelt) die je niet invoert als service zal deze niet worden ge-shaped (behalve door de 'root'node welke de totale snelheid van een interface bepaald. EDIT Eric: Ow ja? volgens mij helemaal niet geshaped! hij valt niet in MISC en ook niet in en andere filter dus onbeperkte snelheid! )

Creating Providers

Klik op een leeg stuk in het diagram en rechts verschijnt een formulier. In dit formulier vullen we in:

Name:   [Naam van ISP]
Type:   Provider
Parent: Root (root)

En vervolgens kiezen we 'Add'


We krijgen nu een volgend formulier met daarin de velden:

IPRoute tabel

Iedere provider (en gecombineerde) moet een uniek nummer hebben in deze tabel, ik begin meestal bij 150, 151, 152... enz.

Default Provider

Wanneer we een gecombineerde uplink/provider hebben MOET deze ook default zijn. Verder geeft dit aan over welke provider het verkeer zal gaan wat niet wordt behandeld in de traffic shaper

Uplink

Hier selecteren we de WAN adapter welke we net hebben aangemaakt. Indien het een gecombineerde uplink is kunnen we hier meerdere Uplinks aangeven

Weight

Hierin wordt de verdeling aangegeven van het verkeer (indien er meerdere WAN adapters worden gebruikt) Dit getal dient tenminste 1 te zijn. Het is zo bijvoorbeeld mogelijk om het verkeer in de verhouding 2:1 te verdelen over 2 uplinks.

Er wordt in de TC scripts nog geen rekening gehouden met het weight, de router zal de pakketjes wel in deze verhouding verdelen over de providers maar bij het traffic shapen wordt er gewoon 50:50 getelt.

Tenslotte klikken we dan op 'Commit' en onze provider zal zichtbaar worden.

Creating Services

De laatste stap is het toevoegen van Services. Deze services worden aan een marking gekoppeld en daarbij wordt het upload/download limiet ingesteld.

We klikken weer op een leeg stuk in het diagram en kiezen bij Type voor Service. De Parent moet een geldige provider zijn, de naam mag je zelf verzinnen.

Per service kan een Rate en een Max worden ingesteld. Het idee is dat de Max een limiet aangeeft, en de Rate een gegarandeerd minimum. Ook is het mogelijk om een Prioriteit mee te geven. Overige bandbreedte wordt dan in volgorde van prioriteit verdeeld over de overige Services. Prioriteit 0 is de hoogste. Echter zal het Max nooit worden overschreden.

Voorbeeld:

WAN capaciteit 20 kb/s
Naam      Rate       Max      Verbruik
HTTP    10kb/s    15kb/s         5kb/s
FTP     10kb/s    15kb/s            ??

In dit voorbeeld zal er voor FTP 15kb/sec beschikbaar zijn

Voorbeeld:

WAN capaciteit 20 kb/s
Naam      Rate       Max      Verbruik
HTTP    10kb/s    15kb/s         1kb/s
FTP     10kb/s    15kb/s            ??

In dit voorbeeld zal er voor FTP toch maar 15kb/sec beschikbaar zijn, dit is omdat 'Max' nooit zal worden overschreden.

Voorbeeld:

WAN capaciteit 20 kb/s
Naam      Rate       Max      Verbruik     Prio
HTTP     5kb/s    15kb/s         5kb/s        0
FTP      5kb/s    15kb/s            ??        1
SMTP     5kb/s    15kb/s            ??        2

In dit voorbeeld zal het overige verkeer eerst aan FTP worden toegekend, en pas daarna aan SMTP. Uiteraard wordt er wel altijd minimaal voldaan aan de 'Rate' instelling. Dus FTP kan nooit ervoor zorgen dat SMTP minder dan 5 krijgt (tenzij SMTP minder nodig heeft).

Commit

Wanneer we tenslotte op commit drukken zal de config worden uitgevoerd op de server. De scripts die hierbij zijn gegenereerd kunnen worden ingezien.

Bij een commit:

  • Worden er eerst een aantal zaken opgeruimd
    • Oude TC regels
    • IP Rule zaken
    • IProute tabellen
    • iptables regels (dit gebeurt nu nog een eindje verderop)
  • Wordt vervolgens IPRoute ingesteld, het verdelen van de services over de beschikbare uplinks
  • Wordt vervolgens tc, de traffic shaper, ingesteld
  • En tenslotte wordt iptables ingesteld, om de juiste services de juiste markings mee te geven (Deze markings worden door tc en iproute gebruikt om het verkeer te routeren en te shapen)

Beheren

Wanneer de 1e setup is gedaan zal het ding nog beheerd moeten worden

Tips

Zorg ervoor dat de Rate van de services samen niet hoger komt als de Rate van je uplink (je kan niet meer garanderen dan je hebt!). * Wanneer je dit in orde hebt zal het "lenen" van bandbreedte onderling ook netjes volgens de prioriteiten worden afgehandeld.

  • Zorg ervoor dat je je instellingen kan controleren, cacti is een prima tool om dit in de gaten te houden.

Cacti statistieken

Bij het pakket zitten ook templates en php files om de statistieken van tc in cacti weer te geven. Uitleg hierover volgt!

Shape onnauwkeurigheid

Oude situatie

       Totaal 2x 1 mbit download

                   
               [interne nic]
                     |
                     |
           [root node Max 2mbit]
                /    |    \   \
               /     |     \   -----------\
              /      |      \              \
             /       |       \              \
            /        |        \              \
[HTTP        ]  [SSH        ] [MAIL        ] [MISC       ]
 Min:  512kbit   Min: 128kbit  Min:  256kbit  Min: 128kbit
 Max: 1024kbit   Max: 256kbit  Max: 1024kbit  Max: 512kbit

Nieuwe Situatie

              [interne nic]
                    |
                    |
          [root node Max 2mbit]
                |        \   
                |         \   
      [Provider A+B]  [ Provider A ]   
      [ Max 2 mbit ]  [ Max 1 mbit ]    
         /     \             \    \-----------   
        /       \             \               \
       /         \             \               \
[HTTP        ]  [SSH        ] [MAIL         ]  [MISC        ]  
 Min:  512kbit   Min: 128kbit  Min:  256kbit    Min: 128kbit
 Max: 1024kbit   Max: 256kbit  Max: 1024kbit    Max: 512kbit

Uitleg

Wanneer je in de oude situatie MISC met 512kbit belast en MAIL met 1024kbit wordt er van Provider A 1,25 mbit verlangt. Dit gaat mis

In de nieuwe situatie wordt een niveau hoger dan het limiet gelegd bij 1 mbit. Zo komen de rate's en prioriteiten beter tot hun recht. Hier werd in de oude situatie niets mee gedaan

Wanneer we echter HTTP en MAIL vol gaan belasten blijft het probleem bestaan omdat Provider A en Provider A+B een uplink delen. Hier is momenteel niet echt veel aan te doen.