Routage Zigbee

Adresse d'origine de cet article: https://blog.csdn.net/jason_lm/article/details/82223079

1. Définition et aperçu

       La définition du routage consiste à transférer les données du nœud source vers le nœud de destination. La signification originale du mot routage est un verbe, qui fait référence à l'action de transfert de données réseau vers un nœud cible. Cette action nécessite la participation de plusieurs nœuds. Parfois, il peut également s'agir d'un nom, indiquant un chemin de routage, qui fait référence à la chemin de transmission de la source à la cible. Le contenu de routage de zigbee abordé dans cet article comprend la découverte de routage, la table de voisinage, la table de routage, la table de découverte de routage et certaines commandes de couche réseau.

        La fonction de routage zigbee est implémentée au niveau de la couche réseau (similaire à la couche ip du protocole Internet), et sa responsabilité est de transmettre correctement les données de la couche réseau envoyées par la couche supérieure ou d'autres nœuds au nœud cible. Le chemin de routage est créé par le processus de découverte de routage. Un chemin complet existe dans la table de routage de plusieurs nœuds et un nœud unique stocke l'adresse de saut suivant (saut suivant) du nœud cible. Lorsque la couche réseau reçoit les données, elle vérifie d'abord s'il s'agit d'un périphérique d'extrémité du nœud ou d'un nœud de routage dans la table des voisins. Si tel est le cas, elle effectuera le traitement correspondant. Sinon, elle recherchera la table de routage , et il y aura une connexion avec la cible. L'enregistrement valide du nœud correspondant est envoyé au nœud suivant en fonction de l'adresse de saut suivant de l'enregistrement. S'il n'y a pas d'enregistrement correspondant ou si le lien n'est pas valide, il est déterminé si pour lancer une demande de route (demande de route) ou via le réseau selon que la source de données est une couche supérieure ou un autre nœud La commande status (état du réseau) informe le nœud source qu'il n'y a pas de route disponible (aucune route disponible).

2. Concepts importants

2.1 Perte de lien (coût de liaison)

      La qualité de la liaison sans fil entre les nœuds est quantifiée en zigbee. Cette valeur quantifiée est appelée perte de liaison. Un nombre compris entre 0 et 7 est utilisé pour représenter la qualité de la liaison entre les nœuds, 0 signifie non valide, 1 est la meilleure, 7 est la pire , et initialisé comme valeur invalide. Cette valeur est référencée dans la commande d'état du lien, la table des voisins et le processus de découverte d'itinéraire.

2.2 Perte de chemin (coût du chemin)

       Dans le processus de découverte d'itinéraire, il est utilisé pour quantifier la qualité du chemin de routage. Lorsqu'un nœud de routage reçoit une demande de routage, il ajoute la perte de liaison entre le nœud d'envoi et lui-même à la perte de chemin, puis la diffuse, ce qui c'est-à-dire que la perte de chemin est le lien dans ce chemin. La somme cumulée des pertes. Après avoir reçu le message de demande de route, le nœud cible répond à la commande de réponse de route (réponse de route) en fonction du chemin avec la perte de chemin la plus faible pour sélectionner le chemin optimal.

3. Commande d'état de liaison (état de liaison)

        Une commande au niveau de la couche réseau, l'id est 0x08. Tous les nœuds de routage dont le rx au repos est vrai (la configuration par défaut du routeur) diffuse un message avec un rayon de 1 à chaque cycle d'état de connexion (LinkStatusPeriod est de 15 secondes par défaut), et le rayon de 1 ne sera pas rediffusé. Le message contient la réception de tous les nœuds environnants et envoie la qualité du lien, cette qualité sera mise à jour dans la table des voisins. La qualité de la liaison devient 0 après la non réception du message d'état de connexion du nœud voisin dans les 3 cycles d'état de connexion, indiquant une liaison invalide.

        Remarques: Les données permettant de définir la qualité de la liaison sur 0 pour 3 cycles d'état de connexion proviennent du document de spécification de zigbee. L'implémentation réelle de la pile de protocoles peut ne pas être de 3 cycles. Veuillez vous référer à la mesure réelle.

4. Table des voisins

       Le nœud de routage dans zigbee stocke les informations des nœuds voisins qui peuvent communiquer directement dans la plage physique, y compris les nœuds terminaux, et ces informations sont stockées dans des tables voisines. La table des voisins contient de nombreux champs. Le tableau suivant répertorie certains des champs sur lesquels cet article se concentre.

