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