• 沒有找到結果。

第四章 系統設計與實作

4.1 EstiNet 平台介紹

EstiNet network simulator [21]為 NCTUns (NCTU network simulator) 之 商業版,可以模擬不同的網路行為,且其具備圖形化介面,可降低使用者上 手的困難。目前支援的網路型態有:LTE、WiMAX (IEEE 802.16 d/e/j)、IEEE 802.11 a/g/p/n、GPRS、Ethernet 等等,不勝枚舉。不僅如此,EstiNet 也具 備了三大特點:

2. 模擬引擎:EstiNet 最重要的部分,負責模擬事件的建立及計時器 的排程與管理,模擬器透過模擬引擎及其中的 API 作為與系統核 心溝通的介面。於模擬平台中,不同網路拓樸中的各個節點經由 多個模組模擬此節點的行為,而所有網路拓樸的行為皆於模擬引 擎的模組中執行並產生結果。

3. 協定模組:協定模組 (Protocol module) 對於任意模擬的網路設備 的 protocol stack 採用了模組化的設計,使用者可以利用此設計開 發自己需要的模組,開發完成後只需以替換或加入模組的方式,

便可讓其設計的模組直接在模擬世界中運行。

4. 修改後的系統核心:讓真實世界的應用程式在 EstiNet 上執行,並 透過 socket 在模擬器上運作。

圖 6、EstiNet 模組堆疊架構

圖 6 呈現 EstiNet 的模組化模擬平台,是由兩個 host (左為 host1,右為 host2) 連接一個 switch 的網路拓樸所構成。Host1 及 host2 的 protocol stack

從上到下分別為 Interface、ARP、FIFO、802.3、PHY、LINK,switch 則為 FIFO、802.3、PHY、LINK,而封包流向為 host1 送至 host2。此圖可分為上 半部使用者層級和下半部的系統核心部分,因此,封包流向更精確的說法,

可以說是由上半部左邊之執行於 host1 的 Traffic Generator 產生封包,透過 socket 介面送至 kernel 中的 TCP/IP,並利用 TCP/IP 的通訊協定將封包傳往 右側的應用程式接收。由此可知,封包透過系統中的 socket 層後,會利用真 實世界之 TCP/IP 分別包裝 TCP header 及 IP header,最後到達系統核心內的 虛擬網路介面卡 tunnel 介面,將封包送至 EstiNet 模擬引擎內進行模擬。在 模擬引擎內的封包首先會由 host1 的 Interface 模組進入,依序經過 ARP、FIFO、

802.3、PHY、LINK 模組,然後送至 switch 按照 LINK、PHY、802.3、FIFO 模組的順序往上收並反向往下送,最後傳送到 host2 的 protocol 模組堆疊,

其順序依此類推,而 host2 的 Interface 介面會將封包送入核心的 Tunnel 介面,

判斷後若是該 device 之封包,則經由 IP 層、TCP 層、及 socket 層之處理後,

由 traffic generator 讀取;若非該 device 之封包,則會協助此封包透過路由轉 送出去。

圖 7、NslObject class 定義

為了設計上的一致與便利,因此每個模組均繼承自 NslObject 類別。

NslObject 為 EstiNet 網路模擬器中最基本的類別,如上頁圖 7 所示,所有實 作的模組都必頇繼承此類別,並依功能及需求自行定義其中函式。send() 及 recv() 則為此類別最重要的函式,如圖 8,這兩個函式分別代表不同的傳遞 方向,,send() 是將封包往下面的模組傳送,而 recv() 則將封包接收處理 後送往上層的模組。

圖 8、模組之間封包傳遞示意圖

根據模組設計及規劃上的不同,可以在這些函式內透過計時器、事件的 產生、或新增封包的方式來達到各個不同通訊協定所規定的處理程序,使得 各式各樣的網路能輕易在此模擬平台上被開發、設計、及模擬。

相關文件