• 沒有找到結果。

第四章 支援網路感知之中介軟體設計與架構

4.2 系統概觀

Figure 4-1 中介軟體概觀

Figure 4-1 顯示了整個WinME的架構,我們可以很清楚看到應用程式透過WinMe 所提供的程式界面去對系統底層的網路作存取的動作。這邊也有跨層設計的概 念,我們將位於應用層下層協定堆疊的資訊直接傳達給使用者空間的應用程式,

使用者空間的應用程式也可以直接將資訊傳遞給協定堆疊的底層。

我們將這些資訊都拉上使用者空間的應用程式的好處是我們在控制底層網路 時可以有較大的彈性,完全取決於程式設計員的設計方式。以行動管理員來說,

行動管理員的決策很可以很複雜的,也可能會常常更動,這時候要求效率而把換 手決策作進核心內就顯得不適當。

當一個 802.11 的網路界面卡和無線接取點連上線後,會產生一個 Link UP 的 事件,並且會帶上 ESSID 等資訊,我們知道當連結上之後需要給網路界面卡設 定 IP 位址。

讓我們來考慮兩種情況:

一種情況是 802.21[30]的MIH Function,在這個情形之下Link UP的事件會 傳達給網路層(Network Layer),此時網路層也許就直接把IP位址設定到網路界面 卡上。

另一種情況就是使用 WinME,在這個情形之下,Link UP 的事件會傳達給應 用程式,應用程式經過決策後,可能決定使用 DHCP 取得 IP 位址,或經由使用 者設好的 Profile 決定 IP 位址,然後再把 IP 位址設定到網路界面卡上。

很明顯地,第一種情況的效能會比較好,可是沒有彈性,而今 802.21 的也尚 未成為標準,而且要達到第一種情形,我們還必須更改核心中關於協定堆疊的程 式碼,使其可以支援 MIH Function。我們認為關於換手的策略應該在使用者空間 的應用程式作決定,本論文並不關心行動管理員程式是如何作換手決策的,本論 文只是提供一個程式開發平台,讓行動管理員程式的撰寫者可以方便地開發和處 理網路間的換手策略。本論文提供的只是一個機制 (Mechanism),而程式的策略 (Policy) 就交給應用程式的開發者。

接下來的小節中,我們會介紹 WinME 中的各個元件。

4.2.1 控制 (Control) 、查詢 (Query) 及事件 (Event) 介面

應用程式透過 WinME 所提供的應用程式介面來使用控制、查詢和事件介面。

控制界面是用來控制協定堆疊或網路界面的狀態,如設定網路位址、增加路 由表欄位、更改預設閘道或叫無線網路卡去掃描鄰近的接取點 (Point Of Attachment) 等…。

查詢界面則提供應用程式用於查詢目前的網路資訊,如連線訊號強度、目前 網路頻寬、網路卡的狀態等。像 VoIP 的程式在一開始啟動時可能會需要知道目 前連線網路卡的 IP 位址,然後再用此 IP 位址去 SIP Server 註冊。

事件介面將網路事件提供給應用程式,如 Link UP、Link Down、IP Change 等事件。這對網路換手的效能很重要,有了這個介面之後應用程式就不需要去輪 詢底層的網路狀態來判斷事件是否發生。

4.2.2 行動管理員 (Mobility Manager)

使用 WinME 所提供的程式界面來管理底層的硬體或網路狀態。也因為如此 行動管理員的設計者可以只需要專注於換手策略 (Policy) 的設計,而無需去關 心底層是如何的運作。

行動管理員也可能包含使用者圖形界面 (GUI) 讓使用者來設定換手策略相 關的資料,或顯示出目前網路狀態。

最簡易的雙網 (802.11 WLAN and GPRS) 行動管理員,它可能是以無線區域 網路作為連線優先,當有無線區域網路時,就將預設閘道設成無線區域網路下的 預設閘道,在沒有無線區域網路訊號的範圍下,就將預設閘道設成個人行動通訊 GPRS 下的預設閘道。所以我們是藉著更改預設閘道來達到選擇網路界面卡的效 果。

4.2.3 WinME 的應用程式界面 (Middleware API)

讓程式開發者使用這些界面來與 WinME 溝通,協助開發應用程式。

4.2.4 WinME 的核心元件

本節會介紹 WinME 核心中的各個元件說明。

4.2.4.1 網路資訊儲存體 (Network Information Storage)

用來存放所量測的網路資訊,如網路頻寬、訊號強度、網路界面卡的 IP 位址 等。雖然資訊有可能會過時,不過在當有很多不同的應用程式來查詢同一份資料 時,WinME 就可以快速地回應應用程式。有的資訊可能會常常變動的 (如訊號 強度),我們就會設一個新鮮時間 (Fresh Time),如果應用程式下達取得訊號強度 的資訊,而這個資訊又過期的話,WinME 就會去跟底層取得資訊。至於不常變 動的資訊 (e.g. IP 位址),則 WinME 會在收到底層 IP 位址改變的事件時,就會 更改相對應的資訊。

此元件存在的目的就是為了快速地回應使用者程式的查詢要求,使得 WinME 不需要每當使用者程式要求一個網路資訊時,都要去跟系統底層要求一遍。

4.2.4.2 網路觀察者 (Network Monitor)

週期性的去觀察網路狀態,如訊號強度、網路卡資訊等資料….。觀察到的結 果會存入網路資訊儲存體中。

4.2.4.3 網路測量程式 (Network Measurement Daemon)

可產生封包來測量目前的網路頻寬。測量的結果會存入網路資訊儲存體中。

此元件在雖然在本論文中有納入WinME的設計,可是在實作上本論文並沒有實 作該元件,因為關於頻寬的測量本身就是一個值得討論的研究議題 [33][34]

[35][36]。或許可以在未來實作出這一個元件。

4.2.4.4 事件服務元件 (Event Service)

此元件提供應用程式事件處理機制,和處理底層的網路事件。應用程式可以 透過 WinME 的程式界面來跟此元件註冊感興趣的事件,而網路底層的事件會先 通知事件服務元件後,然後再由該元件再將訊號分送給感興趣的應用程式。

4.2.4.5 中介軟體轉接器 (Middleware Adapter)

這部份實作了所有和作業系統有關的程式碼 (如系統呼叫)。可用於幫助整個 WinME 的移植(porting)。

4.2.4.6 驅動程式轉接器 (Driver Adapter)

定義好驅動程式要提供的界面,讓 WinME 可以直接使用這個界面來對網路 硬體作溝通。這有點像是 802.21 的 MIH 提供的部分機制,不過在 802.21 尚未 成為標準前,我們只能自己先這樣作,如果未來 802.21 成為標準,而且核心內 也實作的話,驅動程式轉接器有機會用 802.21 取代掉。