Entête IGMP

Entête IGMP

1 – Définition du protocole IGMP

Le protocole IGMP (Internet Group Management Protocol) permet de gérer les déclarations d’appartenance à un ou plusieurs groupes auprès des routeurs Multicast. Les inscriptions sont soit spontanées soit après requête du routeur. Pour cela, l’hôte envoi une trame IGMP destinées à ce ou ces groupes. Il existe 2 version du protocole IGMP.

Vous trouverez tous les détails du protocole IGMP version 1 dans la RFC 1112.

Vous trouverez tous les détails du protocole IGMP version 2 dans la RFC 2236.

2 – Structure de l’entête IGMP

Voici la structure de l’entête IGMP V2 basé sur 8 octets.

entete-igmp entete igmp
De la même manière que l’entête ICMP, IGMP est un protocole de couche 3. Il est encapsulé dans IP afin d’être véhiculé sur un réseau IP. Le terme « Encapsulé » relate pourquoi ce protocole est en couche 3 et non pas en niveau 4.

3 – Définition des différents champs

3.1 – Type

Le champ Type est codé sur 8 bits et détermine la nature du message IGMP. Voici les 4 types de messages existant :

  • 11 – 00001011 – Requête pour identifier les groupes ayant des membres actifs. 
  • 12 – 00001100 – Rapport d’appartenance au groupe émis par un membre actif du groupe (IGMP version 1) 
  • 16 – 00010000 – Rapport d’appartenance au groupe émis par un membre actif du groupe (IGMP version 2) 
  • 17 – 00010001 – Un membre annonce son départ du groupe

3.2 – Temps de réponse max

Ce champ n’est utilisé que pour les messages de type 11. Il indique le temps d’attente maximum pour un client avant l’émission du rapport d’appartenance. L’unité utilisée est le 1/10 de seconde. Pour les autres types, ce champ est marqué à 0.

3.3 – Checksum

Le champ Checksum est codé sur 16 bits et représente la validité du paquet de la couche 3 IGMP. Pour pouvoir calculer le Checksum, il faut positionner le champ du checksum a 0. Ce calcul est strictement le même que celui du protocole ICMP.

Voici un exemple de fonction permettant le calcul du checksum IGMP :

unsigned short calcul_du_checksum(bool liberation, unsigned short *data, int taille)
     {
     unsigned long checksum=0;
     // ********************************************************
     // Complément à 1 de la somme des complément à 1 sur 16 bits
     // ********************************************************
     while(taille>1)
         {
         if (liberation==TRUE)
             liberation_du_jeton(); // Rend la main à la fenêtre principale
         checksum=checksum+*data++;
         taille=taille-sizeof(unsigned short);
         }
 
     if(taille)
         checksum=checksum+*(unsigned char*)data;
 
     checksum=(checksum>>16)+(checksum&0xffff);
     checksum=checksum+(checksum>>16);
 
     return (unsigned short)(~checksum);
     }
 
 unsigned short calcul_du_checksum_multicast(bool liberation, struct multicast multicast_tampon,char data_tampon[65535])
       {
       char tampon[65535];
       unsigned short checksum;
 
       // ********************************************************
       // Initialisation du checksum
       // ********************************************************
       multicast_tampon.checksum=0; // Doit être à 0 pour le calcul
 
       // ********************************************************
       // Calcul du Multicast
       // ********************************************************
       memcpy(tampon,(unsigned short *)&multicast_tampon,sizeof(struct multicast));
       memcpy(tampon+sizeof(struct multicast),data_tampon,strlen(data_tampon));
       checksum=calcul_du_checksum(liberation,(unsigned short*)tampon,sizeof(struct multicast)+strlen(data_tampon));
 
       return(checksum);
       }

3.4 – Adresse du groupe

