本發(fā)明涉及通信
技術(shù)領(lǐng)域:
,尤其是一種毫米波微小區(qū)網(wǎng)絡(luò)的回傳路由方法。
背景技術(shù):
:毫米波通信技術(shù)用于拓展5G移動通信系統(tǒng)的傳輸帶寬在業(yè)界已經(jīng)達成共識。大規(guī)模MIMO技術(shù)助力毫米波通信提升5G蜂窩網(wǎng)絡(luò)頻譜效率,而毫米波的高路損、易衰落等特性決定其傳輸方式為視距(LineofSight,LOS)傳播方式,這也使得其覆蓋范圍低至50m-100m的范圍內(nèi)。因此,5G蜂窩網(wǎng)絡(luò)中產(chǎn)生了毫米波微小區(qū)的概念。這種超密集部署的毫米波微小區(qū)網(wǎng)絡(luò)對于滿足提升網(wǎng)絡(luò)性能的需求有諸多裨益,此時最關(guān)鍵的問題是如何將微小區(qū)基站的用戶數(shù)據(jù)回傳至核心網(wǎng)絡(luò),即回傳問題成為最大的挑戰(zhàn)。目前在回傳方法的設(shè)計中,一種方案是利用光纖的方式將各毫米波微小區(qū)基站直接連接至核心網(wǎng)絡(luò),該方案雖然能夠在數(shù)據(jù)傳輸?shù)目煽啃院蛯崟r性方面表現(xiàn)出顯著優(yōu)勢,但其實施難度和建設(shè)代價都讓業(yè)界難以接受,在本發(fā)明中將該類方案稱為“全光纖回傳”方案;另一種方案是利用毫米波無線通信在大部分微小區(qū)基站間進行數(shù)據(jù)傳輸,而在少數(shù)毫米波微小區(qū)基站上利用光纖通信的方式連接至核心網(wǎng)絡(luò),所有未連接光纖的微小區(qū)基站通過毫米波無線多跳中繼的方式將數(shù)據(jù)傳輸至連接光纖的微小區(qū)基站,在本發(fā)明中將該類方案稱為“光纖/毫米波混合回傳”方案,光纖/毫米波混合回傳方案不但在一定程度上能夠保證數(shù)據(jù)傳輸質(zhì)量,而且在實現(xiàn)代價上也有突出優(yōu)勢,因此該方案成為5G毫米波微小區(qū)網(wǎng)絡(luò)中的潛在回傳方案。但在這種光纖/毫米波混合回傳方案中,如何將全網(wǎng)數(shù)據(jù)通過無線多跳的方式匯聚至連接光纖的微小區(qū)基站是實現(xiàn)數(shù)據(jù)傳輸?shù)年P(guān)鍵問題。具體的問題主要有:路徑建立、路徑維護、路徑拆除等。技術(shù)實現(xiàn)要素:為了克服現(xiàn)有技術(shù)的不足,本發(fā)明提出了一種基于剩余帶寬的多徑多匯回傳路由方法,利用動態(tài)源路由原理進行路徑發(fā)現(xiàn)和路徑維護,并完成:1)當源節(jié)點(即發(fā)起路徑建立流程的毫米波微小區(qū)基站)檢測到當前路由路徑的帶寬不能夠滿足本節(jié)點所承擔的回傳負載時,發(fā)起路由發(fā)現(xiàn)流程;2)當已建立的某個路徑路由生存時間小于門限值時,對該路徑進行預約及維護;3)當源節(jié)點檢測到當前路由路徑的帶寬超過本節(jié)點所承擔的回傳負載對應的門限值時,拆除一條路由路徑。另外,本發(fā)明不需要各節(jié)點存儲全網(wǎng)的路徑信息,僅需要存儲其鄰居節(jié)點的信息即可。本發(fā)明中,當毫米波蜂窩回傳網(wǎng)絡(luò)中的所有基站完成加電啟動、波束掃描、波束對準以及相鄰節(jié)點發(fā)現(xiàn)等一系列與入網(wǎng)相關(guān)的初始化工作之后,將在節(jié)點路由層依次執(zhí)行下述實施步驟:步驟1.創(chuàng)建用于存儲鄰居節(jié)點信息和路由信息的鄰節(jié)點表和路由表,其中鄰節(jié)點表如下表所示:其中,NbrID為鄰居節(jié)點表節(jié)點序列號,Nbr_Addr為鄰節(jié)點地址號,BH_BW_LEFT為鄰節(jié)點回傳鏈路剩余總帶寬,NBR_LINK_BW_LEFT(NeighborhoodLinkBandwidthLeft)為與該鄰節(jié)點所有回傳鏈路上的剩余帶寬,Self_Sector_Links為與該鄰節(jié)點在某扇區(qū)中相連的所有回傳鏈路數(shù);路由表如下表所示:PathIDDestination_PathnoValidBWLefttimeStamps/PathRealloc12其中,PathID為路徑ID號,Destination_Pathno為路徑目的端指定的序列號,設(shè)置為RREP包中的PATHNO,Valid表示該路徑目前是否有效可用的標示位,BW為該路徑的帶寬,該值設(shè)置為RREP包中的BH_BW_REQ,Lefttime為該路徑的有效生存時間,初始化為T,Stamps/Path為該路徑上所有節(jié)點的ID/地址,realloc為擴展路由表信息預留字段;設(shè)置鄰節(jié)點發(fā)現(xiàn)計時器Nbr_Timer之后轉(zhuǎn)入步驟2,否則繼續(xù)停留在步驟1建立節(jié)點的鄰節(jié)點表和路由表;步驟2.判斷鄰節(jié)點發(fā)現(xiàn)計時器Nbr_Timer是否超時,如果Nbr_Timer超時則轉(zhuǎn)步驟3,否則轉(zhuǎn)步驟4;步驟3.創(chuàng)建用于鄰節(jié)點間帶寬信息交互的信令包HELLO,具體的包格式及字段劃分如下:TYPESEQNOSADABH_BW_LEFTNBR_LINK_BW_LEFT其中,TYPE表示HELLO包的類型標志位,本發(fā)明設(shè)為0;SEQNO(SequenceNumber)表示此HELLO信令包的序列號,SA(SourceAddress)表示此HELLO信令包的源地址,DA(DestinationAddress)表示此HELLO信令包的目的端地址,即鄰居節(jié)點地址,BH_BW_LEFT(BackhaulBandwidth)表示本節(jié)點所有回傳路徑總的剩余帶寬,當節(jié)點無回傳路徑路由時,該值設(shè)為0,NBR_LINK_BW_LEFT表示與該鄰節(jié)點的所有回傳鏈路上的剩余帶寬;向所有鄰節(jié)點發(fā)送HELLO包,并重置鄰節(jié)點發(fā)現(xiàn)計時器Nbr_Timer,之后轉(zhuǎn)入步驟2,否則繼續(xù)停留在步驟3建立HELLO信令包并向鄰節(jié)點發(fā)送;步驟4.路由表檢查與維護通過步驟4.1的計算檢查是否需要建立新的路徑,通過步驟4.2計算檢查是否需要拆除某條路徑,通過步驟4.3檢查路由表中是否有超過有效時間失效的路徑;步驟4.1:判斷節(jié)點當前所有路徑的帶寬之和與回傳負載BW_LOAD的關(guān)系,如則確定回傳請求帶寬其中α為權(quán)重因子,取值范圍為[0,1],S為扇區(qū)個數(shù),B為波束個數(shù),S和B均取非負整數(shù),轉(zhuǎn)入步驟6開啟路由發(fā)現(xiàn),否則時轉(zhuǎn)步驟4.2;步驟4.2:如果則從路由表中隨機選擇一條帶寬小于α×BW_LOAD的路徑,產(chǎn)生路徑刪除信令包RDEL,具體包格式及字段劃分如下:TYPEPATHNOSADABH_BW_REQSTAMP_NUMSTAMP1…STAMPn其中TYPE表示RDEL包類型標志位,本發(fā)明中設(shè)為3,PATHNO表示根據(jù)路由的目的節(jié)點所確定的路徑序列號,SA表示發(fā)送端地址,DA表示接收端地址,BH_BW_REQ表示待刪除路徑上的帶寬,即原RREQ中的剩余帶寬請求值,STAMP_NUM表示待刪除路徑中的所有節(jié)點數(shù),STAMP1到STAMPn分別表示待刪除路徑上第1到第n個中間節(jié)點的地址;節(jié)點找出自己路由表中Destination_Pathno為PATHNO所包含的Stamps/Path,復制在刪除信令包RDEL的STAMP域內(nèi)并向下一跳鄰節(jié)點發(fā)送,更新節(jié)點回傳鏈路剩余帶寬信息,即找出鄰居節(jié)點表中Nbr_Addr為RDEL中STAMP2的NBR_LINK_BW_LEFT和BH_BW_LEFT,NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT+BH_BW_REQ,BH_BW_LEFT=BH_BW_LEFT+BH_BW_REQ,同時刪除路由表中該條路徑信息,否則轉(zhuǎn)入步驟4.3;步驟4.3:查找鄰居節(jié)點表中NbrAddr和路由表STAMP域中相同的條目,對比鄰居節(jié)點表中的NBR_LINK_BW_LEFT和路由表中的BW,若NBR_LINK_BW_LEFT>BW,則找出路由表中Valid=0的路由條目,當路由路徑剩余生存時間小于門限時,設(shè)置Valid=1;否則查找路由表中路徑valid=0且其剩余生存時間小于門限的條目,產(chǎn)生該路徑的路徑刪除信令包RDEL并發(fā)送,刪除路由表中該條路徑信息,更新鏈路剩余帶寬信息,以釋放該條路徑,否則轉(zhuǎn)入步驟5;步驟5.如果節(jié)點接收到數(shù)據(jù)包則判斷接收到的數(shù)據(jù)包的類型,則做出如下處理:首先判斷該包是否是來自本節(jié)點上層,如果是則轉(zhuǎn)步驟5.1,否則數(shù)據(jù)包是下層提交至路由層的,進而判斷如果接收到的是HELLO信令包則轉(zhuǎn)步驟5.2,如果接收到的是路由信息請求信令包RREQ,則轉(zhuǎn)入步驟5.3;數(shù)據(jù)包處理結(jié)束后,轉(zhuǎn)步驟2;信令包RREQ具體包格式及字段劃分如下:TYPESEQNOSADATTLBH_BW_REQSTAMP_NUMSTAMP1…STAMPn其中,TYPE表示RREQ包的類型標志位,本發(fā)明中設(shè)為1,SEQNO表示該RREQ包序列號,SA表示產(chǎn)生此RREQ源節(jié)點地址,DA表示此RREQ包要到達的目的節(jié)點地址;TTL(TimeToLive)為包生存周期,表示該RREQ剩余可轉(zhuǎn)發(fā)跳數(shù),初始值設(shè)為15,BH_BW_REQ表示該RREQ所尋找路徑要滿足的請求帶寬,STAMP_NUM表示該RREQ包已尋找到的路徑節(jié)點數(shù),表示該域后面還有相應地到達目的節(jié)點時已經(jīng)過的STAMP_NUM個中間節(jié)點的地址,源節(jié)點設(shè)置該域值為0,最大值設(shè)置為15,超過15則表示為路徑不可達,STAMPn表示該RREQ包已尋找到的路徑上第n個中間節(jié)點的地址;如果接收到路由信息應答信令包RREP,則轉(zhuǎn)入步驟5.4,信令包RREP具體包格式及字段劃分如下:TYPEPATHNOSADABH_BW_REQSTAMP_NUMSTAMP1…STAMPn其中,TYPE表示RREP包類型標志位,本發(fā)明中設(shè)為2,PATHNO表示根據(jù)路由的目的節(jié)點所確定的路徑序列號,SA表示發(fā)送端地址,即原路徑請求的目的節(jié)點地址,也即網(wǎng)關(guān)節(jié)點地址,DA表示接收端地址,即原路徑請求的源節(jié)點地址,也即相應RREQ的源地址,BH_BW_REQ表示該RREP包應答的路徑帶寬,即原RREQ中的剩余帶寬請求值,STAMP_NUM表示該RREP包路徑中的所有節(jié)點數(shù),表示該域后面還有STAMP_NUM個中間節(jié)點的地址,源節(jié)點設(shè)置STAMP_NUM為0,STAMPn表示該RREP包已尋找到的路徑上第n個中間節(jié)點的地址;如果收到的是鏈路刪除信令包RDEL,則轉(zhuǎn)入步驟5.5,之后轉(zhuǎn)入步驟2,否則繼續(xù)停留在步驟5進行包處理;步驟5.1:根據(jù)回傳數(shù)據(jù)速率要求,從路由表中滿足帶寬需求的路由路徑中隨機選擇一條,在包頭中加上相應的路徑組成路由數(shù)據(jù)包RDAT進行數(shù)據(jù)發(fā)送,如果不存在這樣的路徑,則緩存數(shù)據(jù)等待路由表更新,緩存超時則丟棄該數(shù)據(jù)包,數(shù)據(jù)包RDAT具體包格式及字段劃分如下:TYPESEQNOSADABH_BW_REQSTAMP_NUMSTAMP1…STAMPnDATALOAD其中,TYPE表示路由包類型標志位,本發(fā)明設(shè)為4,SEQNO表示路由數(shù)據(jù)包的序列號,SA表示發(fā)送端地址,DA表示接收端地址,BH_BW_REQ表示數(shù)據(jù)傳輸帶寬,STAMP_NUM表示待刪除路徑中的所有節(jié)點數(shù),STAMPn表示待刪除路徑上第n個中間節(jié)點的地址,DATALOAD表示回傳數(shù)據(jù)負載;步驟5.2:根據(jù)HELLO包中SA,用HELLO包中的BH_BW_LEFT和NBR_LINK_BW_LEFT替換鄰節(jié)點表NbrAddr和HELLO包中SA相同的條目對應的BH_BW_LEFT和NBR_LINK_BW_LEFT,隨后銷毀該HELLO包;步驟5.3:將RREQ轉(zhuǎn)發(fā)至收到此RREQ包的節(jié)點的鄰節(jié)點稱為inNbr,將RREQ由收到此RREQ包的節(jié)點轉(zhuǎn)發(fā)至下一跳的鄰節(jié)點稱為outNbr,當收到RREQ的節(jié)點收到RREQ之后,判斷RREQ中的目的地址域DA是否為本節(jié)點的地址,如果本節(jié)點為RREQ的目的節(jié)點,則執(zhí)行以下步驟:1)TTL檢查:判斷如果TTL≥0則繼續(xù)執(zhí)行步驟2),否則丟棄該包;2)路由環(huán)路檢查:判斷該節(jié)點是否已經(jīng)在此RREQ包的STAMP域中,如果不存在則繼續(xù)執(zhí)行步驟3),否則丟棄該包;3)產(chǎn)生RREP包:產(chǎn)生一個空RREP包后,將產(chǎn)生空RREP包的節(jié)點的自身地址填入RREP的SA,將RREQ中的SA填寫為RREP的DA,將TYPE填寫為2,此處TYPE為區(qū)別包類型的數(shù)字,可設(shè)置其他數(shù)字,但不能與其他包類型的數(shù)字重疊,將RREQ的STAMP域反向后寫入RREP中的STAMP域,將RREQ中的BH_BW_REQ值寫入RREP中的BH_BW_REQ域;4)向STAMP域中的下一跳節(jié)點發(fā)送RREP包;如果本節(jié)點不是RREQ的目的節(jié)點,則依次執(zhí)行以下內(nèi)容:1)判斷包中TTL值,如果TTL=0,丟棄該包,否則執(zhí)行2);2)檢查STAMPn域是否包含本節(jié)點ID,如果包含則丟棄該包,否則,執(zhí)行3);3)如果路由表不為空,比較路由表中BW和RREQ中的BH_BW_REQ,若BW>BH_BW_REQ,則按照路由表中有效valid=1且Lefttime最大的原則選擇一條滿足帶寬的路徑,將該路徑組成RREP并向RREQ源節(jié)點發(fā)送,更新鄰居節(jié)點表中NbrAddr為inNbr條目的BH_BW_LEFT=BH_BW_LEFT-BH_BW_REQ、NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT-BH_BW_REQ,否則,執(zhí)行4);4)確定可轉(zhuǎn)發(fā)RREQ包的鄰節(jié)點集合:NBRS={鄰節(jié)點表中Nbr_LinkBw_Left>BH_BW_REQ的所有鄰節(jié)點}–{STAMP域中本節(jié)點的鄰節(jié)點inNbr},如果NBRS為空,則丟棄該RREQ包,轉(zhuǎn)入步驟2;如果NBRS不為空,則更新鄰節(jié)點表中NbrAddr為inNbr的條目的剩余帶寬信息:NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT-BH_BW_REQ,同時設(shè)置計時器timer(RREQ.SEQNO,inNbr_LinkBw_Left,BH_BW_REQ,T)的有效時間為T,超時則重置鄰居節(jié)點表中NbrAddr為inNbr的路由條目的剩余帶寬信息:NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT+BH_BW_REQ),其中計時器timer(RREQ.SEQNO,inNbr_LinkBw_Left,BH_BW_REQ,T)為收到RREQ序列號為SEQNO、請求帶寬為BH_BW_REQ且發(fā)送此包的節(jié)點鏈路剩余帶寬為inNbr_LinkBw_Left時設(shè)置的有效時長為T定時器,即該定時器有四個屬性:標記RREQ序列號、標記發(fā)送該包的剩余帶寬、標記請求帶寬、標記該計時器的有效時間T;隨后更新TTL=TTL-1,并向節(jié)點集NBRS中的每一個鄰節(jié)點outNbr發(fā)送RREQ,同時更新鄰節(jié)點表中NbrAddr為outNbr的條目的回傳鏈路剩余帶寬信息:NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT-BH_BW_REQ,并設(shè)置計時器timer(RREQ.SEQNO,outNbr_LinkBw_Left,BH_BW_REQ,T)的有效時間為T(計時器timer(RREQ.SEQNO,outNbr_LinkBw_Left,BH_BW_REQ,T)超時則重置鄰居節(jié)點表中NbrAddr為outNbr的剩余帶寬信息,即:NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT+BH_BW_REQ));步驟5.4:令轉(zhuǎn)發(fā)來RREP包的鄰節(jié)點為outNbr,RREP包STAMP域中指定的本節(jié)點的下一跳鄰節(jié)點為inNbr,當節(jié)點收到RREP信令包之后,查看信令包的目的地址,如果目的地址是本節(jié)點,則執(zhí)行1),否則執(zhí)行2);1)將RREP包中的路徑添加到路由表中,查找標識為DA.SEQNO的計時器:如果計時器timer(RREQ.SEQNO,Nbr_LinkBw_Left,BH_BW_REQ,T)尚未超時,則取消計時器timer(RREQ.SEQNO,Nbr_LinkBw_Left,BH_BW_REQ,T),并設(shè)置Valid=1;如果計時器timer(RREQ.SEQNO,Nbr_LinkBw_Left,BH_BW_REQ,T)超時,并且鄰居節(jié)點表中NbrAddr為outNbr的NBR_LINK_BW_LEFT滿足NBR_LINK_BW_LEFT-BH_BW_REQ≥0,則NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT-BH_BW_REQ,并設(shè)置Valid=1,否則,設(shè)置Valid=0;2)查找計時器timer(RREQ.SEQNO,outNbr_LinkBw_Left,BH_BW_REQ,T),并取消該計時器;查找計時器timer(RREQ.SEQNO,inNbr_LinkBw_Left,BH_BW_REQ,T),如果計時器timer(RREQ.SEQNO,inNbr_LinkBw_Left,BH_BW_REQ,T)未超時,則取消該計時器,根據(jù)STAMP域中的指定路徑,將RREP包轉(zhuǎn)發(fā)給下一跳鄰節(jié)點inNbr;否則,將RREP包中的路徑添加到本節(jié)點的路由表中,更新BH_BW_LEFT=BH_BW_LEFT+BH_BW_REQ;步驟5.5:轉(zhuǎn)發(fā)來RDEL包的鄰節(jié)點為outNbr,RDEL包中指定路徑下一跳的鄰節(jié)點為inNbr,當節(jié)點收到RDEL信令包之后,查看目的地址,如果目的地址是本節(jié)點則執(zhí)行1),否則執(zhí)行2);1)讀取RDEL中的BH_BW_REQ,更新鄰居節(jié)點表中的鏈路剩余帶寬信息:BH_BW_LEFT=BH_BW_LEFT+BH_BW_REQ,在路由表中刪除PATHNO的回傳路徑條目,然后銷毀該數(shù)據(jù)包;2)更新鄰節(jié)點表中NbrAddr為inNbr和outNbr條目的NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT+BH_BW_REQ;根據(jù)RDEL包中指定的路徑,轉(zhuǎn)發(fā)給下一個鄰節(jié)點inNbr;步驟6.節(jié)點根據(jù)回傳請求帶寬BH_BW_REQ,進入路由發(fā)現(xiàn)流程而依次執(zhí)行步驟1)和步驟2),之后轉(zhuǎn)入步驟2,否則繼續(xù)停留在步驟6進入路由發(fā)現(xiàn),所述的步驟1)和步驟2)如下:1)確定可發(fā)送路由信息請求包RREQ的鄰節(jié)點集合NBRS:NBRS={鄰節(jié)點表中BH_BW_LEFT>BH_BW_REQ且NBR_LINK_BW_LEFT>BH_BW_REQ的所有鄰節(jié)點}+{鄰節(jié)點表中BH_BW_LEFT=0且NBR_LINK_BW_LEFT>BH_BW_REQ的所有鄰節(jié)點},之后執(zhí)行2);2)節(jié)點向鄰節(jié)點集NBRS中的每一個鄰節(jié)點發(fā)送RREQ,之后更新NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT-BH_BW_REQ與鄰節(jié)點的回傳鏈路剩余帶寬NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT-BH_BW_REQ,后續(xù)HELLO包中使用更新后的NBR_LINK_BW_LEFT進行發(fā)送;設(shè)置計時器timer(RREQ.SEQNO,Nbr_LinkBw_Left,BH_BW_REQ,T),超時時間為T,當計時器timer(RREQ.SEQNO,Nbr_LinkBw_Left,BH_BW_REQ,T)超時時,重置NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT+BH_BW_REQ,表示從該鄰節(jié)點發(fā)送出去的RREQ包被丟棄。本發(fā)明的有益效果是由于采用源路由的方法,解決了毫米波微小區(qū)網(wǎng)絡(luò)中的分布式回傳路由問題,因此提升了回傳網(wǎng)絡(luò)性能;僅需將程序加載到各個節(jié)點,流程簡單,實現(xiàn)容易,可在支持的固件中實現(xiàn),同時也可以實現(xiàn)在驅(qū)動程序中;相對于傳統(tǒng)的表驅(qū)動路由協(xié)議降低網(wǎng)絡(luò)信令開銷,并提高網(wǎng)絡(luò)傳輸吞吐量;由于各個節(jié)點不需要存儲和維護全網(wǎng)節(jié)點的路徑,相對于傳統(tǒng)的按需路由協(xié)議大幅降低了網(wǎng)絡(luò)端到端時延,提高了網(wǎng)絡(luò)性能;本發(fā)明是一種分布式的路由方式,無須中心控制節(jié)點及全網(wǎng)實時同步。附圖說明圖1是本發(fā)明的總體流程圖,其中,HELLO是用于鄰節(jié)點間進行剩余帶寬信息交互的路由信令包,RREQ(RouteRequest)是用于請求建立滿足剩余帶寬條件回傳路徑的路由信息請求信令包,RREP(RouteResponse)是用來應答建立滿足剩余帶寬條件回傳路徑的路由信息應答信令包,RDEL(RouteDelete)是用于刪除某條源路由的回傳路徑刪除信令包,DATA是來自上層的數(shù)據(jù)包,RDAT(RouteData)是DATA添加源路徑的路由數(shù)據(jù)包。圖2是實施實例中的節(jié)點設(shè)置場景圖。具體實施方式下面結(jié)合附圖和實施例對本發(fā)明進一步說明。在毫米波蜂窩回傳網(wǎng)絡(luò)中,一般微基站均部署在靜止的較高的建筑物或物體之上,微基站之間的毫米波鏈路較為穩(wěn)定,不易被阻擋。因此,毫米波蜂窩回傳網(wǎng)可被看作是靜態(tài)的無線網(wǎng)絡(luò)。本發(fā)明稱毫米波回傳網(wǎng)絡(luò)中連接光纖的微基站節(jié)點為“網(wǎng)關(guān)節(jié)點”,稱未連接光纖的微基站節(jié)點為普通的“無線節(jié)點”。假設(shè)在網(wǎng)絡(luò)中有N個無線節(jié)點和M個網(wǎng)關(guān)節(jié)點,每個無線節(jié)點可劃分為S個扇區(qū),每個扇區(qū)中由B個波束(具體的N/M/S/B值,根據(jù)具體的毫米波回傳網(wǎng)絡(luò)拓撲、以及毫米波微基站的具體規(guī)格確定)。當無線節(jié)點某一扇區(qū)的波束與其相鄰節(jié)點進行數(shù)據(jù)通信時,其另一扇區(qū)的波束可同時與其他相鄰節(jié)點進行數(shù)據(jù)通信。考慮到回傳網(wǎng)中可能存在多個網(wǎng)關(guān)節(jié)點,且無線節(jié)點之間可能存在多條毫米波鏈路,本發(fā)明提出了一種基于剩余帶寬的多徑回傳路由方法,旨在超密集部署毫米波微小區(qū)網(wǎng)絡(luò)中,解決5G毫米波微小區(qū)密集部署場景中的數(shù)據(jù)回傳問題。本發(fā)明屬于源路由,即由源節(jié)點負責建立、維護以及拆除路由路徑,主要包括:鄰節(jié)點間帶寬信息交互、路由建立拆除檢測及鄰節(jié)點表和路由表的維護、路由發(fā)現(xiàn)三個部分。1.鄰節(jié)點帶寬信息的交互:相鄰節(jié)點通過路由信令包的交互,完善填充各自建立的鄰居節(jié)點表,實現(xiàn)全網(wǎng)節(jié)點的帶寬信息交互的初始化和維護;2.路由建立、拆除檢測及鄰節(jié)點表和路由表的維護更新:根據(jù)基站具體的回傳負載量判斷是否進行路由建立或拆除,并檢測和維護鄰居節(jié)點表和路由表。3.路由發(fā)現(xiàn)階段:各個節(jié)點通過路由控制信令包的交互傳輸,實現(xiàn)各毫米波微小區(qū)基站間相互協(xié)作地建立多條到達網(wǎng)關(guān)節(jié)點的回傳路徑。本發(fā)明可以在無線網(wǎng)卡中通過固件實現(xiàn),或?qū)崿F(xiàn)在無線網(wǎng)卡的驅(qū)動程序之中。下面結(jié)合實例對本發(fā)明的實現(xiàn)進行詳細的說明,其中圖1是本發(fā)明的總體流程圖。本發(fā)明具體實施步驟如下:步驟1.創(chuàng)建用于存儲鄰居節(jié)點信息和路由信息的鄰節(jié)點表和路由表,其中鄰節(jié)點表如下表所示:其中,NbrID為鄰居節(jié)點表節(jié)點序列號,Nbr_Addr為鄰節(jié)點地址號,BH_BW_LEFT為鄰節(jié)點回傳鏈路剩余總帶寬,NBR_LINK_BW_LEFT(NeighborhoodLinkBandwidthLeft)為與該鄰節(jié)點所有回傳鏈路上的剩余帶寬,Self_Sector_Links為與該鄰節(jié)點在某扇區(qū)中相連的所有回傳鏈路數(shù);路由表如下表所示:PathIDDestination_PathnoValidBWLefttimeStamps/PathRealloc12其中,PathID為路徑ID號,Destination_Pathno為路徑目的端指定的序列號,設(shè)置為RREP包中的PATHNO,Valid表示該路徑目前是否有效可用的標示位,BW為該路徑的帶寬,該值設(shè)置為RREP包中的BH_BW_REQ,Lefttime為該路徑的有效生存時間,初始化為T,Stamps/Path為該路徑上所有節(jié)點的ID/地址,realloc為擴展路由表信息預留字段;設(shè)置鄰節(jié)點發(fā)現(xiàn)計時器Nbr_Timer之后轉(zhuǎn)入步驟2,否則繼續(xù)停留在步驟1建立節(jié)點的鄰節(jié)點表和路由表;步驟2.判斷鄰節(jié)點發(fā)現(xiàn)計時器Nbr_Timer是否超時,如果Nbr_Timer超時則轉(zhuǎn)步驟3,否則轉(zhuǎn)步驟4;步驟3.創(chuàng)建用于鄰節(jié)點間帶寬信息交互的信令包HELLO,具體的包格式及字段劃分如下:TYPESEQNOSADABH_BW_LEFTNBR_LINK_BW_LEFT其中,TYPE表示HELLO包的類型標志位,本發(fā)明設(shè)為0;SEQNO(SequenceNumber)表示此HELLO信令包的序列號,SA(SourceAddress)表示此HELLO信令包的源地址,DA(DestinationAddress)表示此HELLO信令包的目的端地址,即鄰居節(jié)點地址,BH_BW_LEFT(BackhaulBandwidth)表示本節(jié)點所有回傳路徑總的剩余帶寬,當節(jié)點無回傳路徑路由時,該值設(shè)為0,NBR_LINK_BW_LEFT表示與該鄰節(jié)點的所有回傳鏈路上的剩余帶寬;向所有鄰節(jié)點發(fā)送HELLO包,并重置鄰節(jié)點發(fā)現(xiàn)計時器Nbr_Timer,之后轉(zhuǎn)入步驟2,否則繼續(xù)停留在步驟3建立HELLO信令包并向鄰節(jié)點發(fā)送;步驟4.路由表檢查與維護通過步驟4.1的計算檢查是否需要建立新的路徑,通過步驟4.2計算檢查是否需要拆除某條路徑,通過步驟4.3檢查路由表中是否有超過有效時間失效的路徑;步驟4.1:判斷節(jié)點當前所有路徑的帶寬之和與回傳負載BW_LOAD的關(guān)系,如則確定回傳請求帶寬其中α為權(quán)重因子,取值范圍為[0,1],S為扇區(qū)個數(shù),B為波束個數(shù),S和B均取非負整數(shù),轉(zhuǎn)入步驟6開啟路由發(fā)現(xiàn),否則時轉(zhuǎn)步驟4.2;步驟4.2:如果則從路由表中隨機選擇一條帶寬小于α×BW_LOAD的路徑,產(chǎn)生路徑刪除信令包RDEL,具體包格式及字段劃分如下:TYPEPATHNOSADABH_BW_REQSTAMP_NUMSTAMP1…STAMPn其中TYPE表示RDEL包類型標志位,本發(fā)明中設(shè)為3,PATHNO表示根據(jù)路由的目的節(jié)點所確定的路徑序列號,SA表示發(fā)送端地址,DA表示接收端地址,BH_BW_REQ表示待刪除路徑上的帶寬,即原RREQ中的剩余帶寬請求值,STAMP_NUM表示待刪除路徑中的所有節(jié)點數(shù),STAMP1到STAMPn分別表示待刪除路徑上第1到第n個中間節(jié)點的地址;節(jié)點找出自己路由表中Destination_Pathno為PATHNO所包含的Stamps/Path,復制在刪除信令包RDEL的STAMP域內(nèi)并向下一跳鄰節(jié)點發(fā)送,更新節(jié)點回傳鏈路剩余帶寬信息,即找出鄰居節(jié)點表中Nbr_Addr為RDEL中STAMP2的NBR_LINK_BW_LEFT和BH_BW_LEFT,NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT+BH_BW_REQ,BH_BW_LEFT=BH_BW_LEFT+BH_BW_REQ,同時刪除路由表中該條路徑信息,否則轉(zhuǎn)入步驟4.3;步驟4.3:查找鄰居節(jié)點表中NbrAddr和路由表STAMP域中相同的條目,對比鄰居節(jié)點表中的NBR_LINK_BW_LEFT和路由表中的BW,若NBR_LINK_BW_LEFT>BW,則找出路由表中Valid=0的路由條目,當路由路徑剩余生存時間小于門限時,設(shè)置Valid=1;否則查找路由表中路徑valid=0且其剩余生存時間小于門限的條目,產(chǎn)生該路徑的路徑刪除信令包RDEL并發(fā)送,刪除路由表中該條路徑信息,更新鏈路剩余帶寬信息,以釋放該條路徑,否則轉(zhuǎn)入步驟5;步驟5.如果節(jié)點接收到數(shù)據(jù)包則判斷接收到的數(shù)據(jù)包的類型,則做出如下處理:首先判斷該包是否是來自本節(jié)點上層,如果是則轉(zhuǎn)步驟5.1,否則數(shù)據(jù)包是下層提交至路由層的,進而判斷如果接收到的是HELLO信令包則轉(zhuǎn)步驟5.2,如果接收到的是路由信息請求信令包RREQ,則轉(zhuǎn)入步驟5.3;數(shù)據(jù)包處理結(jié)束后,轉(zhuǎn)步驟2;信令包RREQ具體包格式及字段劃分如下:TYPESEQNOSADATTLBH_BW_REQSTAMP_NUMSTAMP1…STAMPn其中,TYPE表示RREQ包的類型標志位,本發(fā)明中設(shè)為1,SEQNO表示該RREQ包序列號,SA表示產(chǎn)生此RREQ源節(jié)點地址,DA表示此RREQ包要到達的目的節(jié)點地址;TTL(TimeToLive)為包生存周期,表示該RREQ剩余可轉(zhuǎn)發(fā)跳數(shù),初始值設(shè)為15,BH_BW_REQ表示該RREQ所尋找路徑要滿足的請求帶寬,STAMP_NUM表示該RREQ包已尋找到的路徑節(jié)點數(shù),表示該域后面還有相應地到達目的節(jié)點時已經(jīng)過的STAMP_NUM個中間節(jié)點的地址,源節(jié)點設(shè)置該域值為0,最大值設(shè)置為15,超過15則表示為路徑不可達,STAMPn表示該RREQ包已尋找到的路徑上第n個中間節(jié)點的地址;如果接收到路由信息應答信令包RREP,則轉(zhuǎn)入步驟5.4,信令包RREP具體包格式及字段劃分如下:TYPEPATHNOSADABH_BW_REQSTAMP_NUMSTAMP1…STAMPn其中,TYPE表示RREP包類型標志位,本發(fā)明中設(shè)為2,PATHNO表示根據(jù)路由的目的節(jié)點所確定的路徑序列號,SA表示發(fā)送端地址,即原路徑請求的目的節(jié)點地址,也即網(wǎng)關(guān)節(jié)點地址,DA表示接收端地址,即原路徑請求的源節(jié)點地址,也即相應RREQ的源地址,BH_BW_REQ表示該RREP包應答的路徑帶寬,即原RREQ中的剩余帶寬請求值,STAMP_NUM表示該RREP包路徑中的所有節(jié)點數(shù),表示該域后面還有STAMP_NUM個中間節(jié)點的地址,源節(jié)點設(shè)置STAMP_NUM為0,STAMPn表示該RREP包已尋找到的路徑上第n個中間節(jié)點的地址;如果收到的是鏈路刪除信令包RDEL,則轉(zhuǎn)入步驟5.5,之后轉(zhuǎn)入步驟2,否則繼續(xù)停留在步驟5進行包處理;步驟5.1:根據(jù)回傳數(shù)據(jù)速率要求,從路由表中滿足帶寬需求的路由路徑中隨機選擇一條,在包頭中加上相應的路徑組成路由數(shù)據(jù)包RDAT進行數(shù)據(jù)發(fā)送,如果不存在這樣的路徑,則緩存數(shù)據(jù)等待路由表更新,緩存超時則丟棄該數(shù)據(jù)包,數(shù)據(jù)包RDAT具體包格式及字段劃分如下:TYPESEQNOSADABH_BW_REQSTAMP_NUMSTAMP1…STAMPnDATALOAD其中,TYPE表示路由包類型標志位,本發(fā)明設(shè)為4,SEQNO表示路由數(shù)據(jù)包的序列號,SA表示發(fā)送端地址,DA表示接收端地址,BH_BW_REQ表示數(shù)據(jù)傳輸帶寬,STAMP_NUM表示待刪除路徑中的所有節(jié)點數(shù),STAMPn表示待刪除路徑上第n個中間節(jié)點的地址,DATALOAD表示回傳數(shù)據(jù)負載;步驟5.2:根據(jù)HELLO包中SA,用HELLO包中的BH_BW_LEFT和NBR_LINK_BW_LEFT替換鄰節(jié)點表NbrAddr和HELLO包中SA相同的條目對應的BH_BW_LEFT和NBR_LINK_BW_LEFT,隨后銷毀該HELLO包;步驟5.3:將RREQ轉(zhuǎn)發(fā)至收到此RREQ包的節(jié)點的鄰節(jié)點稱為inNbr,將RREQ由收到此RREQ包的節(jié)點轉(zhuǎn)發(fā)至下一跳的鄰節(jié)點稱為outNbr,當收到RREQ的節(jié)點收到RREQ之后,判斷RREQ中的目的地址域DA是否為本節(jié)點的地址,如果本節(jié)點為RREQ的目的節(jié)點,則執(zhí)行以下步驟:1)TTL檢查:判斷如果TTL≥0則繼續(xù)執(zhí)行步驟2),否則丟棄該包;2)路由環(huán)路檢查:判斷該節(jié)點是否已經(jīng)在此RREQ包的STAMP域中,如果不存在則繼續(xù)執(zhí)行步驟3),否則丟棄該包;3)產(chǎn)生RREP包:產(chǎn)生一個空RREP包后,將產(chǎn)生空RREP包的節(jié)點的自身地址填入RREP的SA,將RREQ中的SA填寫為RREP的DA,將TYPE填寫為2,此處TYPE為區(qū)別包類型的數(shù)字,可設(shè)置其他數(shù)字,但不能與其他包類型的數(shù)字重疊,將RREQ的STAMP域反向后寫入RREP中的STAMP域,將RREQ中的BH_BW_REQ值寫入RREP中的BH_BW_REQ域;4)向STAMP域中的下一跳節(jié)點發(fā)送RREP包;如果本節(jié)點不是RREQ的目的節(jié)點,則依次執(zhí)行以下內(nèi)容:1)判斷包中TTL值,如果TTL=0,丟棄該包,否則執(zhí)行2);2)檢查STAMPn域是否包含本節(jié)點ID,如果包含則丟棄該包,否則,執(zhí)行3);3)如果路由表不為空,比較路由表中BW和RREQ中的BH_BW_REQ,若BW>BH_BW_REQ,則按照路由表中有效valid=1且Lefttime最大的原則選擇一條滿足帶寬的路徑,將該路徑組成RREP并向RREQ源節(jié)點發(fā)送,更新鄰居節(jié)點表中NbrAddr為inNbr條目的BH_BW_LEFT=BH_BW_LEFT-BH_BW_REQ、NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT-BH_BW_REQ,否則,執(zhí)行4);4)確定可轉(zhuǎn)發(fā)RREQ包的鄰節(jié)點集合:NBRS={鄰節(jié)點表中Nbr_LinkBw_Left>BH_BW_REQ的所有鄰節(jié)點}–{STAMP域中本節(jié)點的鄰節(jié)點inNbr},如果NBRS為空,則丟棄該RREQ包,轉(zhuǎn)入步驟2;如果NBRS不為空,則更新鄰節(jié)點表中NbrAddr為inNbr的條目的剩余帶寬信息:NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT-BH_BW_REQ,同時設(shè)置計時器timer(RREQ.SEQNO,inNbr_LinkBw_Left,BH_BW_REQ,T)的有效時間為T,超時則重置鄰居節(jié)點表中NbrAddr為inNbr的路由條目的剩余帶寬信息:NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT+BH_BW_REQ),其中計時器timer(RREQ.SEQNO,inNbr_LinkBw_Left,BH_BW_REQ,T)為收到RREQ序列號為SEQNO、請求帶寬為BH_BW_REQ且發(fā)送此包的節(jié)點鏈路剩余帶寬為inNbr_LinkBw_Left時設(shè)置的有效時長為T定時器,即該定時器有四個屬性:標記RREQ序列號、標記發(fā)送該包的剩余帶寬、標記請求帶寬、標記該計時器的有效時間T;隨后更新TTL=TTL-1,并向節(jié)點集NBRS中的每一個鄰節(jié)點outNbr發(fā)送RREQ,同時更新鄰節(jié)點表中NbrAddr為outNbr的條目的回傳鏈路剩余帶寬信息:NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT-BH_BW_REQ,并設(shè)置計時器timer(RREQ.SEQNO,outNbr_LinkBw_Left,BH_BW_REQ,T)的有效時間為T(計時器timer(RREQ.SEQNO,outNbr_LinkBw_Left,BH_BW_REQ,T)超時則重置鄰居節(jié)點表中NbrAddr為outNbr的剩余帶寬信息,即:NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT+BH_BW_REQ));步驟5.4:令轉(zhuǎn)發(fā)來RREP包的鄰節(jié)點為outNbr,RREP包STAMP域中指定的本節(jié)點的下一跳鄰節(jié)點為inNbr,當節(jié)點收到RREP信令包之后,查看信令包的目的地址,如果目的地址是本節(jié)點,則執(zhí)行1),否則執(zhí)行2);1)將RREP包中的路徑添加到路由表中,查找標識為DA.SEQNO的計時器:如果計時器timer(RREQ.SEQNO,Nbr_LinkBw_Left,BH_BW_REQ,T)尚未超時,則取消計時器timer(RREQ.SEQNO,Nbr_LinkBw_Left,BH_BW_REQ,T),并設(shè)置Valid=1;如果計時器timer(RREQ.SEQNO,Nbr_LinkBw_Left,BH_BW_REQ,T)超時,并且鄰居節(jié)點表中NbrAddr為outNbr的NBR_LINK_BW_LEFT滿足NBR_LINK_BW_LEFT-BH_BW_REQ≥0,則NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT-BH_BW_REQ,并設(shè)置Valid=1,否則,設(shè)置Valid=0;2)查找計時器timer(RREQ.SEQNO,outNbr_LinkBw_Left,BH_BW_REQ,T),并取消該計時器;查找計時器timer(RREQ.SEQNO,inNbr_LinkBw_Left,BH_BW_REQ,T),如果計時器timer(RREQ.SEQNO,inNbr_LinkBw_Left,BH_BW_REQ,T)未超時,則取消該計時器,根據(jù)STAMP域中的指定路徑,將RREP包轉(zhuǎn)發(fā)給下一跳鄰節(jié)點inNbr;否則,將RREP包中的路徑添加到本節(jié)點的路由表中,更新BH_BW_LEFT=BH_BW_LEFT+BH_BW_REQ;步驟5.5:轉(zhuǎn)發(fā)來RDEL包的鄰節(jié)點為outNbr,RDEL包中指定路徑下一跳的鄰節(jié)點為inNbr,當節(jié)點收到RDEL信令包之后,查看目的地址,如果目的地址是本節(jié)點則執(zhí)行1),否則執(zhí)行2);1)讀取RDEL中的BH_BW_REQ,更新鄰居節(jié)點表中的鏈路剩余帶寬信息:BH_BW_LEFT=BH_BW_LEFT+BH_BW_REQ,在路由表中刪除PATHNO的回傳路徑條目,然后銷毀該數(shù)據(jù)包;2)更新鄰節(jié)點表中NbrAddr為inNbr和outNbr條目的NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT+BH_BW_REQ;根據(jù)RDEL包中指定的路徑,轉(zhuǎn)發(fā)給下一個鄰節(jié)點inNbr;步驟6.節(jié)點根據(jù)回傳請求帶寬BH_BW_REQ,進入路由發(fā)現(xiàn)流程而依次執(zhí)行步驟1)和步驟2),之后轉(zhuǎn)入步驟2,否則繼續(xù)停留在步驟6進入路由發(fā)現(xiàn),所述的步驟1)和步驟2)如下:1)確定可發(fā)送路由信息請求包RREQ的鄰節(jié)點集合NBRS:NBRS={鄰節(jié)點表中BH_BW_LEFT>BH_BW_REQ且NBR_LINK_BW_LEFT>BH_BW_REQ的所有鄰節(jié)點}+{鄰節(jié)點表中BH_BW_LEFT=0且NBR_LINK_BW_LEFT>BH_BW_REQ的所有鄰節(jié)點},之后執(zhí)行2);2)節(jié)點向鄰節(jié)點集NBRS中的每一個鄰節(jié)點發(fā)送RREQ,之后更新NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT-BH_BW_REQ與鄰節(jié)點的回傳鏈路剩余帶寬NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT-BH_BW_REQ,后續(xù)HELLO包中使用更新后的NBR_LINK_BW_LEFT進行發(fā)送;設(shè)置計時器timer(RREQ.SEQNO,Nbr_LinkBw_Left,BH_BW_REQ,T),超時時間為T,當計時器timer(RREQ.SEQNO,Nbr_LinkBw_Left,BH_BW_REQ,T)超時時,重置NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT+BH_BW_REQ,表示從該鄰節(jié)點發(fā)送出去的RREQ包被丟棄。實施例如圖2所示,假設(shè)網(wǎng)絡(luò)中共有5個節(jié)點,其中節(jié)點1節(jié)點2、節(jié)點3是無線節(jié)點,每個無線節(jié)點分為三個扇區(qū),每扇區(qū)120度,分別編號sector1、2、3,每個扇區(qū)有兩個毫米波回傳鏈路,且回傳鏈路初始化帶寬為2Gbit/s,節(jié)點4、節(jié)點5是網(wǎng)關(guān)節(jié)點,節(jié)點地址為0。為方便描述,實施例中假設(shè)相鄰兩節(jié)點間存在1個毫米波鏈路,且在同一扇區(qū),實際中相鄰兩節(jié)點間毫米波鏈路數(shù)可不同,且鏈路可不在同一個扇區(qū)中。1、相鄰節(jié)點間的帶寬信息交互由于相鄰節(jié)點間的帶寬信息交互流程一致,且均是周期性的,設(shè)完成一個HELLO包的交互為一個周期,為簡化描述,實施例在該部分僅對節(jié)點1、節(jié)點2一個周期內(nèi)的交互流程加以描述。此外,流程實例假定毫米波鏈路上信息發(fā)送和接收的調(diào)度是能夠保證的,實例中網(wǎng)絡(luò)所有節(jié)點完成與入網(wǎng)相關(guān)的初始化工作之后,具體實施步驟如下:步驟1.1:節(jié)點1、節(jié)點2創(chuàng)建用于存儲鄰居節(jié)點信息和路由信息的鄰節(jié)點表和路由表并初始化鄰節(jié)點發(fā)現(xiàn)計時器Nbr_Timer,之后轉(zhuǎn)入步驟2。步驟1.2:節(jié)點1、節(jié)點2的鄰節(jié)點發(fā)現(xiàn)計時器Nbr_Timer達到超時時間NbrHelloTime,之后轉(zhuǎn)入步驟3。步驟1.3:節(jié)點1創(chuàng)建HELLO信令包向節(jié)點2發(fā)送并重置鄰節(jié)點發(fā)現(xiàn)計時器Nbr_Timer。節(jié)點2創(chuàng)建HELLO信令包向節(jié)點1發(fā)送并重置鄰節(jié)點發(fā)現(xiàn)計時器Nbr_Timer,之后進入步驟5,節(jié)點1、節(jié)點2創(chuàng)建HELLO時各字段的填充情況如下所示,表1(a)為節(jié)點1創(chuàng)建的HELLO包,表1(b)為節(jié)點2創(chuàng)建的HELLO包,TYPESEQNOSADABH_BW_LEFT=6GbBH_LINKS_BW_LEFT=2Gb表1(a)TYPESEQNOSADABH_BW_LEFT=6GbBH_LINKS_BW_LEFT=2Gb表1(b)步驟1.4:節(jié)點1、節(jié)點2收到包后判斷包的類型(TYPE=0)為HELLO包,根據(jù)HELLO包的帶寬信息更新鄰節(jié)點表,節(jié)點1、節(jié)點2的更新后的鄰節(jié)點表內(nèi)容如表2(a)、表2(b)所示,其中表2(a)為節(jié)點1鄰節(jié)點表更新,表2(b)為節(jié)點2鄰節(jié)點表更新。NbrNbr_AdBH_BW_LENbr_LinkBw_LSelf_Sector_Lin126Gbps2Gbps1…表2(a)NbrNbr_AdBH_BW_LENbr_LinkBw_LSelf_Sector_Lin116Gbps2Gbps1…es表2(b)2、路由建立及維護流程通過相鄰節(jié)點間的帶寬信息交互,各個節(jié)點已經(jīng)建立起了完整的鄰節(jié)點表;在為簡化描述,實例描述中以建立及維護節(jié)點1到節(jié)點4和節(jié)點5的路徑為例,即以節(jié)點1為發(fā)起路徑建立的源節(jié)點,節(jié)點4、節(jié)點5為數(shù)據(jù)處理的目的節(jié)點,節(jié)點地址均為0,其余節(jié)點均為中間節(jié)點;2.1源節(jié)點-發(fā)送RREQ步驟2.1.1:假設(shè)節(jié)點1檢測到小區(qū)回傳負載BW_LOAD=4Gbps,且路由表為空,即確定回傳帶寬BH_BW_REQ=0.5×|0-4|=2Gbps,進入路由發(fā)起流程,轉(zhuǎn)入步驟2.1.2;步驟2.1.2:節(jié)點1根據(jù)回傳請求帶寬BH_BW_REQ,進入路由發(fā)現(xiàn)流程而依次執(zhí)行1)、2),之后轉(zhuǎn)入步驟1.2,否則繼續(xù)停留在步驟2.1.2進行路由發(fā)現(xiàn)。1)節(jié)點1從鄰節(jié)點表中找出BH_BW_LEFT>BH_BW_REQ并且Nbr_LinkBw_Left>BH_BW_REQ的節(jié)點,確定可發(fā)送RREQ的節(jié)點集合NBRS={2,3},RREQ各項填充如表3(a)、表3(b)所示之后執(zhí)行2);其中表3(a)為節(jié)點1產(chǎn)生發(fā)往鄰節(jié)點2的RREQ包,表3(b)為節(jié)點1產(chǎn)生發(fā)往鄰節(jié)點3的RREQ包;TYPESEQNOSADATTL=BH_BW_REQ=2GbSTAMP1表3(a)TYPESEQNOSADATTL=BH_BW_REQ=2GbSTAMP1表3(b)2)節(jié)點1向節(jié)點2、節(jié)點3在各自的毫米波鏈路上發(fā)送RREQ,之后在鄰居節(jié)點表和路由表中更新與節(jié)點2、節(jié)點3回傳鏈路上的回傳帶寬。設(shè)置計時器timer(RREQ.SEQNO=1,Nbr_LinkBw_Left=0,BH_BW_REQ=2,T=75ms),timer(RREQ.SEQNO=2,Nbr_LinkBw_Left=0,BH_BW_REQ=2,T=75ms);2.2中間節(jié)點—接收RREQ步驟2.2.1:節(jié)點2、3收到包后判斷包類型(TYPE=1)為RREQ,判斷包中目的地址不是自己,依次執(zhí)行:1)判斷包中TTL=15,執(zhí)行2)。2)檢查STAMPn域不包含本節(jié)點,執(zhí)行3);3)節(jié)點2、節(jié)點3查找路由表沒有到目的節(jié)點且BH_BW_LEFT≥BH_BW_REQ的鏈路,節(jié)點2找出滿帶寬需求的鄰居節(jié)點集合NBRS={4},節(jié)點3找出滿帶寬需求的鄰居節(jié)點集合NBRS={5};節(jié)點2設(shè)置計時器timer(RREQ.SEQNO=1,Nbr_LinkBw_Left=0,BH_BW_REQ=2,T=70ms),節(jié)點3設(shè)置計時器timer(RREQ.SEQNO=2,Nbr_LinkBw_Left=0,BH_BW_REQ=2,T=70ms);節(jié)點2、節(jié)點3處理后的轉(zhuǎn)發(fā)RREQ包內(nèi)容如表4(a)、表4(b)所示,節(jié)點2、3更新帶寬信息后的鄰節(jié)點表如表5(a)、表5(b)所示;其中表4(a)為節(jié)點2轉(zhuǎn)發(fā)的RREQ包,表4(b)節(jié)點3轉(zhuǎn)發(fā)的RREQ包;表5(a)為節(jié)點2更新帶寬信息后的鄰節(jié)點表,表5(b)為節(jié)點3更新帶寬信息后的鄰節(jié)點表;表4(a)表4(b)NbrNbr_AdBH_BW_LENbr_LinkBw_LSelf_Sector_Lin112Gbps0Gbps1244Gbps0Gbps1表5(a)NbrNbr_AdBH_BW_LENbr_LinkBw_LSelf_Sector_Lin112Gbps0Gbps1254Gbps0Gbps1表5(b)2.3目的節(jié)點—接收RREQ節(jié)點4收到節(jié)點2的RREQ包,在經(jīng)過TTL、路由環(huán)路檢查后根據(jù)RREQ生成RREP包,并根據(jù)RREQ中STAMP域中的路徑,向下一跳節(jié)點發(fā)送RREP,同時更新路由表信息。節(jié)點5收到節(jié)點3的RREQ包,在經(jīng)過TTL、路由環(huán)路檢查后根據(jù)RREQ生成RREP包,并根據(jù)RREQ中STAMP域中的路徑,向下一跳節(jié)點發(fā)送RREP,同時更新路由表信息;節(jié)點4、節(jié)點5產(chǎn)生的RREP包內(nèi)容如表6(a)、表6(b)所示;節(jié)點4、節(jié)點5更新帶寬信息后的鄰節(jié)點表如表7(a)、表7(b)所示,更新后的路由表如表8(a)、表8(b)所示;其中,表6(a)為節(jié)點4產(chǎn)生的RREP包,表6(b)為節(jié)點5產(chǎn)生的RREP包,表7(a)為節(jié)點4更新帶寬信息后的鄰節(jié)點表,表7(b)為節(jié)點5更新帶寬信息后的鄰節(jié)點表,表8(a)為節(jié)點4更新后的路由表,表8(b)為節(jié)點5更新后的路由表;表6(a)表6(b)NbrINbr_AdBH_BW_LENbr_LinkBw_LSelf_Sector_Lin124Gbps0Gbps1…表7(a)NbrIDNbr_AdBH_BW_LENbr_LinkBw_LSelf_Sector_Lin134Gbps0Gbps1…表7(b)PathDestination_PathValBWLefttiStamps/PaReallo11_112Gb10s0/2/1…表8(a)PathDestination_PathValBWLefttiStamps/PaReallo11_112Gb10s0/3/1…表8(b)2.4中間節(jié)點—接收RREP節(jié)點2、節(jié)點3查找到目的節(jié)點1的計時器timer(RREQ.SEQNO=1,Nbr_LinkBw_Left=0,BH_BW_REQ=2,T=70ms),timer(RREQ.SEQNO=2,Nbr_LinkBw_Left=0,BH_BW_REQ=2,T=70ms),計時器未超時,因此取消該計時器。根據(jù)STAMP域中的指定路徑,將RREP包轉(zhuǎn)發(fā)給下一跳鄰節(jié)點;2.5源節(jié)點—接收RREP步驟2.5.1:源節(jié)點1收到RREP包之后,將RREP包中的路徑添加到路由表中;節(jié)點1更新后的路由表如表9所示:PathDestination_PathValBWLefttiStamps/PaReallo10_112Gb10s1/3/020_212Gb10s1/2/0表9步驟2.5.2:源節(jié)點1查找標識為DA.SEQNO(0.1,0.2)的計時器,此時計時器timer(RREQ.SEQNO=1,Nbr_LinkBw_Left=0,BH_BW_REQ=2,T=75ms),timer(RREQ.SEQNO=2,Nbr_LinkBw_Left=0,BH_BW_REQ=2,T=75ms),尚未超時,則取消計時器,并設(shè)置Valid=1;從發(fā)送緩存中取出發(fā)送數(shù)據(jù)在包頭中添加路由并按路由發(fā)送數(shù)據(jù)。步驟2.5.3:當源節(jié)點1檢測到當前路由路徑的帶寬超過本節(jié)點所承擔的回傳負載對應的門限值時,需要拆除其到節(jié)點4的路由路徑,此時產(chǎn)生RDEL包,發(fā)送至下一跳節(jié)點。節(jié)點1產(chǎn)生的RDEL包如表10所示:表102.6中間節(jié)點—接收RDEL步驟2.6.1:節(jié)點2更新鄰節(jié)點表中inNbr.linkBw.left=inNbr.linkBw.left+BH_BW_REQ,outNbr.linkBw.left=outNbr.linkBw.left+BH_BW_REQ;更新后的鄰居節(jié)點表如表11所示:NbrNbr_AdBH_BW_LENbr_LinkBw_LSelf_Sector_Lin114Gbps2Gbps1206Gbps2Gbps1…表11步驟2.6.2:根據(jù)DEL_PATH_PKT包中指定的路徑,轉(zhuǎn)發(fā)給下一個鄰節(jié)點。2.7目的節(jié)點—接收RDEL節(jié)點4刪除PATHNO的回傳路徑條目,然后刪除該包。當前第1頁1 2 3