5 votes

Utilisation de tc pour diminuer la bande passante vers une adresse de destination spécifique

J'essaie de trouver le chemin le plus court entre deux hôtes H1 et H2 en utilisant le code de Dijkstra. En fixant une condition dans l'un des commutateurs sur ce chemin. La condition est la suivante : si le paquet est envoyé à H2, le chemin est automatiquement modifié.

J'utilise Mininet, je pensais utiliser tc pour diminuer la bande passante sortante en filtrant les paquets qui entrent dans le commutateur et qui sont envoyés à H2, le code Dijkstra changera le chemin.

Je veux demander, est-ce que je peux utiliser (tc qdisc) pour contrôler l'utilisation de la bande passante sortante sur un lien donné ? Est-ce que tc effet sur la liaison physique ou les liaisons simulées ?

7voto

Ashly Points 1

Oui, le tc est conçu pour cela. TC fonctionne sur tous les types d'interfaces (physiques et logicielles). L'ordonnanceur de file d'attente le plus simple est le htb (Seau de jetons hiérarchique).

Configuration simple typique :

  • discipline de la file d'attente racine htb
  • classe racine (bande passante de 100%)
  • classe feuille par défaut (garantie de bande passante de 80%, jusqu'à 100% de bande passante)
  • bande passante limitée feuille classe 1 (garantie de 10% de la bande passante)
  • feuille à bande passante limitée de classe 2 (garantie de 10 % de la bande passante, jusqu'à 100 % de la bande passante)
  • discipline de file d'attente sfq sur chaque classe feuille pour un partage équitable de la limite entre les flux

La largeur de bande sommaire des classes enfantines ne doit pas dépasser la largeur de bande de la classe parent. Sinon, le planificateur ne sera pas précis.

Supposez que la bande passante de l'interface est de 100Mbit/s. Ainsi, les commandes pour votre configuration ressembleront à :

tc qdisc add dev enp4s0f0 root handle 1: htb default 10

tc class add dev enp4s0f0 parent 1:  classid 1:1  htb rate 100Mbit ceil 100Mbit quantum 15000
tc class add dev enp4s0f0 parent 1:1 classid 1:10 htb rate 80Mbit  ceil 100Mbit quantum 15000
tc class add dev enp4s0f0 parent 1:1 classid 1:11 htb rate 10Mbit  ceil 10Mbit  quantum 15000
tc class add dev enp4s0f0 parent 1:1 classid 1:12 htb rate 10Mbit  ceil 100Mbit quantum 15000

tc qdisc add dev enp4s0f0 parent 1:10 handle 10: sfq
tc qdisc add dev enp4s0f0 parent 1:11 handle 11: sfq
tc qdisc add dev enp4s0f0 parent 1:12 handle 12: sfq

Après avoir configuré la hiérarchie des classes, il convient de configurer la classification. Il existe de nombreux types de classificateurs avec différentes caractéristiques et différents niveaux d'amitié avec l'utilisateur. Le classificateur vérifie les paquets selon les critères configurés. Si un paquet correspond, la classe est attribuée au paquet.

tc filter add dev <iface> parent 1: prio 1 protocol ip 800::1 u32 match dst ip 192.168.10.2/32 classid 1:11
tc filter add dev <iface> parent 1: prio 1 protocol ip 800::2 u32 match dst ip 192.168.10.0/24 classid 1:12

Dans ce petit exemple, les paquets destinés à l'hôte 192.168.10.2 passera à la classe 1:11, et, par conséquent, sera limité à 10Mbit/s. Les paquets à destination d'autres adresses de 192.168.10.0/24 seront transmis à la classe 1:12. Tous les autres paquets seront transmis à la classe par défaut (1:10).

Il s'agit d'un point de départ rapide pour l'utilisation de l'outil de gestion de l'environnement. tc outil.

Si vous avez des questions, posez-les.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X