FR 3096850 A1 20201204 FR 1905477 A 20190528 Description Titre de l'invention : PROCEDE DE TRANSMISSION DE DONNEES ENTRE UN EMETTEUR ET UN RECEPTEUR DANS UN RESEAU DE RADIOCOMMUNICATIONS A CAPACITE DE BOUCLAGE LOCAL [0001] La présente invention concerne le domaine des réseaux maillés, une topologie de réseau où tous les hôtes sont connectés pair à pair sans hiérarchie centrale, formant ainsi une structure en forme de filet. Par conséquent, chaque noeud peut recevoir, envoyer et relayer les données. Ceci évite d'avoir des points névralgiques qui, s'ils tombent en panne, isolent une partie du réseau. Si un hôte est hors service, les données empruntent une route alternative. [0002] Plus particulièrement l'invention concerne un procédé de transmission de données entre un émetteur et un récepteur dans un réseau de radiocommunications à capacité de bouclage local, ledit réseau étant organisé sur un mode maillé selon une topologie où tous les hôtes sont connectés pair à pair sans hiérarchie centrale, selon un principe AMRT d'accès multiple à répartition dans le temps permettant de transmettre plusieurs flux de trafic sur un seul canal ou une seule bande de fréquence en utilisant une division temporelle de la bande passante. [0003] Dans ce type de transmission, il est possible que du fait de l'éloignement des dis- positifs communicants, de la topologie des lieux ou d'autre élément contextuel, la communication échoue. Divers moyens de renforcer la transmission ont donc été envisagés. [0004] Les algorithmes de relayage habituels reposent. sur l'établissement de routes. Une route se définit par "le meilleur chemin" (meilleur par rapport à une fonction de coût, portant généralement sur le nombre de bonds radio dans le cas des liaisons radio) permettant à un élément d'envoyer des informations vers un élément distant, hors de portée radio directe. [0005] L'établissement d'une route présente, dans l'état de la technologie, divers incon- vénients. [0006] Ces algorithmes présument que b route est stable pendant une durée relativement longue par rapport à la durée moyenne d'acheminement du trafic. Si la topologie du réseau n'est pas stable, alors la route n'a pas le temps de s'établir. Le réseau ne fonctionne pas. [0007] Ils nécessitent un certain temps pour que la route s'établisse, et donc un certain trafic. Là encore, si le réseau n'est intrinsèquement pas stable, on peut avoir rapidement des cas où le réseau ne fonctionne pas, c'est-à-dire où aucun trafic utile n'est écoulé. 2 [0008] De cc fait il peut être pertinent d'ouvrir une route lorsque le chemin est « long », c'est-à-dire qu'il y a plusieurs relais impliqués. Mais cc n'est pas pertinent pour des réseaux avec peu de bonds de liaison. [0009] La présente invention vise ainsi à proposer une solution permettant à un réseau radio reliant plusieurs participants selon un principe AMRT/TDMA, d'échanger des informations de façon fiabilisée, en compensant automatiquement les éventuelles pertes de connectivité entre ces participants. [0010] Selon l'invention, un procédé de transmission de données entre un émetteur et un récepteur dans un réseau de radiocommunications à capacité de bouclage local, ledit réseau étant organisé sur un mode maillé selon une topologie où tous les hôtes sont connectés pair à pair sans hiérarchie centrale, selon un principe AMRT d'accès multiple à répartition dans le temps permettant de transmettre plusieurs flux de trafic sur un seul canal ou une seule bande de fréquence en utilisant une division temporelle de la bande passante, est caractérisé en ce que l'émetteur et le récepteur communiquent au sein d'une boucle comprenant au moins un autre acteur apte à communiquer, un message d'accusé réception étant émis par le récepteur vers l'émetteur à réception par le récepteur d'un datagramme d envoyé par l'émetteur. [0011] En effet dans une situation où plusieurs équipements, pouvant être mobiles, échangent entre eux des informations sur un réseau radio TDMA, en conditions normales, ces équipements sont tous en portée radio les uns des autres. [0012] Mais du fait des déplacements et des masquages radio associés, la connectivité au sein du réseau est particulièrement instable. Ainsi, certains équipements perdent régulièrement la liaison avec l'un ou l'autre équipement. [0013] Avantageusement lorsque dans un délai prédéterminé, l'émetteur ne reçoit pas le message d'accusé réception, l'émetteur considère que le datagramme n'a pas été reçu par le récepteur et envoie le datagramme d vers un autre acteur apte à communiquer au sein de la boucle, ledit autre acteur devenant alors l'émetteur pour le datagramme d. [0014] Avec l'invention, un relayage est automatique et immédiat pour les informations vé- hiculées en transmission de données. Il en résulte une meilleure robustesse du réseau radio et une meilleure expérience utilisateur. [0015] L'algorithme prend l'hypothèse que les participants sont normalement tous en connectivité les uns avec les autres, mais que certaines connexions vont temporairement se perdre (par exemple, du fait de déplacements des participants, provoquant des masquages, du fading, etc.). La perte de connectivité peut porter sur un seul créneau (un seul élément de transmission) ou bien avoir un caractère permanent. [0016] L'algorithme permet d'assurer automatiquement la retransmission des informations perdues, en utilisant un des participants ayant gardé une connectivité avec le participant émetteur et le participant destinataire. Cet algorithme auto-adaptatif permet 3 ainsi un relayage automatique à 2 bonds radio. [0017] Il prend comme hypothèse que chaque participant du réseau acquitte les données qu'il reçoit des autres participants par un bit. Ainsi, dans un cycle TDMA comportant 9 participants émettant chacun un créneau de données, chaque participant émet systématiquement dans son créneau 8 bits correspondant à l'acquittement (la bonne réception) des créneaux des 8 autres participants. Le nombre de bits utilisés pour ces acquittements est d'au moins un bit par créneau alloué à un participant. Les bits peuvent être redondants (c'est-à-dire acquitter un créneau transmis il y a plus d'un cycle TDMA) tout en étant compatibles de l'algorithme décrit. Les bits d'acquittement sont désignés par l'abréviation Ci dans la suite du présent document. [0018] Les datagrammes exploités par l'invention peuvent être de taille quelconque, non né- cessairement constante. [0019] L'invention concerne également un dispositif implémentant le procédé évoqué pré- cédemment. [0020] D'autres caractéristiques et avantages de l'invention apparaîtront dans la description qui suit d'un mode de réalisation préféré avec référence aux dessins annexés mais qui n'a aucun caractère limitatif. [0021] Sur ces dessins : [0022] [fig.1] est une vue schématique illustrant le fonctionnement du procédé selon la présente invention. [0023] Comme expliqué précédemment le principe général du relayage repose sur l'entraide entre les participants d'un même réseau : les participants constatant qu'un message n'est pas reçu par un membre de la boucle lui retransmettent automatiquement les messages manquants, au sein de ce réseau. Par la suite, nous désignerons : [0024] - Sous le terme de participant, un hôte du réseau pouvant prendre successivement les rôles d'émetteur et de récepteur, et avec lequel les autre hôtes vont échanger des informations. [0025] - Sous le terme de boucle le réseau AMRT regroupant plusieurs participants nor- malement en connexion pair à pair, et voulant bénéficier de la fiabilisation des échanges offerte par le présent algorithme. Au sein d'une boucle, chaque participant est identifié de manière unique et propre à la boucle par une adresse de boucle (notée @ dans la suite du présent document). [0026] La figure 1 illustre ce fonctionnement. On peut voir que A transmet un message que C. hors de portée, ne peut recevoir. Les participants B et D vont alors relayer les messages pour que C puisse les recevoir. L'algorithme effectuant ce relayage sera baptisé HBoucle. [0027] L'algorithme HBoucle fonctionne par boucle : pour chaque boucle H instanciée dans le participant, un algorithme HBoucle dédié à cette boucle est initialisé et fonctionne en permanence. [0028] Optionnellement, l'algorithme accepte et utilise une valeur d'âge du datagramme. Cet âge permet à une application utilisatrice de connaître et de mesurer le temps passé par un datagramme dans le réseau, pour par exemple reconstituer la chronologie exacte des échanges. [0029] Lorsqu'il s'exécute, l'algorithme HBoucle va réaliser dans un premier temps le stockage de tous les datagrammes reçus dans une mémoire tampon (dit "buffer de boucle") dédiée, le marquage dans cette mémoirede tous les datagrammes pour lesquels un acquittement a été reçu et l'attribution d'un indicateur de mérite de rclayage à chaque datagramme, fonction de son type d'adressage et du fait qu'il ait été reçu ou non. [0030] Puis l'algorithme HBoucle va procéder à la retransmission des datagrammes les plus "méritants" (et donc qui sont importants à relayer). [0031] Dans un dernier temps l'algorithme HBoucle va purger du buffer les messages trop anciens en considérant alors que leur retransmission n'a plus d'intérêt. En pratique, cette purge s'effectue du fait de la taille limitée et fixe du buffer de boucle : tout nouveau message inscrit provoque la suppression du message le plus ancien. [0032] La structure du buffer de boucle est décrite ci-après. [0033] Le buffer de boucle est une collection qui peut contenir trois types de structures de données : [0034] une structure "datagramme reçu", composée : d'un numéro d'index courant (nombre entier double), du datagramme reçu proprement dit, de l'@ de l'émetteur du datagramme (participant à qui le créneau est affecté dans le canevas de boucle)(entier ), de l'@ de boucle associée au datagramme reçu, de l'âge du datagramme (nombre entier), pour chaque participant de la boucle (hors moi-même), d'un booléen de réception, indiquant si le message a été reçu par ce participant. Ces booléens sont initialisés à False (non reçu), d'un indicateur de mérite de relayage (nombre entier signé), initialisé à zéro. [0035] une structure "référence de datagramme reçu", composée : d'un numéro d'index courant (nombre entier double), d'un pointeur vers une structure "datagramme reçu" (numéro d'index : nombre entier double). [0036] une structure "entrée non valide", composée d'un numéro d'index courant (nombre entier double). [0037] Cette structure permet de référencer facilement à quel message original un ac- quittement (bit Ci) ou une retransmission fait référence, puisqu'à chaque bit Ci correspond normalement une entrée. [0038] On notera que lors de l'implémentation, il est possible d'harmoniser pour n'avoir qu'une seule structure "datagramme", par exemple en ajoutant à la structure proposée "datagramme reçu" un pointeur vers une autre structure, et un booléen de validité. [0039] On notera également que les booléens de réception peuvent être les bits d'un nombre entier (par exemple : bit 0 = participant 0, bit 1 = participant 1...). [0040] Le numéro d'index est constitué de deux entiers : [0041] un entier donnant le numéro d'ordre du créneau dans la boucle. Cet entier varie ty- piquement entre 0 et N-1 pour une boucle de N participants ayant chacun un créneau (temps de parole) par cycle TDMA ; [0042] un entier identifiant le numéro de cycle, sous forme de compteur libre incrémenté à chaque cycle. [0043] Dans le présent document, on désignera ainsi un index sous la forme AB, avec A numéro de cycle, et B numéro d'ordre du créneau dans la boucle. Par exemple, 200/3 : quatrième créneau de la boucle, 200erne cycle de la boucle. [0044] Le numéro de cycle est issu d'un compteur libre, mis à zéro lors de la création de la boucle, et incrémenté à chaque nouveau cycle TDMA. Dans le fonctionnement de l'algorithme ci-dessous, le numéro de cycle est un compteur local : deux HBoucle instanciés sur des participants appartenant à la même boucle n'ont pas forcément le même numéro de cycle (par exemple, si l'un des participants a rejoint tardivement la boucle). La taille de ce compteur doit être telle que le roll-over est censé ne jamais survenir lors de la durée de vie de la boucle (c'est notamment le cas avec un entier codé sur 32 bits), ou alors HBoucle doit gérer ce roll-over. [0045] Pour chaque boucle qu'il instancie, HBoucle crée un buffer de boucle dont toutes les entrées sont initialisées à non valides, et initialise le numéro d'index à 0/0 pour le premier créneau du premier cycle où la boucle est effectivement instanciée. [0046] L'indicateur de mérite de relayage qui indique, s'il est élevé, l'intérêt relatif de relayer effectivement le message : [0047] s'il est strictement positif, l'intérêt est d'autant plus fort que le nombre est grand, [0048] s'il est nul ou négatif, le message ne peut pas être relayé. [0049] Le buffer de boucle est un buffer de taille fixe (en termes de nombre d'entrées). Ty- piquement il a la taille correspondant à quelques cycles TDMA (cette taille étant un paramètre de configuration technique). Donc pour une boucle à 12 créneaux et une taille 4, le buffer aura 48 entrées. Pour une boucle à 6 créneaux et une taille de 4, le buffer aura 24 entrées. [0050] Dés dépassement de cette capacité, l'entrée la plus ancienne dans le buffer est supprimée, pour que le buffer garde une taille fixe. Le butter fonctionne donc comme 6 un buffer circulaire, sans gestion de dépassement de capacité. [0051] Le buffer de boucle mémorise également les créneaux émis par le participant ins- tanciant HBoucle. Cette fonctionnalité permet : [0052] la collecte des acquittements sur les messages transmis par l'applicatif [0053] la prise en compte homogène des informations de connectivité et d'acquittement. [0054] Le fonctionnement de l'algorithme est le suivant. [0055] L'algorithme utilise plusieurs opérations : [0056] mémorisation des datagrammes reçus ou émis dans le buffer de boucle [0057] mise à jour des états de réception dans le buffer de boucle [0058] choix du prochain datagramme à émettre [0059] Mémorisation des datagrammcs dans le buffer de boucle [0060] 1/ Mémorisation des datagrammes reçus [0061] Pour chaque datagramme reçu dans la boucle, HBoucle vérifie si ce datagramme n'est pas déjà présent dans le buffer de boucle. Pour cela, HBoucle compare le datagrammc avec les données équivalentes de chaque entrée valide du buffcr. Si cette comparaison s'avère gourmande en ressources informatiques (vu, par exemple, la taille du datagramme en question ou la taille du butter de boucle), une fonction de hachage peut être utilisée pour définir une "signature" propre à chaque datagramme. La structure du buffer de boucle est alors complétée par cette signature. De nombreux algorithmes de hachage ont été publiés, compatibles avec une telle utilisation (MD5, SHA-1..). [0062] S'il y a identité, alors HBoucle compare le numéro de cycle du datagramme reçu (diminué de l'éventuel âge du datagramme) au numéro de cycle du datagramme identique dans la table (diminué de l'éventuel âge stocké et associé à ce datagrarmine). Si la valeur absolue de leur différence est inférieure ou égale à un seul défini par exemple à 2, alors HBoucle considère que ce datagramme est déjà présent dans le buffer. [0063] Si le datagramme n'est pas déjà présent, HBoucle crée et complète une entrée "da- tagrarmine reçu" avec le numéro d'index courant dans le buffer de boucle, pour mémoriser ce datagramme. L'indicateur de mérite est positionné à zéro. HBoucle remonte également le message vers l'application cliente. [0064] Si le datagramme est déjà présent, il s'agit visiblement d'un datagramme en train d'être relayé par un autre participant de la boucle ; il ne porte donc pas de nouvelle information. Hboucle crée et complète une entrée "référence de datagramme reçu" dans le buffer de boucle, pointant vers l'entrée correspondant au datagramme déjà reçu, et HBoucle diminue de Idiff la valeur du mérite associé à ce datagramme. [0065] Si aucun créneau valide n'est reçu dans le temps de parole de la boucle (créneau original non reçu), HBoucle crée une entrée non valide à l'index correspondant. 7 [0066] 2/ Mémorisation des datagrammcs émis [0067] La mémorisation des datagrammcs émis par HBoucle s'effectue au titre de la fonction "choix du prochain datagramme à transmettre" décrite en page 12. [0068] 3/ Traitement du datagramme le plus ancien [0069] Le buffer de boucle ayant l'architecture d'un buffer circulaire de taille fixe, l'ajout d'un message dans le buffer revient à supprimer son entrée la plus ancienne. Le traitement de mémorisation d'un datagramme dans le buffer déclenche le traitement suivant, pour le message qui va en être supprimé : [0070] Si le datagramme qui y était stocké était d'origine applicativc (émis à l'origine par l'applicatif client de HBoucle), et que son indicateur de mérite est supérieur à Sdiff, alors HBoucle remonte à l'applicatif le compte-rendu d'acheminement du message (booléens d'indication de réception) : on remonte un compte-rendu de transmission pour un message qui n'a pas été acquitté en totalité par les participants de la boucle. [0071] dans les autres cas de figure, l'entrée est supprimée sans autre action. [0072] Mise à jour des états de réception des datagrammes du buffer [0073] 1/ Mise à jour suite à un datagramme reçus [0074] Suite à un créneau reçu dans la boucle, HBoucle positionne à Truc le booléen cor- respondant à son adresse de boucle, dans rentrée du buffer qui vient d'être créée (HBoucle a correctement reçu ce datagrammc). HBoucle positionne également à Truc le booléen correspondant à l'émetteur de ce créneau, dans l'entrée du buffer qui vient d'être créée (le participant qui a émis le créneau l'a correctement reçu... puisqu'il en est l'émetteur). [0075] Puis HBoucle analyse les bits Ci reçus dans le créneau. [0076] pour chaque bit Ci reçu à "1", HBoucle recherche le numéro d'index correspondant à ce bit Ci (et donc le datagramme associé), et recherche l'entrée de la table associée. Si l'entrée est un datagramme, HBoucle positionne à True le booléen de réception correspondant au participant ayant positionné le bit Ci à 1. Si l'entrée est une référence de datagramme reçu, HBoucle recherche la référence pointée et réapplique le présent traitement (note : cette référence peut être valide ou non). Si l'index dans le buffer n'est pas valide (le message original n'a pas été reçu, ou le message a été purgé du buffer de boucle), HBoucle ne fait rien. Si tous les booléens de réception du datagramme sont à Truc, alors HBoucle positionne l'indicateur de mérite de relayage à Vrec (on interdit la retransmission d'un message correctement reçu de tous, et on signale le cas échéant au mécanisme de purge qu'il a été déjà remonté à l'applicatit). Si le datagramme est d'origine applicative (transmis par l'applicatif à HBoucle en vue de l'émettre sur la boucle), alors HBoucle remonte à l'applicatif le 8 compte-rendu d'acheminement du message (booléens d'indication de réception) : on remonte une indication de réception complete dès que celle-ci est acquise. [0077] pour chaque bit Ci reçu à "0", HBoucle recherche le numéro d'index correspondant à ce bit Ci (et donc le datagramme associé), et l'entrée dans la table de boucle associée. Si l'entrée est un datagramme : [0078] si le booléen de connectivité est à Zéro pour cc participant, HBoucle ajoute à l'indicateur de mérite de relayage associé : + Iadr si le participant ayant positionné le bit Ci fait partie des destinataires adressés du datagramme et s'il déclare (dans ses derniers bits Ci transmis) me recevoir, + Idiff dans les autres cas : destinataire non adressé, et/ou connectivité non établie). sinon, HBoucle ne fait rien. Si l'entrée est une référence de datagramme reçu, HBoucle recherche la référence pointée et réapplique le présent traitement (note : cette référence peut être valide ou non) ; Si l'index n'est pas valide (le message original n'a pas été reçu, ou le message a été purgé du buffer de boucle), HBoucle ne fait rien. [0079] Choix du prochain datagramme à transmettre [0080] HBoucle balaye l'ensemble du buffer, du datagramme le plus récent au datagramme le plus ancien, et recherche le datagramme dont l'indicateur de mérite de relayage est le plus élevée (plus grand entier positif non nul)(note : l'algorithme ne nécessite qu'un seul balayage du buffer de boucle). [0081] A l'occasion de ce balayage, il est suggéré que HBoucle décompte le nombre d'entrées de type "référence de datagramme" présentes dans le buffer, et mémorise l'info correspondante. Cette indication est une indication de la charge de relayage. [0082] HBoucle extrait ainsi l'index du datagramme le plus méritant, et la valeur de ce mérite. [0083] Ensuite, HBoucle détermine le ratio d'émission ou de relayage, en calculant le reste de la division du numéro de cycle par Tx (et donc le numéro de cycle modulo Tx). Ce calcul permet de déterminer le "temps de parole" alloué au relayage, versus celui alloué aux messages émis par l'application. [0084] Si ce nombre est strictement inférieur à Tx -1 : [0085] si le datagramme le plus méritant du buffer a un mérite supérieur ou égal à Iadr, alors HBoucle transmet ce message, [0086] sinon, HBoucle sollicite l'applicatif pour avoir un datagramme à transmettre, [0087] si l'applicatif transmet à HBoucle un datagramme à transmettre, HBoucle le diffuse 9 sur la radio, quelle que soit l'adresse de boucle de ce datagramme, [0088] si l'applicatif ne transmet pas de datagramme à HBoucle dans le temps imparti, alors HBoucle transmet le datagramme le plus méritant (dont le mérite est strictement positif et strictement inférieur à Tadr), [0089] à défaut de datagramme le plus méritant, HBoucle prépare et transmet le message de description du participant sur boucle hiérarchique (message de "bourrage"). [0090] Si ce nombre est égal à Tx -1 : [0091] HBoucle sollicite l'applicatif pour avoir un datagramme à transmettre ; [0092] si l'applicatif transmet à HBoucle un datagramme à transmettre, HBoucle le diffuse sur la radio, quelle que soit l'adresse de boucle de ce datagramme ; [0093] si l'applicatif ne transmet pas de datagramme à HBoucle dans le temps imparti, alors HBoucle transmet le datagramme le plus méritant (dont le mérite est strictement positif) ; [0094] à défaut de datagramme le plus méritant, HBoucle prépare et transmet le message de description du participant sur boucle hiérarchique (message de "bourrage"). [0095] Si l'algorithme a sélectionné un datagramme du buffer de boucle, HBoucle : [0096] - l'émet sur le créneau à venir avec l'adresse d'origine, et l'âge recalculé (par rapport à l'âge d'origine stocké, augmenté de l'écart entre l'index mémorisé et l'index courant); [0097] - le conserve dans le buffer, mais positionne son indicateur de mérite à Vret ; [0098] - crée une entrée de type "référence de datagramme" à l'index courant, dans le buffer de relayage. [0099] Si l'algorithme a sélectionné un datagramme provenant de l'applicatif (ou un éventuel message de bourrage), HBoucle l'émet sur le créneau à venir, et crée une entrée dans le buffer de boucle, de type "datagramme reçu" et en positionnant l'indicateur de mérite à Vret (cette valeur prévenant toute retransmission ultérieure par HBoucle). Les booléens de réception sont positionnés à False (hors celui correspondant au participant implémentant HBoucle, qui est mis à True), et les autres champs sont positionnés en adéquation avec les demandes de l'applicatif. [0100] On notera que pour optimiser le temps de traitement CPU, il est conseillé que HBoucle lance ce traitement N créneaux physiques avant le créneau physique provoquant effectivement le calcul des bits de connectivité. Cette précaution laisse plus de temps à l'applicatif pour fournir le message à transmettre. [0101] Paramètres techniques de HBoucle [0102] Le logiciel implémentant HBoucle présente dans ce cas les paramètres de confi- guration suivants où les valeurs sont les valeurs proposées pour un exemple d'implémentation. [0103] [Tableauxl ] Terme Définition Valeur N ,cle Taille du buffcr de boucle, en nombre de cycles. 5 T x Ratio d'émission et de relayage 3 I diff Valeur d'incrément du mérite pour un message en diffusion +1 I adr Valeur d'incrément du mérite pour un message adressé. Cette valeur doit être supérieure ou égale à Idiff x Neyele x (Np 2)où Np est le nombre maximum de participants possibles dans une boucle +40 V ree Valeur du mérite pour un message reçu de tous. Cette valeur est négative et doit être plus grande que -(I ad, -Idiff ) x Ncycle x Np -4000 V ', Valeur du mérite pour un message relayé par HBoucle. Cette valeur est négative et doit être comprise entre 0 et -(Idrx Neyeic x (Np-2)). Plus ce nombre est grand, moins le double relayage est permis. -1000 S d'if Seul du mérite pour un message non reçu de tous. Cette valeur est négative et vaut (Vr' + Vi.')/2 -3000 101041 11 est bien entendu que le mode de réalisation particulier qui vient d'être decrit a été donné à titre indicatif et non limitatif et que des modifications peuvent être apportées sans que l'on s'écarte pour autant du cadre de la présente invention. 11 [Revendication I] [Revendication 2] [Revendication 3] REVENDICATIONSProcédé de transmission de données entre un émetteur et un récepteur dans un réseau de radiocommunications à capacité de bouclage local, ledit réseau étant organisé sur un mode maillé selon une topologie où tous les hôtes sont connectés pair à pair sans hiérarchie centrale, selon un principe AMRT d'accès multiple à répartition dans le temps permettant de transmettre plusieurs flux de trafic sur un seul canal ou une seule bande de fréquence en utilisant une division temporelle de la bande passante, caractérisé en ce que l'émetteur et le récepteur communiquent au sein d'une boucle comprenant au moins un autre acteur apte à communiquer, un message d'accusé réception étant émis par le récepteur vers l'émetteur à réception par le récepteur d'un datagramme d envoyé par l'émetteur. Procédé de transmission de données selon la revendication 1, caractérisé en ce que lorsque dans un délai prédéterminé, l'émetteur ne reçoit pas le message d'accusé réception, l'émetteur considère que le datagramme n'a pas été reçu par le récepteur et envoie le datagramme d vers un autre acteur apte à communiquer au sein de la boucle, ledit autre acteur devenant alors l'émetteur pour le datagramme d. Dispositif implémentant un procédé selon l'une quelconque des revendications précédentes.