Ceci est une ancienne révision du document !


Le multicast

Le multicast, ou multidiffusion, permet la diffusion vers plusieurs partenaires sur un réseau. Ces partenaires ont, en plus de leur adresse IP de classe A, B ou C (adresse privée), une adresse de multicast : l'adresse de groupe. Cette adresse est de classe D, c'est à dire qu'elle se trouve dans la plage allant de 224.0.0.0 jusqu'à 239.255.255.255.

Pour simplifier on peut dire que le multicast est un broadcast sélectif.

On parle de multicast statique lorsque, dans un même réseau, on défini une adresse de groupe pour atteindre certains PC.
Il est beaucoup question de multicast dans le domaine de la diffusion audio et/ou vidéo ou encore du routage, ce n'est pas ce qui est détaillé ici.

Configuration du noyau Linux

Le noyau Linux que vous utilisé doit être compilé avec l'option CONFIG_IP_MULTICAST activée. pour le vérifier :

# cat /boot/config-`uname -r` | grep CONFIG_IP_MULTICAST
CONFIG_IP_MULTICAST=y

Si CONFIG_IP_MULTICAST=n, vous devez recompiler votre noyau en activant cette option ou en installer une version avec cette option activée.

Par défaut Ubuntu est configuré de sorte de ne pas activer les fonctions multicast. Pour vérifier cela :

# sysctl net.ipv4.icmp_echo_ignore_broadcasts
net.ipv4.icmp_echo_ignore_broadcasts = 1

Les fonctionnalités multicast sont déactivées.
Pour les activer :

# sudo sysctl net.ipv4.icmp_echo_ignore_broadcasts=0
net.ipv4.icmp_echo_ignore_broadcasts = 0

Vérifions que le multicast est fonctionnel :

# ping 224.0.0.1 -c 3
PING 224.0.0.1 (224.0.0.1) 56(84) bytes of data.
64 bytes from 192.168.1.141: icmp_seq=1 ttl=64 time=0.037 ms
64 bytes from 192.168.1.200: icmp_seq=1 ttl=64 time=1.94 ms (DUP!)
64 bytes from 192.168.1.141: icmp_seq=2 ttl=64 time=0.025 ms
64 bytes from 192.168.1.200: icmp_seq=2 ttl=64 time=1.76 ms (DUP!)
64 bytes from 192.168.1.141: icmp_seq=3 ttl=64 time=0.024 ms

--- 224.0.0.1 ping statistics ---
3 packets transmitted, 3 received, +2 duplicates, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.024/0.760/1.949/0.898 ms

Explications : l'adrese IP 224.0.0.1 est une adresse pour atteindre tous les partenaires du réseau qui "savent faire" du multicast.
l'adresse IP de mon PC est 192.168.1.141, mon PC répond. Mais l'adresse 192.168.1.200 répond aussi au ping, c'est mon routeur ADSL, il "sait faire" du multicast et donc il répond à l'adresse 224.0.0.1 lui aussi.

Comment rejoindre une adresse de groupe multicast statique

Pour le multicast statique privé, la plage d'adresses de groupe à utiliser va de 239.0.0.1 à 239.255.255.254.
Dès qu'un partenaire du réseau a rejoin une adresse de groupe multicast, celle-ci devient "fonctionnelle", il n'y a pas de procédure de création d'adresse de groupe.

L'outil qui sert à rejoindre une adresse de groupe multicast est smcroute. Il se lance comme un daemon et gère le multicast.

# sudo apt-get install smcroute

Pour rejoindre (join) l'adresse de groupe 239.0.0.10 :

# sudo smcroute -j eth0 239.0.0.10

Pour quiter (leave) l'adresse de groupe 239.0.0.10 :

# sudo smcroute -l eth0 239.0.0.10
Pour faire en sorte que le PC rejoigne une adresse de groupe à chaque démarrage, il faut ajouter la commande "smcroute -j …" dans le fichier /etc/smcroute/startup.sh.

Exemple

Pour l'exemple, j'ai utilisé une machine virtuelle dans VMware-player qui est membre de l'adresse de groupe 239.0.0.10. J'ai fait en sorte que la carte virtuelle vmnet8 qui relie mon PC au PC virtuel dans VMware-player rejoigne la même adresse de groupe, puis j'ai "pinger" cette adresse pour vérifier.
Avant l'opération, seul le PC virtuel répond au ping. Puis mon PC rejoin l'adresse de groupe. Et enfin les 2 PC répondent au ping.

