如何在INET中添加一個新的協議

 

本文將對如何在 INET 中加入自定義協議進行了介紹,借鑑了【 1 】中的內容,適用於 OMNeT++ 4 版本。

 

INET 中增加一個協議之前,需要對 INET 的基本架構有個瞭解。【 2 】中對 INET 的組織形式進行了一個概要介紹。簡單地說, INET 還是按照 ISO 的層次結構來組織源代碼的。在增加協議之前,首先要清楚這個新協議所處的層次,從而決定源代碼放置的位置。這裏以 ISIS 協議爲例來說明如何在 INET 中增加一個新的協議的具體流程。

由於 ISIS 是一個網絡層的協議,所以我們將 ISIS 的源代碼實現放在networklayer目錄下。在 n etworklayer目錄下創建一個 isis 文件夾,用來保存 ISIS 協議的具體實現代碼。

對於一個新的協議,一般來說至少要包含有下面的四個文件: 

  • ISIS.ned :用來定義 ISIS 模塊,其中有連接門的定義和參數設置等。這使得其他的 NED 文件可以使用 ISIS 模塊(協議)。
  • ISISPacket.msg :用來定義 ISIS 的報文格式。雖然這個不是必須的,但是推薦這樣做,而不要手工書寫代碼。在 OMNeT++ 編譯的時候,將會通過 opp_msgc 工具將此文件轉換成ISISPacket_m.cc和ISISPacket_m. h 文件。
  • ISIS.cc :包含有 ISIS 類的具體實現。
  • ISIS.h :包含有 ISIS 類的聲明(class INET_API ISIS: public cSimpleModule …) 。在此文件中將對協議的具體實現進行編碼。     

INET for OMNeT++ 4 簡化了編譯過程。當做完了上面的工作後,直接在根目錄下執行 make ,如果沒有錯誤的話, ISIS 網絡層協議就已經可以使用了。在原來的版本中,還需要手工修改工程文件,現在這些都已經不需要了。

 

當編譯鏈接通過後,別忘了在 example s目錄下生成一個 ISIS 的測試用例進行測試哦。

 

注意的問題:

  1. NED 文件中需要加入package inet.networklayer.isis;語句聲明,否則在測試用例中會找不到此模塊。
  2. 在編寫代碼的時候,注意模塊中的結構體不要和已有協議中的名稱一樣,否則會鏈接不成功。

 

【1】http://www.omnetpp.org/pmwiki/index.php?n=Main.INETAddingANewProtocol

【2】http://www.netforum.com.cn/viewthread.php?tid=17480&extra=page%3D1

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章