Le champ Adresse du groupe est codé sur 32 bits et contient une adresse IP. Celle ci représente l’adresse du groupe d’appartenance ou 0 si l’inscription n’a pas encore eu lieu. Le type 11 place ce champ à 0 et les autres types marquent l’IP.

4 – La multidiffusion IGMP

La multidiffusion est une technique intégrée au protocole IP multicast qui permet à plusieurs hôtes destinataires de recevoir une même trame. Par rapport à du broadcast, qui s’adresse à tous les hôtes du réseau, le muticast ne s’adresse qu’à un groupe d’hôtes ciblées au sein du réseau.

entete-igmp multidiffusion

Le groupe d’ordinateur multicast est identifié par une adresse IP de groupe multicast « de classe D ». Le protocole permet à un hôte de s’enregistrer dans ce groupe.

Rappel : la plage d’adresses de classe D va de 224.0.0.1 à 239.255.255.254. Les adresses 224.0.0.1 à 224.0.0.255 sont réservés à des fonctions spécifiques au réseau local (LAN). Les adresses 239.0.0.0 – 239.255.255.255 sont réservées pour des usages privés.

5 – Routage et commutation multicast

Pour que le mécanisme fonctionne, il faut qu’il existe dans le réseau un routeur qui gère la fonction de multicast et qui puisse se joindre au groupe multicast. Les switches qui gèrent le protocole de multicast peuvent remplir ce rôle. Par contre la plupart des routeurs Internet ne le gèrent pas, ce qui explique qu’il est difficile d’utiliser cette technique nativement sur Internet.

entete-igmp routage commutation multicast

6 – Les vidéos

  • 6.1 - Multicast Part 6 - AutoRP Vidéo en Anglais

    In this video, Anthony walks students through Cisco's Auto RP method of dynamically assigning the RP in a multicast infrastructure.

    Multicast Part 6 - AutoRP

  • 6.2 - Multicast Part 5 - PIM Sparse Mode Vidéo en Anglais

    In this video of the series, we examine PIM Sparse Mode and its configuration.

    Multicast Part 5 - PIM Sparse Mode

  • 6.3 - Multicast Part 4 - PIM Dense Mode Vidéo en Anglais

    In this video, Anthony Sequeira discusses and demonstrates PIM Dense Mode in a multicast network infrastructure.

    Multicast Part 4 - PIM Dense Mode

  • 6.4 - Multicast Part 3 - Components Vidéo en Anglais

    In this video, Anthony Sequeira describes the various components that are used in a network that supports Multicast traffic.

    Multicast Part 3 - Components

  • 6.5 - Multicast Part 2 - Addressing Vidéo en Anglais

    In this continuation of the series on Multicast, Anthony Sequeira walks students through the concept of Multicast addresses. This important address space is broken down and demonstrated for students.

  • 6.6 - Multicast Part 1 - Intro Vidéo en Anglais

    In this first video in the series for the CLN, Anthony Sequeira covers the purpose of multicast in modern networks. He also butchers a popular song from the 1980s.

    Multicast Part 1 - Intro

  • 6.7 - IGMP Snooping and VLC player Vidéo en Français

    In this video, Keith Barker will review how to setup VLC to be a multicast server, and also implement Cisco's IGMP snooping on a 3560 switch, to minimize the impact of the multicast traffic for hosts that haven't joined the multicast group or don't need the video stream.

    IGMP Snooping and VLC player

7 – Suivi du document

Création et suivi de la documentation par _SebF

Modification de la documentation par _SebF

  • Intégration de la version 2 du protocol de multicast.

Modification de la documentation par Christophe VARDON

  • Intégration du chapitre 4 sur la multidiffusion et du chapitre 5 sur le routage et la commutation multicast

8 – Discussion autour de l’entête IGMP

Vous pouvez poser toutes vos questions, faire part de vos remarques et partager vos expériences à propos de l’entête IGMP. Pour cela, n’hésitez pas à laisser un commentaire ci-dessous :

Commentaire et discussion

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *