對本研究做出結論和提出未來可以進行的方向。
3
第二章 背景介紹
2.1. Mobile IP
Mobile IP 是由 C. Perkins 等人於 1996 年在 IETF(Internet Engineering Task Force) 所 提出的一套網路協定,讓 IP 資料可以正確的繞送到於網際網路上行動的主機 。在 Mobile IP 裡,在網路上行動的主機,我們稱為行動端點 (Mobile Node)。行動端點可以漫遊於 不同網域,改變其網際網路的接點,卻使用固定的 IP 位址。這個固定的 IP 位址被稱做 家用位址 (Home Address),被用以作行動端點的網路識別。另外在 Mobile IP 協定中,
額外定義了兩種網路實體:
z 家用代理器 (Home Agent)
行動端的家代理器是一個在家網域的主機或是路由器。 當行動端離開家網域的 時候,它攔截所有送往行動端的 IP 數據資料(Datagram)並經過通道技術(Tunnel) 將它們傳給行動端。再者,家代理器還執行某些驗證(Authentication)與管理 (Administration)的功能。
z 外地代理器 (Foreign Agent)
外地代理器是一個在外地網域的主機或是路由器, 它提供路由服務給已註冊的 行動端。外地代理器把家代理器經過通道技術傳送過來的 IP 數據資料進行拆封 (De-tunnel) 並發送給註冊的行動端。再者,外地代理器為行動端執行驗證與管 理的功能。對於行動端來說,它被當作預設路由器 (Default Router) 。外地網域 不必要存在一個外地代理器來使得 Mobile IP 可以運行。
而當行動端在外地網域時,會再當地取得另外一個動態的 IP 位址,這個 ÌP 位址會 隨 著 行 動 端 點 移 動 到 不 同 的 網 域 是 而 有 所 不 同 。 這 個 位 址 被 稱 作 轉 交 位 址 (Care-of-Address,COA)。相對於家用位址用來做為移動端點的識別,轉交位址反映了
4
行動端點現在的網路位置。
Mobile IP 主要可以分為三個程序,發現代理器 (Agent Discovery),註冊 (Registration) 和通道技術 (Tunneling)。底下我將針對這三個程序作說明。
2.1.1 發現代理器
行動代理器 (包括家用代理器和外地代理器) 會定期在它們所屬的網路當中廣播所 謂的代理器公告 (Agent Advertisement)。藉由這樣的機制,來讓行動端點發現它們的存 在。行動端點也可以藉此知道它現在所屬的位置,是在家用網域還是外地網域。代理器 公告是經由 ICMP 的封包來傳送,而且是利用廣播的方式來發送。
另外行動端點也可以主動發出代理器請求(Agent Solicitation) 來要求當地的行 動代理器對行動端點發出代理器公告。代理器請求也是經由 ICMP 的封包來傳送,同時 理器的代理器公告所獲得,被稱為外地代理器轉交位置(FA Care-of-Address);另一種 則是行動端自己利用其他的機制或協定 (如 DHCP) 所取得,被稱作共同配置轉交位址 (Co-located Care-of-Address)。而這個告知家用代理器行動端點現在的轉交位址的動 作,就被稱為註冊。這個註冊的訊息,是利用 UDP 的封包來傳送,使用 434 公定的連接
動動點(或者是外地代理器)之間。
而通道技術是藉由資料封裝 (Packet Encapsulation) 的技巧來達成。Mobile IP 支援了三種資料封裝的技術:
z IP 承載 IP 封裝 (IP within IP Encapsulation)
IP 承載 IP 封裝是一種非常基本的通道模式。IP 封包在一個稱做封裝者 (Encapsulator) 的端點被封裝,這也就是通道的進入點。封裝的意思是原本的 IP 封包被裝入一個新的 IP 封包內當作承載,如圖 2-1 所示。新封包的 IP 標頭稱為傳 送標頭,包含了它的拆裝者的 (Decapsulator) IP 位址。該端點會拆裝這個新的 IP 封包來恢復原本的 IP 封包,使得該封包能被路由到它原本的目的地。在這個通 道協定下,拆裝者事實上不過就是把第一個 IP 標頭給移除,同時它也是這個通道 的終點。這種通道技術的目的是把原本的 IP 封包傳送到一個中繼端點,也就是在 原本的 IP 標頭中根據 IP 目的位址欄位不會被選擇到的拆裝者。 在 Mobile IP 中,
封裝者是家代理器,而拆裝者則是外地代理器或是行動端。
Original IP Header Original IP Payload Original IP Header Original IP Payload
Outer IP Header Original IP Header Original IP Payload Outer IP Header Original IP Header Original IP Payload
Tunnel Endpoint
圖 2-1IP 承載 IP 封裝
z 最小化 IP 承載封裝 (Minimal Encapsulation within IP)
6
最小化 IP 承載封裝是一種非常類似於 IP 承載 IP 封裝的一種通道模式,見圖 2-2。差別在於最小化 IP 承載封裝不會封裝原本訊息完整的 IP 標頭,因為許多欄 位與新的外層傳送標頭是重複的。 在這方式下,標頭空間能被節省,導致更少的 負擔。
Original IP Header Original IP Payload Original IP Header Original IP Payload
Outer IP header Minimal
Encapsulate Header Original IP Payload Tunnel
Endpoint
圖 2-2 最小化 IP 承載封裝
z 通用路由封裝 (Generic Routing Encapsulation, GRE)
通用路由封裝是一個更通用的通道協定,其插入了一個額外的 GRE 標頭在原本 的封包與傳送標頭之間,見圖 2-3。通用路由封裝不是特定用在封裝 IP 封包進另一 個 IP 封包。它可以封裝任何協定 X 的封包進另一個協定 Y 封包的承載中。
7
Original IP Header Original IP Payload Original IP Header Original IP Payload
Deliver (IP) Header GRE Header Original IP Packet Tunnel
Foreign Network Home Network
H
140.113.215.0/24 140.113.24.0/24
Tunnel 140.113.215.206
140.113.215.206 140.113.24.68140.113.24.68
82.50.119.117
z 共同配置轉交位址模式
通道的建立的端點為家用代理器和行動端點本身運作模式如圖 2-x 所示。在這 個模式由行動端本身做封包解封裝的工作。
Foreign Network Home Network
H
obile ode
obile ode
140.113.215.0/24 140.113.24.0/24
Tunnel
140.113.215.207 140.113.24.23 140.113.215.207 140.113.24.23
DHCP Server 140.113.215.206 規範,稱為 NDIS (Network Driver Interface Specification)。它使不同的傳輸協定與實體網 路卡分離,符合 NDIS 規範的網路驅動程式可直接或稍加修改就可在幾種視窗平台上執
• 迷你連接埠驅動程式(Miniport drivers)
• 中介層驅動程式(Intermediate drivers)
• 協定驅動程式(Protocol drivers) 其三種驅動程式的層級概念如下圖 2-6 所示。
圖 2-6 NDIS 驅動程式層級示意圖 2.2.2 迷你連接埠驅動程式
迷你連接埠驅動程式位於 NDIS 網路層級的最下層,有兩個基本的功能:
10
1. 管理實體網路卡, 包括透過網路卡傳送與接收資料。
2. 與較高層的驅動程式溝通, 例如中間層驅動程式與協定驅動程式。
一般我們安裝網路卡後所安裝的驅動程式便是屬於這一類。
迷你連接埠驅動程式都是透過 NDIS 函式庫來和網路介面卡和上層的驅動程式溝 通。NDIS 函式庫提供一套完整的函式群(NdisXxx 函式)來包裝所有迷你連接埠所會用到 的作業系統所提供的函式。另一方面,迷你連接埠驅動程式必須開放出一套進入點 (MiniportXxx 函式) 來讓 NDIS 呼叫,讓上層的驅動程式能夠存取該迷你連接埠驅動程 式。
以封包的傳送和接收為例,如圖 2-7 所示,我們可以觀察出迷你連接埠驅動程式是 如何和 NDIS 函式庫與上層的驅動程式間做互動:
z 當上層傳輸層的驅動程式要傳送一個封包時,它會呼叫 NDIS 函式庫所開放的 函式 NdisXxx。然後 NDIS 函式庫會透過呼叫迷你連接埠驅動程式所開放的適當函 式 MiniportXxx,把這個封包傳遞給迷你連接埠驅動程式。最後,迷你連接埠驅動 程式在呼叫適當的 NdisXxx 函式把封包透過網路介面卡轉送出去。
z 當底層的網路介面卡接收到封包時,它會產生一個硬體的中斷,這個中斷會被 NDIS 函式庫或者網路介面卡的迷你連接埠驅動程式本身所處理。NDIS 透過呼叫 適當的 MiniportXxx 函式來告知該網路介面卡的迷你連接埠驅動程式。迷你連接埠 驅動程式從網路介面卡建立要傳送 的資料,迷你連接埠然後通知上層有連結的驅 動程式接收封包,透過呼叫 NdisXxx 函式。
11
圖 2-7 迷你連接埠驅動程式收送封包互動示意圖
2.2.3 通訊協定驅動程式
網路協定驅動程式是在 NDIS 層級中最高的驅動程式,通常在傳輸驅動程式作為最 底層的驅動程式,其實作了傳輸協定堆疊,例如我們所熟知的 TCP/IP 或 IPX/SPX。傳 輸協定驅動程式負責配置封包,將應用程式欲傳送的資料放入封包內後,呼叫 NDIS 的 函式將這些封包送往底層的驅動程式。協定驅動程式同時也提供協定介面用來接收由下 一層驅動程式所收到的封包。傳輸協定驅動程式會將收到的資料傳送給適當的應用程 式。
和迷你連接埠驅動程式類似,協定驅動程式也必須提供介面和底層的驅動程式,可 能是迷你連接埠驅動程式或中介曾驅動程式互動。協定驅動程式呼叫 NdisXxx 函式來傳
12
送封包,讀取和設定底層驅動程式所維護的資訊和使用作業系統的服務。同時,協定驅
例如置於乙太網路(Ethernet)以及記號環網路(Token Ring)傳輸驅動程式與非同 步傳輸模式(Asynchronous Transfer Mode, ATM)迷你連接埠驅動程式之間的中間層 驅動程式,其功能便是轉換乙太網路以及環狀網路的封包成為非同步傳輸模式的封
z 封包傳送負載平衡與容錯備援(Load Balance Fail Over, LBFO)
中介層驅動程式會製造出一張虛擬的介面卡給在其他上面的傳輸驅動程式使
由於中介層驅動程式需要同時和上層的協定驅動程式和底層的迷你連接埠驅 動程式溝通,所以它必須開放出兩套進入點:
z 協定驅動程式進入點
在中介層驅動程式的底端,NDIS 函式庫會呼叫 ProtoclXxx 函式來和底層的迷 你連接埠溝通。對於底層的迷你連接埠驅動程式來說,中介層驅動程式看起來就像 協定驅動程式一樣。
z 迷你連接埠驅動程式進入點
在中介層驅動程式的頂端,NDIS 函式庫會呼叫 MiniportXxx 函式來和上層的 協定驅動程式溝通。對於上層的協定驅動程式來說,中介層驅動程式看起來就像迷 你連接埠驅動程式一樣。
網路中介層驅動程式有兩種型態:過濾中介層驅動程式(NDIS Filter Intermediate Drivers)和多路傳輸中介層驅動程式(MUX intermediate drivers)。底下將分別介紹這兩 種型態的中介層驅動程式。
圖 2-8 過濾型中介層驅動程式
z 多路傳輸中介層驅動程式
和過濾中介層驅動程式不一樣的地方, 多路傳輸中介層驅動程式所開放出來 的虛擬連接埠驅動程式可以和實際和底層驅動程式連接的網路介面卡數量不一 樣。MUX 中介層驅動程式可以用一對多,多對一或者是多對多等和底層介面卡的 對應關係來開放虛擬連接埠動程式。這會使的內部連結和資料傳送路徑更為複雜。
以一個一對多的設定為例,一個單一的中介層驅動程式可以連結底層多個實體
以一個一對多的設定為例,一個單一的中介層驅動程式可以連結底層多個實體