Champ la description autre
Adresse étendue  Adresse longue  
Adresse réseau Adresse courte  
LQI Stocké est la perte de liaison liée à la réception de données de l'autre partie  
Coût sortant Envoyez la perte de lien reçue par l'autre partie et obtenez-la lors de la réception de la commande d'état de connexion de l'autre partie  
Âge  Tous les autres cycles de commande de l'état de la liaison (état de la liaison) augmentent de 1 et l'état de la liaison est remis à 0. Lorsque la valeur est supérieure à 3, le coût du point de sortie est défini sur 0.  

5. Table de routage

         La table de routage stocke les informations de chemin de routage. Certains champs d'intérêt de cet article sont indiqués dans le tableau suivant.

Champ la description autre
adresse de destination Adresse de destination du chemin  
plusieurs à un Si le chemin a été créé pour une demande de routage plusieurs-à-un Voir les chapitres suivants sur le routage source
Pas de cache d'itinéraire plusieurs-à-un si le nœud centralisé dispose d'un cache pour conserver le chemin source Voir les chapitres suivants sur le routage source
enregistrement d'itinéraire requis La transmission de données doit-elle envoyer des commandes d'enregistrement d'itinéraire aux nœuds centralisés?  
adresse du saut suivant Adresse suivante du chemin

 

         En ce qui concerne le contenu du routage open source, les principaux champs sont l'adresse de destination et l'adresse du saut suivant, ce qui est assez facile à comprendre. Ces champs sont définis dans la spécification zigbee. Il peut y avoir de légères différences dans l'implémentation de la pile de protocoles spécifique. Par exemple, le champ expiryTime est ajouté à la pile de protocoles z-stack. Lorsqu'un chemin n'est pas utilisé pendant une longue période, il est marqué comme un état de temporisation pour faire de la place pour les nouvelles exigences de chemin.

6. Découverte d'itinéraire   

6.1 Tableau de découverte d'itinéraire

         La table de routage stocke les informations de chemin de routage. Certains champs d'intérêt de cet article sont indiqués dans le tableau suivant.

Champ la description autre
identifiant de la demande d'itinéraire ID de demande d'itinéraire, chaque appareil lance une nouvelle demande d'itinéraire ajoutera 1 à l'id  
adresse source Adresse de l'expéditeur de la demande d'itinéraire  
adresse de l'expéditeur Recevez l'adresse de l'expéditeur avec le moins de perte de chemin lors de la rediffusion  
coût à terme Perte de chemin du nœud source au nœud actuel  
coût résiduel Perte du nœud actuel vers le nœud cible Je ne sais pas quelle est cette valeur
date d'expiration Si le délai d'expiration de la réponse de l'itinéraire n'est pas reçu, la valeur par défaut est de 10 secondes et la valeur par défaut de z-stack est de 7 secondes.  

6.2 Processus de découverte d'itinéraire

         La découverte d'itinéraire est utilisée pour rechercher et créer un chemin de routage vers le nœud cible. Lorsque la couche réseau reçoit une demande de données de la couche supérieure et qu'il n'y a pas de chemin de routage valide dans la table de routage, la couche réseau diffuse un message de demande de routage. Lorsque les nœuds de routage voisins reçoivent la diffusion, ils ajoutent la perte de liaison entre l'expéditeur et lui-même à la perte de chemin du message de demande de routage et le rediffusent. En même temps, la demande est enregistrée dans la table de découverte de routage, et le message correspondant chemin est créé dans la table de routage. Lorsque le chemin n'est pas disponible. Il y a un délai aléatoire entre la réception de l'émission et la rediffusion.Dans la mise en œuvre de la pile de protocoles spécifique, meilleure est la qualité de la liaison, plus le délai de rediffusion sera court. En fin de compte, le nœud cible peut recevoir plusieurs rediffusions et avoir plusieurs chemins alternatifs.Il sélectionne le chemin avec le moins de perte de chemin pour répondre à la réponse de route (réponse de route). Le nœud de routage qui reçoit la réponse de routage renvoie la réponse au nœud source en fonction du chemin optimal. Au cours du processus, l'expéditeur ajoute l'adresse de destination à l'adresse de saut suivant de l'enregistrement du nœud de destination dans la table de routage et définit le comme disponible. Créez un chemin de routage entre la cible et le nœud source.

         Comme indiqué ci-dessous, le nœud 1 sur la figure de gauche envoie une demande de routage pour trouver le chemin vers le nœud 10, et le chemin de rediffusion est comme une flèche noire. La figure de droite représente la perte de connexion au chemin et la noire représente la réponse de la route. Le chemin 10-5-1 illustré dans la figure ne nécessite que deux sauts, mais la perte de chemin est de 4, donc 10 répond à la perte de chemin. de 10-6-0-1 Le chemin est 3.

           

          

 

