天天看點

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),這麼幾個資訊。

路由引擎的源碼結構是這樣的:

CTP源碼分析7 CTP路由引擎結構及源碼分析(一)----TreeRoute.h頭檔案解讀和概要介紹

繼續閱讀