彭偉剛 徐彬輝 南京郵電學(xué)院
[摘要] 為了解決移動節(jié)點的移動性問題,曾經(jīng)提出過特定主機路由技術(shù)、源路由技術(shù)和隧道技術(shù)三種解決方案,本文通過對這三種技術(shù)方案的對比,闡述了采用隧道技術(shù)來解決移動性問題的原因,并對移動IP中使用的三種隧道技術(shù)即IP的IP封裝,最小封裝和通用路由封裝作了簡要的介紹。
因特網(wǎng)和移動通信的逐步融合突破時間和空間的限制讓人們隨時隨地接入因特網(wǎng),是個人通信的神圣目標,而移動IP技術(shù)正是實現(xiàn)這一目標的技術(shù)之一。移動IP提供了一種有效的、可擴展的機制來解決因特網(wǎng)內(nèi)的節(jié)點移動性問題,即利用移動IP技術(shù)你可以在移動的過程中不用重新啟動計算機,無需重新配置系統(tǒng),就可以隨時隨地接入因特網(wǎng),甚至不要中斷你當(dāng)前的通信連接,這也正是移動IP的優(yōu)勢所在。
1 問題的提出
移動數(shù)據(jù)網(wǎng)是固定IP網(wǎng)絡(luò)的無線擴展,當(dāng)前的移動數(shù)據(jù)網(wǎng)都提供了移動性管理機制,使得移動節(jié)點可以在移動的過程中接入因特網(wǎng)并保持其原有的通信連接。但是,由于移動數(shù)據(jù)網(wǎng)制式的不同,提供的移動性解決方案也不同,他們之間都是不兼容的,這對未來移動數(shù)據(jù)網(wǎng)絡(luò)的融合是不利的,因而需要一種統(tǒng)一的移動性管理方案,以方便網(wǎng)絡(luò)之間的互通,實現(xiàn)真正的網(wǎng)絡(luò)之間的無縫漫游,這就促成了移動IP技術(shù)的產(chǎn)生。
移動IP的首要目標就是解決節(jié)點的移動性問題。傳統(tǒng)的IP選路機理只適用固定主機的路由管理,而移動節(jié)點的路由是一種動態(tài)路由,因此,移動數(shù)據(jù)網(wǎng)中的移動性管理必須具備對移動節(jié)點動態(tài)路上的管理機制。為此先后提出了三種方案:特定主機路由技術(shù)、源路由技術(shù)和隧道技術(shù),來解決移動節(jié)點的移動性問題。
2 解決移動性的三種方案
2.1 解決移動性的方案
特定主機路由技術(shù)是相對于現(xiàn)有的IP網(wǎng)絡(luò)中的網(wǎng)絡(luò)前綴路由而言的,它在路由器中為每一個主機建立一個路由表項,根據(jù)每一個特定主機的IP地址對數(shù)據(jù)包進行選路。移動IP使用特定主機路由技術(shù)解決移動節(jié)點的移動性,至少要在移動節(jié)點的家鄉(xiāng)網(wǎng)絡(luò)到移動節(jié)點拜訪的外地網(wǎng)絡(luò)之間所有的路由器上建立特定主機路由。
源路由技術(shù)使用了在IP頭中定義的一個可選項:Loose Source and Record Route。這個可選項中列出了一個或者多個中間目的地址,要求數(shù)據(jù)包在到達最終目的地址之前必須經(jīng)過這些中間地址。移動節(jié)點要發(fā)送一個數(shù)據(jù)包給通信對端時需要在數(shù)據(jù)包給通信對端時需要在數(shù)據(jù)包的Loose Source and Record Route中加入自己目前所連接的外地網(wǎng)絡(luò)的路由器的地址,接收方接收到該數(shù)據(jù)包后將Loose Source and Record Route選項中的中間地址取出,并按照其相反的方向?qū)?shù)據(jù)包按照移動節(jié)點選定的路由送往移動節(jié)點。
隧道是一個數(shù)據(jù)包封裝在另一個數(shù)據(jù)包的凈荷中進行傳送時所經(jīng)過的路徑。采用隧道技術(shù)將發(fā)送給移動節(jié)點的數(shù)據(jù)包封裝后轉(zhuǎn)發(fā)到一個中間節(jié)點,然后由此中間節(jié)點解封后再將恢復(fù)出來的原始數(shù)據(jù)包轉(zhuǎn)發(fā)到移動節(jié)點。在一個隧道中涉及到2個實體:封裝節(jié)點和解封節(jié)點,通常將封裝節(jié)點稱為隧道的入口,解封節(jié)點稱為隧道的出口。在移動I宮隧道的入口是移動節(jié)點的家鄉(xiāng)代理,出口是移動節(jié)點的轉(zhuǎn)交地址。任何一個節(jié)點只要知道移動節(jié)點的家鄉(xiāng)地址就可以和它建立通信連接。移動節(jié)點更換了位置以后只要通過注冊機制將移動節(jié)點的轉(zhuǎn)交地址通知了家鄉(xiāng)代理以后,家鄉(xiāng)代理就可以通過隧道將發(fā)送給移動節(jié)點的數(shù)據(jù)包轉(zhuǎn)發(fā)到移動節(jié)點的轉(zhuǎn)交地址,進而轉(zhuǎn)發(fā)到移動節(jié)點。
2.2 三種方案的比較
使用特定主機路由的突出缺點就是需要發(fā)送大量的路由信息。特定主機路由的數(shù)量取決于移動節(jié)點的家鄉(xiāng)鏈路到移動節(jié)點拜訪的外地網(wǎng)絡(luò)之間的路由器的數(shù)目,這些路由器通?梢赃_到數(shù)百個。因而每一個移動節(jié)點在移動位置后至少要向數(shù)百個節(jié)點發(fā)送特定主機路由。而且,移動節(jié)點往往需要經(jīng)常改變其接入因特網(wǎng)的位置,切換鏈路以后必須要發(fā)送路由更新消息。在最壞的情況下,每一次改變鏈路移動節(jié)點原先路徑上的特定主機路由。如果鏈路的切換很頻繁,因特網(wǎng)的帶寬將被這些路由更新信息消耗掉。而使用隧道技術(shù)則只需改變隧道入口和隧道出口這兩個路由器的路由表項就可以了,因而遠遠少于特定主機路由下的路由信息。當(dāng)移動節(jié)點的接入位置發(fā)生變化時同樣只要更新這兩個節(jié)點上的路由信息就可以了,而不用對移動節(jié)點的家鄉(xiāng)鏈路到拜訪的外地鏈路之間的所有路由器都發(fā)送路由更新消息,從而有效地減少了因特網(wǎng)上的路由更新消息的數(shù)量。
使用源路由技術(shù)時IP數(shù)據(jù)包需要因特網(wǎng)上所有路由器都進行額外的處理,即每一臺轉(zhuǎn)發(fā)數(shù)據(jù)包的路由器都要判斷自己的IP地址是不是該數(shù)據(jù)包的一個中間地址,然后進行相應(yīng)的處理。實踐表明,對經(jīng)過的數(shù)據(jù)包的處理相對于轉(zhuǎn)發(fā)而言速度上相差一個數(shù)量級,這樣的性能惡化是不能忍受的,而且出于安全性的考慮防火墻可能會拒絕使用IP源路由選項的數(shù)據(jù)包。而采用隧道技術(shù),發(fā)往移動節(jié)點的數(shù)據(jù)包在家鄉(xiāng)代理封裝以后送入隧道,在整個隧道的傳輸過程中按照現(xiàn)有的IP路由機制對該數(shù)據(jù)包進行選路,沿途路由器不需要任何的附加的處理開銷,只要在隧道的出口處對數(shù)據(jù)包進行拆封和轉(zhuǎn)發(fā),就可以有效地提高數(shù)據(jù)包的轉(zhuǎn)發(fā)速度。
采用隧道技術(shù),將發(fā)給移動節(jié)點的數(shù)據(jù)包封裝后的新的IP包在因特網(wǎng)的傳送過程中被當(dāng)作普通的IP數(shù)據(jù)包,只要在要提供移動IP功能的節(jié)點上增加數(shù)據(jù)包的封裝和解封功能就可以將數(shù)據(jù)包轉(zhuǎn)發(fā)給移動節(jié)點,不提供移動IP功能的節(jié)點則不需要做任何的改動,因而可以實現(xiàn)在現(xiàn)有的IP網(wǎng)絡(luò)上的平滑的升級。采用隧道技術(shù)對處于外地網(wǎng)絡(luò)的節(jié)點提供數(shù)據(jù)包的路由機制,使得無論移動節(jié)點位于什么位置都可以使用其在家鄉(xiāng)網(wǎng)絡(luò)的IP地址來發(fā)送和接收數(shù)據(jù)包。從而實現(xiàn)了動態(tài)的路由管理,解決了移動節(jié)點的移動性問題。
3 移動IP中使用的隧道技術(shù)
目前移動IP中定義了3種隧道技術(shù),即IP的IP封裝、最小封裝和通用路由封裝(GRE)。
3.1 IP的IP封裝
IP的IP封裝是一種最簡單的隧道技術(shù),也是提供移動IP功能的節(jié)點必須實現(xiàn)的一種封裝機制。IP的IP封裝就是將一個IP數(shù)據(jù)包作為另外一個IP數(shù)據(jù)包的凈荷,從而形成具有兩個IP報頭的新的數(shù)據(jù)包。
在IP的IP封裝機制下作為凈荷的原始IP數(shù)據(jù)包不需要做任何的改動,只要對新的IP報頭按照現(xiàn)有的IP協(xié)議做適當(dāng)?shù)脑O(shè)置就可以了。大部分的設(shè)置可以從原努數(shù)據(jù)包拷貝而得,比如版本ver、服務(wù)類型TOS等。源地址和目的地址分別設(shè)置為隧道的入口和出口點,即入口設(shè)為移動節(jié)點的家鄉(xiāng)代理的地址,出口設(shè)為移動節(jié)點的轉(zhuǎn)交地址,可以是外地代理轉(zhuǎn)交地址也可以是配置轉(zhuǎn)交地址。因特網(wǎng)的報頭長度IHL、總長度和校驗和都要根據(jù)新的IP包來進行重新計算。標記域設(shè)置為一個唯一的值,標識域和片偏移域要根據(jù)是否對原始數(shù)據(jù)包進行了分片而設(shè)置。協(xié)議類型域設(shè)置為4表示新的數(shù)據(jù)包的凈荷仍然是IP數(shù)據(jù)包。設(shè)置一個合適的生存時間,以保證數(shù)據(jù)包可以到達隧道的出口。在隧道的出口接收到封裝過的數(shù)據(jù)包后,將外層IP包頭剝除后恢復(fù)出原始數(shù)據(jù)包。
封裝中要特別注意的問題是防止遞歸封裝,在防止遞歸封裝的處理方法上IP的IP封裝和下面要介紹的最小封裝采用了相同的機制,在這里一并介紹。遞歸封裝是這樣一個過程,由于路由的循環(huán)使得數(shù)據(jù)包在離開隧道之前又重新進入了這個隧道,即數(shù)據(jù)包在職一個隧道中兜圈子。這樣每次封裝都會在數(shù)據(jù)包外加封一個報頭,每個報頭又都有自己的生存時間,數(shù)據(jù)包越來越大,并且不停的在網(wǎng)絡(luò)內(nèi)部循環(huán),永遠都出不了隧道,在網(wǎng)絡(luò)內(nèi)部造成虛假流量。可以以通過兩種方法來判斷數(shù)據(jù)包是否已經(jīng)封裝過。第一種方法是判斷要進行封裝的IP數(shù)據(jù)包的源IP地址是否和隧道入口的地址(即家鄉(xiāng)代理的IP地址)相同,若相同則認為數(shù)據(jù)包已經(jīng)被封裝過,此時丟棄接收到的數(shù)據(jù)包;第二種方法是如果要進行封裝的數(shù)據(jù)包的源IP地址與隧道入口處路由表指示的隧道出口地址系統(tǒng),則認為出現(xiàn)了遞歸封裝,丟棄該分組。如果不是這兩種情況則認為沒有出現(xiàn)遞歸封裝。
3.2 最小封裝
最小封裝是對IP的IP封裝的改進,其設(shè)計思想是對IP的IP封裝進行壓縮,即壓縮掉原始IP報頭和新的報頭共有的冗余部分來提高封裝的效率。其余現(xiàn)方法是在原始數(shù)據(jù)包的報頭和凈荷之間插入最小轉(zhuǎn)發(fā)報頭,并對原努數(shù)據(jù)包的報頭做最適當(dāng)?shù)母膭。最小轉(zhuǎn)發(fā)頭的作用是存儲原始理由信息,原始數(shù)據(jù)包的IP頭設(shè)置為在隧道中傳輸?shù)穆酚尚畔ⅰ?/p>
首先,在原始IP包的凈荷和報頭之間加入最小轉(zhuǎn)發(fā)報頭。最小轉(zhuǎn)發(fā)報頭的協(xié)議類型域存儲原始數(shù)據(jù)包的協(xié)議類型。原始目的地址存儲原始數(shù)據(jù)包中的目的地址。原始源地址根據(jù)其存在與否設(shè)置,若不存在則S設(shè)置為0,此時最小轉(zhuǎn)發(fā)頭的長度是8字節(jié),設(shè)置為1表示原始源地址存在,此時最小轉(zhuǎn)發(fā)頭的長度是12字節(jié),原始源地址域設(shè)置為原始數(shù)據(jù)包的源地址。頭校驗和是對最小轉(zhuǎn)發(fā)頭的樣驗,不包含IP報頭和IP凈荷。
其次,對原始IP報頭作如下改動:協(xié)議類型改為55,表示新的數(shù)據(jù)包的凈荷是經(jīng)過最小封裝的數(shù)據(jù)包。源地址和目的地址分別設(shè)置為隧道的入口和出口,即家鄉(xiāng)代理的IP地址和移動節(jié)點的轉(zhuǎn)交地址。因特網(wǎng)報頭長IHL、總長度和校驗和由新的數(shù)據(jù)包計算得到,總長度比原始數(shù)據(jù)包的長度增加8或者12個字節(jié),這取決與原始源地址是否存在。
在隧道的出口處要去掉最小轉(zhuǎn)發(fā)頭,從最小轉(zhuǎn)發(fā)頭中恢復(fù)出原始數(shù)據(jù)包的路由信息,然后把該數(shù)據(jù)包轉(zhuǎn)發(fā)給移動節(jié)點。
3.3 通用路由封裝
通用路由封裝(GRE)不僅支持IP協(xié)議,而且還支持其他類型的網(wǎng)絡(luò)層協(xié)議,它允許任何一種協(xié)議的數(shù)據(jù)包作為凈荷封裝在任何其他一種協(xié)議的數(shù)據(jù)包中。
在進行多協(xié)議封裝時將要封裝在其他協(xié)議數(shù)據(jù)包中作為凈荷的數(shù)據(jù)包被稱為凈荷包,封裝其他數(shù)據(jù)包的外層數(shù)據(jù)包被稱為傳送包。按照通常的封裝機制,如果M種不同協(xié)議的凈荷包里封裝在N種傳送包中要有MXN中的轉(zhuǎn)換協(xié)議來處理這種封裝,在通用路由封裝中則將M種凈荷包封裝進GRE中,然后再把GRE封裝到傳送包中,這種只需要M+N種轉(zhuǎn)換協(xié)議來處理這種封裝。
通用路由封裝的GRE頭中的大部分內(nèi)容是可選的,其中包含了校驗和、偏移、密鑰、序號和路由等可選項。這些可選項通過GRE頭的前2個字節(jié)的標記和版本域來定義。C是校驗和存在指定比特,R是路由存在指示比特,K是密鑰存在指示比特,S是序列號存在指示比特,s是嚴格源路由指示比特。如果這些位設(shè)置為1表示相應(yīng)的可選項存在。版本號必須置為0。
協(xié)方類型指示凈荷包的協(xié)議類型,根據(jù)實際情況填寫,如0x800表示IP數(shù)據(jù)包:偏移域用來指示從路由域的開始到活躍源路由項的第一個字節(jié)的偏移量;校驗是對GRE頭和凈荷包的校驗;密鑰域是由隧道入口加入的一個4個字節(jié)的數(shù)字,接收方可以據(jù)此來認證發(fā)送者;接收方可以根據(jù)序列號來判斷發(fā)送方發(fā)送數(shù)據(jù)包的順序;路由域包含了源路由項的列表。
Recur是遞歸封裝控制域,這是一個有別于前兩種封裝機制的特別之處,在GRE封裝中通過這個域來對遞歸封裝進行控制。每次進行封裝前,都要檢查一下這個域的取值,如果是0就不進行封裝將數(shù)據(jù)包丟棄,如果是非0值就對其進行GRE封裝,封裝后的Recur要減去1,直到為0為止。在GRE封裝后一般把該域設(shè)置為0,即不允許進行遞歸封裝。這種防止遞歸封裝的機制也用在了IPv6中。
3.4 三種隧道技術(shù)的比較
IP的IP封裝是最簡單的,也是移動IP中要求必須實現(xiàn)的隧道技術(shù)。IP的IP封裝無論是否對原始數(shù)據(jù)包進行了分片都可以應(yīng)用,而最小封裝只能應(yīng)用于沒有進行IP分片的數(shù)據(jù)包。IP的IP封裝相當(dāng)于最小封裝來說花費的開銷更大,IP的IP封裝是增加20比特或者12比特,其效率更高。但是最小封裝是通過對改造過的原始數(shù)據(jù)包的IP頭來進行選路的,這樣每經(jīng)過一個路由器它的生存時間都要減少,這樣數(shù)據(jù)包不能到達隧道出口的概率大大增加,要謹慎使用。通用路由封裝是效率最差的,它除了要在原始數(shù)據(jù)包前加一個GRE頭以外,還要再加一個新的IP報頭,但是GRE可以支持多種協(xié)議的封裝,在這種情況下IP的IP封裝和最小封裝就無能為力了。而且在處理多種協(xié)議的封裝時GRE采用了犧牲效率來減少復(fù)雜性的方法,特別適合于多種協(xié)議之間的封裝,而且其特有的防止遞歸封裝的機制也很有吸引力。三種隧道技術(shù)各有優(yōu)勢,在實際的應(yīng)用中可以根據(jù)不同的應(yīng)用情況作出選擇。
4 結(jié)論
相對于特定主機路由技術(shù)和源路由技術(shù)而言,使用隧道技術(shù)很好地解決了移動節(jié)點的移動性問題,使得移動節(jié)點在改變了位置時可以不改變其IP地址,只通過家鄉(xiāng)地址就可以接入因特網(wǎng)。
摘自《移動通信》2002年第7期