原文链接:https://blog.csdn.net/weixin_48407519/article/details/108692748
Zigbee路由机制 之 表路由
Zigbee基于使用的场景采用了多种路由方式,主要的机制包括以下几种
- 表路由
- Many-to-one/源路由
- 广播路由
- 多播路由
本文将讲述Zigbee是如何利用表路由来建立路由的。
表路由,顾名思义,就是用一些表来存储路由中的条目。这种路由方式一般用于一般设备之间的点对点通信。待发送数据的源节点在发送数据之前会先广播一个路由请求的消息,这个消息会在整个网络转发,目的地节点收到这个消息后会回复一个路由回复消息,这个消息最终到达源节点,在回复的过程中,参与路由转发的所有中间节点会因此建立起一些路由表,这些路由表最终形成了一条从源节点到目标节点的路由。
以下将用一个GIF文件来演示路由发现的过程。
- 假设网络中存在四个节点,他们可以两两通信。节点A需要发送数据包给节点D。
- 节点A发送路由请求的广播,请求的目标节点为D,路由表中会生成一个临时表项,目的为D,下一跳未知,状态为discovery
- 节点B收到这个广播消息后会转发,B处理这个route request的时候,会生成两条临时表项。第一条是目的为A,下一跳A,状态discovery;第二条是目的为D,下一跳未知,状态为discovery;这样如果收到route reply的时候,可以查表转发,并且更新目的为D的这条表项。
- C收到B转发的广播消息后,B处理这个route request的时候,会生成两条临时表项,类似B。然后C会继续转发这条广播。
- D收到C转发的广播后,发现是一条路由请求消息,且目标是自己,于是准备好路由回复的消息发送给节点C,此时采用的是单播,而不再是广播。同时,D也会在自己的路由表中创建一条目的地为A,下一跳为C的路由条目。
- C收到来自D发往A的路由回复消息后,因在步骤4已经建立了往A的路由表,所以将消息发送给B。并更新往D的路由。
- B收到消息会将消息发送A
- A收了路由回复的消息,在自己的路由表中更新了目标节点为D,下一跳为B的条目。
至此路由发现就完成了,接下来的通讯,A就会直接将消息发送给节点B。