劉 臺,王一鳴,張希杰,趙瑞峰,周 君
(武漢中原電子集團有限公司,武漢 430205)
組播是一種一對多或多對多的信息傳遞的方式[1],一般是在數(shù)據(jù)傳遞路徑出現(xiàn)分叉的情況下才進行數(shù)據(jù)包的復(fù)制,而不是將相同的數(shù)據(jù)多次復(fù)制發(fā)送給每個目的端,能有效降低對鏈路帶寬的占用。在互聯(lián)網(wǎng)發(fā)展過程中,先后出現(xiàn)了IP組播和應(yīng)用層組播技術(shù)[2],它們的基本原理都是在組成員之間建立數(shù)據(jù)傳遞樹,在組播傳輸過程中,一般是通過傳遞樹確定數(shù)據(jù)包的傳遞路徑,減少不必要的傳輸路徑和數(shù)據(jù)復(fù)制,提升數(shù)據(jù)的傳輸效率。
戰(zhàn)術(shù)通信系統(tǒng)是通過網(wǎng)絡(luò)互聯(lián)協(xié)議將各類戰(zhàn)術(shù)通信設(shè)備和終端設(shè)備互聯(lián)而成的通信系統(tǒng)[3]。在戰(zhàn)術(shù)通信系統(tǒng)中,通過傳遞各類戰(zhàn)術(shù)通信業(yè)務(wù)來滿足各個指揮與作戰(zhàn)要素之間數(shù)據(jù)通信需求,如指揮控制、態(tài)勢感知、語音呼叫等,其中許多戰(zhàn)術(shù)通信業(yè)務(wù)的傳遞方式為一發(fā)多收,并具有高時敏性。為滿足機動通信要求,戰(zhàn)術(shù)通信系統(tǒng)一般含有大量遠(yuǎn)距離無線鏈路,具有帶寬有限、傳輸時延較大、拓?fù)渥兓l繁的特點。基于上述業(yè)務(wù)特點和網(wǎng)絡(luò)特點,戰(zhàn)術(shù)通信對數(shù)據(jù)業(yè)務(wù)的傳輸一般要求具備高實時性、相對低的帶寬占用、網(wǎng)絡(luò)拓?fù)渥兓瘯r能快速恢復(fù)通信??梢钥闯?,無論是IP組播還是應(yīng)用層組播,都難以滿足戰(zhàn)術(shù)通信的要求:一方面,它們生成傳遞樹都是基于額外協(xié)議的,無法及時響應(yīng)網(wǎng)絡(luò)變化;另一方面,它們是基于盡力而為模型的,無法針對時敏業(yè)務(wù)提供高實時傳輸[4-5]。
名址分離技術(shù)可以在戰(zhàn)術(shù)通信系統(tǒng)中得到很好的應(yīng)用,它能將節(jié)點身份與物理地址(IP地址)分離,使業(yè)務(wù)通信可以直接通過節(jié)點身份來尋址,對用戶屏蔽IP層細(xì)節(jié)。在戰(zhàn)術(shù)通信系統(tǒng)中,節(jié)點身份往往比IP地址的長度更短,將名址分離思想與組播傳輸方式進行融合設(shè)計,可以節(jié)省IP報頭開銷,傳輸更多的控制信息。同時,由于它簡化了復(fù)雜的網(wǎng)絡(luò)配置,便于理解,可以很好地應(yīng)用于戰(zhàn)術(shù)通信系統(tǒng)。
本文提出了一個不依賴額外協(xié)議的、基于名址分離尋址的數(shù)據(jù)組播方案,可以較好地滿足戰(zhàn)術(shù)通信系統(tǒng)中組播業(yè)務(wù)的需求。
針對IP組播及應(yīng)用層組播模型在戰(zhàn)術(shù)通信環(huán)境下的問題,本文設(shè)計了一種新的組播方案,主要設(shè)計思想如下:
(1)運用名址分離機制,將組播尋址由IP改為節(jié)點身份,根據(jù)節(jié)點身份管理組成員,不再動態(tài)維護組成員信息。用戶終端收發(fā)組播信息直接根據(jù)節(jié)點身份進行,不需要加入組播組的動作。
(2)組播轉(zhuǎn)發(fā)信息附加在自定義報頭中,無額外交互機制。網(wǎng)絡(luò)變化時,后續(xù)數(shù)據(jù)包可以立即根據(jù)新單播路由信息產(chǎn)生新的組播轉(zhuǎn)發(fā)信息,完全消除重建組播樹的報文傳輸產(chǎn)生的等待時間。
1.2.1 基本原理
每個節(jié)點擁有一個核心IP地址和一個身份地址,IP地址僅用于IP組網(wǎng),維持路由可達,上層業(yè)務(wù)通過身份地址來尋址通信。身份與網(wǎng)絡(luò)節(jié)點解除綁定關(guān)系,上層應(yīng)用發(fā)送的數(shù)據(jù)中,源和目的地址為身份地址,同時,本地局域網(wǎng)的地址分配不受外網(wǎng)影響,更加簡便。
典型流程如圖1所示。
圖1 名址分離基本原理
首先,名址分離服務(wù)需要在各個節(jié)點間交互信息,建立IP-身份映射表。隨后,不同節(jié)點的計算機即可進行業(yè)務(wù)通信。
圖1中將計算機#1與計算機#2的IP地址均設(shè)置為192.168.1.2,以計算機#1向身份地址為05060708H的計算機#2發(fā)送數(shù)據(jù)為例:
(1)計算機#1向路由器#1發(fā)送目的IP地址為192.168.1.1的局域網(wǎng)報文,報文的業(yè)務(wù)數(shù)據(jù)內(nèi)的目的地址為計算機#2的身份地址。
(2)路由器#1收計算機#1發(fā)送來的報文后,根據(jù)目的身份地址查找計算機#2對應(yīng)路由器#2的目的IP地址為2.2.2.2,再根據(jù)此目的匹配單播路由表找到下一跳IP及出接口將報文轉(zhuǎn)發(fā)出去,目的地址仍為身份地址05060708H。
(3)路由器#2收到該報文后,根據(jù)目的身份地址查找到對應(yīng)的計算機#2的IP地址。由于計算機#2的IP地址屬于本地,路由器#2添加對應(yīng)IP報頭將此報文從路由器#2發(fā)送給計算機#2。
(4)計算機#2收到數(shù)據(jù)后,發(fā)送過程完成。
1.2.2 工作流程
從網(wǎng)絡(luò)開通到正常轉(zhuǎn)發(fā)業(yè)務(wù)數(shù)據(jù)的流程如圖2所示。首先路由器之間會先交互路由協(xié)議,并生成路由表,然后計算機向路由器注冊本節(jié)點的用戶身份地址、計算機的IP地址等信息。注冊完成后,路由器會將用戶地址與路由器的廣域網(wǎng)IP(核心IP)地址綁定并建立對應(yīng)關(guān)系。路由器之間交互用戶地址相關(guān)信息生成各個節(jié)點用戶地址與廣域網(wǎng)IP地址的對應(yīng)關(guān)系表,至此所有的轉(zhuǎn)發(fā)表已經(jīng)建立完成,可以開始業(yè)務(wù)數(shù)據(jù)的轉(zhuǎn)發(fā)。
圖2 名址分離工作流程
業(yè)務(wù)數(shù)據(jù)會包含用于轉(zhuǎn)發(fā)的目的用戶地址和源用戶地址,計算機將業(yè)務(wù)數(shù)據(jù)封裝到局域網(wǎng)IP報文中,并通過局域網(wǎng)發(fā)送給路由器。路由器收到業(yè)務(wù)數(shù)據(jù)后,提取目的用戶地址,并根據(jù)用戶地址與廣域網(wǎng)IP地址對應(yīng)關(guān)系表找到該目的用戶地址對應(yīng)的目的廣域網(wǎng)IP地址,使用查找到的廣域網(wǎng)IP地址進行路由匹配,獲得下一跳路由器IP地址和出接口,將業(yè)務(wù)數(shù)據(jù)轉(zhuǎn)發(fā)到下一跳路由器上。
目的端的路由器接收到該業(yè)務(wù)數(shù)據(jù)后,根據(jù)業(yè)務(wù)數(shù)據(jù)內(nèi)的目的用戶地址查找本節(jié)點的注冊用戶,找到匹配用戶后根據(jù)注冊信息獲取到該用戶的IP地址,如果用戶IP地址為局域網(wǎng)IP地址,則路由器將該業(yè)務(wù)數(shù)據(jù)封裝到對應(yīng)的局域網(wǎng)IP報文中發(fā)送給目的用戶計算機。目的用戶計算機收到該報文后發(fā)送給上層應(yīng)用程序進行接收處理。
1.2.3 用戶地址交互協(xié)議
用戶地址交互協(xié)議負(fù)責(zé)在整個網(wǎng)絡(luò)域中同步節(jié)點身份信息與IP地址對應(yīng)關(guān)系表,它的消息報文類型主要包括Request消息、Normal消息、Update消息。
(1)Request消息
Request消息向鄰居節(jié)點發(fā)送,用于向鄰居節(jié)點請求其所持有的全部消息記錄。在路由器啟動后或重啟后進行報文發(fā)送,可以快速獲取整個網(wǎng)絡(luò)的消息記錄。
如圖3所示,當(dāng)節(jié)點#1啟動(或重啟)后,當(dāng)前只有本節(jié)點的消息記錄。節(jié)點#1通過各個接口(路由使能接口)向外發(fā)送Request消息,節(jié)點#2與節(jié)點#1直連,在收到節(jié)點#1的Request消息后,節(jié)點#2向節(jié)點#1發(fā)送Normal報文,同時記錄節(jié)點#1的信息。節(jié)點#2發(fā)送的Normal報文,包含節(jié)點#2本身的消息記錄和不是從該接收接口學(xué)習(xí)來的消息記錄(即正常的Normal報文)。
節(jié)點#1在收到這些消息記錄后更新自己的消息記錄表。
圖3 Request消息交互流程
(2)Normal消息
Normal消息向鄰居節(jié)點發(fā)送,用于向鄰居節(jié)點定時通告本節(jié)點所擁有的消息記錄。
Normal報文的交互流程如下:
(1)定時發(fā)送。節(jié)點定時通過接口向外發(fā)送Normal報文,通常情況下使用水平分割(即從某接口學(xué)習(xí)到的消息記錄不會再從該接口發(fā)送回去),將允許從該接口發(fā)送的active狀態(tài)的消息記錄封裝到Normal報文并發(fā)送出去。
(2)響應(yīng)Request報文。接收到Request報文后,會向接收Request報文的接口發(fā)送允許從該接口發(fā)送的active狀態(tài)消息記錄(有水平分割)的Normal報文。
(3)Update消息。Update消息用于讓消息記錄內(nèi)容變動信息盡可能快的在網(wǎng)內(nèi)傳播。Update報文分為刪除報文、添加報文、報文更新,其內(nèi)容是單條有變動的消息記錄。其他節(jié)點收到Update消息后直接更新本節(jié)點消息記錄。
Update報文的交互流程如下:
(1)節(jié)點通過接口協(xié)議得到本節(jié)點消息記錄變動的信息后,更新消息記錄表。
(2)節(jié)點將該消息記錄變動通過Update報文向各個直連節(jié)點通告。
(3)直連節(jié)點收到該通告后,更新對應(yīng)的消息記錄內(nèi)容,并將該Update報文通過各個接口泛洪出去(不包括來源接口)。
(4)節(jié)點只有第一次收到Update報文才會擴散和更新,第二次收到時直接丟棄。
通過名址分離,路由器之間傳遞的數(shù)據(jù)僅包含業(yè)務(wù)數(shù)據(jù)本身,單播業(yè)務(wù)數(shù)據(jù)中的目的地址為節(jié)點身份地址,而組播業(yè)務(wù)數(shù)據(jù)的身份地址為戰(zhàn)術(shù)通信系統(tǒng)規(guī)劃的組播地址,那么只需要預(yù)先將戰(zhàn)術(shù)通信系統(tǒng)規(guī)劃的組播地址與所包含的乘員身份地址的對應(yīng)關(guān)系表寫入路由器,即可實現(xiàn)在轉(zhuǎn)發(fā)報文時根據(jù)組播地址獲取到其組成員的身份地址。此時路由器的轉(zhuǎn)發(fā)邏輯發(fā)生變化,對于每一包路由器之間的數(shù)據(jù),應(yīng)判斷其目的身份地址是否為組播地址,若是,則進行組播轉(zhuǎn)發(fā)策略;否則,按前文描述的單播轉(zhuǎn)發(fā)策略轉(zhuǎn)發(fā)。
組播數(shù)據(jù)在第一次轉(zhuǎn)發(fā)時,路由器負(fù)責(zé)生成組播轉(zhuǎn)發(fā)信息,并附加在業(yè)務(wù)數(shù)據(jù)之前作為組播報頭。
組播報頭及轉(zhuǎn)發(fā)策略根據(jù)鏈路類型不同而不同,目的是盡量減少報頭開銷。鏈路類型分為點對點鏈路和廣播鏈路。
1.4.1 點對點鏈路
在點對點鏈路中,組播報頭僅包含一個組播對象列表,如圖4所示,它由成員個數(shù)字段和一系列組成員身份號組成。每個身份號長度為1 B,它是根據(jù)地址進行編制規(guī)劃,由身份地址轉(zhuǎn)換而來,在每個戰(zhàn)術(shù)通信子系統(tǒng)中唯一,因此在組播業(yè)務(wù)中可以唯一標(biāo)識一個組成員。組播對象列表用于表示從某接口發(fā)送出去的組播數(shù)據(jù)需要將該數(shù)據(jù)送達的目的節(jié)點列表。
圖4 點對點鏈路的組播對象列表格式
1.4.2 廣播鏈路
廣播鏈路中,組播對象列表比點對點鏈路增加了一個下一跳節(jié)點指示字段,該字段用于標(biāo)識若干個組播對象列表中的節(jié)點,若標(biāo)記的第n個比特位為1,則表示組播對象列表的第n個節(jié)點被標(biāo)記,只有被標(biāo)記的節(jié)點才能轉(zhuǎn)發(fā)該數(shù)據(jù),未被標(biāo)記的節(jié)點只接收數(shù)據(jù)而不轉(zhuǎn)發(fā)。這樣做是為了避免組播路徑樹的其他節(jié)點重復(fù)轉(zhuǎn)發(fā)報文。報文格式如圖5所示。
圖5 廣播鏈路的組播對象列表格式
對于某個路由器,接收到的組播報文有用戶終端的組播報文、點對點鏈路的組播報文、廣播鏈路的組播報文三類,路由器對它們分別執(zhí)行不同的轉(zhuǎn)發(fā)策略。
當(dāng)接收到用戶終端的組播報文,轉(zhuǎn)發(fā)策略如下:
Step1 去掉IP部分,提取業(yè)務(wù)數(shù)據(jù),根據(jù)目的組播地址與組成員映射表獲取所有組成員的身份號。
Step2 對每個身份號通過名址分離機制獲取對應(yīng)的外網(wǎng)IP地址。
Step3 對每個IP地址進行單播路由表匹配,得到出接口和下一跳IP地址。
Step4 將出接口相同的IP地址對應(yīng)的身份號歸為一類,根據(jù)接口類型,參考下一跳IP對應(yīng)的身份號,按1.4節(jié)的描述構(gòu)造組播對象列表,附加在業(yè)務(wù)數(shù)據(jù)之前。
Step5 將構(gòu)造完成的數(shù)據(jù)轉(zhuǎn)發(fā)到所有出接口。
當(dāng)接收到點對點鏈路的組播報文,轉(zhuǎn)發(fā)策略如下:
Step1 提取報文中的每個身份號,檢查身份號是否屬于本地局域網(wǎng),若是,轉(zhuǎn)到Step 2,否則轉(zhuǎn)到Step 3。
Step2 以身份號對應(yīng)的IP地址為目的構(gòu)造IP報頭,封裝業(yè)務(wù)數(shù)據(jù),將數(shù)據(jù)轉(zhuǎn)發(fā)到本地局域網(wǎng),并將該身份號從組播對象列表中刪除,轉(zhuǎn)到Step 3。
Step3 依次對組播對象列表剩余的節(jié)點執(zhí)行接收到用戶終端的組播報文的轉(zhuǎn)發(fā)策略中的Step 2~5。
當(dāng)接收到廣播鏈路的組播報文,轉(zhuǎn)發(fā)策略如下:
Step1 提取報文中的每個身份號,檢查身份號是否屬于本地局域網(wǎng),若是,轉(zhuǎn)到Step 2;否則丟棄報文,結(jié)束。
Step2 以身份號對應(yīng)的IP地址為目的構(gòu)造IP報頭,封裝業(yè)務(wù)數(shù)據(jù),將數(shù)據(jù)轉(zhuǎn)發(fā)到本地局域網(wǎng),并將該身份號從組播對象列表中刪除,轉(zhuǎn)到Step 3。
Step3 檢查本地局域網(wǎng)的身份號是否在組播對象列表中被標(biāo)記,若是,轉(zhuǎn)到Step 4,否則結(jié)束。
Step4 依次對組播對象列表剩余的節(jié)點執(zhí)行接收到用戶終端的組播報文的轉(zhuǎn)發(fā)策略中的Step 2~5,結(jié)束。
基于上述流程,在組播的轉(zhuǎn)發(fā)過程中,由第一跳路由器負(fù)責(zé)根據(jù)組成員及單播路由生成組播對象列表,后續(xù)的路由器逐級對組播對象的節(jié)點進行分流轉(zhuǎn)發(fā),最終效果是使組播數(shù)據(jù)沿著根據(jù)單播路由生成的轉(zhuǎn)發(fā)樹進行轉(zhuǎn)發(fā),與現(xiàn)有IP組播基于組播轉(zhuǎn)發(fā)樹的轉(zhuǎn)發(fā)是類似的。
按照圖6搭建測試網(wǎng)絡(luò),其中各節(jié)點均為實物形式的路由交換節(jié)點,用來陪測的無線接入設(shè)備的帶寬和速率等參數(shù)設(shè)置為接近實際戰(zhàn)術(shù)通信場景下的參數(shù)值,通過組建組播網(wǎng)絡(luò)實物拓?fù)淠M戰(zhàn)術(shù)通信系統(tǒng)組播業(yè)務(wù)網(wǎng)絡(luò)環(huán)境。
圖6 測試網(wǎng)絡(luò)拓?fù)?/p>
網(wǎng)絡(luò)中每個節(jié)點由路由器、計算機終端、無線接入設(shè)備、有線接入設(shè)備組成。路由器中已經(jīng)實現(xiàn)了單播路由轉(zhuǎn)發(fā)[6]、PIM-SM路由協(xié)議及本文的組播轉(zhuǎn)發(fā)方案的功能,用來對比驗證本文的組播轉(zhuǎn)發(fā)策略的功能和性能。無線接入設(shè)備、有線接入設(shè)備分別用于實現(xiàn)無線廣播鏈路、有線點對點鏈路的接入。計算機終端上運行戰(zhàn)術(shù)通信組播業(yè)務(wù)測試軟件,用于收發(fā)組播業(yè)務(wù)數(shù)據(jù)。
在路由器各接口使能單播路由協(xié)議,待網(wǎng)絡(luò)中路由收斂完成,即可開始測試組播策略的功能和性能。
組播測試用到3個組播組,分別為:組播身份號0xF1,成員為節(jié)點#1節(jié)點#2節(jié)點#3節(jié)點#4;組播身份號0xF3,成員為節(jié)點#5節(jié)點#6節(jié)點#7節(jié)點#8節(jié)點#9節(jié)點#10;組播身份號0xFF,成員為所有節(jié)點。
在圖6的網(wǎng)絡(luò)中,分別在節(jié)點#1、節(jié)點#5、節(jié)點#2的計算機終端發(fā)送組播身份號0xF1、0xF2、0xFF的組播業(yè)務(wù)數(shù)據(jù),間隔250 ms,發(fā)送1 000次。同時在網(wǎng)絡(luò)中用測試軟件添加廣播鏈路帶寬50%的其他測試數(shù)據(jù),模擬有一定鏈路負(fù)荷的情況。在節(jié)點#3、節(jié)點#6、節(jié)點#7分別記錄數(shù)據(jù)接收情況,統(tǒng)計最大時延和平均時延。對于單個數(shù)據(jù)傳輸,如果在測試延遲的時間窗口τ內(nèi)收到分組數(shù)量為n,那么測量得到的平均延遲E[T]可以表示為
(1)
試驗中反復(fù)進行10次測試,即n=20,測試結(jié)果的平均值如表1所示。
表1 運用組播策略的時延測試結(jié)果
然后對應(yīng)添加3組IP組播組,在每個節(jié)點路由器上運行PIM-SM,配置節(jié)點#1為RP,使用IP組播測試工具重復(fù)上面的試驗,反復(fù)進行10次測試,即n=20,測試結(jié)果的平均值如表2所示。
表2 IP組播的時延測試結(jié)果
可以看到,運用組播策略后的最大時延比IP組播有較大縮短。這是因為PIM-SM中,組播樹切換為SPT前,數(shù)據(jù)都要先匯聚到RP再分發(fā)給成員,存在重復(fù)傳輸路徑,增加了最大時延。
本節(jié)測試網(wǎng)絡(luò)拓?fù)渥兓?,組播數(shù)據(jù)從中斷到恢復(fù)的時間。
在圖6的網(wǎng)絡(luò)中,從節(jié)點#5持續(xù)發(fā)送組播身份號為0xFF的組播業(yè)務(wù)數(shù)據(jù),間隔125 ms。所有成員收到數(shù)據(jù)后,斷開節(jié)點#5與節(jié)點#3之間的有線鏈路,記錄此時到恢復(fù)接收數(shù)據(jù)的丟包數(shù),可以估算出組播業(yè)務(wù)數(shù)據(jù)在網(wǎng)絡(luò)變化后的恢復(fù)時間,記錄估算的恢復(fù)時間。然后對應(yīng)添加IP組播組,在每個節(jié)點路由器上運行PIM-SM,配置節(jié)點#1為RP,使用IP組播測試工具重復(fù)上面的試驗。反復(fù)進行20次測試,測試結(jié)果的平均值如表3所示。
表3 組播恢復(fù)時間測試結(jié)果
可以看到,新組播方案中單播路由恢復(fù)后組播數(shù)據(jù)通信立即恢復(fù)正常,沒有額外等待時間。而IP組播下額外等待了約875 ms才恢復(fù)通信,原因是單播路由在斷開與恢復(fù)過程中PIM-SM需要重新交互剪枝或嫁接報文,產(chǎn)生了傳輸時延開銷。
本文的主要創(chuàng)新點在于基于名址分離技術(shù),設(shè)計實現(xiàn)了一種將組播信息報頭附加在組播數(shù)據(jù)報文頭部,配合相應(yīng)的組播轉(zhuǎn)發(fā)策略進行組播轉(zhuǎn)發(fā)的方案,解決了戰(zhàn)術(shù)通信系統(tǒng)中網(wǎng)絡(luò)頻繁變化及鏈路帶寬低對組播業(yè)務(wù)影響較大的問題,可以較好地應(yīng)用于高實時、低帶寬、高動態(tài)的戰(zhàn)術(shù)通信場景。試驗結(jié)果表明,在網(wǎng)絡(luò)拓?fù)渥兓蠡謴?fù)組播通信的過程中不產(chǎn)生額外等待時延,且在窄帶鏈路具有較好的時延表現(xiàn),在這兩方面具有比PIM-SM更好的性能,能滿足戰(zhàn)術(shù)通信系統(tǒng)對組播業(yè)務(wù)通信的要求。
下一步的研究工作主要是在大規(guī)模有無線混合組網(wǎng)場景下驗證本方案所能達到的極限性能。