# ping 239.0.0.10 -c 3 -I vmnet8
PING 239.0.0.10 (239.0.0.10) from 192.168.214.1 vmnet8: 56(84) bytes of data.
64 bytes from 192.168.214.10: icmp_seq=1 ttl=64 time=0.602 ms
64 bytes from 192.168.214.10: icmp_seq=2 ttl=64 time=0.303 ms
64 bytes from 192.168.214.10: icmp_seq=3 ttl=64 time=0.415 ms

--- 239.0.0.10 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.303/0.440/0.602/0.123 ms
# sudo smcroute -j vmnet8 239.0.0.10
# ping 239.0.0.10 -c 3 -I vmnet8
PING 239.0.0.10 (239.0.0.10) from 192.168.214.1 vmnet8: 56(84) bytes of data.
64 bytes from 192.168.214.1: icmp_seq=1 ttl=64 time=0.042 ms
64 bytes from 192.168.214.10: icmp_seq=1 ttl=64 time=0.329 ms (DUP!)
64 bytes from 192.168.214.1: icmp_seq=2 ttl=64 time=0.047 ms
64 bytes from 192.168.214.10: icmp_seq=2 ttl=64 time=0.326 ms (DUP!)
64 bytes from 192.168.214.1: icmp_seq=3 ttl=64 time=0.046 ms

--- 239.0.0.10 ping statistics ---
3 packets transmitted, 3 received, +2 duplicates, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.042/0.158/0.329/0.138 ms

( source )

Adresse Description
224.0.0.0Adresse de base (réservée)
224.0.0.1Tous les systèmes multicast sur ce sous-réseau
224.0.0.2Tous les routeurs multicast sur ce sous-réseau
224.0.0.3Non affecté
224.0.0.4Routeurs DVMRP
224.0.0.5Tous les routeurs OSPFIGP
224.0.0.6Routeurs spécifiés OSPFIGP
224.0.0.7Routeurs ST
224.0.0.8Hôtes ST
224.0.0.9Routeurs RIP2
224.0.0.10IGRP
224.0.0.11Agents mobiles
224.0.0.12-255Non affectés
224.0.1.0Groupes de gestionnaires VMTP
224.0.1.1Network Time Protocol
224.0.1.2SGI-Dogfight
224.0.1.3Rwhod
224.0.1.4VNP
224.0.1.5Artificial Horizons-Aviator
224.0.1.6Name Service Server
224.0.1.7AUDIONEWS
224.0.1.8Service d’informations SUN NIS+
224.0.1.9Multicast transport protocol
224.0.1.10IETF-1-LOW-AUDIO
224.0.1.11IETF-1-AUDION
224.0.1.12IETF-1-VIDEO
224.0.1.13IETF-2-LOW-AUDIO
224.0.1.14IETF-2-AUDION
224.0.1.15IETF-2-VIDEO
224.0.1.16MUSIC-SERVICE
224.0.1.17SEANET-TELEMETRY
224.0.1.18SEANET-IMAGE
224.0.1.19MLOADD
224.0.1.20Expérimentations privées
224.0.1.21DVMRP on MOSPF
224.0.1.22SVRLOC
224.0.1.23XINGTV
224.0.1.24Microsoft-ds
224.0.1.25Nbc-pro
224.0.1.26Nbc-pnf
224.0.1.27-255Non affectés
224.0.2.1Groupe « rwho » (BSD, non officiel)
224.0.2.2SUN RPC PMAPPROC_CALLIT
224.0.3.0-255Service générique RFE
224.0.4.0-255Conférences individuelles RFE
224.0.5.0-127Groupes CDPD
224.0.5.128-255Non affectés
224.0.6.0-127Projet ISIS de Cornell
224.0.6.128-255Non affecté
224.1.0.0-255.255Groupes multidiffusion ST
224.2.0.0-255.255Appels conférences multimédias
224.252.0.0-255.255.255Groupes transcient DIS
232.0.0.0-255.255.255Groupes transcient VMTP
  • multicast.1228911026.txt.gz
  • Dernière modification: Le 10/12/2008, 13:10
  • par MrWaloo