文/汪軍
IPv6是下一代的互聯(lián)網(wǎng)協(xié)議,是為克服目前版本的缺點而設(shè)計的,它最終將代替IPv4成為互聯(lián)網(wǎng)的主要網(wǎng)絡(luò)協(xié)議。IPv6目前也是IETF移動IP工作組議程上的主要課題。與IPv4相比,IPv6有更大的地址空間、對報頭擴展及可選項更好的支持,IPv6還定義了許多新功能,將其統(tǒng)稱為鄰節(jié)點搜索,可以用來直接提供移動IPv6所需的一些功能。移動IPv6的文件發(fā)展很快,本文的討論主要是基于移動IPv6文件的第二個版本(draft-ietf-mobileip-ipv6-02.txt)。
移動IPv6的工作原理
移動IPv6從移動IPv4中借鑒了許多概念和術(shù)語。IPv6中仍有移動節(jié)點和家鄉(xiāng)代理,但沒有外地代理,家鄉(xiāng)地址、家鄉(xiāng)鏈路、轉(zhuǎn)交地址和外地鏈路的概念。移動IPv6中同時采用隧道和源路由技術(shù)向連接在外地鏈路上的移動節(jié)點傳送數(shù)據(jù)包,而在移動IPv4中則只用了隧道技術(shù)。移動IPv6的高層功能和IPv4一樣,大概也和IPv4的三大元素相似,即代理搜索、注冊和選路。
移動IPv6的操作可以總結(jié)如下:
● 移動節(jié)點用IPv6版路由器搜索(Router Discovery)確定其轉(zhuǎn)交地址。
● 移動節(jié)點連接在其家鄉(xiāng)鏈路上時與任何固定主機和路由器一樣工作。
● 當(dāng)移動節(jié)點連接在外地鏈路上時,它采用IPv6定義的地址自動配置方法得到外地鏈路上的轉(zhuǎn)交地址。
● 移動節(jié)點將它的轉(zhuǎn)交地址通知給家鄉(xiāng)代理。
● 如果可以保證操作時的安全性,移動節(jié)點也將它的轉(zhuǎn)交地址通知幾個通信伙伴。
● 不知道移動節(jié)點轉(zhuǎn)交地址的通信伙伴送出的數(shù)據(jù)包和移動IPv4一樣進行路由,它們先被路由到移動節(jié)點的本地網(wǎng)絡(luò),從那里家鄉(xiāng)代理再將它們經(jīng)過隧道送到移動節(jié)點的轉(zhuǎn)交地址。
● 知道移動節(jié)點轉(zhuǎn)交地址的通信伙伴送出的數(shù)據(jù)包可以利用IPv6選路報頭直接送給移動節(jié)點,選路報頭將移動節(jié)點的轉(zhuǎn)交地址作為一個中間目的地址。
● 在相反方向,移動節(jié)點送出的數(shù)據(jù)包采用特殊的機制被直接路由到它們的目的地。然而,當(dāng)存在入口方向的過濾時,移動節(jié)點可以將數(shù)據(jù)包通過隧道送給家鄉(xiāng)代理,隧道的源地址為移動節(jié)點的轉(zhuǎn)交地址。
如何確定移動節(jié)點的位置
移動節(jié)點通過代理搜索過程完成以下工作:(1)決定它當(dāng)前連接的是家鄉(xiāng)鏈路還是外地鏈路;(2)決定它是否從一條鏈路移動到了另一條鏈路上;(3)當(dāng)連接在外地鏈路上時取得一個轉(zhuǎn)交地址。
1.ICMPv6路由器搜索
ICMPv6路由器搜索與移動IPv4中的代理搜索十分相似。IPv6鄰節(jié)點搜索[RFC 1970]中定義的路由器搜索包括兩條報文:路由器請求(Router Solicitations)和路由器廣播(Router Advertisements)。與移動IPv4一樣,路由器廣播由路由器和家鄉(xiāng)代理在它們所連接的鏈路上進行周期地廣播,路由器請求則是由那些沒有足夠耐心等待下一個送到的路由器廣播報文的移動節(jié)點送出的。與移動IPv4中一樣,路由器搜索報文也不要求進行認證。
2.移動節(jié)點如何得到轉(zhuǎn)交地址
移動節(jié)點確定它正連接在外地鏈路上時,得到轉(zhuǎn)交地址有兩種方法。由于移動IPv6中沒有外地代理,因此移動IPv6中唯一的一種轉(zhuǎn)交地址是配置轉(zhuǎn)交地址。移動節(jié)點用接收到的路由器廣播報文中的M比特來決定采用哪一種方法。如果M比特為0,那么移動節(jié)點采用被動地址自動配置(Stateful Address Autoconfiguration),否則移動節(jié)點采用主動地址自動配置(Stateless Address Autocontlguration)。
(1)被動地址自動配置
移動節(jié)點可以通過被動地址自動配置得到轉(zhuǎn)交地址。在這種方法中,移動節(jié)點只是向一個服務(wù)器申請一個地址,并將這個地址當(dāng)作自己的轉(zhuǎn)交地址。與IPv4的情況相對應(yīng),IPv6中的“被動”地址分配協(xié)議是動態(tài)主機配置協(xié)議DHCPv6(Dynamic Host Configuration Protocol for IPv6)[draft-ietf-dhc-chcpv6-10.txt]。另外,PPP的IPv6配置協(xié)議(PPP's IPv6 Configuration Protocol)[RFC 2023]也提供了一種服務(wù)器向移動節(jié)點提供轉(zhuǎn)交地址的方法。
(2)主動地址自動配置
移動節(jié)點還可以通過主動地址自動配置得到轉(zhuǎn)交地址。主動地址自動配置[RFC 1971]是IPv6中新增加的,在IPv4中沒有類似的功能。主動地址自動配置是這樣工作的:
● 移動節(jié)點首先形成一個接口標(biāo)記,這是一個與鏈路有關(guān)的標(biāo)識,用來標(biāo)識移動節(jié)點上與外地鏈路相連的接口。接口標(biāo)記常取移動節(jié)點在那個接口上的數(shù)據(jù)鏈路層地址。
● 移動節(jié)點檢查路由器廣播報文中的前綴信息可選項(Prefix Information Options)以決定當(dāng)前鏈路上有效的網(wǎng)絡(luò)前綴。
● 移動節(jié)點將一個有效網(wǎng)絡(luò)前綴和接口標(biāo)記相連形成自己的轉(zhuǎn)交地址。
無論是被動配置方式還是介紹的主動配置方式,自動地址配置都包含一種檢查機制,移動節(jié)點可用它來檢查得到的地址是否被鏈路上其它節(jié)點使用。如果有這樣的地址重復(fù)出現(xiàn),那么自動配置協(xié)議還定義了節(jié)點得到唯一地址的方法。
如何將轉(zhuǎn)交地址告訴別的節(jié)點
下面介紹移動節(jié)點用于通知家鄉(xiāng)代理或其它節(jié)點它當(dāng)前的轉(zhuǎn)交地址的方法。IPv6采用布告(Notification)這個術(shù)語。移動IPv6中的布告和移動IPv4中的注冊有很大的不同。在移動IPv4中,移動節(jié)點通過UDP/IP包中攜帶的注冊消息將它的轉(zhuǎn)交地址告訴家鄉(xiāng)代理,而IPv6中的移動節(jié)點用目的地址可選項(Destination Options)來通知其它節(jié)點它的轉(zhuǎn)交地址。
1.布告
移動IPv6的布告是移動節(jié)點將它的轉(zhuǎn)交地址告訴家鄉(xiāng)代理和各個通信伙伴的方法。同移動IPv4一樣,家鄉(xiāng)代理將轉(zhuǎn)交地址作為隧道出口來將數(shù)據(jù)包送給連接在外地鏈路上的移動節(jié)點。另外,通信對端也可能利用轉(zhuǎn)交地址將數(shù)據(jù)包直接路由給移動節(jié)點,而無需將數(shù)據(jù)包路由到移動節(jié)點的家鄉(xiāng)代理那里。因此,移動IPv6本身集成了對路由優(yōu)化的支持。當(dāng)移動節(jié)點回到家鄉(xiāng)鏈路時,它還必須通知它們的家鄉(xiāng)代理。與移動IPv4的注冊相似,布告過程也包括一個簡單的消息交換。移動IPv6的布告采用IPv6報頭的一個擴展來實現(xiàn)消息交換。
2.布告中用到的消息
移動IPv6布告使用綁定更新、綁定應(yīng)答和綁定請求三條消息。這些消息都被放在目的地可選報頭(Destination Options Header,IPv6的一個擴展報頭)中,這表明這些消息都只被最終目的節(jié)點檢查。
(1)綁定更新
綁定更新是移動節(jié)點發(fā)出的用來通知家鄉(xiāng)代理或通信伙伴它當(dāng)前的轉(zhuǎn)交地址,綁定更新可選項可以放在一個單獨的IPv6(即包中不再包含其它用戶數(shù)據(jù))中,也可以放在一個現(xiàn)有的IPv6包(包中還有其它用戶數(shù)據(jù))中。為簡單起見,我們將綁定更新定義成任一個包含綁定選項的IPv6包,無論它是否包含其它用戶數(shù)據(jù)。
和IPv4注冊消息一樣,綁定更新要求進行認證。移動IPv6采用IP認證報頭[RFC 1826]來傳送認證數(shù)據(jù)。同樣,所有移動IPv6的實現(xiàn)可能都支持采用手工密鑰分配的Keyed-MDS認證機制。
(2)綁定應(yīng)答
綁定應(yīng)答是由家鄉(xiāng)代理或任何通信伙伴送給移動節(jié)點的,用于表明它已成功地收到了移動節(jié)點的綁定更新。與綁定更新一樣,綁定應(yīng)答可以在單獨的IPv6包中發(fā)送,也可以與別的數(shù)據(jù)一起在IPv6包中發(fā)送。向移動節(jié)點發(fā)送綁定應(yīng)答的方法與向移動節(jié)點發(fā)送其它數(shù)據(jù)包時一樣。
(3)綁定請求
通信伙伴向移動節(jié)點發(fā)送綁定請求來要求移動節(jié)點送給它一個綁定更新,也就是說,綁定請求表明通信伙伴想知道移動節(jié)點的轉(zhuǎn)交地址。當(dāng)先前的綁定更新消息中的生存時間域?qū)⒁^期,而通信伙伴又相信它還會繼續(xù)向移動節(jié)點發(fā)送數(shù)據(jù)包時,發(fā)送綁定請求就有用了。綁定請求應(yīng)與其它用戶數(shù)據(jù)一起放在一個IPv6包中發(fā)送。
數(shù)據(jù)包的選路
知道移動節(jié)點的轉(zhuǎn)交地址的通信伙伴可利用IPv6選路報頭直接將數(shù)據(jù)包發(fā)送給移動節(jié)點,這些包不需要經(jīng)過移動節(jié)點的家鄉(xiāng)代理,它們將經(jīng)過從始發(fā)點到移動節(jié)點的一條優(yōu)化路由。
如果通信伙伴不知道移動節(jié)點的轉(zhuǎn)交地址,那么它就像向其它任何固定節(jié)點發(fā)送數(shù)據(jù)包那樣,向移動節(jié)點發(fā)送數(shù)據(jù)包。這時,通信伙伴只是將移動節(jié)點的家鄉(xiāng)地址(也是它知道的唯一地址)放人目的IPv6地址域中,并將它自己的地址放在源IPv6地址域中,然后將數(shù)據(jù)包轉(zhuǎn)發(fā)到合適的下一跳上(這由它的IPv6路由表決定)。
這樣發(fā)送的一個數(shù)據(jù)包將被送往移動節(jié)點的家鄉(xiāng)鏈路,就像移動IPv4中那樣。在家鄉(xiāng)鏈路上,家鄉(xiāng)代理截獲這個數(shù)據(jù)包,并將它通過隧道送往移動節(jié)點的轉(zhuǎn)交地址。移動節(jié)點將送過來的包拆封,發(fā)現(xiàn)內(nèi)層數(shù)據(jù)包的目的地是它的家鄉(xiāng)地址,于是將內(nèi)層數(shù)據(jù)包交給高層協(xié)議處理。
當(dāng)移動節(jié)點連接在外地鏈路上時,它必須有一種方法來決定可以為它發(fā)出的數(shù)據(jù)包進行轉(zhuǎn)發(fā)的一臺路由器,這在移動IPv6中要比在移動IPv4中容易。因為所有IPv6路由器都要求實現(xiàn)路由器搜索(在IPv4中則不是),因此,移動節(jié)點可以從那些它已收到路由器廣播消息的外地鏈路上的路由器中任選一臺,并據(jù)此配置它的路由表,這樣它發(fā)出的所有數(shù)據(jù)包就會送到那臺路由器上。
摘自《互聯(lián)網(wǎng)世界》2002.1