Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
multicast [Le 26/12/2017, 11:52] – [Comment rejoindre une adresse de groupe multicast statique] 83.193.5.19multicast [Le 07/11/2019, 11:24] (Version actuelle) – [Comment rejoindre une adresse de groupe multicast statique] utilisation de syntaxe mediawiki incompatible, autre guillemet 82.225.234.108
Ligne 1: Ligne 1:
 +{{tag>multicast ipv6 reseau }}
  
 +----
 +
 +====== Le multicast ======
 +
 +===== 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.
 +
 +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.
 +
 +===== Mise en place d'un multicast statique =====
 +<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>
 +
 +==== 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 ====
 +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>
 +<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.
 +
 +==== Activation de la fonctionnalité multicast ====
 +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>
 +<file>net.ipv4.icmp_echo_ignore_broadcasts = 1</file>
 +Les fonctionnalités multicast sont désactivées.\\
 +Pour les activer :
 +<code>sudo sysctl net.ipv4.icmp_echo_ignore_broadcasts=0</code>
 +<file>net.ipv4.icmp_echo_ignore_broadcasts = 0</file>
 +Vérifions que le multicast est fonctionnel :
 +<code>ping 224.0.0.1 -c 3</code>
 +<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.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</file>
 +
 +-> **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 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 ====
 +<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 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.\\
 +[[: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>
 +
 +=== 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 « 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.
 +<code>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.
 +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</file>
 +<code>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.
 +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</file>
 +
 +===== Affectation standard d’adresses de multidiffusion =====
 +==== IPv4 ====
 +([[http://www.vije.net/ressources/informatique/reseaux/ip.pdf|source]])
 +^Adresse ^Description ^ Adresse ^Description ^
 +|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.1.15|IETF-2-VIDEO|
 +|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.1.17|SEANET-TELEMETRY|
 +|224.0.0.4|Routeurs DVMRP| 224.0.1.18|SEANET-IMAGE|
 +|224.0.0.5|Tous les routeurs OSPFIGP| 224.0.1.19|MLOADD|
 +|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.1.21|DVMRP on MOSPF|
 +|224.0.0.8|Hôtes ST| 224.0.1.22|SVRLOC|
 +|224.0.0.9|Routeurs RIP2| 224.0.1.23|XINGTV|
 +|224.0.0.10|IGRP| 224.0.1.24|Microsoft-ds|
 +|224.0.0.11|Agents mobiles| 224.0.1.25|Nbc-pro|
 +|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.0.14-255|Non affectés| 224.0.1.27-255|Non affectés|
 +|224.0.1.0|Groupes de gestionnaires VMTP| 224.0.2.1|Groupe « rwho » (BSD, non officiel)|
 +|224.0.1.1|Network Time Protocol| 224.0.2.2|SUN RPC PMAPPROC_CALLIT|
 +|224.0.1.2|SGI-Dogfight|  224.0.3.0-255|Service générique RFE|
 +|224.0.1.3|Rwhod| 224.0.4.0-255|Conférences individuelles RFE|
 +|224.0.1.4|VNP| 224.0.5.0-127|Groupes CDPD|
 +|224.0.1.5|Artificial Horizons-Aviator| 224.0.5.128-255|Non affectés|
 +|224.0.1.6|Name Service Server| 224.0.6.0-127|Projet ISIS de Cornell|
 +|224.0.1.7|AUDIONEWS| 224.0.6.128-255|Non affecté|
 +|224.0.1.8|Service d’informations SUN NIS+|  224.1.0.0-255.255|Groupes multidiffusion ST|
 +|224.0.1.9|Multicast transport protocol| 224.2.0.0-255.255|Appels conférences multimédias|
 +|224.0.1.10|IETF-1-LOW-AUDIO| 224.252.0.0-255.255.255|Groupes transcient DIS|
 +|224.0.1.11|IETF-1-AUDION|  232.0.0.0-255.255.255|Groupes transcient VMTP|
 +|224.0.1.12|IETF-1-VIDEO|  | |
 +|224.0.1.13|IETF-2-LOW-AUDIO|  | | 
 +
 +==== 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>