原创 Microchip zigbee协议栈路由协议学习(4):路由表

2008-9-19 21:26 5293 4 7 分类: MCU/ 嵌入式

Microchip的zigbee协议栈路由协议实现代码中有3张与路由有关的表:路由表(routing table)、路由发现表(route discovery table)和邻居表(neighbor table)。


在对数据分组转发中,主要进行下一跳地址定位的函数为GetRoutingAddress()(用于网状路由)和RouteAlongTree()(用于树状路由)。


GetRoutingAddress()方法的主要流程为:



  • 通过NWKLookupNodeByShortAddrVal()方法在邻居表中查找节点;
  • 如果找到了并且该节点属于本节点的下属节点(currentNeighborRecord.deviceInfo.bits.Relationship == NEIGHBOR_IS_CHILD):

    •   直接发送该分组。返回。

  • 否则:

    •  如果设置了支持网状路由算法的话:

      •  先通过HaveRoutingCapacity()检测路由表(routing table)和路由发现表(route discovery table)是否存在目的地址的路由或者有空记录(可以发起对目的地址的路由发现)。
      • 如果具备路由能力:

        • 如果输入参数指定强制发现路由(discoverRoute == ROUTE_DISCOVERY_FORCE):

          • 启动路由发现:InitiateRouteDiscovery();

        • 否则:

          • 通过GetNextHop()遍历路由表,找到目的地址对应的路由记录,从路由记录中取下一跳地址及路由状态;
          • 如果返回成功(ROUTE_ACTIVE):

            • 发送分组;

          • 否则:

            • 通过RouteAlongTree()使用树状路由算法转发分组;

      • 否则:

        • 通过RouteAlongTree()使用树状路由算法转发分组;

    • 否则:

      • 通过RouteAlongTree()使用树状路由算法转发分组;

注:GetRoutingAddress()方法本身不执行分组的转发,而是通过返回ROUTE_SEND_TO_MAC_ADDRESS状态由它的调用者来执行分组转发。


在RouteAlongTree()方法中,对邻居表中的每条记录进行判断,如果该邻居属于本节点的子节点,则判断目的地址是否该节点或该节点的下级节点(通过IsDescendant()方法实现判断),是的话就转发分组。


 

文章评论3条评论)

登录后参与讨论

lanzhoo 2011-5-8 18:31

好久没上来了。我得先重新看看代码再回复。谢谢!

weidebao1985_581348969 2011-1-15 10:00

你好,我也想知道zigbee协议栈如何获取路由表?

njwy1978_466671076 2011-1-6 09:44

您好: 我看到您的文章,想问一下:如何获取路由表?谢谢
相关推荐阅读
lanzhoo 2015-03-16 18:38
WIFI模块(HED10W07SN)应用设计入门
WIFI模块(HED10W07SN)应用设计入门 以下系列帖子记录我学习WIFI模块(HED10W07SN)的过程和心得,以及为学生设计的入门指引。 ...
lanzhoo 2015-03-16 18:37
HED10W07SN串口应用设计
串口通信应用设计 HED10W07SN模块有两个串口。厂家提供的参考实现中,串口0用于管理:AT指令、EM_WIFI程序下载、Boot Loader程序下载(...
lanzhoo 2015-03-16 16:42
HED10W07SN基本I/O设计
基本I/O设计 芯片中没有与其它外设功能复用的GPIO引脚只有3个:GPIO11、GPIO12、GPIO13。 底层提供...
lanzhoo 2015-03-16 16:40
WIFI模块HED10W07SN开发环境
开发环境 选择联盛德微电子的HED10W07SN模块入手进行学习是带点偶然的。 拿WIFI模块和CC2530结合做网关是很早就想做的事,但WIFI模...
lanzhoo 2014-11-27 19:29
无线单片机入门导学(基于CC2530)
无线单片机(WSN/Zigbee)应用设计入门导学(基于CC2530) 我们学习无线单片机编程/应用设计是为了什么呢? 1、设计有用的应用...
lanzhoo 2014-11-27 19:24
web方式远程控制
web方式远程控制应用设计 这一类应用的特点是客户端通过浏览器(http协议)方式对无线单片机进行远程控制及数据采集。 ...
广告
我要评论
3
4
1
2
3
4
5
6
7
8
9
0
广告
关闭 热点推荐上一条 /3 下一条