This Post Has 4 Comments

  1. WU

    hhliu你好,我是WU

    我最近開始接觸OMNET++,SUMO等軟體,在國內關於OMNET++的資訊非常貧乏,看到網路上有人在接觸這一塊領域,心情很激動,在我的實作上面有個問題跟你請教一下方向。

    在使用OMNET++進行模擬時,是否有辦法建立通道(TCP or UDP之類的方式),來將資料(位置)傳到外部呢?(這裡指的外部是指自己在local建立的server或是其他C++的軟體)

    我的目的是要將OMNET++&SUMO執行中的資料即時的輸出,來進行後續的處理。

    目前我找到的相關辦法有:
    >cOutVector函數會將資料一筆筆的儲存成.vec檔。但這樣似乎無法達到我想要的即時處理。
    >看國外論壇,似乎有人提到使用INET framewok能後做到連接外部interface/server。但我看不太懂他們所討論的INET framework所指的是那些功能。

    如果你有什麼建議或是相關資訊能提供的話,我會非常感激。謝謝

    1. hhliu

      你好
      我也有一陣子沒有碰OMNeT++了,所以不知道我的資訊是否還即時。
      OMNeT++是模擬軟體,如果要能夠即時輸出TCP封包資訊給遠端的伺服器就需要實作完整網路通訊協定,我的印像中是沒有這一塊的。

      一般處理的方式就是把你的Server也用OMNeT++建模,完全使用OMNet++來模擬,然後紀錄兩者間全部的交換的封包,這些封包可以輸出成.vec檔或是其他檔案格式。

      這裡有一個參考的範例,他可以輸出為WireShark用的pcap format,可以事後使用WireShark檢視。或者是用WireShark當作Traffic Generator輸出這些pcap數據到你的Server。

      https://github.com/inet-framework/inet/tree/master/examples/inet/tcpsack

      1. WU

        hhliu你好

        非常感謝你的即時回覆。
        經過幾天的調查,正如你所說的OMNET++本身似乎並沒有供連接外部server的窗口。我之所以會想要這麼做,是因為想要利用OMNET++跟SUMO的車輛通訊模擬資料,在另一套3D模擬軟體(C++)來及時建模,而要如何連接兩個軟體的部分,我也是第一次碰到,所以想到利用server的方式,建立起兩個軟體之間的橋樑。這只是很粗淺的一個想法,不曉得hhliu前輩有沒有什麼看法或建議呢?

        不過我也找到一些其他線索:
        1. 在某篇論文中提到,是透過一個叫做libpcap(Linux)或Winpcap(Windows)來製造external interface連接真實的server(也是本機)來進行真實封包傳遞的模擬。
        2. 在國外論壇中,有人提到問要傳UDP到他自己本機上的server。回覆的人說因為OMNET++是用C++,那也許利用C++全域函數,先寫一個可以傳資料的UDP socket,然後再套進去OMNET++裡。

        很抱歉又發一篇長文提問,還請見諒。

        1. WU

          補充關於你提供的範例Wireshark:
          原來就是使用線索1提到的Winpcap去分析的工具。看了一下Wireshark可以做哪些事情後,我想這會是在完成建模之後的下一步,分析通訊時可以利用的工具,謝謝提供。

          現階段優先在將車輛(NODE)位置傳出來給3D軟體建模,如何建立這之間的溝通橋樑。也許這不在OMNET++的範圍了,但有hhliu前輩的經驗回覆,都很可能幫助我往前一大步。

發佈留言