Présentation
Internet Group Management Protocol (IGMP) est un protocole qui permet à des routeurs de déterminer de façon dynamique les groupes multicast qui disposent de clients dans un sous-réseau.
Le multicast est une forme de diffusion entre une source (ou plusieurs) et plusieurs destinataires. Les participants (les destinataires) composent un groupe multicast. Chaque groupe doit posséder une adresse réseau permettant l’identification d’un flux de données multicast. Il s’agit des adresses de classe D, de 224.0.0.0 à 239.255.255.255 :
- Les adresses 224.0.0.1 à 224.0.0.255 sont réservées aux protocoles standards IETF (ex : 224.0.0.5 est réservé aux mises à jour multicast pour le protocole de routage OSPF).
- Les adresses 239.0.0.1 à 239.255.255.255 sont réservées à un usage personnel.
Un groupe multicast n’est pas limité à un réseau local car il existe des protocoles de routage spécifiques aux groupes multicast (ex : les protocoles de type PIM).
IGMP Snooping
Pourquoi l’utiliser ?
L’IGMP permet de travailler en multicast. Cependant nous nous situons sur la couche 3 du modèle OSI (couche réseau). Si les routeurs et les ordinateurs sont capables de travailler sur cette couche, les commutateurs (switchs), eux, ne travaillent que sur la couche 2 (couche liaison de données). Le problème est donc qu’un commutateur est incapable d’identifier du trafic de type multicast et l’interprétera en trafic de type broadcast (il va transférer les trames reçues à l’ensemble de ses ports).
Fonctionnement
IGMP Snooping (comprenez « Surveillance IGMP ») consiste à activer la gestion des trames multicast pour un commutateur par la surveillance de ces dernières. Le commutateur analyse l’ensemble du trafic IGMP circulant via ses ports et est capable d’agir en fonction des différents rapports reçus (Join, Leave, etc.) comme le ferait un routeur.
IGMP version 2
La version 2 d’IGMP est décrite dans la RFC 2236.
Messages IGMPv2
IGMP Query
Un hôte souhaitant se connecter à un groupe multicast envoi un paquet appelé « Membership Report / Join group« .
IGMP Report
Le routeur envoi, de façon périodique, un « Membership Query » à tous les hôtes quel que soit leur groupe multicast pour savoir s’il doit continuer à émettre. Un seul hôte répond au routeur (un hôte par groupe et par sous-réseau) avec un « Membership Report« . Les autres hôtes du groupe annuleront leur rapport.
IGMP Leave
Lorsqu’un hôte désire quitter un groupe multicast, il envoie un « Membership Report / Leave group« . Une fois la requête prise en compte, le routeur enverra un « Membership Query » au groupe multicast concerné (celui quitté par l’hôte) afin de vérifier qu’il reste des hôtes connectés à ce groupe.
Limitations
Les seuls états possibles sont de type (*,G), c’est-à-dire qu’il n’est pas possible à un hôte d’indiquer qu’il ne souhaite recevoir un groupe que d’une source déterminée, ni exclure une source déterminée.
Notion de requérant
Lors de l’utilisation de protocoles de routages multicast l’un des routeurs est élu en tant que requérant (« Querier » en Anglais). Ce routeur possède un minuteur et va donc envoyer de façon périodique des demandes de rapport (les « Membership Query« ) pour vérifier si un groupe multicast contient toujours au moins un abonné. Dans le cas contraire, le routeur cessera d’émettre le groupe multicast concerné.
Lorsqu’un routeur reçoit une requête provenant d’un autre routeur, il compare leurs deux adresses IP. Le routeur possédant l’adresse est la plus petite est sélectionné comme requérant. Dans ce cas, le routeur possédant l’adresse IP supérieure démarre un compteur durant lequel il n’enverra pas de requêtes. Si aucun message d’un requérant possédant une IP plus petite n’est reçu durant ce laps de temps, les requêtes sont émises à nouveau.
Sur certains sous-réseaux, où l’IGMP Snooping est activé, il n’y a pas de routage multicast et donc pas de requérant. Dans ce cas, les rapports ne seront émis que lorsqu’un membre joint ou quitte un groupe multicast. Cela peut donc créer des « groupes fantômes » qui ne contiennent aucun abonné mais dont le flux sera quand même émis.
Pour cette raison, certains commutateurs possèdent la fonctionnalité de requérant. Il suffit de l’appliquer à une interface adressée en couche 3 (couche réseau).
MRouter
Dans un réseau en présence de routage multicast, les interfaces connectées directement vers les routeurs multidiffusion sont automatiquement détectées et référencées en tant que « MRouter« .
Par exemple, si on fait transiter l’ensemble des flux multicast dans un VLAN afin de redescendre, au plus près de clients, des flux vidéos. Il n’y a pas de routage multicast et il faudra donc déclarer statiquement quelle interface du commutateur reçoit ces flux.