十一月 10, 2009
» 網路模擬器大亂鬥

網路模擬界的 M01-like 開箱文 A Survey of Network Simulation Tools: Current Status and Future Developments

對岸網友的心得

六月 19, 2007
» 與 NS3 的第一次接觸-2

前篇 中提到模擬程式跑完會產生 trace (.tr)檔. 這幾天再仔細看了一下, 模擬程式跑完竟然也會產生 .pcap 檔!

pcap 封包檔案是用來紀錄網路封包的格式. 這個檔案格式可以使用 tcpdump 或是圖形介面的 wireshark 等工具開啟, 從除錯的角度上來看, 因為有一些現成封包分析工具可用來分析 pcap 封包檔, 因此比起 .tr 檔更容易分析. 對熟悉網路開發的人來說, pcap 讓人有從真實網路抓封包的錯覺 :D

一打開 pcap 封包, NS-3 目前的優缺點就無所遁形:

優點:

1. 封包格式參照真實封包定義, 擴充性佳

缺點:

1. 封包目前只支援 IP, UDP, 沒有 mac 層支援
2. 沒計算 checksum (計較起來這其實不算缺點, 沒有那個做網路模擬的還真的去算 checksum)


另外 NS-3 還比較差的一點是目前的拓樸描述還蠻醜的, 宣告一個網路節點會用到這種鬼語法:

Ptr[node] n0 = Create[internetnode] ();
相對8月中預計發佈的 3.0.5 版中可使用的 Python script 版本宣告則是:
n0 = ns.MakeInterNetNode()
同樣的 simple-p2p 拓樸, Python 版的可能是因為加入較少與實做相關的 code 所以比較好理解.
擁有較好可讀性的 Python script 應該是個學習網路模擬的好幫手 :D

» 與 NS3 的第一次接觸

NS-3? 跟PS3沒關係 NS(Network Simulator)-3 是已經主宰網路模擬界多年的 NS2 的繼任者. 原來 NS-3 早已悄悄上路. 值得花點時間來瞧瞧 NS-3 有什麼改進.

初接觸的感覺還不錯, NS-3 有個比 NS2 規範多的網站, 拿掉 otcl 介面描述語言, 使用 C++ 模組化元件並直接用 C++ 來描述拓樸, 有公開可參與的程式碼, 有定期的版本發佈規劃, 而且有 Python Binding (用 Python script 來描述拓樸, 與控制模擬的互動)的規劃!

有 Python Binding 這件事其實看了他們的網站並不那麼意外.
NS-3專案程式碼用 mercurial 管理(用 python 寫的分散式版本控制系統), 所以程式碼可以用"hg clone http://http://code.nsnam.org/ns-3-dev/"抓下來. 預設的編譯程式是一般比較少聽過的 scons, 而在版本發佈規劃中不久就要以另一套 waf 來取代原本的 scons. scons 跟 waf 都是 Python 版的 "better Make" 程式.
總之原本 Makefile 要用 shell script 寫的地方, 都改用 python script 來撰寫, 可讀性較佳之外還可以用到 Python 語言的所有功能.

就 NS-3 模組本身而言, NS-3 去掉了 NS-2 中 討人厭的 使用 otcl 描述模型的方式, 改成直接用 C++ 描述之後, 安裝上簡單了不少, 也不用多學一門沒啥用途的語言. C++ 讓多數基本網路元件可以重用, 像以前各個模組會"綁版本"的情形應可降低很多.

目前還在開發中的 Python Binding 讓 網路模型也可以用 Python 描述, 晚上編譯完還沒意識到如何使用 Python 版. 不過編好的 C++ 版一執行就跑出熟悉的 .tr 檔還是蠻有親切感的.

目前 NS-3 的核心網路元件還不多(不過 node 終於可以有真的IP位址了 XD), 範例較少是比較可惜的. 看看這情形要多久才能改善囉.

biggo.com.tw

A Django site.