FreeDMR en multicast : Pourquoi, comment ?

Tout d’abord, rappelons ce que sont l’Unicast, le Broadcast, et le Multicast.

L’Unicast

C’est la façon tout à fait classique pour deux systèmes (ordinateur, serveur) de communiquer entre eux. C’est une liaison point à point.

FreeDMR-multicast

Le Broadcast

C’est lorsqu’un système lance une requête à l’ensemble des systèmes du réseau, généralement pour savoir qui possède une adresse IP, ou pour avertir tous les systèmes de la disponibilité d’un service particulier, comme un service de stockage de fichiers par exemple). Les trames broadcast ne circulent que dans le sous-réseau du système : l’ordinateur avec l’IP 192.168.0.10 envoie le message vers l’adresse IP 192.168.0.255, et ce sont tous les ordinateurs avec l’IP 192.168.0.X (x de 1 à 254) qui reçoivent le message.

Le Multicast

Imaginons qu’un ordinateur doit envoyer exactement le même message à plusieurs autres ordinateurs. S’il envoie le message à chacun des destinataires, il y a multiplication du trafic depuis l’ordinateur. Si les destinataires sont peu nombreux, cela reste acceptable, mais pour plusieurs centaines de destinataires, cela devient impensable. Pour remédier à cela, on a créé le multicast, qui permet à l’ordinateur serveur de n’envoyer qu’une seule fois les données, celles-ci étant reçues par les ordinateurs client simultanément. Comme chaque ordinateur possède une adresse IP différente, et comme l’ordinateur serveur ne peut pas adresser de multiples adresses IP dans un seul envoi, les adresses multicast ont été créées. Elles vont de 224.0.0.0 à 239.255.255.255. Ainsi l’ordinateur serveur envoie ses données vers une adresse de groupe (exemple 224.0.1.189). Les ordinateurs qui désirent recevoir ce message doivent « s’abonner » au flux multicast, c’est-à-dire qu’ils émettent un « join » vers ce groupe. Les trames de join se propagent sur le réseau et les routeurs traversés remplissent une table, plutôt un arbre de diffusion, qui leur permet, lorsque la trame multicast les traverse, de savoir vers qui transmettre cette trame.

Le Multicast, c’est ce qui est utilisé lorsque vous regardez des vidéos en streaming (Netflix, YouTube, etc.)

Le Multicast appliqué à FreeDMR

De façon classique, dans le réseau FreeDMR, les serveurs sont reliés entre eux par des liens openbridge, en point à point.

FreeDMR-multicast

Chaque serveur transmet les trames à ses voisins, en évitant les chemins multiples. Si un serveur est défaillant, les trames empruntent un autre chemin, s’il existe. Sinon le serveur est isolé du réseau.

FreeDMR-multicast

Les délais de transmission s’additionnent en fonction du nombre de serveurs traversés.

Maintenant, imaginons que les serveurs ne sont plus reliés en point à point les uns aux autres, mais sont tous reliés sur un même réseau, comme sur un switch.

FreeDMR-multicast

On voit ici que chaque serveur n’a plus qu’un seul lien openbridge qui le relie au reste du réseau.

Certes, on pourrait dire que par rapport au précédent schéma, on a réduit la redondance, mais en fait non, car un serveur ne dispose que d’une carte réseau généralement. Si la liaison s’interrompt, c’est dû à la sortie réseau, ou bien au routeur suivant chez le fournisseur internet. Dans un cas comme dans l’autre, avoir une ou deux cartes réseau ne change rien.

Cela étant dit, comment cela fonctionne-t-il ?

Dans un setup classique, on définit un openbridge par son IP interne, son port interne, le mot de passe, l’adresse IP du serveur distant, le port du serveur distant.

Le serveur distant est configuré avec les mêmes valeurs, IP distante de l’autre serveur, le port distant, etc.

FreeDMR-multicast

Dans le cas du fonctionnement en multicast, un setup d’openbridge sera toujours le même, quel que soit le serveur :

[OBP-SERVEUR]

MODE: OPENBRIDGE

ENABLED: True

IP: <IP_publique_du_serveur>

PORT: 62997

NETWORK_ID: <ID_de_votre_choix>

PASSPHRASE: PASSWORD

TARGET_IP: 127.0.0.1

TARGET_PORT: 62999

USE_ACL: True

SUB_ACL: DENY:1

TGID_ACL: PERMIT:ALL

RELAX_CHECKS: True

ENHANCED_OBP: False

Les valeurs en rouge ne doivent pas être modifiées.

À l’aide d’un programme complémentaire, les trames (Unicast) envoyées vers le port 62999 à l’adresse 127.0.0.1, sont transformées en trames multicast envoyées vers le port 62998 à l’adresse de groupe 224.0.1.189. Comme tous les serveurs du réseau sont « abonnés » à ce groupe multicast, les trames sont reçues et reconverties par chaque serveur par le même programme complémentaire, et les trames (Unicast) sont envoyées vers le port 62997 à l’adresse publique du serveur.

Si un des serveurs du groupe vient à s’arrêter, les autres serveurs du groupe continuent à échanger entre eux.

Les avantages du fonctionnement multicast sont multiples :

  • Pas de serveur central ou intermédiaire
  • La disparition d’un serveur n’affecte pas l’ensemble du réseau
  • Chaque serveur n’émet ou ne reçoit qu’un seul flux, et n’a pas à gérer des flux traversants
  • Aucune modification n’est nécessaire dans le code FreeDMR

Les trames multicast nécessitent pour se propager que la topologie du réseau (internet) soit constituée de routeurs compatibles multicast. C’est loin d’être le cas. C’est pourquoi il y a une dizaine d’années un réseau mondial appelé Mbone avait été développé spécifiquement pour permettre le transit des trames multicast. Il semble qu’aujourd’hui ce réseau ait été abandonné. C’est pourquoi nous verrons, dans un prochain article, comme créer un réseau de support au multicast, qui soit fiable, redondant, et relativement simple à mettre en œuvre.

Vignette : https://www.piqsels.com/fr

A propos de l'auteur

Index