7. Routage de la source

         Un réseau zigbee a généralement un nœud centralisé qui doit communiquer avec d'autres nœuds du réseau. Pour créer un chemin avec tous les nœuds, la création d'un chemin peut prendre un certain temps. Inversement, il peut y avoir des cas où tous les nœuds lancent des demandes de routage en même temps pour trouver des nœuds centralisés, ce qui peut également provoquer des tempêtes de diffusion. La couche réseau zigbee fournit un routage source pour résoudre ce type de problème.

7.1 Demande de route plusieurs-à-un

          Le nœud centralisé crée un chemin du nœud commun au nœud centralisé en lançant une demande de routage plusieurs à un. Le calcul et la rediffusion de la perte de chemin sont les mêmes que les demandes de routage ordinaires, mais il n'y a pas de réponse de routage pour les demandes de routage plusieurs-à-un. Chaque nœud qui reçoit le routage plusieurs-à-un stockera le chemin optimal reçu dans le routage. Il s'agit d'un chemin plusieurs-à-un, l'adresse de destination est le nœud centralisé et le saut suivant est l'expéditeur avec le meilleur chemin. Les nœuds ordinaires définiront l'attribut No route cache dans la table de routage en fonction du message de la demande de routage plusieurs-à-un. True signifie que le nœud centralisé n'a pas de cache de route source et qu'il doit envoyer une commande d'enregistrement de routage chaque fois qu'il envoie des données .

