Chapitre 8. Routage multidistribution (multicast)

FIXME: Pas de rédacteur !

Le Multicast-HOWTO est (relativement) ancien. De ce fait, il peut être imprécis ou induire en erreur à certains endroits.

Avant que vous ne puissiez faire du routage multidistribution, le noyau Linux a besoin d'être configuré pour supporter le type de routage multidistribution que vous voulez faire. Ceci, à son tour, exige une décision quant au choix du protocole de routage multidistribution que vous vous préparez à utiliser. Il y a essentiellement quatre types « communs » de protocoles : DVMRP (la version multidistribution du protocole RIP unicast), MOSPF (la même chose, mais pour OSPF), PIM-SM (Protocol Independant Multicasting - Sparse Mode) qui suppose que les utilisateurs de n'importe quel groupe de multidistribution sont dispersés plutôt que regroupés) et PIM-DM (le même, mais Dense Mode) qui suppose qu'il y aura un regroupement significatif des utilisateurs d'un même groupe de multidistribution.

On pourra noter que ces options n'apparaissent pas dans le noyau Linux. Ceci s'explique par le fait que le protocole lui-même est géré par une application de routage, comme Zebra, mrouted ou pind. Cependant, vous devez avoir une bonne idée de ce que vous allez utiliser, de manière à sélectionner les bonnes options dans le noyau.

Pour tout routage multidistribution, vous avez forcément besoin de sélectionner les options multicasting et multicasting routing. Ceci est suffisant pour DVMRP et MOSPF. Dans le cas de PIM, vous devez également valider les options PIMv1 ou PIMv2 suivant que le réseau que vous connectez utilise la version 1 ou 2 du protocole PIM.

Une fois que tout cela a été réalisé, et que votre nouveau noyau a été compilé, vous verrez au démarrage que IGMP est inclus dans la liste des protocoles IP. Celui-ci est un protocole permettant de gérer les groupes multidistribution. Au moment de la rédaction, Linux ne supportait que les versions 1 et 2 de IGMP, bien que la version 3 existe et ait été documentée. Ceci ne va pas vraiment nous affecter dans la mesure où IGMPv3 est encore trop récent pour que ses fonctionnalités supplémentaires soient largement utilisées. Puisque IGMP s'occupe des groupes, seules les fonctionnalités présentes dans la plus simple version de IGMP gérant un groupe entier seront utilisées. IGMPv2 sera utilisé dans la plupart des cas, bien que IGMPv1 puisse encore être rencontré.

Jusque-là, c'est bon. Nous avons activé la multidistribution. Nous devons dire au noyau de l'utiliser concrètement. Nous allons donc démarrer le routage. Ceci signifie que nous ajoutons un réseau virtuel de multidistribution à la table du routeur :

ip route add 224.0.0.0/4 dev eth0

(En supposant bien sûr, que vous diffusez à travers eth0 ! Remplacez-le par le périphérique de votre choix, si nécessaire.)

Maintenant, dire à Linux de transmettre les paquets...

echo 1 > /proc/sys/net/ipv4/ip_forward

Arrivé ici, il se peut que vous vous demandiez si ceci va faire quelque chose. Donc, pour tester notre connexion, nous pinguons le groupe par défaut, 224.0.0.1, pour voir si des machines sont présentes. Toutes les machines du réseau local avec la multidistribution activée DEVRAIENT répondre, et aucune autre. Vous remarquerez qu'aucune des machines qui répondent ne le fait avec l'adresse IP 224.0.0.1. Quelle surprise ! :) Ceci est une adresse de groupe (une « diffusion » pour les abonnés) et tous les membres du groupe répondront avec leur propre adresse, et non celle du groupe.

ping -c 2 224.0.0.1

Maintenant, vous êtes prêt à faire du vrai routage multidistribution. Bien, en supposant que vous ayez deux réseaux à router l'un vers l'autre.

(A continuer !)