GeoAODV from github
aodv_rte.function block
aodv_rte_attributes_parse_buffers_create (void)
- 加入初始化geo parameters的操作。
app_pkt_arrival_handle()
- 加入判斷使用何種類型AODV的操作。這一步主要判斷節點是否有路由,若無則發起路由發現。有不同類型AODV產生不同RREQ並分發。
rreq_pkt_arrival()
- 聲明要用到的局部變量
- 聲明用來記錄打印IP addr的局部變量
- 加入debug字段,用來輸出目前信息。
- 用RREQ的源地址座標升級GeoAODV table
- 若干出打印req到達及冗餘信息的debug
- reply_send()增加發送Geo information
- 根據位置信息判斷是否轉發RREQ
- 判斷IPv4 or 6以封裝RREQ數據包
- aodv_rte_ip_datagram_create 需要增加表示AODV類型的字段(Geo需要增加相關信息,增加數據包大小)
- 這裏存在問題,數據包大小不能正確的根據類型變化。
rrep_pkt_arrival_handle()
- update the geotable with the most current x, y
- 刪除沒有默認x, y記錄的表項
- 這裏出現了更新和刪除的混淆,需要注意
route_table_entry_update()
- rrep用來更新目的地址相關路由, rreq更新上一跳相關信息。
rout_table_entry_from_hello_update()
…
總結
這裏的改進方法和思路很有借鑑價值。
- 增加記錄信息的表項
- geotable
- 2 hop information
- 消息包中攜帶額外消息
- 從opnet.aodv_rte修改部分代碼而來
- 只需要修改網絡層相關內容
- 有節點根據信息判斷是否轉發的步驟