武靜 信息產(chǎn)業(yè)部電信傳輸研究所
摘要 介紹在IPv4網(wǎng)絡(luò)中的移動IP技術(shù)工作原理,包括代理發(fā)現(xiàn)、注冊和建立隧道以及在注冊中的認證問題。
關(guān)鍵詞 移動IP 歸屬代理 外部代理 移動節(jié)點 轉(zhuǎn)交地址
1 引言
目前,已經(jīng)有許多基于鏈路層的移動解決方案,例如IEEE 802.11系列和CDPD等,但是這些解決方案都存在一些問題:
· 只能在一條單獨的鏈路中進行移動,而不能在鏈路之間移動。
· 不能在不同類型鏈路之間移動,例如以太網(wǎng)到CDPD網(wǎng)絡(luò)的移動。
· 不是所有的鏈路類型都支持鏈路層移動性。
因此,需要網(wǎng)絡(luò)層對移動性的支持來解決不同鏈路之間的和不同類型鏈路之間的移動性問題,即所謂的宏移動問題。在IP網(wǎng)絡(luò)中,分組包從源端點到目的地的傳送是由路由器根據(jù)路由表逐跳轉(zhuǎn)發(fā)完成的。路由表可以根據(jù)分組的目的地IP地址,選擇該IP地址的下一跳。移動節(jié)點從一個地方移動到另一個地方,要維持目前的傳輸層連接,就必須保持IP地址不變,而傳輸層的一個TCP連接是依靠四元組標識的,即源端點和目的端點的IP地址和它們的端口號。改變這個四元組中任何一個元素,都會使傳輸層的連接被破壞或者丟失。
移動IP就解決了這個問題,它允許移動節(jié)點有兩個IP地址:一個固定的歸屬地址(Home Address)和一個在新的接入點的轉(zhuǎn)交地址(Care-of Address)。歸屬地址是靜態(tài)的,用歸屬地址來標識TCP連接。轉(zhuǎn)交地址是隨接入點的改變而改變的,它可以被視為移動節(jié)點在網(wǎng)絡(luò)拓撲范圍內(nèi)的地址。轉(zhuǎn)交地址指示出網(wǎng)絡(luò)號,這樣可以標識出移動節(jié)點在網(wǎng)絡(luò)拓撲中的接入點地址。移動節(jié)點在歸屬網(wǎng)絡(luò)(Home Network)或者在外部網(wǎng)絡(luò)(Foreign Network),都是通過歸屬代理(Home Agent)來接收數(shù)據(jù)。目的地址為移動節(jié)點的歸屬地址(Home Address)的數(shù)據(jù)都會被歸屬代理攔截,由歸屬代理接收這些分組,然后再將它們傳送到移動節(jié)點當前的接入點地址。
2 移動IP的工作原理
在移動IP中,主要有三個工作階段:
· 代理發(fā)現(xiàn)(Agent Discovery)——移動節(jié)點發(fā)現(xiàn)它的外部代理(Foreign Agent)和歸屬代理(Home Agent)。
· 注冊(Registration)——移動節(jié)點通過外部代理或者歸屬代理注冊當前的位置。
· 建立隧道(Tunneling)——當移動節(jié)點漫游時,歸屬代理(Home Agent)建立到轉(zhuǎn)交地址(移動節(jié)點在外部網(wǎng)絡(luò)的接入點地址)的隧道,將分組路由到移動節(jié)點。
2.1 代理發(fā)現(xiàn)
移動IP發(fā)現(xiàn)過程是在路由器通告消息基礎(chǔ)上建立的,它只是對路由器通告消息進行了擴展,將路由器通告消息與移動功能相關(guān)聯(lián)。在代理發(fā)現(xiàn)階段,移動代理(歸屬代理和外部代理)通過使用ICMP路由器發(fā)現(xiàn)協(xié)議(ICMP Router Discovery Protocol)向網(wǎng)絡(luò)通告業(yè)務(wù)。移動節(jié)點偵聽這些通告,獲知自己目前的位置,即判斷出目前是連接在歸屬網(wǎng)絡(luò)上還是連接在外部網(wǎng)絡(luò)上。
ICMP路由器發(fā)現(xiàn)協(xié)議通告攜帶移動IP擴展字段,這個擴展字段指明代理的類型(歸屬代理還是外部代理,亦或者是混合型代理);代理的轉(zhuǎn)交地址(Care-of Address);代理提供的業(yè)務(wù)類型,例如,建立反轉(zhuǎn)隧道、通用路由封裝(GRE),移動節(jié)點可允許的注冊生命期。歸屬代理和外部代理會周期地發(fā)送代理通告。在代理通告的發(fā)送間隔,移動節(jié)點可以以廣播或者多播的方式主動發(fā)送請求消息。任何一個歸屬代理或者外部代理收到移動節(jié)點的請求消息后,都會立即給予回復(fù),向該移動節(jié)點發(fā)送代理通告消息。
移動節(jié)點決定連接到外部網(wǎng)絡(luò),則需要獲得一個轉(zhuǎn)交地址。有兩種轉(zhuǎn)交地址:一種是外部代理的轉(zhuǎn)交地址,即移動節(jié)點正在訪問的外部網(wǎng)絡(luò)的一個接口,也可以認為是外部代理的IP地址;另一種是collocated轉(zhuǎn)交地址,即臨時分配給移動節(jié)點端口上的IP地址。外部代理的轉(zhuǎn)交地址可以被多個移動節(jié)點所共享,而collocated轉(zhuǎn)交地址僅限于一個移動節(jié)點在一段時間內(nèi)單獨使用。
當移動節(jié)點檢測出自己的接入點地址改變,或者注冊時間即將過期,都需要向代理注冊。
2.2 注冊
移動IP的注冊過程就是移動節(jié)點告知歸屬代理自己目前的接入點轉(zhuǎn)交地址,并通知外部代理自己正在對其進行訪問。移動節(jié)點、外部代理和歸屬代理之間互相交換注冊消息。
2.2.1 兩種注冊方法
移動節(jié)點可以通過外部代理向歸屬代理進行注冊,也可以直接向歸屬代理進行注冊。這兩種注冊程序都會使用注冊請求消息和注冊回復(fù)消息。
通過外部代理進行注冊,移動節(jié)點會向每一個可能需要的外部代理發(fā)送注冊請求消息,開始注冊過程;外部代理處理這些注冊請求消息,然后將它們轉(zhuǎn)發(fā)給歸屬代理;歸屬代理給外部代理發(fā)送注冊回復(fù)消息,接受或者拒絕移動節(jié)點的注冊請求;外部代理處理這些注冊回復(fù),然后將它們轉(zhuǎn)發(fā)給移動節(jié)點。
移動節(jié)點直接向歸屬代理注冊時,直接向歸屬代理發(fā)送注冊請求消息;歸屬代理給移動節(jié)點發(fā)送注冊回復(fù)消息,接受或者拒絕移動節(jié)點的注冊請求。
2.2.2 注冊請求中的認證問題
注冊請求消息使用一些參數(shù)和標記來表征歸屬代理和轉(zhuǎn)交地址之間的隧道的特征。當歸屬代理接受了移動節(jié)點的注冊請求后,會將歸屬代理和移動節(jié)點所在位置的轉(zhuǎn)交地址相關(guān)聯(lián)。在整個注冊生命期內(nèi),都會一直保持這個關(guān)聯(lián)。歸屬代理會根據(jù)關(guān)聯(lián)生成移動節(jié)點的綁定,該綁定是包含了歸屬地址、轉(zhuǎn)交地址和注冊生命期的一個三元組元素。
移動IP中對注冊信息的認證是十分重要的,可以防止惡意的轉(zhuǎn)交地址對歸屬代理的路由表進行攻擊。每一個移動節(jié)點和歸屬代理必須共享一個安全關(guān)聯(lián),它們能夠用具有128bit密鑰的MD5算法為注冊請求消息創(chuàng)建一個不可偽造的數(shù)字簽名,每個注冊請求消息中的MD5 hash都不相同。如果在不同的注冊請求消息中出現(xiàn)相同的MD5 hash,則可能出現(xiàn)回放攻擊(Replay Attack)。惡意的節(jié)點能夠在歸屬代理的回復(fù)信息中記錄有效的注冊信息,通過回放攻擊可以有效破壞稍后歸屬代理向移動節(jié)點當前的轉(zhuǎn)交地址建立隧道的活動。為避免這種攻擊,移動IP在注冊消息中設(shè)置了一個特殊的標識字段,這樣,每一條新的注冊消息都會改變一次標識字段中的內(nèi)容。在移動IP中使用兩種方法來保證標識字段的唯一性:一種方法是使用時間戳來區(qū)別以前的注冊消息;另一種方法是將標識變成一個偽隨機數(shù)。通過使用大量的隨機比特,兩個獨立的標識字段的數(shù)值是不可能一樣的,這樣就保證了標識的唯一性。當使用隨機數(shù)方法時,移動IP定義了一種在標識字段中32bit隨機數(shù)的方法,可以保護注冊請求消息和注冊回復(fù)消息。往往因為移動節(jié)點與歸屬代理之間距離太遠不能同步而不能使用時間戳,或者它們丟失了預(yù)期要收到的隨機數(shù)的track的時候,歸屬代理都會拒收注冊請求消息,并且在回復(fù)消息中要求重新同步。使用隨機數(shù)字與使用隨機數(shù)相比,可以避免在NTP協(xié)議上被攻擊,即不會丟失移動節(jié)點與歸屬代理之間的時間同步,也不會引發(fā)已被認證的注冊請求消息被惡意節(jié)點使用,破壞以后的注冊問題。
外部代理使用標識字段,將等待處理的注冊請求消息與注冊回復(fù)消息進行匹配,然后將歸屬代理回復(fù)的注冊回復(fù)消息轉(zhuǎn)發(fā)給移動節(jié)點。外部代理會存儲等待處理的注冊請求消息的信息,包括移動節(jié)點的歸屬地址、移動節(jié)點的MAC地址、源端口號和移動節(jié)點提議的注冊生命期。外部代理能夠?qū)⑸谙拗茷橐粋可配置的數(shù)值,并在代理通告消息中發(fā)送。歸屬代理能夠通過在注冊回復(fù)消息中設(shè)置,縮短生命期的時間,但不能進行延長生命期的操作。
移動節(jié)點會在生存時間過期前重新注冊。歸屬代理和外部代理更新移動綁定。如果注冊請求由于時間不匹配被拒絕,歸屬代理會為移動節(jié)點同步發(fā)送時間戳,移動節(jié)點會在以后的注冊請求中調(diào)整時間戳。
2.2.3 自動發(fā)現(xiàn)歸屬代理機制
移動IP中,移動節(jié)點如果不能連接到它的歸屬代理,則可以通過自動發(fā)現(xiàn)歸屬代理機制向歸屬網(wǎng)絡(luò)中未知的歸屬代理進行注冊。移動節(jié)點使用自動發(fā)現(xiàn)歸屬代理機制時,使用廣播IP地址作為目的地址發(fā)送注冊請求消息。當廣播分組到達歸屬網(wǎng)絡(luò)時,網(wǎng)絡(luò)中的歸屬代理都會向移動節(jié)點發(fā)送一條拒絕提示消息,在拒絕消息中會包含歸屬代理自己的IP地址,這樣移動節(jié)點就可以嘗試向歸屬代理發(fā)送新的注冊消息(此處的廣播與因特網(wǎng)范圍內(nèi)的廣播概念不同,它僅指向歸屬網(wǎng)絡(luò)內(nèi)的IP節(jié)點發(fā)送的定向廣播)。
2.3 建立隧道
移動節(jié)點給它的通信節(jié)點發(fā)送分組時使用歸屬IP地址作為源地址,這樣移動節(jié)點仿佛始終連接在歸屬網(wǎng)絡(luò)中。即使移動節(jié)點漫游到外部網(wǎng)絡(luò),通信節(jié)點仍然不會意識到它的移動。
以移動節(jié)點為目的地址的數(shù)據(jù)分組首先會到達歸屬網(wǎng)絡(luò),由歸屬網(wǎng)絡(luò)中的歸屬代理截獲,然后將這些數(shù)據(jù)分組用隧道方式傳送到移動節(jié)點所在接入點的轉(zhuǎn)交地址。建立隧道有兩個主要功能:在隧道起始處,對發(fā)送到隧道末梢端點的數(shù)據(jù)進行封裝;在隧道終結(jié)處,對已到達隧道末梢端點的數(shù)據(jù)進行解封裝。缺省的隧道模式是在IP in IP封裝模式,可選的封裝技術(shù)有:GRE技術(shù)和在IP內(nèi)的最小封裝。移動節(jié)點發(fā)送至通信節(jié)點的分組,首先會發(fā)送到外部代理,然后由外部代理將這些分組發(fā)送至最終的目的地址,即通信節(jié)點處。
通信過程見圖 4。從圖4,我們可以看到所有發(fā)往移動節(jié)點的分組均會通過歸屬代理進行轉(zhuǎn)發(fā),這樣必然會引起不必要的網(wǎng)絡(luò)負荷與分組傳遞時延,而且一旦歸屬網(wǎng)絡(luò)或者歸屬代理發(fā)生故障,都會影響移動節(jié)點的通信,這就是“三角路由”問題。為了解決三角路由問題,IETF又提出了路由優(yōu)化解決方案,詳見draft-ietf-mobileip-optim-12。
在可兼容的移動IPv4擴展中,允許通信節(jié)點通過綁定緩存(Binding Cache)學(xué)習(xí)移動節(jié)點當前的位置,然后將分組直接用隧道的方式傳送到移動節(jié)點。但是,移動節(jié)點再次移動后,綁定緩存就會過期,因此就需要在每次使用綁定緩存之前對它進行動態(tài)更新。路由優(yōu)化中的認證問題要比在基本協(xié)議中更為困難。
3 移動IP技術(shù)的應(yīng)用
移動IP可以為實現(xiàn)網(wǎng)絡(luò)移動性提供一種可延展的、透明的、安全的解決方案。在動態(tài)主機分配協(xié)議(Dynamic Host Configuration Protocol)中,當節(jié)點的位置發(fā)生變化時,必須停止當前的IP連接,而后再重新啟動一個新的IP連接。而移動用戶能夠在漫游,甚至是在穿越網(wǎng)絡(luò)的時候都能夠保持相同的IP地址,這樣就能夠始終保持一個IP連接。正是因為移動IP技術(shù)具有這個重要的特點,它可以協(xié)調(diào)一些應(yīng)用技術(shù)(如VoIP技術(shù)和流媒體技術(shù)等)在用戶移動過程中以及位置改變時與IP設(shè)備之間出現(xiàn)的問題。
目前移動IP技術(shù)可以應(yīng)用在以下幾個方面:
·能夠進行無縫移動,使移動設(shè)備看起來像永遠在線。移動設(shè)備在校園或者小區(qū)內(nèi)的不同建筑物或者不同樓層之間移動時,在不同的運營商網(wǎng)絡(luò)之間移動時,都可以通過使用目前已有的技術(shù)(如CDMA和IEEE 802.11系列)進行無縫移動。
· 能夠?qū)o線通信中的遠程通信收斂。能夠允許穿越不同類型的無線技術(shù)和不同特點的鏈路時無縫地運行各種應(yīng)用程序。例如,能夠使用戶在乘坐飛機、火車以及航海的旅程中移動設(shè)備始終保持在線。
· 還可以應(yīng)用在一些緊急任務(wù)中,如在救護車,警車中安裝IP設(shè)備,他們可以在移動過程中始終保持與網(wǎng)絡(luò)的聯(lián)系,這樣能夠更為有利地指揮調(diào)配這些車輛。
----《中國數(shù)據(jù)通信》