La retransmission de paquets perdus est une fonction très importante dans les applications de communication de données, en particulier dans la communication sans fil, c'est un indicateur qui détermine le niveau avancé des protocoles(termes associés : protocole LoRAWAN) de communication.
Comment détecter la perte de paquets
Si vous souhaitez retransmettre la perte de paquets, vous devez d'abord détecter la perte de paquets. S'il n'y a pas de perte de paquets, il n'y aura pas de retransmission. Dans les communications sans fil, il existe généralement deux façons de détecter la perte de paquets.
sens du porteur
La détection de porteuse est une méthode courante de détection de perte de paquets et CSMA/CA est développé sur la base de la détection de porteuse. CSMA/CA peut également être considéré comme un mécanisme de retransmission, qui est adopté par le WIFI et le zigbee que nous utilisons souvent. Un appareil de communication ouvre la réception pendant une courte période de temps avant d'envoyer un message. Dans ce court laps de temps, l'unité sans fil détectera s'il y a d'autres signaux d'interférence dans la même bande de fréquence. Par exemple, lorsqu'un appareil zigbee effectue une détection de porteuse, il doit détecter s'il y a WIFI, Bluetooth transmet des signaux, et s'il y a d'autres signaux d'interférence Zigbee transmet un signal. Si le signal d'interférence provient du WIFI ou du Bluetooth, l'appareil zigbee mesurera si sa puissance est aussi élevée que la sienne. Si la puissance n'est pas aussi élevée que la sienne, il le submergera. L'appareil, que la puissance de l'autre partie est supérieure à la sienne, abandonnera activement les paquets et laissera les autres passer en premier.
mécanisme de réponse
Une autre façon d'évaluer la perte de paquets consiste à ajouter un mécanisme de réponse.Habituellement, les protocoles de communication ont un modèle OSI à sept couches. À partir de la couche liaison dans le protocole à sept couches, chaque couche peut ajouter un mécanisme de réponse. Plus le niveau est bas et plus le matériel est proche, plus la réponse du mécanisme d'acquittement est rapide.
Nous prenons toujours le mécanisme de réponse de ZigBee comme exemple. Le modèle OSI de Zigbee, qui dispose d'un mécanisme de réponse, est actuellement limité à la couche MAC (couche liaison de données) et à la couche APS (couche transport). Cependant, dans les applications pratiques, un mécanisme de réponse est souvent ajouté à la couche application. La réponse de la couche MAC est la réponse la plus rapide, également appelée MAC-ACK, qui est généralement générée automatiquement par le matériel de l'unité d'émetteur-récepteur sans fil de zigbee. Après avoir reçu la trame de données zigbee, le dispositif de réception l'envoie sous la forme d'une diffusion de 120 microsecondes. Dans le même temps, MAC-ACK est également la trame la plus courte de zigbee, avec une longueur de trame de seulement 5 octets, plus un total de 11 octets pour le préambule de trame et la trame de synchronisation. Selon le taux de transmission de 250 kbps de zigbee, chaque octet nécessite 32 microsecondes et le temps de service d'une trame MAC-ACK est de 352 microsecondes. Cela signifie qu'après avoir envoyé une trame MAC, l'expéditeur recevra le MAC-ACK correspondant à la trame MAC après 120+352=472 microsecondes. De même, la couche MAC de zigbee stipule également que si l'expéditeur ne reçoit pas le MAC-ACK correspondant dans les 540 microsecondes, cela est considéré comme une perte de paquet.
MAC-ACK est envoyé par diffusion.Tout d'abord, il peut réduire le champ d'adresse dans la trame MAC-ACK, réduire la longueur de la trame et raccourcir le cycle de service de la trame ACK.L'expéditeur peut juger si c'est le sien en fonction de la trame numéro dans la trame MAC-ACK. MAC-ACK ; Deuxièmement, MAC-ACK adopte la méthode de diffusion, qui peut également rappeler aux autres appareils zigbee qu'ils communiquent. Si d'autres appareils zigbee effectuent également une détection de porteuse à ce moment, ils peuvent activement éviter les appareils communicants. Dans la couche MAC de zigbee, la détection de porteuse et MAC-ACK sont à deux volets, ce qui peut garantir la précision de la détection de perte de paquets. De plus, les messages de diffusion zigbee ne généreront pas de MAC-ACK.
Mécanisme de détection de perte de paquets diversifié
En plus du mécanisme de réponse au niveau de la couche MAC, zigbee dispose également d'un mécanisme de réponse au niveau de la couche de transport et de la couche d'application. Zigbee est un réseau maillé multi-sauts, et la transmission au niveau de la couche MAC ne peut satisfaire qu'une transmission à un seul saut, de sorte que Zigbee répond également au niveau de la couche de transport, également appelée APS-ACK. L'expéditeur Zigbee transmet un message au récepteur zigbee, qui sera transmis par plusieurs nœuds de routeur zigbee au milieu. Après avoir reçu le message, l'extrémité réceptrice enverra l'APS-ACK à l'extrémité émettrice via le même chemin de routage, et l'extrémité émettrice considérera que le message envoyé a atteint l'extrémité réceptrice après avoir reçu l'APS-ACK. Si l'expéditeur ne reçoit pas APS-ACK après 6 secondes (la valeur par défaut), il considérera le paquet de données comme perdu.
Fabricants et fournisseurs de modules Zigbee, Module sans fil ZigBee à faible puissance en gros
Modules d'essai de haute qualité, y compris LoRa, Wi-Fi, ZigBee, modules BLE. Module Zigbee basse consommation de bonne qualité en provenance de Chine, CDEBYTE se concentre sur la vente en gros de modules sans fil Zigbee de haute qualité. En s'appuyant sur les avantages de la technologie de communication sans fil, de nombreux problèmes industriels sont résolus et le schéma industriel de l'Internet des objets basé sur la technologie sans fil est dérivé. Nous favorisons l'innovation pour vous aider à vous approprier véritablement l'IoT. Prend en charge le service OEM et PCB.
Les systèmes ZigBee n'ouvrent généralement que des interfaces vers la couche application.L'interface la plus courante ouverte vers la couche application est une interface de détection appelée "AF Data Confirm", qui combine la perte de paquets de la couche MAC (y compris la perte de paquets MAC-ACK et la perte de paquets Carrier sense) , la perte de paquets de la couche réseau, la perte de paquets de la couche transport et d'autres informations sous-jacentes sur la perte de paquets. L'application de niveau supérieur de Zigbee peut savoir si le message actuellement envoyé est perdu ou non.
réponse de la couche application
La détection de perte de paquets de la couche MAC et de la couche transport appartient à la perte de paquets de la couche système. Un autre type de perte de paquets est la perte de paquets au niveau de la couche application. Par exemple, un gradateur envoie une instruction "régler la luminosité à 50 %" à un climatiseur. Si cette instruction ne supprime pas de paquets, quel sera le résultat ? Il se peut que le climatiseur exécute "régler la luminosité à 50%", mais le climatiseur n'a que la température mais pas de luminosité, ce qui signifie que cette commande est envoyée à la mauvaise cible. À ce stade, une réponse de la couche application est nécessaire pour résoudre ce problème. Par exemple, après que le climatiseur ait reçu "régler la luminosité à 50 %", il peut répondre à l'extrémité émettrice avec une réponse de couche d'application "voir que je ne suis pas une ampoule".
Mécanisme de retransmission de la couche système
S'il y a perte de paquets, il y aura retransmission. Pour différentes pertes de paquets, la stratégie de retransmission est également différente. Nous utilisons toujours le mécanisme de retransmission de zigbee comme point d'entrée pour analyser le mécanisme de retransmission du protocole de communication.
Mécanisme CSMA/CA
CSMA/CA est un mécanisme de retransmission utilisé conjointement avec la détection de porteuse. Lorsque nous avons parlé de détection de porteuse, nous avons dit que son principe est de recevoir pendant une période de temps, et le mécanisme de retransmission de CSMA/CA est de contrôler le temps d'écoute.
Lorsque la couche MAC de Zigbee envoie un message, elle écoute de manière aléatoire pendant un certain temps. Ce temps aléatoire est aussi particulier, nous savons tous que le temps de zigbee pour transmettre un octet est de 32 microsecondes, et la couche MAC stipule que le temps de transmission de 10 octets est de 320 microsecondes comme "backoff period". Lorsque la couche MAC envoie des données pour la première fois, elle écoute aléatoirement la porteuse pendant 1 à 8 périodes de backoff, c'est-à-dire que le temps d'écoute de la porteuse peut être de 320 microsecondes à 2,56 millisecondes. En supposant que 2 à 3 appareils zigbee envoient des messages de couche MAC en même temps, selon la distribution de probabilité, ils ne détecteront pas le transporteur de l'autre avec une probabilité élevée, ils ont donc tous une chance d'obtenir avec succès la fenêtre d'envoi. Cependant, si les données des appareils zigbee envoyées en même temps augmentent, certains appareils zigbee ne pourront certainement pas saisir la fenêtre d'envoi, ce qui entraînera une perte de paquets de détection de porteuse et une retransmission sera nécessaire à ce moment.
La retransmission de CSMA/CA est également particulière. Puisqu'il y aura des collisions dans 1 à 8 périodes d'attente aléatoires, la portée de la période d'attente est simplement doublée et 1 à 16 périodes d'attente aléatoires sont écoutées pendant la retransmission. Cela réduit-il la probabilité d'évitement ? Si cela ne suffit pas, la prochaine retransmission sera de 1 à 32 périodes d'attente aléatoires... Mais s'il y a toujours un conflit de canal, il est impossible de retransmettre sans fin, n'est-ce pas ? Et chaque retransmission élargira la plage de backoff aléatoire, qui est un gouffre sans fond. Par conséquent, généralement, la couche MAC de zigbee indiquera à la couche application via "AF Data Confirm" après trois fois de retransmission en raison de la perte de paquets due à la détection de porteuse, "J'ai fait de mon mieux, mais je ne peux pas le faire", et le la couche d'application décide quoi faire.
Retransmission de perte de paquets de réponse au niveau de la couche MAC
Dans le protocole zigbee, si le MAC-ACK n'est pas reçu lorsque la trame MAC est envoyée, la couche MAC retransmettra automatiquement la trame MAC 3 fois. Différent de chaque retransmission de détection de porteuse, qui doit augmenter le temps d'intervalle, la retransmission de la couche MAC n'augmentera pas le temps d'intervalle. Si les trois retransmissions échouent, la "confirmation des données AF" sera également utilisée pour informer la couche application que le paquet est perdu et qu'il n'y a aucun moyen de le récupérer.
Retransmission de paquets perdus MAC
Cependant, la détection de porteuse est toujours effectuée pour chaque retransmission de la trame MAC. Si la retransmission de la couche MAC rencontre un conflit de détection de porteuse, la retransmission CSMA/CA sera également induite.
Retransmission de perte de paquets APS-ACK
La retransmission de la couche de transport de Zigbee est utilisée pour s'assurer que le message n'a pas été transmis à l'appareil final. Après avoir envoyé le message, la couche APS attend 6 secondes et continue à retransmettre si aucun APS-ACK n'est reçu. Habituellement, APS retransmet deux fois, la première retransmission a lieu 6 secondes plus tard et la deuxième retransmission 12 secondes plus tard. Si la dernière retransmission échoue, la couche APS rapportera une "notification de mort" à la couche application via "AF Data Confirm".
Troisièmement, la stratégie de retransmission de la couche application
La retransmission au niveau de la couche système, qu'il s'agisse d'une retransmission CSMA/CA, d'une retransmission MAC ou d'une retransmission APS, est une stratégie mécanique et rigide. Le mécanisme de retransmission au niveau de la couche système se caractérise par des retransmissions 2 à 3. Si la retransmission échoue, il signalera l'échec à la couche application via "AF Data Confirm".
Cependant, la couche application est la plus intelligente dans la transmission sans fil, et c'est également la couche où la conception de la stratégie de retransmission peut être effectuée. La couche application doit concevoir des stratégies de perte de paquets et de retransmission en fonction de l'environnement d'application et de l'importance des messages. Nous prenons l'application de zigbee comme exemple pour concevoir la stratégie de retransmission.
Retransmission de l'échec CSMA/CA
Habituellement, l'appareil zigbee échoue CSMA/CA, soit l'interférence de l'environnement est trop forte, soit le nombre d'appareils zigbee envoyant des messages en même temps est trop grand et dépasse la fenêtre maximale de CSMA/CA.
S'il y a trop d'appareils qui envoient des messages en même temps, un mécanisme "d'évitement manuel" doit être ajouté à ce moment. Par exemple, de nombreux nœuds téléchargent des messages vers le coordinateur en même temps, et un nœud détecte un conflit de porteuse et une perte de paquets via "AF Data Confirm". À ce stade, vous pouvez écrire le message de perte de paquets, puis le retarder pendant une période de temps aléatoire, en échelonnant le pic d'envoi pour la retransmission. Bien sûr, cette plage de temps aléatoire est beaucoup plus grande que le temps aléatoire de CSMA/CA dans la couche MAC. La retransmission de la couche d'application peut être retransmise de manière aléatoire pendant 1 à 4 secondes, avec 0,1 seconde comme unité minimale. Si un conflit de porteuse se produit à nouveau, la plage de temps aléatoire peut être doublée. En particulier, le nombre de nœuds dans les applications réseau zigbee est un facteur dynamiquement variable.Lorsque le nombre de nœuds est important, il n'est pas nécessaire de se soucier des performances en temps réel des données, mais de s'assurer que les messages de chaque nœud peuvent être reçu, et la logique "plus il y a d'appareils, plus cela prend du temps" est également scientifique et raisonnable.
Le mécanisme de détection de conflit fourni par le système Zigbee ne peut détecter que les conflits, mais ne peut pas faire la distinction entre les conflits de transmission et les interférences de signaux malveillants. Par conséquent, il est possible que la couche application ait retransmis et que "AF Data Confirm" ait signalé des conflits de porteuse. À ce stade, la couche application doit être "intelligente".Il est possible que l'appareil zigbee rencontre des signaux d'interférence continus. Le signal d'interférence continu ne peut être résolu que par des moyens violents, et la source d'interférence peut être trouvée et détruite par un équipement de positionnement radio.
Le système accuse réception de la retransmission des paquets perdus
Les stratégies suivantes peuvent être adoptées pour la perte de paquets de réponse du système, y compris la perte de paquets MAC-ACK et la perte de paquets APS-ACK. La couche système de ZigBee a une conception de routage Mesh et recherchera le chemin de routage le plus court lors de la transmission des données. Lorsque la perte de paquets MAC-ACK se produit et que la retransmission MAC échoue, l'algorithme de routage de zigbee calcule un nouveau chemin. Et APS-ACK est le but ultime de la perte de paquets.Dans ce cas, il est fort probable que le but final soit brisé ou que le but final n'existe pas du tout. De plus, si la destination finale n'a pas besoin d'entrer dans la route, le système zigbee envoie directement la trame MAC et signale directement la perte de paquets MAC-ACK.
La perte de paquets de réponse se produit et la retransmission échoue, car la couche système a déjà effectué la retransmission MAC et la retransmission APS. Par conséquent, au lieu de retransmettre immédiatement, vous pouvez attendre un certain temps (10 secondes à 1 minute) avant de continuer à retransmettre. Si la retransmission réussit, cela signifie que le périphérique cible va bien, mais qu'il y a eu un accident tout à l'heure ; si la retransmission échoue, on peut soupçonner qu'il y a un problème avec le périphérique cible, et vous ne devez pas envoyer de messages à l'appareil cible problématique à l'avenir. S'il y a un appareil défectueux dans le réseau zigbee, d'autres appareils consommeront des ressources réseau pour l'acheminer et l'adresser lors de l'envoi de messages.Non seulement il y aura un long délai, mais il n'y aura pas de bons résultats. Par conséquent, une fois qu'il y a un périphérique défectueux dans le réseau, la couche application doit éviter d'envoyer des messages au périphérique défectueux.
Comment gérer la réponse de la couche application
La réponse au niveau du système peut uniquement indiquer si le message envoyé a atteint la cible. La réponse au niveau de la couche d'application indique non seulement que le message a atteint la cible, mais a également pour fonction d'indiquer le résultat d'exécution du message. La réponse anglaise de la couche système est appelée "acknowledge" en abrégé "ACK" et la réponse de la couche application est appelée "response" en abrégé "RSP". L'ACK est généré immédiatement après que l'appareil cible a reçu le message, et le RSP est la réponse après que l'appareil cible a traité le message.Le temps d'attente est ajouté au temps de traitement de l'appareil cible, ce qui est hautement imprévisible. Par conséquent, généralement dans l'application de contrôle de zigbee, lors de l'envoi d'un message court, activez uniquement MAC-ACK mais pas APS-ACK, puis attendez RSP. En plus d'être utilisé pour déterminer si des paquets sont perdus, RSP peut également déterminer quel message envoyer la prochaine fois, de sorte qu'un système de contrôle en boucle fermée puisse être formé.
Lorsque l'extrémité réceptrice envoie une réponse RSP à l'extrémité émettrice après avoir reçu le message, afin de s'assurer que la RSP peut atteindre l'extrémité émettrice, elle active généralement APS-ACK à la place. De cette manière, même si le paquet de réponse RSP est perdu, le mécanisme de retransmission de la couche transport autorisera automatiquement la retransmission de la réponse RSP. De plus, il est stipulé dans zigbee 3.0 qu'un appareil zigbee peut utiliser n'importe laquelle de ses propres valeurs d'état en tant que paquet de pulsation pour signaler à un autre appareil.Lorsque le paquet de pulsation est envoyé, il est contrôlé par la couche système sans intervention du couche d'application, et la couche d'application n'interférera pas si le paquet de pulsation est envoyé. Par conséquent, lorsque le paquet de pulsation est transmis, APS-ACK est généralement activé et RSP n'est pas activé.
À propos de nous
Ebyte est une entreprise
nationale de haute technologie spécialisée dans la recherche et le
développement de modules sans fil et de terminaux IoT industriels. Les
produits développés et fabriqués indépendamment comprennent les modules sans fil LoRa / WiFi/ les modules sans fil Bluetooth / ZigBee , les équipements de réseau 4G, les modules Ethernet, NB-IoT , l'IoT industriel les terminaux de transmission de données