Retour à l’index

 

 Le Multicast

 

1 Le Multicast

Le Multicast et le Broadcast utilisent tous les deux le même protocole pour l'échange de message, ils utilisent le protocole UDP.

Le protocole UDP (User Datagram Protocol) permet aux applications d'échanger des datagrammes. Celui-ci fournit un service en mode non-connecté et sans reprise sur erreur. Il n'utilise aucun acquittement, ne séquence pas les messages, et ne met en place aucun contrôle de flux. Les messages UDP peuvent être traités lors de leur réception.

Nous avons choisi d'utiliser la diffusion multipoint (Multicast) car celle-ci permet d'adresser des groupes de machines en étant plus sélectif qu'une diffusion (Broadcast).

Le broadcast est un moyen d'envoyer un message sur toutes les machines du réseau en utilisant une adresse de diffusion, celle-ci est déterminée selon l'adresse IP du réseau.

Prenons comme exemple:

Adresse IP de la machine foobar: 192.168.0.1
Adresse de diffusion est: 192.168.0.255

Nous n'avons pas voulu utiliser le broadcast car cette méthode a tendance à surcharger le réseau, de plus elle ne permet pas de pouvoir envoyer des messages à des machines qui sont sur un autre réseau.

Nous avons retenu comme solution, l'utilisation du Multicast. Les diffusions multipoints IP sont envoyées en utilisant des adresses de destination de classe D (comprises entre 224.0.0.0 et 239.255.255.255). Ces groupes peuvent être créés dynamiquement et les membres du groupe peuvent changer au cours du temps.

Le Multicast permet l'envoi de datagrammes vers plusieurs destinations de façon transparente. Ce protocole a été conçu pour être efficace et optimiser l'utilisation des ressources réseaux.

Nous avons donc opté pour le Multicast pour de nombreuses raisons. Tout d'abord il permet de diffuser les trames sur n'importe quelle machine de n'importe quel réseau, ensuite les trames arrivent uniquement aux machines pour lesquelles elles sont destinées.

2 Mise en place

 

Tout d’abord il faut activer le routage Multicast dans le routeur avec la commande :

 

ip multicast-routing

 

Pour la désactiver il suffit de taper la commande :

 

no ip multicast-routing

 

Ensuite il faut choisir le style de multicasting, nous avons choisi le PIM (Protocol Independant Multicast) pour les raisons suivantes :

·        PIM marche avec tous les protocoles de routage Multicast

·        PIM a deux modes (dense et sparse) qui nous donnent un peu de liberté quant à la configuration.

 

On peut aussi utiliser IGMP (Internet Group Management Protocol), qui est bien pour les WAN, ou DVMRP (Distance Vector Multicast Routing Protocol) qui est très peu supporté. Pour utiliser DVRMP, il faut indiquer directement à notre routeur le routeur qui supporte DVMRP.

 

Des deux choix que nous avions pour le PIM, nous avons retenu le mode dense. Voici la description des deux modes :

 

Dense mode : Quand le routeur reçoit un paquet Multicast. Le routeur envoie le paquet à toutes les interfaces en sortie sauf à l’interface d’origine de l’envoi.

Si le routeur découvre qu’une certaine interface n’a pas de destinataire Multicast, il envoie un message « prune » en retour à l’envoyeur lui déclarant qu’il n’est pas nécessaire d’envoyer des messages à cette interface/sous réseau/lien/hôte.

 

Sparse mode : Dans ce mode, il est supposé qu’il n’y ait aucun hôte qui veuille des paquets Multicast à moins qu’un hôte ne le demande spécifiquement. Donc contrairement à l’approche « brutale » du dense mode, un routeur devient le foyer (hub). Ce foyer log tous les hôtes qui veulent recevoir du Multicast. De plus les paquets Multicast sont envoyés uniquement à ces hotes.

 

Pour ne pas surcharger notre routeur dans le cas où beaucoup d’hotes veulent du Multicast, nous avons choisi de mettre en place le dense mode.

 

Donc pour configurer le PIM en dense mode pour le routage Multicast il suffit de taper les commandes suivantes :

 

interface ethernet 0

ip pim dense-mode

 

interface ethernet 1

ip pim dense-mode

 

 

Dernière étape, il faut configurer le threshold (seuil).

Tous les paquets Multicast ont une TTL (durée de vie). C’est normal dans le monde IP. En mettant en place le multicast threshold sur une interface de routeur donné, on crée un obstacle. Si la TTL du paquet est plus haute que le multicast threshold, le paquet peut passer. Si la TTL du paquet est plus basse que le multicast threshold, le paquet est stoppé.

 

L’intervalle du multicast threshold est compris entre 0 et 255. 0 correspond au fait que tous les paquets peuvent en théorie passer et 255 que tous les paquets sont théoriquement stoppés.

 

Nous avons mis le threshold à 0 (valeur par défaut).

 

[no] ip multicast ttl-threshold <ttl-value>

 

 

3 Test du Multicast

 

Nous avons besoin d’un certains nombre de logiciels pour la voix et l’image ainsi que pour se rallier à un groupe Multicast de vidéoconférence (VIC, SDR,RAT)

 

4 Difficultés rencontrées.

 

Le réseau dans les salles de projets ne permet pas de faire du Multicast car les routeurs en amont ne sont pas configurés pour. Il faut donc définir notre propre réseau pour arriver à nos fins

 

 

5 Mise en oeuvre du Multicast sur le routeur Cisco 1600 à l’aide de Socket

 

