您的位置:首页 > 编程语言 > PHP开发

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

2016-09-09 09:49 651 查看
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),这么几个信息。

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息