fr en

IGMP snooping

2009-09-28 4 Min. lecture Réseaux Aymeric

L’IGMP Snooping est une fonction de couche 2 permettant d’écouter le traffic IGMP en permettant à un commutateur (switch) d’intercepter les communications entre les routeurs multicast et les hôtes.

Introduction

Le protocole IGMP est utilisé pour l’adhésion d’hôtes à un ou plusieurs groupes multicast présents sur le réseau.
Un obstacle apparaît cependant lorsque le réseau ne contient pas uniquement des équipements réseaux Cisco. En effet, seuls les équipements réseaux Cisco ont la possibilité d’utiliser le protocole CGMP (Cisco Group Management Protocol) qui permet de restreindre le traffic IGMP à la couche 2 du modèle OSI. Pour contrer ce conflit, la plupart des équipements réseaux (non Cisco) possèdent la fonction d’IGMP Snooping permettant l’utilisation des groupes multicast sur un réseau composé d’équipements de marques différentes.

Rappel sur le protocole IGMP

IGMP (Internet Group Management Protocol) est un protocole actuellement en version 3 défini par l’IETF (Internet Engineering Task Force) en tant que RFC 3376 qui opère au niveau de la couche 2. Il permet aux hôtes du réseau de rejoindre des groupes multicast en se déclarant sur les routeurs multicast. L’inscription à ce(s) groupe(s) multicast peut se faire soit de manières spontanée par l’hôte, soit après l’envoi d’un paquet IGMP par le routeur multicast à l’adresse 224.0.0.1.
Le protocole IGMPv3 supporte 3 types de messages :

  • Host membership query : message envoyé par les routeurs à intervalle de temps régulier (125 secondes par défaut) pour connaître les membres des groupes multicast.
  • **Host membership report **: message envoyé par l’hôte lorsqu’il adhère à un groupe. Ce type de message peut être envoyé de l’initiative de l’hôte ou suite à un host membership query.

igmp1

Principe

Comme dit précédemment, l’IGMP snooping permet de mettre en place des groupes multicast sur des réseaux ne fonctionnant pas uniquement avec du matériel Cisco. L’IGMP snooping a pour principe de donner à un équipement de couche 2 (commutateur) un niveau de couche 3.
Le commutateur disposant de cette fonctionnalité analyse tout le trafic IGMP entre les hôtes et le routeur multicast et effectue différentes opérations selon le type de trafic.
Si un hôte transmet un message host membership report au routeur multicast, le commutateur rajoutera à sa liste multicast le numéro de ports de cet hôte. Le but est de n’envoyer le trafic multicast que vers cet hôte et non pas vers tous hôtes comme le ferait un commutateur dépourvu de l’IGMP snooping. Ce processus fait donc une économie de bande passante dans des réseaux pourvus de groupes multicast.
Le processus inverse s’opère lorsqu’un hôte envoie au routeur un leave group, le numéro de port de cet hôte est supprimé de la table multicast du commutateur. Bien qu’il y ait un gain non négligeable en bande passante, le commutateur doit analyser tout le trafic IGMP ce qui peut provoquer une surcharge du processeur du commutateur. C’est pourquoi il est vivement conseillé d’implémenter cette fonctionnalité sur des routeurs ayant un CPU performant.

Exemple de configuration mettant en place l’IGMP snooping

igmp_snooping1

Dans cet exemple de configuration, nous savons que les hôtes 1 et 3 ont déclaré au routeur multicast leur appartenance au groupe multicast. Pour cela ces 2 hôtes ont envoyé au routeur multicast un host membership report. Lorsque ces messages ont traversé le commutateur, celui-ci les a examinés, il a compris que les hôtes 1 et 3 souhaitaient appartenir au groupe multicast. Il les ajoute donc à sa liste multicast et redirige les paquets host membership report vers le routeur multicast.
L’hôte 2 n’a en revanche pas déclaré son appartenance au groupe, il n’est donc pas dans la liste multicast du commutateur.
Maintenant le routeur souhaite communiquer avec les hôtes appartenant au groupe, il envoie ses paquets vers le commutateur en multicast. Ce dernier consulte sa liste multicast et se rend compte que seuls les hôtes 1 et 3 appartiennent au groupe multicast. Les paquets provenant du routeur sont donc redirigés vers les hôtes 1 et 3. L’hôte 2 ne reçoit aucune information.
Si l’IGMP snooping n’était pas implémenté sur le commutateur, l’hôte 2 aurait reçu les mêmes informations que les hôtes 1 et 3.

Mettre en place l’IGMP snooping

Voici les commandes à entrer sur un commutateur Cisco pour mettre en place l’IGMP snooping :

  1. Activer l’IGMP snooping (désactivé par défaut) :
Console> (enable) set igmp enable
  1. Configurer le routeur multicast :
Console> (enable) set multicast <port>
  1. Afficher les statistiques d’IGMP :
show multicast router

et

show igmp statistics

Exemple :

Console> (enable)show multicast router
CGMP disabled
IGMP enabled

Port       Vlan
———  —————-
3/1        2-3

Total Number of Entries = 1
‘*’ – Configured

Console> (enable) show igmp statistics 3
IGMP enabled
 
IGMP statistics for vlan 2:
Total valid pkts rcvd: 329
Total invalid pkts recvd 0
General Queries recvd 82
Group Specific Queries recvd 0
MAC-Based General Queries recvd 0
Leaves recvd 0
Reports recvd 82
Queries Xmitted 0
GS Queries Xmitted 0
Reports Xmitted 0
Leaves Xmitted 0
Failures to add GDA to EARL 0
Topology Notifications rcvd 0