1、请问Zstack2.5.1是否自动实现了如下机制:当父节点在一定时间间隔内未收到子节点的Data Request后,会从自己的关联表中删除该子节点对应的项,即自动更新自身的关联表,从而避免子节点频繁更换父节点所带来的短地址满问题。
2、在1的基础下还有如下一个疑惑:是不是如果父节点能够实时更新自己的关联表,在终端节点频繁更换父节点造成自身的短地址频繁变更时,协调器向终端节点点播发消息的时候路由是正确的(即点播的数据包能够实时路由到终端节点的新父节点,而不是仍然错误的路由到它原来的父节点)。如果不正确的话,还应该再做其他哪些工作?
user5281211:
1、现在我的应用场景是终端节点会频繁更换父节点,这种情况下必须定时更新路由器的关联表。我现在有两种想法:一是因为终端节点从新的父节点入网成功后会广播一个包,那么原来的父节点收到这个广播包后是不是可以去比对自己的自己的关联表,然后从关联表中去删除对应的子节点的地址。二是可以通过Data request来更新关联表,请问这个死路是不是就是路由节点ZIGBEE_CHILD_AGING的思路,在Zstack2.5.1中,还有这个CHILD_AGING的功能吗?
2、关于Zigbee中关联表、路由表和邻居表的区别。
YiKai Chen:
1. 原則上是的、Z-Stack 2.5.1a沒有支持child aging.
2.
关联表
Association Table would keep a list of ZR/ZED that joins this node.路由表
Each ZigBee router, including the ZigBee coordinator, contains a routing table in which the device stores information required to participate in the routing of packets. Each routing table entry contains the destination address, the next hop node, and the link status. All packets sent to the destination address are routed through the next hop node. Also entries in the routing table can expire in order to reclaim table space from entries that are no longer in use.邻居表
Neighbor routers are routers that are within radio range of each other. Each router keeps track of their neighbors in a “neighbor table”, and the “neighbor table” is updated when the router receives any message from a neighbor router (unicast, broadcast or beacon).
user5281211:
回复 YiKai Chen:
那么我想请问您,路由器会不会根据子节点向自己发送的Datarequest来更新关联表,如果有的话,这部分工作是不是Zstack自己实现好的呢?另外,请问您有什么更新关联表的好办法没?
YiKai Chen:
回复 user5281211:
更新关联表这部分工作是Zstack自己实现好的
user5281211:
回复 YiKai Chen:
那么是不是只要父节点能够实时更新关联表,就能确保终端节点在频繁更换父节点时给终端节点的数据包能够顺利到达该终端节点。比如,在某个终端节点A更换了父节点后,如果协调器给A点播数据包的话,这个数据包能够正确的路由到A的新父节点,而不是错误的路由到了它之前的父节点。如果实时更新关联表还达不到这个效果的话,还应该做哪些工作了?
YiKai Chen:
Z-Stack 2.5.1沒有這個功能,关联表會因收到ZDApp_AnnounceNewAddress或是裝置leave request 而更新
YiKai Chen:
回复 user5281211:
照理說路由失效Z-Stack會發出route request 來更新路由表
user5281211:
回复 YiKai Chen:
也就是说父节点在收到某个节点的ZDApp_AnnounceNewAddress后就会更新自身的关联表,这部分工作应该是Zstack实现了吧?
user5281211:
回复 YiKai Chen:
也就是说父节点在收到某个节点的ZDApp_AnnounceNewAddress后就会更新自身的关联表,这部分工作应该是Zstack实现了吧?
user5281211:
回复 YiKai Chen:
我在另一个问题跟您请教了一个同样的问题:对于路由,我知道可以通过定时发送Link Status使得网络中其他的节点更新自己的AssociatedDevList,但是终端设备是不会定时发送Link Status,那按照您说的,通过入网成功时的ZDApp_AnnounceNewAddress相当于变相的实现了Link Status的工程,请问是不是可以这么理解?
TI中文支持网