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".
Attachments (1)
- switch_rrd.png (4.8 KB) - added by 14 years ago.
Download all attachments as: .zip