TrafficManagement
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.