劉騰飛,秦雅娟,王利利
(北京交通大學電子信息工程學院,下一代互聯(lián)網(wǎng)互聯(lián)設備國家工程實驗室,北京100044)
隨著信息網(wǎng)絡技術的快速發(fā)展,信息的獲取方式更趨多樣化。人們不再滿足使用固定終端或單個移動終端連接到網(wǎng)絡,而是希望能將某個屬性范圍內(nèi)的終端組合起來,形成一個相對穩(wěn)定的集合,IETF(internet engineering task force)將運動屬性相同的實體上的多個終端的集合稱為一個移動子網(wǎng)(network mobility,NEMO)[1]。這種移動子網(wǎng)可以是個人使用的個域網(wǎng)(personal area network,PAN)[2],也可以是部署在飛機、輪船、火車、公交車、私家車等車輛上的移動子網(wǎng)或傳感器網(wǎng)絡。移動IPv6下的子網(wǎng)移動方案是一個基于主機的移動性管理方案[3-4],需要終端參與移動性管理,并由此帶來帶寬資源和信令開銷的浪費以及終端復雜度的增加,尤其是子網(wǎng)在路由器之間切換時,終端需要改變網(wǎng)絡地址,從而造成通信中斷。針對上述問題,本文首先介紹了基于網(wǎng)絡的移動性管理協(xié)議—代理移動IPv6,然后分析了3種代理移動IPv6下的子網(wǎng)移動方案,最后通過對3種方案的實現(xiàn)和實驗結(jié)果的驗證分析,比較了3種方案的性能[5]。
代理移動 IPv6(RFC5213[6])是對移動 IPv6 協(xié)議(RFC6275 )的擴展。移動IPv6是一種基于主機的移動性管理方案,它需要移動終端參與相關的信令交互,并且當移動終端切換到外地代理時,需要使用外地轉(zhuǎn)交地址進行通信,因而存在改變網(wǎng)絡地址造成通信中斷和三角路由等問題。代理移動IPv6是一種基于網(wǎng)絡的移動性管理方案,它不需要移動終端參與任何移動信令交互,這樣首先降低了對終端的要求,其次終端在一個本地域內(nèi)移動的過程中不改變網(wǎng)絡地址,從而在切換的過程中可以保持通信的連續(xù)性。代理移動IPv6為研究基于網(wǎng)絡的子網(wǎng)移動提供了網(wǎng)絡基礎。
代理移動IPv6的核心實體有2個:本地移動錨點(local mobility anchor,LMA)和移動接入網(wǎng)關(mobile access gateway,MAG)。MAG主要負責檢測MN的接入和離開,代理移動節(jié)點(mobile node,MN)進行代理綁定更新(proxy binding update,PBU)消息的發(fā)送和代理綁定應答(proxy binding acknowledgement,PBA)消息的接收,為MN建立和刪除MAG到 LMA之間的隧道[8]、綁定更新列表(binding update list entry,BULE)和路由。LMA負責接收PBU消息和發(fā)送PBA消息,給MN分配家鄉(xiāng)網(wǎng)絡前綴(home network prefix,HNP),為MN建立和刪除MAG到LMA之間的隧道、綁定緩存(binding cache entry,BCE)和路由。完成代理注冊后,MAG向MN發(fā)送包含HNP的路由通告消息(router advertisement,RA)。MN收到 RA后,通過獲取其中的HNP,配置相應的IPv6地址,進而可以與通信對端進行正常通信。當MN從MAG1切換到MAG2時,MAG2會代理MN進行注冊,當LMA檢測到MN之前已經(jīng)注冊,會給MN分配相同的HNP,并更新隧道以及相應的路由。在MN接入MAG2的同時,MAG1也會檢測到MN的離開,并為MN進行解注冊。
與代理移動IPv6相比,代理移動IPv6子網(wǎng)移動引入了一個新的實體—移動路由器(mobile router,MR),通過MR來統(tǒng)一管理子網(wǎng)內(nèi)的移動網(wǎng)絡節(jié)點(mobile network node,MNN)。這樣做有以下優(yōu)點:①節(jié)省信令資源,大量減少每個終端都要進行切換的信令開銷;②減少切換操作,子網(wǎng)整體移動時,子網(wǎng)內(nèi)所有移動終端在MAG之間的切換可以通過單一移動路由器在MAG之間的切換來完成。在IETF公布的關于NEMO的RFC4885[9]中,根據(jù)MNN的活動范圍,將MNN分為本地固定節(jié)點(local fixed node,LFN)和訪問移動節(jié)點(visiting mobile node,VMN),LFN只在子網(wǎng)內(nèi)部移動,而VMN則可以在子網(wǎng)之間或子網(wǎng)與固定無線路由器之間移動。目前,子網(wǎng)移動有3種實現(xiàn)方案:普通子網(wǎng)移動(C-NEMO)[10]、基于PMIPv6的網(wǎng)絡移動(N-PMIPv6)[11]和基于網(wǎng)絡的網(wǎng)絡移動(N-NEMO)[12]。
C-NEMO是一種簡單的子網(wǎng)移動方案,其主要思想是MR攜帶的子網(wǎng)內(nèi)的所有終端獲得相同的子網(wǎng)前綴。MAG在代理MR向LMA注冊HNP的同時,也向LMA進行移動子網(wǎng)前綴(mobile network prefix,MNP)的注冊,并為MNP在LMA和MAG之間建立隧道和路由。之后,在MAG發(fā)送給MR的RA消息中不僅包含有MR本身的HNP,還有MR所攜帶子網(wǎng)的MNP,MR收到RA后,內(nèi)核自動使用HNP配置自己的網(wǎng)絡地址[13],并提取出MNP發(fā)送給MNN。MNN接收MNP,自動配置完成自己的網(wǎng)絡地址后即可進行通信。
普通子網(wǎng)移動方案的信令流程如圖1所示。首先,MR接入MAG,MAG通過MR的MAC地址查找MR對應的mn_id(移動路由器的標識符)。MAG為MR建立BULE,然后代理MR向LMA發(fā)送包含有mn_id的PBU進行注冊。LMA收到PBU后,查找mn_id所對應的 HNP和MNP,為 MR建立一個BCE;然后,將HNP和MNP添加到PBA發(fā)給MAG,并為HNP和MNP建立隧道和路由。MAG收到LMA返回的PBA后,提取MNP和HNP添加到RA消息中發(fā)送給MR,并為HNP和MNP建立BULE、隧道和路由;然后,MNN接入到MR,MR發(fā)現(xiàn)MNN接入后會檢測MNN是否為合法用戶,檢測成功以后給MNN發(fā)送包含MNP的RA消息包,MNN收到RA后使用MNP配置完成本身的網(wǎng)絡地址即可進行通信。這樣所有發(fā)往LFN的消息包都會通過這個隧道發(fā)送至MR,然后由MR轉(zhuǎn)交給MNN。
可見,本方案實現(xiàn)簡單,通信數(shù)據(jù)包的頭部開銷比較小,在通信過程中只需在LMA和MAG之間建立一層隧道,而不需要在MR上建立隧道。MR在MAG間切換時,由于只進行一次注冊,并且隧道只建立在MAG和LMA之間,所以MNN和CN之間進行數(shù)據(jù)通信的切換時延損耗[14]較小。C-NEMO中,由于MAG為MR向LMA進行注冊時,已經(jīng)為其子網(wǎng)里的所有MNN的MNP進行了注冊。在同一個MR下所有MNN共用同一個HNP(即MNP),而當MNN在MR與MR之間或者是MR與MAG之間切換時,則會接收到帶有不同HNP的RA消息,這將導致網(wǎng)絡地址變化,造成上層應用的中斷,因此,本方案只支持LFN類型的MNN。
圖1 C-NEMO信令流程Fig.1 Communication call-flow in C-NEMO
代理移動IPv6下隧道嵌套子網(wǎng)移動的核心思想是將MR當作一個MAG來使用,MR上運行類似于MAG的軟件。與C-NEMO相比,N-PMIPv6取消了MNP,將子網(wǎng)內(nèi)每一個MNN都視為VMN節(jié)點類型,信令流程如圖2所示。首先,MR接入MAG1,MAG1向LMA進行綁定更新請求,然后,LMA為MR分配HNP并將其添加到PBA中發(fā)送給MAG1,發(fā)送成功后為HNP建立LMA到MAG1的隧道和路由。MAG1收到PBA后提取其中的HNP填入到向MR發(fā)送的RA中。這樣MR收到RA后,配置完成自己的IPv6地址。然后,VMN接入MR,MR會直接向LMA進行注冊,整個流程和MAG為MR進行注冊時一樣,建立的隧道為LMA到MR;然后為VMN分配一個HNP,所有發(fā)往這個HNP的數(shù)據(jù)包都會通過隧道直接從LMA發(fā)到MR,再由MR轉(zhuǎn)交給VMN;數(shù)據(jù)包在LMA和MAG1之間傳輸時網(wǎng)絡層頭部為雙層隧道,即LMA為MR建立的隧道和LMA為VMN建立的隧道,MAG1到MR之間為單層隧道。
本方案的優(yōu)點是支持單點移動性,即對MR下的每個VMN都分配相同的HNP。當VMN在MR之間或者在MR和MAG之間進行切換時,網(wǎng)絡地址始終不變,也就是對于上層應用來說,通信不會中斷。從流程圖2可以看到,對于子網(wǎng)下每個VMN都存在嵌套隧道,即在LMA和MR接入的MAG之間存在雙層隧道,尤其在嵌套子網(wǎng)的情況下,將帶來很大的網(wǎng)絡層頭部開銷,進而浪費帶寬資源。另外,本方案只支持VMN節(jié)點類型,不支持LFN。
圖2 N-PMIPv6信令流程Fig.2 Communication call-flow in N-PMIPv6
2.3.1 N-NEMO 概述
在N-PMIPv6的基礎上,采用隧道分離和分層注冊思想,文獻[12]提出了 N-NEMO,以支持 LFN和VMN 2種節(jié)點類型。在N-NEMO中,LFN接入MR時,直接為其分配HNP。VMN接入MR時,需要進行本地和全局2次注冊。MR和LMA之間的隧道也分為本地隧道和全局隧道2部分,以解決NPMIPv6存在的隧道嵌套問題,降低網(wǎng)絡層數(shù)據(jù)包的頭部開銷。
N-NEMO中,LFN接入流程與C-NEMO相同,這里不再贅述。VMN接入的信令流程如圖3所示。
當一個移動節(jié)點接入MAG時,MAG對移動節(jié)點的類型進行識別。當移動節(jié)點為一個MN,MAG則執(zhí)行正常的代理移動IPv6的流程;如果移動節(jié)點為MR,MAG則向LMA發(fā)送代理綁定更新消息,并在其中添加MNP選項。LMA對MNP進行注冊,并為HNP和MNP建立隧道和路由。其中,MNP用來針對性管理MR下面所攜帶LFN的移動性。
MR分2種情況處理移動節(jié)點的接入。
1)如果檢測到移動節(jié)點為LFN,則MR直接提取其向MAG注冊時分配的MNP,放入RA(路由通告)消息中傳遞給LFN;LFN接收到RA后配置自己的地址,即可以與核心網(wǎng)(core network,CN)開始通信。
圖3 N-NEMO中VMN接入流程Fig.3 Communication call-flow for VMN in N-NEMO
2)如果檢測到移動節(jié)點為 VMN,則 MR為VMN建立LBULE(local BULE),并向上一級MAG發(fā)送LPBU(local PBU)消息進行本地注冊;MAG接收到 LPBU消息包后,為 VMN建立 LBCE(local BCE)和BULE,向LMA發(fā)送GPBU進行全局注冊。LMA收到 GPBU后,為 VMN分配 HNP,并建立BCE、LMA和MAG之間的隧道和路由,向MAG發(fā)送包含HNP的GPBA。MAG收到GPBA后,提取其中的HNP,更新 VMN的 BULE,為 VMN的 HNP建立MAG到LMA之間的隧道和路由,并向MR發(fā)送包含 HNP的 LPBA。然后,MAG更新 VMN的LBCE,并為HNP添加MAG到MR之間的隧道和路由。MR收到MAG發(fā)送的 LPBA后,提取其中的HNP,并更新自己的LBULE,然后為 HNP添加MR到MAG之間的隧道(隧道的兩端為MR和MAG)和路由。MR將LBULE中的HNP填充到RA消息中發(fā)送給VMN,VMN收到RA配置完成網(wǎng)絡地址即可通信。
切換情況分以下2種。
1)VMN從MR切換到MAG。當VMN從MR切換到MAG時,MAG會為VMN建立一個綁定更新列表,并向 LMA進行注冊,發(fā)送 GPBU。LMA收到GPBU后,提取其中的mn_id,查找是否存在和其對應的BCE。若存在對應的BCE,直接提取其中的HNP放入GPBA發(fā)給MAG,然后更新自己的BCE,將隧道的對端從原來MR所接入的MAG調(diào)整到新的MAG,如果不存在對應的BCE,則為mn_id進行重新注冊。在MN切換到新的MAG的同時,MR檢測到 MN的離開,向 MAG發(fā)送解注冊 LPBU(lifetime=0)。MAG收到解LPBU后,向LMA發(fā)送解注冊GPBU(lifetime=0)。LMA收到解注冊GPBU后,向MAG發(fā)送解注冊GPBA(lifetime=0)。MAG收到GPBA后,刪除原來為MN建立的隧道和路由,發(fā)送解注冊LPBA(lifetime=0),以刪除原來為MN建立的本地隧道和路由。MR收到解注冊LPBA后,刪除之前為MN添加的隧道和路由以及對應的LBULE,完成切換過程。
2)MR在2個MAG之間切換。當MR從MAG1切換到MAG2時,MR通過接收到的RA消息包中MAG地址的改變確認切換的發(fā)生。MR會為其子網(wǎng)內(nèi)的VMN向 MAG2重新進行注冊,具體流程和VMN接入流程相同。MAG1檢測到MR的離開后,為MR以及MR下的VMN進行解注冊,并刪除之前為它們建立的隧道和路由。
可見,與前2種方案相比,N-NEMO有以下2個優(yōu)點:N-NEMO同時支持LFN和VMN;MMN和CN通信時采用了級聯(lián)隧道的方法,可以有效避免NPMIPv6中嵌套隧道帶來的網(wǎng)絡層頭部開銷過大的問題,節(jié)約了網(wǎng)絡資源。但N-NEMO信令交互比較復雜,當MR進行切換時,VMN的切換時延較大,其原因有2個方面:MR切換時,需要為MN重新注冊;MN與CN通信需要經(jīng)過2段隧道。另外,LMA需要管理的前綴數(shù)量較多,增加了LMA處理信令的負擔。
2.3.2 軟件實現(xiàn)
與代理移動IP相比,為了保證級聯(lián)隧道的成功建立,支持子網(wǎng)移動的代理移動IP軟件加入了實體MR,增加了本地代理綁定更新LPBU和本地代理綁定應答LPBA 2個信令。MR為了支持這2個信令,為VMN建立LBULE,并代理VMN發(fā)送LPBU以及接收LPBA來進行本地注冊,同時為VMN建立隧道和路由模塊。MAG加入了對子網(wǎng)移動中的移動節(jié)點支持的LBCE,為VMN進行LPBU的接收和LPBA的發(fā)送,程序模塊之間的流程圖如圖4所示(虛線模塊為新添加部分)。
實體類型的判斷是通過配置文件來實現(xiàn)的,如果判斷本實體為MR,則要進行MR的初始化工作,包括任務隊列的初始化、移動頭套接口的初始化、路由通告接收原始套接字的初始化、隧道控制初始化、本地綁定更新列表初始化、路由規(guī)則初始化以及MR路由通告初始化等。MR上軟件結(jié)構(gòu)分接入檢測程序和代理移動IPv6下主程序2個部分,兩者之間的消息交互通過消息隊列來實現(xiàn),分別如圖5和圖6所示。
圖4 N-NEMO程序框架Fig.4 Program modules for N-NEMO
圖5 MNN接入偵聽模塊流程圖Fig.5 Flow diagram for MNN connection sense
圖6 MR軟件結(jié)構(gòu)圖Fig.6 Software architecture for MR
接入偵聽程序通過對AP(access point)發(fā)來syslog消息來判斷MNN的接入和離開,并提取MNN的MAC地址,然后對MNN的類型進行判斷。我們定義18代表節(jié)點類型為VMN,19代表節(jié)點類型為LFN,20表示節(jié)點類型為MR。然后通過消息隊列將MNN的信息發(fā)送給MR主程序。
MR的主程序中分3個大的線程:①移動頭部的接收;通過對接收消息包的判斷,來觸發(fā)信令的交互;②消息隊列觸發(fā)線程:通過接受接入檢測程序所發(fā)送的消息隊列的值,來檢測MN的切換;③RA消息的接受:通過接受RA消息包,并對其中的MAG地址進行判斷,不變將繼續(xù)監(jiān)聽,改變則為MNN向新的MAG進行注冊。
對于實體MAG,MAG首先要進行和MR類似的初始化,由于MAG的程序主要分為:移動頭部的接受以及消息隊列觸發(fā)線程,功能和MR中的2個線程功能類似,代碼結(jié)構(gòu)如圖7所示。
圖7 MAG軟件結(jié)構(gòu)圖Fig.7 Software architecture for MAG
為了分析代理移動IPv6下3種子網(wǎng)移動方案的性能,本文搭建了實驗平臺。實驗平臺中包括LMA,MAG,MR,MN,CN 5 個實體,如圖8 所示。下面將就移動子網(wǎng)在2個MAG之間切換以及MN在MAG和MR之間切換2種場景進行時延分析比較。
下面分別采用上述3種子網(wǎng)移動方案測試MR在MAG之間切換的時延。MR在MAG1和MAG2之間共進行150次切換,通過ICMPv6 ping和ICMPv6 reply數(shù)據(jù)包測試MN與CN之間的通信切換時延的最小值、最大值和平均值,并與代理移動IP中MN在MAG之間的切換進行對比,如圖9所示。其中,平均時延:PMIPv6為1.246 775 s,C-NEMO為1.275 94 s,N-PMIPv6為1.291 202 3 s,N-NEMO為 1.300 398 s。由圖9可見,PMIPv6平均時延最小,N-NEMO平均時延最大。實驗結(jié)果與前面的分析吻合。
圖8 PMIPv6子網(wǎng)移動的實驗拓撲圖Fig.8 Mobility scenario in PMIPv6
圖9 MR在MAG1和MAG2之間切換時延性能Fig.9 Handoff delay cost for MR handover between MAG1 and MAG2
具體的切換場景為:首先MR接入到MAG1,MN接入在MR下面的子網(wǎng),然后MN和CN進行通信的過程中在MR和MAG2之間進行150次切換。由于C-NEMO不支持單點的移動性,所以這個場景的實現(xiàn)里面沒有對其時延進行分析。我們將后2種方案的切換時延進行測試分析,圖10中分別顯示了對2種移動切換實驗的最小值、平均值和最大值(其中平均值:N-PMIPv6為1.498 742 s,N-NEMO為1.504 89 s);N-PMIPv6的性能稍優(yōu)于 N-NEMO,不過兩者的時延相差僅為0.006 148 s,與其所帶來的頭部開銷降低的優(yōu)勢相比是可以接受的。
圖10 MN在MR和MAG之間切換時延性能Fig.10 Handoff delay cost for MN handover between MR and MAG
通過3種子網(wǎng)移動實現(xiàn)方案的協(xié)議分析,以及兩個場景下3種方案的時延測試,可以看出,在信令開銷方面,由于N-NEMO采用了分層注冊,每次MR切換時都要為其下的移動節(jié)點進行一次注冊,因此,N-NEMO信令開銷最大,C-NEMO信令開銷最小。在網(wǎng)絡層頭部開銷方面,N-PMIPv6的開銷最大,CNEMO和N-NEMO的開銷較小。從支持的節(jié)點類型上看,C-NEMO只能支持LFN節(jié)點,N-PMIPv6只能支持VMN節(jié)點,而N-NEMO可以同時支持LFN和VMN 2種節(jié)點類型。從切換時延上看,MR在MAG間切換時,C-NEMO的切換時延相對最小,NNEMO的切換時延抖動較大;而MN在MR和MAG間切換時,N-PMIPv6和N-NEMO的切換時延幾乎相等。綜上所述,N-NEMO相對其他2種方案雖然信令開銷和切換時延相對較大,但可以支持各種節(jié)點類型,以及網(wǎng)絡層頭部開銷較小的優(yōu)勢,如表1所示。
表1 3種子網(wǎng)移動實現(xiàn)方案對比Tab.1 Comparison in three NEMO mechanisms
本文介紹了代理移動IPv6下的3種子網(wǎng)移動信令流程和實現(xiàn)方案,詳細分析了N-NEMO方案的信令流程和程序的模塊實現(xiàn),軟件實現(xiàn)了3種子網(wǎng)移動方案,實驗測試了各種方案的切換時延。NNEMO采用隧道分離技術,在MR和MAG之間以及MAG和LMA之間,為VMN建立隧道,有效地減小了數(shù)據(jù)包在MAG和LMA之間傳輸時的頭部開銷;同時,N-NEMO全面支持2種類型移動節(jié)點,可滿足移動子網(wǎng)中移動節(jié)點不同應用場景的需求。但由于N-NEMO切換時延抖動相對較大,因此,N-NEMO適用于對切換時延和時延抖動不是很敏感的應用。在后續(xù)的研究工作中,將對N-NEMO子網(wǎng)內(nèi)部多個MN的塊注冊[15]進行相關的實現(xiàn)。
[1]DEVARPALLI D,WAKIKAWA D,PETRESCU A.RFC 3963:Network Mobility(NEMO)Basic Support Protocol[S].[s.l.]:Network Working Group,2005:2-25.
[2]ZHAO Fei,VIEHLAND D.Key Applications for Success of Personal Area Networks,Mobile Business[C]//Proceeding ICMB'09 Proceedings of the 2009 Eighth International Conference on Mobile Business.Washington,DC,USA:IEEE Computer Society,2009:227-232.
[3]李雪霞,郜帥,王利利,等.一種基于標示分離映射網(wǎng)絡的子網(wǎng)移動性管理方案[J].重慶郵電大學學報:自然科學版,2012,24(1):83-89.LI Xuexia,GAO Shuai,WANG Lili,et al.A network mobility management scheme based on the locator/ID separating network[J].Journal of Chongqing University of Posts and Telecommunications:Natural Science Edition,2012,24(1):83-89.
[4]張家波.基于IPV6的快速切換改進方案[J].數(shù)字通信,2009,37(3):20-24.ZHANG Jia.An improved fast handoff scheme based on mibile IPV6[J].Digital lommunication,2009,37(3):20-24.
[5]QU Zhaowei,LU Tingjie.QoS Management Structure for Mobile IPv6[J].THE Journal of China Universities of Post and Telecommunications,2005,12(4):6-10.
[6]GUNDAVELLI S,LEUNG K,DEVARAPALLI V,et al.RFC5213:Proxy Mobile IPv6[S].[s.l.]:Network Working Group,2008:3-24.
[7]PERKINS C,JOHNSON D,ARKKO J.RFC6275:Mobility Support in IPv6[S].[s.l.]:Network Working Group,2011:8-19.
[8]SIMPSON W.RFC1853:IP in IP Tunneling[S].[s.l.]:Network Working Group,1995:3-10.
[9]ERNST T,LACH H-Y.RFC 4885:Network Mobility Support Terminology[S].[s.l.]:Network Working Group,2007:1-20.
[10]李雪霞.代理移動IPv6中子網(wǎng)移動的研究與實現(xiàn)[D].北京:北京交通大學,2011:26-40.LI Xuexia.Research and Implementation on Network Mobility in PMIPv6[D].Beijing:Beijing Jiaotong University,2011:26-40.
[11]SOTO I,BERNARDOS C J,CALDERON M,et al.NEMO-Enabled Localized Mobility Support for Internet Access in Automotive Scenarios[J].IEEE Communications Magazine,2009,47(5):152-159.
[12]YAN Z W,ZHOU H C,YOU I.N-NEMO:A Comprehensive Network Mobility Solution in Proxy Mobile IPv6 Network[J].Journal of Wireless Mobile Networks,Ubiquitous Computing and Dependable Applications(JoWUA),2010:52-70.
[13]RICHARD S W.TCP/IP Illustrated[M].Beijing:China Machine Press,1999:50-60.
[14]ERNST T.RFC4886:Network Mobility Support Goals and Requirements[S].[s.l.]:Network Working Group,20075-15.
[15]ABINADER F,GUNDAVELLI S,LEUNG K,et al.RFC6602:Bulk Binding Update Support for Proxy Mobile IPv6[S].[s.l.]:Network Working Group,2012:1-30.