CTP源码分析7 CTP路由引擎结构及源码分析(一)----TreeRoute.h头文件解读和概要介绍

CTP路由引擎主要由定时器驱动,发动路由帧来建立通信拓扑,广播主要的内容就是广播自己相对于根节点的ETX以及自己的地址,当然还有自己阻塞的一些状态信息,这些信息会被邻居节点捕获,然后更新邻居节点的路由表,每个节点都可以根据自己的路由表,根据情况选出ETX比较小的节点来作为自己的父节点。这样子每个节点和根节点的最小代价通信路径就可以得出来了。拓扑也可以得以建立。

在CTP.h中规定了路由帧的格式:

typedef nx_struct {
  nx_ctp_options_t    options;
  nx_am_addr_t        parent;
  nx_uint16_t         etx;
  nx_uint8_t          data[0];
} ctp_routing_header_t;
第一个变量是状态位,比如如果节点阻塞了或者节点还没有自己的父节点,那么就要在这个状态为中填充对应的值。


路由表的格式在TreeRoute.h中也有了定义:

typedef struct {
  am_addr_t parent;
  uint16_t etx;
  bool haveHeard;
  bool congested;
} route_info_t;

typedef struct {
  am_addr_t neighbor;
  route_info_t info;
} routing_table_entry;

inline void routeInfoInit(route_info_t *ri) {
    ri->parent = INVALID_ADDR;
    ri->etx = 0;
    ri->haveHeard = 0;
    ri->congested = FALSE;
}
首先就是一个索引值一个信息部分,在路由表中要记录当前节点的地址,ETX,有没有监听到父节点(当一个节点没有确定父节点之前haveHeart这个值都是0),这么几个信息。

路由引擎的源码结构是这样的:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值