7.2 Commande d'enregistrement d'itinéraire (enregistrement d'itinéraire)

          La demande de routage plusieurs-à-un crée un chemin d'un nœud commun à un nœud centralisé, mais le chemin inverse n'est pas encore disponible. Le chemin entre le nœud centralisé et le nœud commun est envoyé par le nœud commun pour notifier le nœud centralisé en envoyant un message d'enregistrement d'itinéraire. Après avoir envoyé les données d'application au nœud centralisé, le nœud commun enverra alors une commande d'enregistrement d'itinéraire. Le le nœud qui reçoit cette commande se dira L'adresse de est ajoutée à la liste de relais Après avoir reçu la commande d'enregistrement de routage, le nœud centralisé l'envoie au nœud ordinaire de la même manière que le routage source selon la liste de relais. Les nœuds centralisés tels que le cache de routage actif sont utilisés pour stocker le chemin source, puis ce chemin sera stocké dans la mémoire vive, sinon il sera ignoré après utilisation.

8. Appareil final et routage

          Le nœud terminal n'a pas la fonction de routage et son échange de données est effectué via le nœud parent. Envoyez les données directement au nœud parent et le nœud parent envoie au nœud cible ou lance une demande de routage pour créer un chemin de routage. Le nœud parent reçoit ou répond à tous les messages indiquant que le nœud cible est son propre nœud enfant terminal, place les données de la couche application dans la file d'attente de cache et envoie les données au nœud enfant terminal lorsqu'il demande des données (demande de données). Si les données de la file d'attente ont expiré pendant un certain temps et n'ont pas été demandées, le nœud parent sera ignoré. Par exemple, la valeur par défaut dans z-stack est de 7 secondes.

          Pour les nœuds terminaux non à faible consommation d'énergie, vous pouvez configurer rx sur inactif sur true. A ce moment, le nœud terminal peut recevoir les données du nœud parent sans envoyer de demande de données.

 

 

Veuillez indiquer la source pour la réimpression: https://blog.csdn.net/jason_lm/article/details/82223079

1. Définition et aperçu

       La définition du routage consiste à transférer les données du nœud source vers le nœud de destination. La signification originale du mot routage est un verbe, qui fait référence à l'action de transfert de données réseau vers un nœud cible. Cette action nécessite la participation de plusieurs nœuds. Parfois, il peut également s'agir d'un nom, indiquant un chemin de routage, qui fait référence à la chemin de transmission de la source à la cible. Le contenu de routage de zigbee abordé dans cet article comprend la découverte de routage, la table de voisinage, la table de routage, la table de découverte de routage et certaines commandes de couche réseau.

        La fonction de routage zigbee est implémentée au niveau de la couche réseau (similaire à la couche ip du protocole Internet), et sa responsabilité est de transmettre correctement les données de la couche réseau envoyées par la couche supérieure ou d'autres nœuds au nœud cible. Le chemin de routage est créé par le processus de découverte de routage. Un chemin complet existe dans la table de routage de plusieurs nœuds et un nœud unique stocke l'adresse de saut suivant (saut suivant) du nœud cible. Lorsque la couche réseau reçoit les données, elle vérifie d'abord s'il s'agit d'un périphérique d'extrémité du nœud ou d'un nœud de routage dans la table des voisins. Si tel est le cas, elle effectuera le traitement correspondant. Sinon, elle recherchera la table de routage , et il y aura une connexion avec la cible. L'enregistrement valide du nœud correspondant est envoyé au nœud suivant en fonction de l'adresse de saut suivant de l'enregistrement. S'il n'y a pas d'enregistrement correspondant ou si le lien n'est pas valide, il est déterminé si pour lancer une demande de route (demande de route) ou via le réseau selon que la source de données est une couche supérieure ou un autre nœud La commande status (état du réseau) informe le nœud source qu'il n'y a pas de route disponible (aucune route disponible).

2. Concepts importants

2.1 Perte de lien (coût de liaison)

      La qualité de la liaison sans fil entre les nœuds est quantifiée en zigbee. Cette valeur quantifiée est appelée perte de liaison. Un nombre compris entre 0 et 7 est utilisé pour représenter la qualité de la liaison entre les nœuds, 0 signifie non valide, 1 est la meilleure, 7 est la pire , et initialisé comme valeur invalide. Cette valeur est référencée dans la commande d'état du lien, la table des voisins et le processus de découverte d'itinéraire.

2.2 Perte de chemin (coût du chemin)

       Dans le processus de découverte d'itinéraire, il est utilisé pour quantifier la qualité du chemin de routage. Lorsqu'un nœud de routage reçoit une demande de routage, il ajoute la perte de liaison entre le nœud d'envoi et lui-même à la perte de chemin, puis la diffuse, ce qui c'est-à-dire que la perte de chemin est le lien dans ce chemin. La somme cumulée des pertes. Après avoir reçu le message de demande de route, le nœud cible répond à la commande de réponse de route (réponse de route) en fonction du chemin avec la perte de chemin la plus faible pour sélectionner le chemin optimal.

3. Commande d'état de liaison (état de liaison)

        Une commande au niveau de la couche réseau, l'id est 0x08. Tous les nœuds de routage dont le rx au repos est vrai (la configuration par défaut du routeur) diffuse un message avec un rayon de 1 à chaque cycle d'état de connexion (LinkStatusPeriod est de 15 secondes par défaut), et le rayon de 1 ne sera pas rediffusé. Le message contient la réception de tous les nœuds environnants et envoie la qualité du lien, cette qualité sera mise à jour dans la table des voisins. La qualité de la liaison devient 0 après la non réception du message d'état de connexion du nœud voisin dans les 3 cycles d'état de connexion, indiquant une liaison invalide.

        Remarques: Les données permettant de définir la qualité de la liaison sur 0 pour 3 cycles d'état de connexion proviennent du document de spécification de zigbee. L'implémentation réelle de la pile de protocoles peut ne pas être de 3 cycles. Veuillez vous référer à la mesure réelle.

4. Table des voisins

       Le nœud de routage dans zigbee stocke les informations des nœuds voisins qui peuvent communiquer directement dans la plage physique, y compris les nœuds terminaux, et ces informations sont stockées dans des tables voisines. La table des voisins contient de nombreux champs. Le tableau suivant répertorie certains des champs sur lesquels cet article se concentre.

Champ la description autre
Adresse étendue  Adresse longue  
Adresse réseau Adresse courte  
LQI Stocké est la perte de liaison liée à la réception de données de l'autre partie  
Coût sortant Envoyez la perte de lien reçue par l'autre partie et obtenez-la lors de la réception de la commande d'état de connexion de l'autre partie  
Âge  Tous les autres cycles de commande de l'état de la liaison (état de la liaison) augmentent de 1 et l'état de la liaison est remis à 0. Lorsque la valeur est supérieure à 3, le coût du point de sortie est défini sur 0.  

5. Table de routage

         La table de routage stocke les informations de chemin de routage. Certains champs d'intérêt de cet article sont indiqués dans le tableau suivant.

Champ la description autre
adresse de destination Adresse de destination du chemin  
plusieurs à un Si le chemin a été créé pour une demande de routage plusieurs-à-un Voir les chapitres suivants sur le routage source
Pas de cache d'itinéraire plusieurs-à-un si le nœud centralisé dispose d'un cache pour conserver le chemin source Voir les chapitres suivants sur le routage source
enregistrement d'itinéraire requis La transmission de données doit-elle envoyer des commandes d'enregistrement d'itinéraire aux nœuds centralisés?  
adresse du saut suivant Adresse suivante du chemin

 

         抛开源路由的内容,主要的字段就是目标地址及下一跳地址,还是挺好理解的。这些字段定义在zigbee规范中,具体协议栈实现可能有少许差异,如z-stack协议栈增加了expiryTime字段,当一个路径很久没用时,则标记为超时状态给新的路径需求腾出空间。

6. 路由发现   

6.1 路由发现表

         路由表存储路由路径信息,本文关注部分字段如下表。

字段 描述 其他
route request id 路由请求id,每个设备发起新的路由请求都将id加1  
source address 路由请求发起者地址  
sender address 收到转播中路径损耗最小的发送者地址  
forward cost 源节点到当前节点的路径损耗  
residual cost 当前节点到目标接点的损耗 该值如何得到暂时不知
expiration time 如果没有收到路由应答的过期时间,默认10秒,z-stack默认为7秒  

6.2 路由发现过程

         路由发现用于寻找创建到达目标节点的路由路径,当网络层收到上层的数据请求,而在路由表中没有有效的路由路径时,网络层会广播路由请求消息。周边路由节点收到该广播时,将发送者与自己的链接损耗累加到路由请求消息的路径损耗中并转播,同时将该请求记录到路由发现表,并在路由表中创建对应的路径,此时的路径是不可用的。收到广播与转播之间存在一个随机延迟,具体协议栈实现中,链接质量越好转播延迟会越短。最终目标节点可能会收到多个转播,并拥有多个可选路径,它选择其中路径损耗最小的路径原路响应路由应答(route reply)。收到路由应答的路由节点按最优的路径将应答传回源节点,过程中发送者添加到路由表中目标地址为目标节点的记录的下一跳地址,并将该路径设置为可用,同时创建从目标到源节点的路由路径。

         如下,左图节点1发送路由请求,查找到节点10的路径,转播的路径如黑色箭头。右图数字表示路连接损耗,黑色的表示路由响应,图中所示10-5-1路径只需要两跳,但是路径损耗为4,因此10应答了10-6-0-1这条路径损耗为3的路径。

           

          

 

7. 源路由

         zigbee网络通常存在一个集中节点,需要与网络中的其他节点互相通信,为了创建与所有节点的路径,这可能需要话费很长的时间去创建路径。反向来说,可能存在所有节点同时发起路由请求寻找集中节点的的情况,这还可能引起广播风暴。zigbee网络层提供源路由方式解决这类问题。

7.1 多对一路由请求 (many-to-one route request)

          集中节点通过发起many-to-one路由请求,来创建普通节点到集中节点的路径。路径损耗的计算及转播与普通路由请求一样,但是many-to-one路由请求没有路由应答,每个收到多对一路由的节点,都将收到的最优路径存储到路由表中并标记为many-to-one路径,目标地址为集中节点,下一跳为路径最优的发送者。普通节点会根据many-to-one路由请求的消息设置路由表中的No route cache属性,为true表示集中节点没有源路由缓存,每次发送数据都需要跟着发送路由记录命令

7.2 路由记录命令(route record)

          多对一路由请求创建了普通节点到集中节点的路径,但是反向路径还没有。集中节点到普通节点的路径由普通节点发送路由记录(route record)消息告知集中节点,在发送应用数据给集中节点之后普通节点会接着发送一条路由记录命令,收到这条命令的节点会将自己的地址添加到中继列表中,集中节点收到路由记录命令后根据中继列表以源路由的方式原路发送给普通节点。集中节点如有源路由缓存用于存储源路径,则这条路径会被存储在ram,否则使用过后便舍弃。

8. 终端节点(end device)与路由

          终端节点不具备路由功能,其的数据往来都是通过父节点这个通道完成。发送数据直接发给父节点,由父节点发送到目标节点或者发起路由请求创建路由路径。父节点接收或响应所有目标节点为自己终端子节点的消息,将应用层数据放在缓存队列中,在终端子节点请求数据(data request)时将数据发送给它。队列中的数据超时一定时间还没有被请求的,父节点将会丢弃,如z-stack中默认为7秒。

          非低功耗的终端节点可配置rx on idle 为true。这时候终端节点不需要发送数据请求就可以接收父节点的数据。

 

 

转载请注明出处:https://blog.csdn.net/jason_lm/article/details/82223079

Je suppose que tu aimes

Origine blog.csdn.net/qq_27575841/article/details/115290394
conseillé
Classement