FreeDMR en multicast : Pourquoi, comment ?

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

par Jean-Marc| F1SCA

Auteur / autrice

  • Sysop de IPSC2-FRANCE : http://ipsc2-france.fr/ipsc/index.html Fondateur du rĂ©seau DMR FreeDMR.fr (rĂ©seau maillĂ© de serveurs). http://yvelines.freedmr.fr