摘 要 本文介紹了移動IP的基本概念和工作原理,并著重探討了移動檢測方法。按鏈路上有無代理廣播消息,移動檢測通常分為兩種情況進(jìn)行。移動節(jié)點收到代理廣播消息后,可用生存時間域和網(wǎng)絡(luò)前綴做移動檢測;如果收不到代理廣播消息,在本地鏈路上,移動節(jié)點設(shè)法按固定節(jié)點通信的方式進(jìn)行通信嘗試,在外地鏈路上移動節(jié)點將通過DHCP協(xié)議或手工配置進(jìn)行通信,或?qū)CP進(jìn)程進(jìn)行監(jiān)測并檢查鏈路的數(shù)據(jù)包以確定自己在移動網(wǎng)絡(luò)中的位置。
關(guān)鍵詞 移動IP 本地代理 外地代理 移動檢測
移動IP在互聯(lián)網(wǎng)上為移動計算機(jī)提供了不中斷通信的無縫漫游協(xié)議。它突破了計算機(jī)機(jī)房、信息插座和地域等限制,允許移動節(jié)點在移動時穿過不同或相似的傳輸媒介,使人們能夠隨時、隨地、更加靈活地訪問互聯(lián)網(wǎng)。移動IP是一個對網(wǎng)絡(luò)移動性的解決方案。移動IP中移動節(jié)點要完成通信,必須先確定自己的位置,判斷自己是否在不同鏈路上進(jìn)行切換。注冊完成后才能進(jìn)行通信。移動節(jié)點如何判斷自己在網(wǎng)絡(luò)中的當(dāng)前位置是移動IP研究中的重大課題,也是研究的熱點之一。本文擬從移動IP的基本概念、基本原理入手,探討移動IP中的移動檢測方法。
2 移動IP的基本概念
為解決互聯(lián)網(wǎng)的移動性問題,RFC 2002最先引入移動節(jié)點(Mobile Node)、本地代理(Home Agent)和外地代理(Foreign Agent)三種功能實體并提出移動IP的概念,從而為移動節(jié)點接入互聯(lián)網(wǎng)提供了透明路由協(xié)議。
2.1 移動IP的功能實體
移動節(jié)點是移動網(wǎng)絡(luò)中的主機(jī)或路由器。它可以將接入互聯(lián)網(wǎng)的位置從一條鏈路切換到另一條鏈路上,不用更改IP地址而仍然保持所有正在進(jìn)行的通信。與移動節(jié)點緊密相關(guān)的兩個地址是本地地址和轉(zhuǎn)交地址。
本地代理是與移動節(jié)點本地鏈路相連的主機(jī)或路由器。當(dāng)移動節(jié)點切換鏈路時,本地代理通知移動節(jié)點它的當(dāng)前位置或廣播對移動節(jié)點本地地址網(wǎng)絡(luò)前綴的可達(dá)性,從而吸引那些送往移動節(jié)點的本地地址的數(shù)據(jù)包。同時,本地代理解析送往移動節(jié)點本地地址的數(shù)據(jù)包,并將這些數(shù)據(jù)包通過隧道傳送到移動節(jié)點的轉(zhuǎn)交地址上。
外地代理是連接在移動節(jié)點外地鏈路上的主機(jī)或路由器。外地代理為移動節(jié)點提供轉(zhuǎn)交地址并將移動節(jié)點的轉(zhuǎn)交地址通知移動節(jié)點的本地代理,同時外地代理還可以作為連接在外地鏈路上移動節(jié)點的缺省路由器。
2.2 本地地址和轉(zhuǎn)交地址
移動節(jié)點有兩個非常重要的IP地址,即本地地址和轉(zhuǎn)交地址。
移動節(jié)點的本地地址是指“永久”地分配給該節(jié)點的地址,當(dāng)移動節(jié)點切換鏈路時,本地地址并不改變。只有當(dāng)整個網(wǎng)絡(luò)需重新編址時才改變移動節(jié)點的本地地址。
轉(zhuǎn)交地址是連接本地代理和移動節(jié)點的隧道出口。轉(zhuǎn)交地址與移動節(jié)點當(dāng)前所在的外地鏈路相關(guān)。會交地址也隨著移動節(jié)點的改換而改變。送往轉(zhuǎn)交地址的數(shù)據(jù)包可以通過現(xiàn)有的因特網(wǎng)路由機(jī)制傳送,而不需要移動IP中的隧道技術(shù)轉(zhuǎn)發(fā)數(shù)據(jù)包。
轉(zhuǎn)交地址包括外地代理轉(zhuǎn)交地址(Foreign Agent Care-of-Address)和配置轉(zhuǎn)交地址(Collocated Care-of-Address)。外地代理轉(zhuǎn)交地址是外地代理的任一個IP地址,外地代理只需有一個端口連接移動節(jié)點所在的外地鏈路上,因此,外地代理轉(zhuǎn)交地址的網(wǎng)絡(luò)前綴并不一定與外地鏈路的網(wǎng)絡(luò)前綴相同,多個移動節(jié)點可以同時共用一個外地代理轉(zhuǎn)交地址。配置轉(zhuǎn)交地址是暫時分配給移動節(jié)點的某個端口的IP地址,其網(wǎng)絡(luò)前綴必須與移動節(jié)點當(dāng)前所連的外地鏈路的網(wǎng)絡(luò)前綴相同。當(dāng)外地鏈路上沒有外地代理時,移動節(jié)點可以采用這種轉(zhuǎn)交地址。配置轉(zhuǎn)交地址是唯一的,只能被一個移動節(jié)點使用。
2.3 本地鏈路和外地鏈路
本地鏈路是與移動節(jié)點本地地址具有相同網(wǎng)絡(luò)前綴的鏈路。移動節(jié)點本地地址的網(wǎng)絡(luò)前綴決定了它的本地鏈路。
外地鏈路是移動節(jié)點外地代理所在的鏈路。
3 廣播消息
廣播消息在移動檢測中起著重要的作用。廣播消息有兩大類,一是廣播代理消息(Agent Advertisement Message);二是代理請求消息(Agent Solicitation Message)。
3.1 廣播代理消息
本地代理或外地代理利用代理廣播消息向移動節(jié)點宣布它們的功能。當(dāng)一個節(jié)點在一條鏈路上被配置成本地代理或(和)外地代理,它就在這條鏈路上廣播或組播代理廣播消息,這使得連到這條鏈路上的移動節(jié)點可以判定該鏈路上是否有代理存在。
3.2 代理請求消息
當(dāng)移動節(jié)點等不到下一個周期發(fā)送的代理廣播消息時,它可以發(fā)送代理請求消息。請求該鏈路上的所有代理立即發(fā)送一個代理廣播消息,在移動節(jié)點快速地切換鏈路時,代理請求消息就非常有用了。
移動IP不要求對這兩種消息進(jìn)行確認(rèn),移動IP利用了這兩個消息的格式,并對它們進(jìn)行了擴(kuò)展以完成移動檢測。
4 移動IP的工作機(jī)制
移動節(jié)點通過發(fā)送代理請求消息或接收本地代理和外地代理發(fā)送的代理廣播消息判斷自己在網(wǎng)絡(luò)中的位置。如果在本地鏈路上,移動節(jié)點就按固定節(jié)點的方式進(jìn)行通信,而不需使用移動IP的功能。
如果移動節(jié)點連在外地鏈路上,它就從外地代理廣播的代理廣播消息中找到外地代理的轉(zhuǎn)交地址,同時向本地代理注冊該轉(zhuǎn)交地址。本地代理向移動節(jié)點回應(yīng)接收或拒絕的注冊應(yīng)答消息。
注冊成功后,本地代理將發(fā)往移動節(jié)點的數(shù)據(jù)包再次封裝通過隧道送到移動節(jié)點的轉(zhuǎn)交地址。然后從隧道取出、解封裝后送往移動節(jié)點。
從移動節(jié)點發(fā)出的數(shù)據(jù)包將通過標(biāo)準(zhǔn)的路由通道直接發(fā)到目的節(jié)點,不需要使用隧道技術(shù)。
5 移動IP中的移動檢測方法
移動檢測可按兩類情況進(jìn)行,一是有代理廣播消息的情況;二是沒有代理廣播消息的情況。下面進(jìn)行詳細(xì)的探討。
5.1 有代理廣播消息的情況
假設(shè)移動節(jié)點所連接的鏈路上至少有一個代理,則移動節(jié)點可以通過兩種方法來確定自己是否切換到了新的鏈路上,一種方法是利用生存時間域作移動檢測;另一種方法是利用網(wǎng)絡(luò)前綴作移動檢測。
5.1.1 用生存時間域作移動檢測
代理廣播消息中ICMP路由器廣播部分的生存時間域表示移動節(jié)點接收同一代理的廣播消息的時間周期。本地代理和外地代理需要頻繁地發(fā)送廣播消息以免廣播消息的丟失,特別是在較容易出錯的無線鏈路上。
當(dāng)移動節(jié)點注冊到外地代理上時,如果在生存時間域規(guī)定的時間內(nèi)卻沒有收到來自該代理的廣播消息,那么說明該移動節(jié)點已移動到另一鏈路上或者該外地代理已經(jīng)不可用了。此時移動節(jié)點向下一個發(fā)來代理廣播消息的外地代理注冊,如果移動節(jié)點沒有收到任何廣播消息,它就發(fā)出一個代理請求消息去詢問。
5.1.2 用網(wǎng)絡(luò)前綴作移動檢測
假設(shè)移動節(jié)點向某條鏈路上的外地代理注冊,記錄了該代理廣播消息后,移動節(jié)點又收到了來自另一個外地代理的代理廣播消息。在這種情況下,移動節(jié)點將從兩個廣播消息中計算出網(wǎng)絡(luò)前綴并加以比較來判定兩個廣播消息是否來自同一條鏈路,如果不同,則兩個廣播消息是從不同的鏈路上接收到的,否則就是從同一鏈路上接收到的。當(dāng)移動節(jié)點將新收到的廣播消息與它當(dāng)前正注冊的外地代理比較后,如果發(fā)現(xiàn)它已移動到新鏈路上了,就應(yīng)向在新鏈路上的外地代理進(jìn)行注冊。否則,如果接收的廣播消息只是來自同一條鏈路的另一個外地代理,移動節(jié)點并沒有移動,這時,不必向新代理注冊;除非它在廣播消息中的生存時間(Lifetime)內(nèi)沒有收到當(dāng)前注冊的外地代理的廣播消息,這意味著,移動節(jié)點仍然采用第一個移動檢測方法(用生存時間)來看當(dāng)前的外地代理是否還可用,如果不可用,移動節(jié)點就注冊到一個新的外地代理上。
5.2 沒有廣播消息的情況
移動節(jié)點接收不到廣播消息,就無法判斷自己是處在本地鏈路上還是外地鏈路上,此時移動節(jié)點必須用其他方法進(jìn)行移動檢測。主要有下述三種方法。
5.2.1 設(shè)法在本地鏈路上通信
如果移動節(jié)點連到了一條鏈路上但卻收不到任何代理廣播消息,那么移動節(jié)點可以假設(shè)正連在它的本地鏈路上,并且其本地代理出現(xiàn)故障,無法廣播代理消息6這時,移動節(jié)點只需簡單地按它在本地鏈路上那樣進(jìn)行通信。例如,可以向它在本地鏈趾用的缺省路由器發(fā)送ICMP Echo Request消息,如果這臺缺省路由器給出了應(yīng)答,那么移動節(jié)點很可能正連在它的本地鏈路上,這樣就可以繼續(xù)通信了。
5.2.2 在外地鏈路上用DHCP和手工配置
如果缺省路由器沒有應(yīng)答,那么移動節(jié)點可以認(rèn)為它正連在一條外地鏈路上。這時,移動節(jié)點可以設(shè)法通過DHCP服務(wù)器得到一個地址,如果成功了,移動節(jié)點就可以將這個地址作為配置轉(zhuǎn)交地址,并向它的本地代理注冊。如果DHCP服務(wù)器沒有應(yīng)答,那么使用移動節(jié)點的人可以為它手工配置一個IP地址作為配置轉(zhuǎn)交地址。如果還不行,那么這個移動節(jié)點就無法工作了。
5.2.3 監(jiān)測TCP進(jìn)程和鏈路上所有數(shù)據(jù)包
假設(shè)移動節(jié)點可以得刻一個配置轉(zhuǎn)交地址,那么可以通過兩種方法來推斷移動節(jié)點是否從一條沒有代理的鏈路移動到了另一條鏈路上。
第一種方法,在它已打開的TCP連接上檢查最近有沒有轉(zhuǎn)發(fā)進(jìn)行。如果沒有,則說明移動節(jié)點在上一次注冊后它已經(jīng)移動過了。
第二種方法,移動節(jié)點可以將它的網(wǎng)絡(luò)接口驅(qū)動置于接收所有包的模式。在這種模式下,移動節(jié)點可以檢查鏈路上的所有包,而不只是發(fā)給它的包。如果這些包中沒有一個網(wǎng)絡(luò)前綴與它的轉(zhuǎn)交地址的網(wǎng)絡(luò)前綴一樣,它就可以推斷它已從獲得轉(zhuǎn)交地址的那條鏈路移動到一條新鏈路上了。此時移動節(jié)點應(yīng)得到一個新的轉(zhuǎn)交地址并向它的本地代理注冊。當(dāng)然,移動節(jié)點必須知道各種鏈路的前綴長度才可判斷它轉(zhuǎn)交地址的網(wǎng)絡(luò)前綴與當(dāng)前鏈路的網(wǎng)絡(luò)前綴是否相等。
6 總結(jié)
本文討論了移動IP的基本概念和工作原理及其移動檢測方法。移動檢測即移動節(jié)點判斷它是連在本地鏈路還是外地鏈路上以及在不同鏈路上進(jìn)行切換的過程。移動節(jié)點接收由本地代理和外地代理周期發(fā)送的代理廣播消息,它也可以通過發(fā)送代理請求得到廣播消息。
根據(jù)兩種鏈路上有無代理廣播消息,移動檢測可按兩種情況進(jìn)行。
移動節(jié)點可以接收代理廣播消息時,移動檢測有兩種方法。第一種方法是用生存時間域作檢測,移動節(jié)點可以在任何情況下采用這種方法。第二種方法利用網(wǎng)絡(luò)前綴作檢測,這要求代理在它們的代理廣播消息中加入前綴長度擴(kuò)展部分。
如果移動節(jié)點連接的鏈路上沒有代理廣播消息,那么移動節(jié)點可以利用傳輸層和數(shù)據(jù)鏈路層來判定它當(dāng)前的位置,從而通過DHCP或手工配置得到一個轉(zhuǎn)交地址并實現(xiàn)不中斷的通信。
摘自《中國數(shù)據(jù)通信》2002.1