wiki:InsiaAdminSysTp3_9

Sommaire

TP - QoS

Ressources:

1. Mise en place

Munissez-vous de votre image Qemu de votre Etch favorite, et installez le paquet iproute (qui contient notamment le programme tc):

# aptitude install iproute

Avant même de jouer avec votre QoS, constatez que tc considère que votre interface possède une qdisc de type FIFO par défaut:

# tc qdisc
# watch -n1 tc -s qdisc ls
...

2. Limitation simple de bande passante

Nous allons générer un traffic web sans déranger le réseau de l'école de façon simple:

  • Coté machine virtuelle nous allons utiliser un serveur web écrit en quelques lignes de shell et qui sait renvoyer un fichier de taille infinie (rempli de zéros!): source:/insia/unix/qos/zero_httpd
  • D'autre part un simple wget pour générer et mesurer le traffic suffira: wget -O /dev/null http://localhost:8085/, assorti du tunnel inverse qui convient (ssh -fNR 8085:localhost:8085 login@machine.linux.insia.org)

A l'aide d'un qdisc de type TBF (man tc-tbf), établissez une limite de bande passante sortante de 100 KB/s. Vérifiez son efficacité, la possibilité de "bursts". Lancez un deuxième "wget" en parallèle, que se passe-t-il ?

Illustrez le principe du "Tocken Bucket" sur le graphe suivant (comment il limite la bande passante, par exemple la ligne route, et accpete les dépassements):

3. Limitation différenciée (classfull)

Cette fois on se propose d'appliquer un qdisc de type HTB sur notre interface et d'appliquer les règles de traffic suivant:

  • Le traffic web sera limité à 100 KB/s, et pourra "emprunter" de la bande passante disponible
  • Le traffic mail sera limité à 20 KB/s (inconditionnellement)

Utilisation du réseau: vous aurez besoin d'un réseau réel via vdeqemu. Un script est à votre disposition pour simplifier sa configuration dans /morphale/debian/qemu-insia.

N'hésitez pas à faire des dessins !

Corrigé: voir source:/insia/unix/qos/qos-htb.sh

4. Gestion de priorité

On veut vérifier les propriétés d'une classificiation prioritaire simple basée sur le qdisc PRIO en gérant deux classes: (choisissez comment vous allez le combiner avec le HTB ci-dessus):

  • Classe "prioritaire": les paquets de type SSH seront prioritaires sur tous les autres et auront donc une latence minimale et quasi constante
  • Classe "normale": tous les autres paquets sont émis si la classe prioritaire n'est pas occupée

Afin de vérifier facilement les effets de la latence, vous allez d'abord assigner un TBF à votre interface avec une "large" file d'attente, puis vous y attacherez un PRIO en tant que descendant:

# tc qdisc replace dev eth0 root handle 1: tbf rate 100kbps latency 5s
# tc qdisc add dev eth0 parent 1: handle 2: prio bands 2

Il vous reste alors à configurer les classes 2:1 (prioritaire) et 2:2 (autre trafic) et le(s) filtre(s) respectif(s).

Question subsidaire: vérifier qu'avec un trafic intense sur SSH (ex: transfert SCP) vous vous accaparez l'interface et le reste du traffic sortant chute. Rajoutez un qdisc TBF en série sur la bande prioritaire en limitant par exemple à 10kbps et vérifier que votre configuration est désormais "stable".

Last modified 13 years ago Last modified on May 28, 2007, 4:32:58 PM

Attachments (1)

Download all attachments as: .zip