• 沒有找到結果。

系統軟體元件架構

首先我們以圖 3-1 說明 EstiNet 網路模擬雲端系統的軟體元件架構圖。其中 的大框表示雲端系統部分,區分雲端系統的內外。我們將 GUI 置於雲端之外,

其餘元件則位於雲端內部,系統內外以 Forwarder 作為溝通橋梁。雲端內部以 Manager 為主要控制中心。

11

圖 3-1、網路模擬雲端系統軟體元件架構

圖 3-1 中虛線方框及其中元件表示這些元件執行在同一虛擬機器中,此部分 將於章節 3.3 進一步說明。線段代表各元件之間的連線,實線表示元件啟動或連 上雲端系統時便會建立的連線,虛線則是依據要求建立。以下先介紹各元件的主 要功能,之後再說明軟體架構。

GUI

GUI 為 EstiNet 網路模擬器圖形操作介面。我們讓使用者以 GUI 直接使用雲 端模擬服務,作為 EstiNet 網路模擬雲端服務的客戶端。

Forwarder

雲端內部及外部的溝通、轉送橋樑,作為雲端系統的主要出入口。

Manager

12

雲端系統的控制中樞,主要負責接收與分配模擬工作、開啟及關閉虛擬機器。

Manager 透過 Openstack API 開啟及關閉虛擬機器、關聯(associate)及卸離

(disassociate)Floating IP Address。

File Manager

File Manager 負責處理與檔案及資料庫有關的操作,例如接收模擬設定檔、

傳送模擬結果檔、查詢資料庫。

Dispatcher

Dispatcher 負責產生模擬子工作、分配子工作、管理模擬資源、處理與模擬 工作有關的資訊並更新至雲端系統資料庫。功能與 EstiNet 原始的 Dispatcher 雷 同,但不再與 GUI 直接連線,模擬要求由 Manager 傳送給 Dispatcher 。

Dispatcher Manager

在一台執行 Dispatcher 的虛擬機器中會執行多個 Dispatcher,Dispatcher Manager 負責讓虛擬機器中有固定個數的 Dispatcher。

Coordinator

Coordinator 在雲端系統中僅負責執行模擬引擎及扮演模擬引擎及 Dispatcher 間的溝通橋樑,不再如原有分散式架構與 GUI 直接連線,所有要傳輸給 GUI、

13

配及使用的狀態。由於 Openstack 平台中也有資料庫,後面章節如無特別描述,

資料庫皆指我們雲端系統本身的資料庫。

NFS Exporter

NFS Exporter 負責動態分享 NFS(Network File System)的目錄給虛擬機器 掛載(mount),因此 NFS Exporter 必須執行在架設 NFS 的主機中。此元件的功 能及運作將於章節 4.4 進一步說明。

Fip Checker 及及及及 Fip Asker

用以確認虛擬機器是否已獲得 Floating IP Address,詳細說明於章節 4.2.3。

由圖 3-1 可以看到,我們將 GUI 分離至雲端系統外,這是由於如果將 GUI 放在雲端系統內部,讓使用者以 VNC(Virtual Network Computing)程式遠端連 線至雲端內的 GUI 操作及進行模擬,在操作上會有難以忍受的延遲感以及大量 的網路傳輸。

整個雲端系統只能透過 Forwarder 連外。Forwarder 是我們自行撰寫的轉送程 式,因此雲端內部元件無法直接與網際網路連線,網際網路中的機器也無法直接 與雲端內部元件連線。我們以此方式減少雲端內部與外界連線,作為第一道安全 性防護,不僅保護雲端,也避免惡意使用者使用虛擬機器攻擊外部網路。

在軟體架構上,我們以同步(synchronize)的方式處理各種要求(request)。

軟體元件可能需要執行多個步驟才能完成一個要求,元件需完成一個要求的所有 步驟才能再處理下一個要求。

例如,GUI 傳送模擬工作至雲端時,會由 Manager 及 File Manager 分別接收 模擬工作要求及模擬設定檔。這三個元件分別需完成幾個步驟,才算完成傳送、

接收模擬工作的要求:GUI 需完成對 Manager 傳送模擬工作要求以及對 File Manager 完成檔案傳輸等步驟。Manager 需完成接收模擬工作要求、儲存相關資 訊等步驟。File Manager 則需要完成接收模擬設定檔、通知 Manager 等步驟。

14

當一個要求由多個元件共同完成時,它們彼此需要傳遞控制訊息及資料,我 們用 socket 連線達到軟體元件間的溝通,即 IPC(Inter-Process Communication)。

如圖 3-1 所示,雲端系統中 Manager 與 File Manager、Forwarder、NFS Exporter、

Dispatcher、Coordinator 間有控制連線,此連線用於傳送各種 IPC 命令及回應。

Manager、File Manager、Forwarder 及 NFS Exporter 是此雲端系統運作時最初需 啟動的程序(process),這些元件啟動時便會建立控制連線。Dispatcher 與 Coordinator 則是在要提供模擬服務時才會執行,這兩個程序啟動時會主動連向 Manager 以建立控制連線。透過與 Dispatcher 及 Coordinator 的連線,Manager 可 知道系統中有多少 Dispatcher 及 Coordinator 正在運作並可加以管理。

Forwarder 與 Manager 間除了控制連線外仍有多條用於傳輸 GUI 資料的連線。

而 Forwarder 與 File Manager 間的連線在 GUI 要與 File Manager 連線時才會建立,

同樣用於 GUI 資料的傳輸。此部分於章節 4.2.1 進一步說明。

Dispatcher 與 Coordinator 間的連線在 EstiNet 網路模擬器原有架構中即存在,

用於傳輸控制命令。在雲端系統中我們保留此連線、加入雲端系統需要的 IPC,

並修改建立連線的部分,此修改於章節 4.2.3 說明。

Coordinator 與模擬引擎間的連線在 EstiNet 網路模擬器原有架構中即存在,

同樣用於傳輸控制命令。在雲端系統中我們保留此連線及其用途,並加入雲端系 統所需的 IPC。

Fip Checker 也是在雲端系統最初運作時會啟動的程序。Fip Checker 與 Fip Asker 間的連線是在 Fip Asker 啟動時主動連向 Fip Checker,此部分於章節 4.2.3 進一步說明。

上述 socket 連線中,Coordinator 與模擬引擎間使用 Unix domain socket,其 餘皆為 TCP socket。

上述軟體元件依據其負責項目及功能的不同,實作上有不同細節。以程式 架構來看,各軟體元件主要執行流程為:

15

1. 等待指令。

2. 從連線收到指令。

3. 依據指令執行相應步驟,完成後回到 1。

若執行的步驟可能造成程序被阻擋(block),則可能 fork 出子程序執行該步 驟,避免整個程序被一個要求阻擋(block)而無法進行其他動作。

16