Le protocole IGMP (Internet Group Management Protocol)

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.

Schéma explicant le principe d'IGMP Snooping

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“.

Illustration IGMP Query

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.

Illustration IGMP Report

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.

Illustration IGMP Leave

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.