• 沒有找到結果。

NCTUns 網路模擬器平台設計與模組架構

Chapter 3.  Design

3.1. NCTUns 網路模擬器平台設計與模組架構

我們的模組設計建構在 NCTUns 網路模擬器平台之上,NCTUns 網路模擬器主要包括三 個部份,分別是經過修改的系統核心、模擬引擎及圖形化介面。系統核心部份,NCTUns 修 改了網路子系統裡相關的程式碼,讓模擬過程中所產生的封包能夠導向正確的目的地。在我 們的模組設計中,是不需要修改核心程式碼的,於是在此不做詳細說明。模擬引擎是整個模 擬器的精髓所在,除了模擬事件的建立、排程與執行外,還包括各式各樣不同的模組,分別 代表著不同的網路協定。網路研究者可以很方便地在 NCTUns 網路模擬器上增加新的網路模 組,或修改目前模擬器中既有的模組,並搭配其他網路模組來進行相關的模擬及研究。第三 部份,NCTUns 網路模擬器提供了圖形化的操作介面,供使用者能夠很方便地產生想要模擬 的網路拓樸與設定相關參數,包括模擬環境及各模組細部的參數等,以減少規劃網路拓樸與 設定時所需的時間。以下我們將介紹 NCTUns 網路模擬器在模組架構方面的設計。

圖 3-1. NCTUns 裡的模組堆疊架構

圖 3-1.是在 NCTUns 網路模擬器裡,兩個 Host 節點透過一個 Switch 節點相連時的模組 堆疊架構。模擬器裡的 Host 具有一個有線網路的介面,其模組堆疊由上到下分別是 Interface 模組、ARP 模組、FIFO 模組、802.3 模組、PHY 模組及 Link 模組等。從發送封包的角度 來看,Host 上執行的應用程式所送出的封包從應用層往下層遞送,經過作業系統的網路層後 送往 interface,這段過程都是由真實系統的流程來處理。封包進入 interface 後如圖 3-1.所看 到的,經過幾個模組的處理之後才從 Link 送出,這是以封包送出的角度來看。若是以接收封 包的角度來看,則是對方藉由 Link 所送過來的封包,會先到達 PHY 模組,再經由 802.3 模 組往上層遞交,直到該封包被接收完畢。對 Host 而言,封包最後會經由 tunnel interface 進 入 kernel space,由 kernel 來決定封包的去向;若接收端為 Switch,因為 Switch 是第二層 的網路設備,所以是由 Switch 模組來決定該封包的去向,並不會進入 tunnel interface。

圖 3-2. Nslobject class 定義

NCTUns 網路模擬器提供了一個最基本的 prototype 模組 NslObject,所有模擬器裡的模 組都必須繼承 NslObject 這個類別,並依據每個模組的功能與需求來實作其中的幾個函式。

圖 3-2.是 NslObject 的定義,其中最重要的函式是 send()與 recv(),所有在模組間遞送的封 包都會經過這兩個函式的處理。例如:當某個節點接收來自其他節點的封包時,最底層的 Link 模組中所實作的 recv()函式會最先被呼叫,接著,Link 模組會透過 put()與上層的 get()來間 接呼叫上一層的 recv(),讓上層收到並處理這個封包。相反地,send()函式是處理往外送出 的封包,封包可能是在模組中自行產生,或是從 kernel space 經過 tunnel interface 送下來 的封包;若是從 kernel space 遞交下來的封包,則最上層的 interface 模組裡的 send()函式 將最早被呼叫,再一層一層往下呼叫各模組的 send()函式將封包送往底層。除非在底層因暫 存空間不足或其他因素造成捨棄 (Drop)之外,封包最終都會被傳送出去。圖 3-3.所呈現的是 在 NCTUns 網路模擬器裡,同一個節點中的各模組間傳送與接收封包的示意圖。

圖 3-3. 模組間封包的傳遞架構

相關文件