12.2. Le classificateur route

Ce classificateur filtre en se basant sur les informations des tables de routage. Quand un paquet passant à travers les classes et en atteint une qui est marquée avec le filtre route, il divise le paquet en se basant sur l'information de la table de routage.

# tc filter add dev eth1 parent 1:0 protocol ip prio 100 route

Ici, nous ajoutons un classificateur route sur le nœud parent 1:0, avec la priorité 100. Quand un paquet atteint ce nœud (ce qui arrive immédiatement, puisqu'il est racine), il consulte la table de routage et si une entrée de la table correspond, il envoie le paquet vers la classe donnée et lui donne une priorité de 100. Ensuite, vous ajoutez l'entrée de routage appropriée pour finalement activer les choses.

L'astuce ici est de définir realm en se basant soit sur la destination, soit sur la source. Voici la façon de procéder :

# ip route add Host/Network via Gateway dev Device realm RealmNumber

Par exemple, nous pouvons définir notre réseau de destination 192.168.10.0 avec le nombre realm égal à 10 :

# ip route add 192.168.10.0/24 via 192.168.10.1 dev eth1 realm 10

Quand on ajoute des filtres route, on peut utiliser les nombres realm pour représenter les réseaux ou les hôtes et spécifier quelle est la correspondance entre les routes et les filtres.

# tc filter add dev eth1 parent 1:0 protocol ip prio 100 \
  route to 10 classid 1:10

La règle ci-dessus indique que les paquets allant vers le réseau 192.168.10.0 correspondent à la classe 1:10.

Le filtre route peut aussi être utilisé avec les routes sources. Par exemple, il y a un sous-réseau attaché à notre routeur Linux sur eth2.

# ip route add 192.168.2.0/24 dev eth2 realm 2
# tc filter add dev eth1 parent 1:0 protocol ip prio 100 \
  route from 2 classid 1:2

Ici, le filtre spécifie que les paquets venant du réseau 192.168.2.0 (realm 2) correspondront à la classe 1:2.