摘要:提出一種新主機加入移動自組網(wǎng)的地址自配置機制。針對OLSR路由協(xié)議網(wǎng)絡負荷較重的情況,特別考慮了路由協(xié)議的原理特點,設計了一種基于代理鄰居的簡單地址自配置方法;針對代理鄰居的發(fā)現(xiàn)、局域地址的分配、全局地址的檢測與分配提出了完整的解決方案,設計了相關分組格式,并保持了與OLSR通用數(shù)據(jù)格式的一致性。該方法算法簡單,對網(wǎng)絡負荷影響極小。
關鍵詞:OLSR;地址自配置;鄰居代理;地址池
0 引言
移動自組網(wǎng)MANET(Mobile ad hoc NETworks)是一種臨時網(wǎng)絡,它由一些固定節(jié)點或移動節(jié)點組成,沒有一些預先存在的節(jié)點,可用在軍事、救災和家庭網(wǎng)絡及其它一些類似的應用環(huán)境。移動自組網(wǎng)中路由問題很復雜,存在各種不同的路由方案,而這些路由方案都有一個基本的前提,即在建立無環(huán)路由和實現(xiàn)單播通信之前,網(wǎng)絡中所有的節(jié)點都必須有一個全網(wǎng)惟一的網(wǎng)絡地址。本文提出一種簡單的基于OLSR協(xié)議的路由方案,只使用極小的網(wǎng)絡負荷,并且可以方便地擴展到其它路由協(xié)議中去。本文第一部分是對OLSR協(xié)議的簡單介紹,第二部分提出地址自配置方案的原理及實施方法,第三部分對本方法的效率進行分析,最后總結了本次研究的成果和以后需要完善的問題。
1 OLSR路由協(xié)議
移動自組網(wǎng)是由處于一定地理范圍內(nèi)的節(jié)點以自組織方式組成的無線網(wǎng)絡,節(jié)點之間要求互聯(lián)互通并且協(xié)同工作。移動自組網(wǎng)具有高度變化的拓撲結構,各節(jié)點可以任意移動,節(jié)點之間利用無線技術傳送數(shù)據(jù)包,所以該網(wǎng)絡的路由問題很復雜。優(yōu)化鏈路狀態(tài)路由協(xié)議OLSR(optimized link state routingprotocol)是解決MANET路由的常用辦法之一。
OLSR路由協(xié)議是由IETF MANET工作組提出的一種表驅動式的鏈路狀態(tài)路由協(xié)議,主要采用兩種控制分組,HELLO分組和TC(Topology Control)分組。HELLO用于建立一個節(jié)點的鄰居表,其中包括鄰居節(jié)點的地址以及本節(jié)點到鄰居節(jié)點的延遲或開銷,OLSR采用周期性地廣播HELLO分組來偵聽鄰居節(jié)點的狀態(tài)、節(jié)點之間無線鏈路的狀態(tài),同時HELLO分組用于計算該節(jié)點的MPR(Multi Point relay),只有MPR節(jié)點被用作路由選擇節(jié)點,非MPR節(jié)點不參與路由計算,OLSR還利用MPR節(jié)點有效地廣播控制信息,非MPR節(jié)點不需要轉發(fā)控制信息。HELLO分組只在一跳的范圍內(nèi)廣播,不能被轉發(fā)。與之相反,TC分組必須被廣播到全網(wǎng),在TC分組中包含了將發(fā)送TC分組的節(jié)點選為MPR的鄰居節(jié)點的信息,節(jié)點根據(jù)收到的TC分組來計算出網(wǎng)絡的拓撲圖,從而建立網(wǎng)絡路由表。
OLSR路由協(xié)議是先驗式的,也就是說它們查找路由不依賴于路徑上的節(jié)點是否要發(fā)包,而是每個節(jié)點都維護一張包含到達其它節(jié)點的路由信息表。節(jié)點間通過周期性地交換路由信息來不斷更新自身的路由表,以便能夠及時地反映網(wǎng)絡拓撲結構和變化,以維護一致的、及時的、準確的路由信息。OLSR不斷地收集節(jié)點之間能相互通信的數(shù)據(jù),并對每個節(jié)點保持一個最優(yōu)化的路由表,所以連接可以很快地建立。但是OLSR相對比較大而且復雜,同時頻繁地找尋網(wǎng)絡其他節(jié)點,加重了網(wǎng)絡負荷,所以建立基于OLSR協(xié)議的地址自配置系統(tǒng)一定要充分考慮網(wǎng)絡負擔問題。本文提出的地址配置方案的特點,即對網(wǎng)絡自身的數(shù)據(jù)量負荷影響很小。
2 基于OLSR的簡單地址配置方案
本文中的地址配置方案之所以稱為簡單方案,是因為該方案的目標網(wǎng)絡是一個運行OLSR路由協(xié)議的移動自組網(wǎng)。當然該方法可以根據(jù)不同路由協(xié)議特點方便地進行擴展,另外不考慮網(wǎng)絡的合并與分割問題。本自配置方案可分為三個階段:
(1)所有OLSR網(wǎng)絡中的節(jié)點周期性發(fā)送ADDR_EXPL數(shù)據(jù)包,以發(fā)現(xiàn)新加入節(jié)點。將其確定為新節(jié)點并進行地址配置的代理節(jié)點叫做代理鄰居。
(2)在新加入節(jié)點與地址配置代理節(jié)點確定了代理關系后,代理鄰居為新節(jié)點配置網(wǎng)絡的臨時地址,并與新節(jié)點進行HELLO數(shù)據(jù)包的通信,對該過程中出現(xiàn)的各種情況進行處理。
(3)根據(jù)整個網(wǎng)絡的地址分配表為新加入節(jié)點配置全局網(wǎng)絡地址,并負責對該網(wǎng)絡地址的惟一性進行檢查,同時更改全局網(wǎng)絡數(shù)據(jù)表。
下面詳細說明在這個三個過程中涉及的問題以及解決方案。
2.1確定代理鄰居
在運行OLSR路由協(xié)議的網(wǎng)絡中,周期性發(fā)送HELLO分組和轉發(fā)TC(TopologyControl)分組的節(jié)點,可以作為為新加入節(jié)點分配網(wǎng)絡地址的代理主機。為了能夠及時發(fā)現(xiàn)新加入節(jié)點,利用OLSR協(xié)議中的HELLO交換周期性地發(fā)送ADDR_EXPL分組。該分組是一個局部數(shù)據(jù)包,任何收到該分組的主機不必轉發(fā),以減小網(wǎng)絡負荷。
新力UN主機收到—個ADDR_EXPL分組后,確定該鄰居節(jié)點作為自己地址配置的鄰居代理,如果同時收到多個ADDR_EXPL分組,則在多個鄰冒節(jié)點中選擇—個地址較低的作為其鄰居代理。
OLSR網(wǎng)絡中節(jié)點可能隨時發(fā)現(xiàn)新主機,并且為之配置局部臨時地址。因為在新主機得到全局性地址前,需要擁有一個局部的臨時地址與其進行通信和鏈路監(jiān)測,最后再為該主機分配全局永久地址。
如何為新節(jié)點分配臨時地址,并在局部監(jiān)測地址沖突?本文采取這樣的策略:
(1)每—個OLSR網(wǎng)絡中的主饑選取—個局部的地址段,用作新主機分配臨時地址的地址池。并目通過不斷交換ADDR_EXPL分組來分析網(wǎng)絡拓撲結構中是否存在局部的地址沖突。
(2)如果兩個或多個沒有進行地址代理的節(jié)點發(fā)生沖突,則由低地址主機重新選擇局部地址段。
(3)如果有一個或多個正在為新主機進行地址配置的節(jié)點發(fā)生了沖突,因為當前的地址配置必須完成,則代理地址節(jié)點縮小其臨時地址段至當前新節(jié)點分配的地址。
(4)如果地址代碼段小于一定的空間,需進行重新選擇。
為了減少網(wǎng)絡負擔,所設計的ADDR_EXPL分組格式(如圖1所示),與OLSR協(xié)議通用數(shù)據(jù)分組一致。其中全1段對應于HEELO分組的鏈接代碼段,用于表示與新加入主機鏈接的標識;全零字段與HELLO分組一致,為保留字段。這樣ADDR_EXPL分組即可作為HELLO分組的一部分進行周期發(fā)送。因為HELLO分組的鏈接代碼段高四位為0,所以經(jīng)過對這四位非0判斷接收方很容易區(qū)分這部分內(nèi)容為ADDR_EXPL分組內(nèi)容。如果地址代理節(jié)點在地址分配過程中出現(xiàn)沖突需要置臨時地址池至當前分配地址時,則開始地址置零,結束地址作為當前分配地址的標識。
圖1 ADDR_EXPL分組格式
2.2代理鄰居分配臨時地址
當新主機收到一個或多個ADDR_EXPL分組后,需要確定一個作為其地址配置的鄰居代理,可根據(jù)所有鄰居鏈路的延遲或信號強度進行決策。在確定了代理鄰居后,對該主機發(fā)送ADDR_CONFIG分組,使其確認為代理鄰居并進行臨時地址的分配,由代理鄰居從自己的臨時地址池中跳選地址并分配給新的主機。該過程采用以下處理方法:
(1)新主機在給代理鄰居發(fā)送ADDR_CONFIG分組并請求分配臨時地址,同時發(fā)送自己的物理地址,為進一步分配全局的永久地址做準備;
(2)代理鄰居在收到新主機的ADDR CONFIG分組后,從自己的臨時地址池中挑選地址分配給新主機,并從自己的地址池中將相應部分去除;
(3)新主機得的臨時地址在自己的一跳范圍內(nèi)并不能保證惟一,所以在等待分配永久地址時,不能使用該地址進行局部通信,而只是周期性地和自己的代理鄰居進行HELLO分組的交換,直到得到全局永久地址,從而成為一個完全獨立的OLSR網(wǎng)絡主機。在此期間兩主機鏈路發(fā)生變化,新主機可重新發(fā)送ADDR_CONFIG分組或者重新選擇代理鄰居。
我們所設計的ADDR_CONFIG分組如圖2所示,同樣采用OLSR的通用數(shù)據(jù)結構。需要說明的是:如果源地址、局域臨時地址及全局永久地址段為O時,表示這個一個新主機請求局域臨時地址的ADDR_CONFIG分組;如果只有全局永久地址段為0,表明這是一個分配局域臨時地址的分組,否則是一個分配全局永久地址的分組。
圖2 ADDR CONFIG分組格式
2.3分配全局地址方案
當新主機和代理鄰居利用臨時地址進行通信后,代理鄰居就需要在全局地址空間中為新主機選擇永久地址。對于全局惟一地址的選擇可以有多種機制。比如類似DHCP的地址配置方案,在全網(wǎng)范圍內(nèi)建立地址服務器,用以滿足地址分配請求和回收。但是這種方案降低了移動自組網(wǎng)的靈活性和網(wǎng)絡健壯性,同時也增加了組網(wǎng)代價。
本文采用一種分布式的分配機制。如果代理鄰居不是多點中繼站MPR(MultiPoint relay),則從其選定的MPR路由表中選取沒有使用的地址分配給新的主機。如果代理鄰屆是—個MPR,則可直接選擇一個路由表中沒有的全局地址作為新節(jié)點的永久地址。考慮到無線局域網(wǎng)的動態(tài)性,必要的地址沖突監(jiān)測是必須的,可以將要分配的全局地址寫入TC分組中,由接收該TC分組的主機進行監(jiān)測,如果存在沖突則通矢口該TC分組的產(chǎn)生主機。
3 性能分析
在上面提出的地址自配置方法中,在OLSR網(wǎng)絡中加入了三類數(shù)據(jù)的分組交換:用于發(fā)現(xiàn)新主機的ADDR_EXPL分組;用于確定代理鄰居并請求局域臨時地址的ADDR_CONFIG分組,代理鄰居分配臨時地址和全局地址也使用ADDR_CONFIG分組;代理鄰居從全局地址空間中獲取空閑地址并進行惟一性檢查的數(shù)據(jù)分組。
在以上的三類中,ADDR_EXPL分組是加在HELLO分組后面的,不會額外增加網(wǎng)絡負擔,ADDR_CONFIG只有在進行地址配置時才會發(fā)送,并且長度只有32個字節(jié),這兩種數(shù)據(jù)分組只限于局域,也就是一跳的范圍內(nèi)轉發(fā),整個地址分配過程只需要四個分組的交換即可完成,所以對網(wǎng)絡的負荷影響很小,這是該地址配置方法的一大特點。
4 結束語
本文提出的基于OLSR路由的移動自組網(wǎng)的簡單地址自配置方案,概念清晰實施簡單。OLSR網(wǎng)絡路由信息交換頻繁,額外負荷較重,對于這種先驗式的路由協(xié)議來講,本方法有著對網(wǎng)絡額外負荷影響極小的好處。
但是本方法只適用于新主機節(jié)點加入一個連通的移動自組網(wǎng)的情況,也就是說必須有一個屬于OLSR的主機為其地址自配置提供鄰居代理,這正是移動自組網(wǎng)中最頻繁的一種需要地址自配置的情況。對于兩個MANET進行合并時存在的潛在地址沖突問題,還有待進一步研究。
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文。