Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
multicast [Le 10/12/2008, 13:14] MrWaloo |
multicast [Le 11/09/2022, 11:47] (Version actuelle) moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892) |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag>multicast ipv6 reseau }} | ||
+ | |||
+ | ---- | ||
+ | |||
====== Le multicast ====== | ====== Le multicast ====== | ||
===== Définition ===== | ===== Définition ===== | ||
- | Le [[http://fr.wikipedia.org/wiki/Multicast|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. | + | Le [[https://fr.wikipedia.org/wiki/Multicast|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. |
+ | |||
+ | Lorsqu'une application s'adresse à une adresse de groupe, tous les éléments du réseau (ordinateur, imprimante, switch managable, routeur, etc.) qui font partie de ce groupe réceptionnent la trame TCP/IP. | ||
Pour simplifier on peut dire que le multicast est un broadcast sélectif. | Pour simplifier on peut dire que le multicast est un broadcast sélectif. | ||
===== Mise en place d'un multicast statique ===== | ===== Mise en place d'un multicast statique ===== | ||
- | <note>On parle de multicast statique lorsque, dans un même réseau, on défini une adresse de groupe pour atteindre certains PC.\\ | + | <note>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((c'est un appel à contribution, si vous avez des connaissances dans ces domaines et si le cœur vous en dit, enrichissez cette documentation)).</note> |
- | 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.</note> | + | |
+ | ==== Définition ==== | ||
+ | On parle de multicast statique lorsque, dans un même réseau, on **définit** une adresse de groupe pour atteindre certains éléments du réseau.\\ | ||
+ | C'est à dire que les différents éléments du réseau sont configurés pour accepter des trames TCP/IP adressées à une adresse de groupe. | ||
+ | |||
+ | On peut imaginer, par exemple, un cluster de PC au sein d'un réseau. Pour la communication entre ces PC, sachant que le nombre de PC pourrait être amené à varier, le plus simple est de définir une adresse unique à laquelle tous les PC du cluster répondent : une adresse de groupe ⇒ le multicast est né.\\ | ||
+ | Le fait de n'avoir qu'une seule adresse permet de ne pas avoir à gérer la liste des adresses IP de tous les PC du cluster. Il suffit qu'un PC fasse partie du groupe multicast pour faire partie du cluster.\\ | ||
+ | En parlant de cluster, le multicast est utilisable pour [[:heartbeat]] | ||
==== Configuration du noyau Linux ==== | ==== 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 : | + | Le noyau Linux que vous utilisez doit être compilé avec l'option CONFIG_IP_MULTICAST activée. pour le vérifier : |
- | <code># cat /boot/config-`uname -r` | grep CONFIG_IP_MULTICAST | + | <code>cat /boot/config-`uname -r` | grep CONFIG_IP_MULTICAST</code> |
- | CONFIG_IP_MULTICAST=y</code> | + | <file>CONFIG_IP_MULTICAST=y</file> |
Si CONFIG_IP_MULTICAST=n, vous devez recompiler votre noyau en activant cette option ou en installer une version avec cette option activée. | Si CONFIG_IP_MULTICAST=n, vous devez recompiler votre noyau en activant cette option ou en installer une version avec cette option activée. | ||
+ | ==== Activation de la fonctionnalité multicast ==== | ||
Par défaut Ubuntu est configuré de sorte de ne pas activer les fonctions multicast. Pour vérifier cela : | Par défaut Ubuntu est configuré de sorte de ne pas activer les fonctions multicast. Pour vérifier cela : | ||
- | <code># sysctl net.ipv4.icmp_echo_ignore_broadcasts | + | <code>sysctl net.ipv4.icmp_echo_ignore_broadcasts</code> |
- | net.ipv4.icmp_echo_ignore_broadcasts = 1</code> | + | <file>net.ipv4.icmp_echo_ignore_broadcasts = 1</file> |
- | Les fonctionnalités multicast sont déactivées.\\ | + | Les fonctionnalités multicast sont désactivées.\\ |
Pour les activer : | Pour les activer : | ||
- | <code># sudo sysctl net.ipv4.icmp_echo_ignore_broadcasts=0 | + | <code>sudo sysctl net.ipv4.icmp_echo_ignore_broadcasts=0</code> |
- | net.ipv4.icmp_echo_ignore_broadcasts = 0</code> | + | <file>net.ipv4.icmp_echo_ignore_broadcasts = 0</file> |
Vérifions que le multicast est fonctionnel : | Vérifions que le multicast est fonctionnel : | ||
- | <code># ping 224.0.0.1 -c 3 | + | <code>ping 224.0.0.1 -c 3</code> |
- | PING 224.0.0.1 (224.0.0.1) 56(84) bytes of data. | + | <file>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.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.200: icmp_seq=1 ttl=64 time=1.94 ms (DUP!) | ||
Ligne 34: | Ligne 48: | ||
--- 224.0.0.1 ping statistics --- | --- 224.0.0.1 ping statistics --- | ||
3 packets transmitted, 3 received, +2 duplicates, 0% packet loss, time 1999ms | 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 | + | rtt min/avg/max/mdev = 0.024/0.760/1.949/0.898 ms</file> |
- | </code> | + | |
- | -> **Explications :** l'adrese IP 224.0.0.1 est une adresse pour atteindre tous les partenaires du réseau qui "savent faire" du multicast.\\ | + | -> **Explications :** l'adresse IP 224.0.0.1 est une adresse pour atteindre tous les partenaires du réseau qui gèrent 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. | + | 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 gère le multicast et donc il répond à l'adresse 224.0.0.1 lui aussi. |
+ | |||
+ | Pour faire en sorte que cette modification reste même après un redémarrage, il faut éditer le fichier **/etc/sysctl.conf** et remplacer | ||
+ | <file># Ignore ICMP broadcasts | ||
+ | #net.ipv4.icmp_echo_ignore_broadcasts = 1</file> | ||
+ | par | ||
+ | <file># Ignore ICMP broadcasts | ||
+ | net.ipv4.icmp_echo_ignore_broadcasts = 0</file> | ||
==== Comment rejoindre une adresse de groupe multicast statique ==== | ==== Comment rejoindre une adresse de groupe multicast statique ==== | ||
<note>Pour le multicast statique privé, la plage d'adresses de groupe à utiliser va de 239.0.0.1 à 239.255.255.254.</note> | <note>Pour le multicast statique privé, la plage d'adresses de groupe à utiliser va de 239.0.0.1 à 239.255.255.254.</note> | ||
- | <note>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.</note> | + | <note>Dès qu'un partenaire du réseau a rejoint une adresse de groupe multicast, celle-ci devient « fonctionnelle », il n'y a pas de procédure de création d'adresse de groupe.</note> |
- | L'outil qui sert à rejoindre une adresse de groupe multicast est [[http://www.cschill.de/smcroute/|smcroute]]. Il se lance comme un daemon et gère le multicast. | + | L'outil qui sert à rejoindre une adresse de groupe multicast est [[http://www.cschill.de/smcroute/|smcroute]]. Il se lance comme un daemon et gère le multicast.\\ |
- | <code># sudo apt-get install smcroute</code> | + | [[:tutoriel:comment_installer_un_paquet|Installez le paquet]] smcroute. |
- | Pour rejoindre (//join//) l'adresse de groupe 239.0.0.10 : | + | |
- | <code># sudo smcroute -j eth0 239.0.0.10</code> | + | |
- | Pour quiter (//leave//) l'adresse de groupe 239.0.0.10 : | + | |
- | <code># sudo smcroute -l eth0 239.0.0.10</code> | + | |
- | <note important>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.</note> | + | Pour rejoindre (//Join//) l'adresse de groupe 239.0.0.10 : |
+ | <code>sudo smcroute -j eth0 239.0.0.10</code> | ||
+ | Pour quiter (//Leave//) l'adresse de groupe 239.0.0.10 : | ||
+ | <code>sudo smcroute -l eth0 239.0.0.10</code> | ||
+ | |||
+ | <note important>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**.</note> | ||
=== Exemple === | === 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.\\ | + | 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 « pingué » cette adresse pour vérifier.\\ |
Avant l'opération, seul le PC virtuel répond au ping. Puis mon PC rejoint l'adresse de groupe. Et enfin les 2 PC répondent au ping. | Avant l'opération, seul le PC virtuel répond au ping. Puis mon PC rejoint l'adresse de groupe. Et enfin les 2 PC répondent au ping. | ||
- | <code># ping 239.0.0.10 -c 3 -I vmnet8 | + | <code>ping 239.0.0.10 -c 3 -I vmnet8</code> |
- | PING 239.0.0.10 (239.0.0.10) from 192.168.214.1 vmnet8: 56(84) bytes of data. | + | <file>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=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=2 ttl=64 time=0.303 ms | ||
Ligne 62: | Ligne 84: | ||
--- 239.0.0.10 ping statistics --- | --- 239.0.0.10 ping statistics --- | ||
3 packets transmitted, 3 received, 0% packet loss, time 1999ms | 3 packets transmitted, 3 received, 0% packet loss, time 1999ms | ||
- | rtt min/avg/max/mdev = 0.303/0.440/0.602/0.123 ms | + | rtt min/avg/max/mdev = 0.303/0.440/0.602/0.123 ms</file> |
- | + | <code>sudo smcroute -j vmnet8 239.0.0.10 | |
- | # sudo smcroute -j vmnet8 239.0.0.10 | + | ping 239.0.0.10 -c 3 -I vmnet8</code> |
- | + | <file>PING 239.0.0.10 (239.0.0.10) from 192.168.214.1 vmnet8: 56(84) bytes of data. | |
- | # 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.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.10: icmp_seq=1 ttl=64 time=0.329 ms (DUP!) | ||
Ligne 76: | Ligne 96: | ||
--- 239.0.0.10 ping statistics --- | --- 239.0.0.10 ping statistics --- | ||
3 packets transmitted, 3 received, +2 duplicates, 0% packet loss, time 1999ms | 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</code> | + | rtt min/avg/max/mdev = 0.042/0.158/0.329/0.138 ms</file> |
===== Affectation standard d’adresses de multidiffusion ===== | ===== Affectation standard d’adresses de multidiffusion ===== | ||
+ | ==== IPv4 ==== | ||
([[http://www.vije.net/ressources/informatique/reseaux/ip.pdf|source]]) | ([[http://www.vije.net/ressources/informatique/reseaux/ip.pdf|source]]) | ||
- | ^Adresse ^Description ^ | + | ^Adresse ^Description ^ Adresse ^Description ^ |
- | |224.0.0.0|Adresse de base (réservée)| | + | |224.0.0.0|Adresse de base (réservée)| 224.0.1.14|IETF-2-AUDION| |
- | |224.0.0.1|Tous les systèmes multicast sur ce sous-réseau| | + | |224.0.0.1|Tous les systèmes multicast sur ce sous-réseau| 224.0.1.15|IETF-2-VIDEO| |
- | |224.0.0.2|Tous les routeurs multicast sur ce sous-réseau| | + | |224.0.0.2|Tous les routeurs multicast sur ce sous-réseau| 224.0.1.16|MUSIC-SERVICE| |
- | |224.0.0.3|Non affecté| | + | |224.0.0.3|Non affecté| 224.0.1.17|SEANET-TELEMETRY| |
- | |224.0.0.4|Routeurs DVMRP| | + | |224.0.0.4|Routeurs DVMRP| 224.0.1.18|SEANET-IMAGE| |
- | |224.0.0.5|Tous les routeurs OSPFIGP| | + | |224.0.0.5|Tous les routeurs OSPFIGP| 224.0.1.19|MLOADD| |
- | |224.0.0.6|Routeurs spécifiés OSPFIGP| | + | |224.0.0.6|Routeurs spécifiés OSPFIGP| 224.0.1.20|Expérimentations privées| |
- | |224.0.0.7|Routeurs ST| | + | |224.0.0.7|Routeurs ST| 224.0.1.21|DVMRP on MOSPF| |
- | |224.0.0.8|Hôtes ST| | + | |224.0.0.8|Hôtes ST| 224.0.1.22|SVRLOC| |
- | |224.0.0.9|Routeurs RIP2| | + | |224.0.0.9|Routeurs RIP2| 224.0.1.23|XINGTV| |
- | |224.0.0.10|IGRP| | + | |224.0.0.10|IGRP| 224.0.1.24|Microsoft-ds| |
- | |224.0.0.11|Agents mobiles| | + | |224.0.0.11|Agents mobiles| 224.0.1.25|Nbc-pro| |
- | |224.0.0.12-255|Non affectés| | + | |224.0.0.13|Tous les routeurs multicast qui support le protocole PIM-SM sur ce réseau|224.0.1.26|Nbc-pnf| |
- | |224.0.1.0|Groupes de gestionnaires VMTP| | + | |224.0.0.14-255|Non affectés| 224.0.1.27-255|Non affectés| |
- | |224.0.1.1|Network Time Protocol| | + | |224.0.1.0|Groupes de gestionnaires VMTP| 224.0.2.1|Groupe « rwho » (BSD, non officiel)| |
- | |224.0.1.2|SGI-Dogfight| | + | |224.0.1.1|Network Time Protocol| 224.0.2.2|SUN RPC PMAPPROC_CALLIT| |
- | |224.0.1.3|Rwhod| | + | |224.0.1.2|SGI-Dogfight| 224.0.3.0-255|Service générique RFE| |
- | |224.0.1.4|VNP| | + | |224.0.1.3|Rwhod| 224.0.4.0-255|Conférences individuelles RFE| |
- | |224.0.1.5|Artificial Horizons-Aviator| | + | |224.0.1.4|VNP| 224.0.5.0-127|Groupes CDPD| |
- | |224.0.1.6|Name Service Server| | + | |224.0.1.5|Artificial Horizons-Aviator| 224.0.5.128-255|Non affectés| |
- | |224.0.1.7|AUDIONEWS| | + | |224.0.1.6|Name Service Server| 224.0.6.0-127|Projet ISIS de Cornell| |
- | |224.0.1.8|Service d’informations SUN NIS+| | + | |224.0.1.7|AUDIONEWS| 224.0.6.128-255|Non affecté| |
- | |224.0.1.9|Multicast transport protocol| | + | |224.0.1.8|Service d’informations SUN NIS+| 224.1.0.0-255.255|Groupes multidiffusion ST| |
- | |224.0.1.10|IETF-1-LOW-AUDIO| | + | |224.0.1.9|Multicast transport protocol| 224.2.0.0-255.255|Appels conférences multimédias| |
- | |224.0.1.11|IETF-1-AUDION| | + | |224.0.1.10|IETF-1-LOW-AUDIO| 224.252.0.0-255.255.255|Groupes transcient DIS| |
- | |224.0.1.12|IETF-1-VIDEO| | + | |224.0.1.11|IETF-1-AUDION| 232.0.0.0-255.255.255|Groupes transcient VMTP| |
- | |224.0.1.13|IETF-2-LOW-AUDIO| | + | |224.0.1.12|IETF-1-VIDEO| | | |
- | |224.0.1.14|IETF-2-AUDION| | + | |224.0.1.13|IETF-2-LOW-AUDIO| | | |
- | |224.0.1.15|IETF-2-VIDEO| | + | |
- | |224.0.1.16|MUSIC-SERVICE| | + | |
- | |224.0.1.17|SEANET-TELEMETRY| | + | |
- | |224.0.1.18|SEANET-IMAGE| | + | |
- | |224.0.1.19|MLOADD| | + | |
- | |224.0.1.20|Expérimentations privées| | + | |
- | |224.0.1.21|DVMRP on MOSPF| | + | |
- | |224.0.1.22|SVRLOC| | + | |
- | |224.0.1.23|XINGTV| | + | |
- | |224.0.1.24|Microsoft-ds| | + | |
- | |224.0.1.25|Nbc-pro| | + | |
- | |224.0.1.26|Nbc-pnf| | + | |
- | |224.0.1.27-255|Non affectés| | + | |
- | |224.0.2.1|Groupe « rwho » (BSD, non officiel)| | + | |
- | |224.0.2.2|SUN RPC PMAPPROC_CALLIT| | + | |
- | |224.0.3.0-255|Service générique RFE| | + | |
- | |224.0.4.0-255|Conférences individuelles RFE| | + | |
- | |224.0.5.0-127|Groupes CDPD| | + | |
- | |224.0.5.128-255|Non affectés| | + | |
- | |224.0.6.0-127|Projet ISIS de Cornell| | + | |
- | |224.0.6.128-255|Non affecté| | + | |
- | |224.1.0.0-255.255|Groupes multidiffusion ST| | + | |
- | |224.2.0.0-255.255|Appels conférences multimédias| | + | |
- | |224.252.0.0-255.255.255|Groupes transcient DIS| | + | |
- | |232.0.0.0-255.255.255|Groupes transcient VMTP| | + | |
+ | ==== IPv6 ==== | ||
+ | |||
+ | Masque de réseau multicast en IPV6:** ff00::/8** | ||
+ | Ajoutez ceci a vos règles ip6tables pour en profiter | ||
+ | |||
+ | <code> | ||
+ | ip6tables -A INPUT -d ff00::/8 -j ACCEPT | ||
+ | </code> | ||
+ | Et éventuellement | ||
+ | <code> | ||
+ | ip6tables -A OUTPUT -s ff00::/8 -j ACCEPT | ||
+ | </code> |