向NS2中新增新協議型別的步驟

xmuguoxin發表於2009-03-03

[具體的可以參考ping協議的實現例子]

在NS2中定義一種新的型別的packet,至少要實現如下4個步驟。下面以ns2中的tcp包頭為例子說明。

具體原始碼見 "~ns/tcp" 目錄、 "~ns/common" 目錄以及"~ns/tcl/lib" 目錄下的相關檔案。

1. 為packet頭定義一個struct資料型別, 例如 "struct hdr_tcp"; ( 在 "~ns/tcp/tcp.h" 檔案中)
2. 實現該packet的OTcl linkage,即需要定義一個 PacketHeader 類。例如 static class TcpHeaderClass,並需要將"PacketHeader/TCP" 作為引數傳給該類的建構函式; (在 "~ns/tcp/tcp.cc" 檔案中)
3. 在 "~ns/common/packet.h" 檔案中,為 enum packet_t 新增一個新的條目 "PT_TCP" ,並在p_into類的建構函式中新增一個新的陣列元素 name[PT_TCP] = "tcp",要注意此處的位置必須對應。
4. 在檔案 "~ns/tcl/lib/ns-packet.tcl" 中新增,往 "foreach prot" 中新增一行 "TCP" 。

以上各個步驟中,步驟1是為了定義新的包頭格式;步驟2是為了能夠將該資料包與Otcl聯絡起來;步驟3是為了在trace中能夠使用該資料包,注意name[PT_TCP]="tcp",其中的 "tcp" 即是出現在trace檔案中的第五列,pkt type;步驟4是為了NS在啟動的時候能夠載入我們定義的包頭。

最後需要注意:如果新建的協議是無線路由協議,則還需要在 "~ns/tcl/lib/ns-lib.tcl" 檔案中Simulator的create-wireless-node方法中新增相應的處理。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9378682/viewspace-1018026/,如需轉載,請註明出處,否則將追究法律責任。

相關文章