Dans un premier temps, nous avons été amenés à programmer des Sockets.

Les Sockets sont à notre avis l’un des meilleurs moyens de mettre en œuvre le Multicast, étant donné les moyens limités que nous avons dans les salles de TP.

 

5.1 Qu’est ce qu’un Socket ?

 

En théorie, un Socket correspond à la paire (adresse IP, Port). Une communication via un socket est donc identifiée par le numéro du port utilisé pour la communication et les adresses IP des intervenants de la communication. En pratique, on peut assimiler les Sockets à un tuyau par lequel transitent des informations entre un serveur et des clients. Il est important pour que la communication soit établie et que chaque équipement connaisse le port de communication. Ainsi, l’envoi d’un datagramme à une machine est identifiée par le port de communication et l’adresse IP de la machine distante.

 

5.2 Pourquoi utiliser les Sockets pour la mise en oeuvre du Multicast ?

 

Il est possible par la programmation des Sockets d’effectuer du Multicast sur un réseau de machines. Chose que nous nous sommes attachés à faire. Dans un premier temps, on a réalisé un programme serveur (en langage C) qui permet d’envoyer sur un même réseau, via un Socket, des datagrammes à un groupe de machines dites clientes, dont le programme en langage C a également été conçu.

 

Topologie du réseau pour la mise en œuvre du Multicast sur un réseau.

Le programme serveur permet d’envoyer un datagramme vers un groupe de machines. Ici, le Socket identifié par la paire (Port=5603 ; @ IP=225.50.1.6) permet l’envoi d’un datagramme en Multicast à un groupe de machines 1, 2 et 3. Ce groupe de machines est en fait désigné par une adresse IP Multicast (225.50.1.6).

Une adresse Multicast est une adresse IP classe D qui est comprise dans la gamme de 224.0.0.0 à 239.255.255.255. Il n'y a pas de champ network ni de champ host. Il s'agit en fait d'une adresse immatérielle dite adresse de groupe. Les 28 bits du champ adresse offrent ainsi 250 millions d'adresses possibles. Pour qu’une machine puisse recevoir un datagramme Multicast, elle doit appartenir au groupe Multicast, si ce n’est pas le cas elle doit s’ajouter dans ce groupe. Ainsi, dans l’exemple ci-dessus, si la machine « 1 » ne fait pas partie du groupe Multicast, elle ne recevra pas le datagramme émis via le Socket par le serveur, par contre les machines « 2 » et « 3 » le recevront.

Ceci a donc été réalisé dans les salles TP. Ici nous ne détaillerons pas la partie technique de la réalisation des programmes serveur et client Socket, car ce n’est pas le sujet. Cependant ces programmes sont consultables avec des commentaires en Annexe (cf. programmes client et serveur multicast).

 

Une fois le Multicast réalisé sur le réseau de la salle TP via les Sockets, il a été appliqué sur deux réseaux gérés par le routeur Cisco.

 

Voici ci-dessous la topologie du réseau.

 

Topologie du réseau pour la mise en œuvre du Multicast sur deux réseaux

 

 

Réseau en 192.168.50.0

 

Réseau en 10.1.1.0

 
 

 

 


Pour que le routeur puisse laisser passer tous les paquets Multicast du réseau 10.1.1.0 vers le réseau 192.168.50.0. Il a fallu dans un premier temps configurer le routeur pour qu’il gère le routage de paquets Multicast C’est le rôle de la commande :

 

Cisco1600#  ip   multicast-routing 

 
 

 

 


Puis il est nécessaire de définir le protocole Multicast à appliquer sur les interfaces du routeur qui véhiculent les paquets Multicast.

Voici les commandes correspondantes :

 

Pour l’interface Ethernet 0 (dont l’adresse avait précédemment et définie)

      Cisco1600#  conf t

      Cisco1600(config)# int  e0                                // choix de la configuration de

                                                                                 // l’interface Ethernet 0

      Cisco1600(config-if)#ip pim sparse-mode       // ou sparse-dense-mode

     

 
 

 

 

 

 

 


      Cisco1600#  conf t

      Cisco1600(config)# int  e1                                // choix de la configuration de

                                                                                 // l’interfaces Ethernet 1

      Cisco1600(config-if)#ip pim sparse-mode       // ou sparse-dense-mode

     

 
Pour l’interface Ethernet 1 ( dont l’adresse avait précédemment et définie )

 

 

 

 

 

 

Il est aussi important de modifier la valeur du TTL à TTL=2, car par défaut il est à « 1 ». Si ce dernier reste à « 1 » le paquet Multicast ne sortira jamais du réseau local 10.1.1.0. Rappelons que le champ TTL indique le nombre maximum de routeurs que peut traverser un datagramme. Cette modification a été faite dans le programme en C du Socket serveur (cf. programme source socket_multicast_serveur.c en Annexe).

A partir de maintenant les machines 1, 2 et 3 (si elles sont membres du groupe Multicast ) sont capables de recevoir les datagrammes Multicast émis par le serveur via le Socket identifié par la  paire (adresse IP, Port) .

 

5.3 Les Difficultés rencontrées :

 

Il a été dans un premier temps non pas complexe, mais peu évident de se familiariser avec la programmation des Sockets en langage C.

Puis la seconde étape concernant la programmation du Multicast Socket fut une autre paire de manche.

 

Mais la partie correspondant à la configuration du routeur était assez intuitive.

 

 

Retour à l’index