種 景
(中國(guó)衛(wèi)星海上測(cè)控部,江蘇江陰214431)
組播技術(shù)是根據(jù)路由器下游是否有組播成員來(lái)決定是否轉(zhuǎn)發(fā)數(shù)據(jù)包的,這樣,支持組播協(xié)議的網(wǎng)絡(luò),由于只在路由有分支的節(jié)點(diǎn)復(fù)制數(shù)據(jù)包,與傳統(tǒng)單播協(xié)議在源端復(fù)制后,再一一發(fā)送出去的方式比較,不但大大節(jié)省了帶寬資源,還減輕了源端及中間路由器節(jié)點(diǎn)處理重復(fù)分組的負(fù)擔(dān),縮短了通信所需的處理時(shí)間,大大提高了網(wǎng)絡(luò)工作的效率[1]。一般來(lái)說,搭建一個(gè)星型網(wǎng)絡(luò),進(jìn)行點(diǎn)對(duì)點(diǎn)的TCP/IP數(shù)據(jù)包傳輸,并非難事,只要能Ping通對(duì)方就行,因?yàn)門CP/IP提供可靠傳輸,接收方如果沒有收到數(shù)據(jù)包,發(fā)送方會(huì)重發(fā)這些包。但是在組播方式下,采用的是不可靠的UDP傳輸,發(fā)送方?jīng)]有重發(fā)數(shù)據(jù)包的機(jī)制,如果傳輸環(huán)境不進(jìn)行優(yōu)化,或者網(wǎng)絡(luò)交換機(jī)的配置不很合理,就很容易造成數(shù)據(jù)包的延時(shí)或丟失。
某類內(nèi)部試驗(yàn)IP網(wǎng)采用采用“匯聚-接入”二層結(jié)構(gòu),如圖1所示。匯聚節(jié)點(diǎn)和接入節(jié)點(diǎn)均采用雙平面冗余配置。
圖1 節(jié)點(diǎn)b至節(jié)點(diǎn)A網(wǎng)絡(luò)拓?fù)鋱D
某類試驗(yàn)IP網(wǎng),在組播傳輸路徑的Vlan中開啟PIM-SM協(xié)議,接收端Vlan啟用IGMP V3協(xié)議。
監(jiān)控A機(jī)接入節(jié)點(diǎn)a交換機(jī)1,監(jiān)控B機(jī)接入節(jié)點(diǎn)a交換機(jī)2。匯聚交換機(jī)至節(jié)點(diǎn)a交換機(jī)為動(dòng)態(tài)路由。匯聚交換機(jī)至節(jié)點(diǎn)b接入交換機(jī)為靜態(tài)路由。
2臺(tái)節(jié)點(diǎn)b接入交換機(jī)組成VRRP組,以VRRP組地址作為網(wǎng)絡(luò)任意源組播傳輸?shù)腞P匯聚點(diǎn)。發(fā)生丟包的過程即發(fā)生在監(jiān)控B機(jī)接組播源的組播數(shù)據(jù)過程中。
組播路由可以分為2大類:信源樹(Source Tree)和共享樹(Shared Tree)。信源樹是指以組播源作為樹根,將組播源到每一個(gè)接收者的最短路徑結(jié)合起來(lái)構(gòu)成的轉(zhuǎn)發(fā)樹。由于信源樹使用的是從組播源到接收者的最短路徑,因此也稱為最短路徑樹(Shortest Path Tree,SPT)對(duì)于某個(gè)組,網(wǎng)絡(luò)要為任何一個(gè)向該組發(fā)送報(bào)文的組播源建立一棵樹。共享樹以某個(gè)路由器作為路由樹的樹根,該路由器稱為匯集點(diǎn)(Rendezvous Point,RP)。將 RP到所有接收者的最短路結(jié)合起來(lái)構(gòu)成轉(zhuǎn)發(fā)樹。使用共享樹時(shí),對(duì)應(yīng)某個(gè)組,網(wǎng)絡(luò)中只有一棵樹。所有的組播源和接收者都使用這棵樹來(lái)收發(fā)報(bào)文,組播源先向樹根發(fā)送數(shù)據(jù)報(bào)文,之后報(bào)文又向下轉(zhuǎn)發(fā)到達(dá)所有的接收者。
信源樹的優(yōu)點(diǎn)是能構(gòu)造組播源和接收者之間的最短路徑,使端到端的延遲達(dá)到最小;但付出的代價(jià)是在路由器中必須為每個(gè)組播源保存路由信息,這樣會(huì)占用大量的系統(tǒng)資源。路由表的規(guī)模也比較大。共享樹的最大優(yōu)點(diǎn)是路由器中保留的狀態(tài)數(shù)可以很少,缺點(diǎn)是組播源發(fā)出的報(bào)文要先經(jīng)過RP,再到達(dá)接收者,經(jīng)由的路徑通常并非最短,而且對(duì) RP的可靠性和處理能力要求很高。
在大型網(wǎng)絡(luò)里,這種以共享樹(RPT)為基礎(chǔ)的組播數(shù)據(jù)分發(fā)拓?fù)浣Y(jié)構(gòu)往往并不是最優(yōu)的數(shù)據(jù)傳輸路徑。因此在PIM-SM協(xié)議里規(guī)定一旦接收者(R)從共享樹接收到某個(gè)源(S)的數(shù)據(jù)包,可以發(fā)起到源的最短路徑樹(SPT)切換。首先,接收者側(cè)DR向組播源S逐跳發(fā)送(S,G)加入報(bào)文,并最終送達(dá)組播源側(cè)DR,沿途經(jīng)過的所有路由器在其轉(zhuǎn)發(fā)表中都生成了(S,G)表項(xiàng),從而建立了SPT分支;
隨后,接收者側(cè)DR向RP逐跳發(fā)送包含RP位的剪枝報(bào)文,RP收到該報(bào)文后會(huì)向組播源方向繼續(xù)發(fā)送剪枝報(bào)文(假設(shè)此時(shí)只有這一個(gè)接收者),從而最終實(shí)現(xiàn)從RPT向SPT的切換。從RPT切換到SPT后,組播數(shù)據(jù)將直接從組播源發(fā)送到接收者。
一旦R5完成了RPT到SPT的轉(zhuǎn)換,它將只接收沿源樹到來(lái)的自S到G的數(shù)據(jù)包,而接收不到沿RPT而來(lái)的自S到G的組播數(shù)據(jù)包[2]。
假設(shè)將S發(fā)出的目的地址為G,組播包按照發(fā)出的時(shí)間先后順序進(jìn)行編號(hào),如圖2所示,路徑R1---R2---R3(RP)---R4---R5比R1---R5長(zhǎng)。當(dāng)路由器R1建立了SPT路由狀態(tài)且R1開始沿SPT轉(zhuǎn)發(fā)的第1個(gè)數(shù)據(jù)包為自S到G的第1個(gè)(包6)數(shù)據(jù)包。R5將置其(S,G)的SPT-Bit為‘1’,表示已完成從RPT到SPT的切換。假設(shè)到達(dá)路由器R5的包順序?yàn)?-6-2-7,根據(jù)PIM-SM協(xié)議切換機(jī)制,此時(shí)包2、3、4、5將不會(huì)被R5接收。
圖2 RPT向SPT切換示意圖
根據(jù)對(duì)網(wǎng)絡(luò)配置的分析和組播數(shù)據(jù)轉(zhuǎn)發(fā)路徑的定點(diǎn)抓包排查,發(fā)現(xiàn)發(fā)生丟包時(shí)匯聚2交換機(jī)未接受到任何組播數(shù)據(jù)。由此認(rèn)為組播數(shù)據(jù)可能在轉(zhuǎn)發(fā)路徑進(jìn)行切換時(shí)發(fā)生丟失(組播路徑開始建立時(shí),路徑為:組播源—>二級(jí)交換機(jī)→節(jié)點(diǎn)b接入交換機(jī)1→匯聚交換機(jī)2→節(jié)點(diǎn)a接入交換機(jī)2→監(jiān)控B機(jī);切換后路徑為:組播源—>二級(jí)交換機(jī)→節(jié)點(diǎn)b接入交換機(jī)1→匯聚交換機(jī)1→節(jié)點(diǎn)a接入交換機(jī)2→監(jiān)控B機(jī))。
測(cè)試驗(yàn)證步驟如下:
① 監(jiān)控A、B機(jī)接入Vlan配置igmp version 3,兼容igmp version 2組播。保持現(xiàn)有配置進(jìn)行測(cè)試,此配置下組播路徑會(huì)發(fā)生由共享樹到最短路徑樹的切換。
②在節(jié)點(diǎn)a接入交換機(jī)1和節(jié)點(diǎn)a接入交換機(jī)2用戶Vlan中配置IGMP靜態(tài)組加入(igmp static-group)后進(jìn)行測(cè)試,此配置下直接生成最短路徑樹,沒有共享樹到最短路徑樹的切換過程。
③節(jié)點(diǎn)a接入交換機(jī)關(guān)閉共享樹向最短路徑樹的切換(spt-switch threshold infinity)后測(cè)試,此配置下一直經(jīng)由共享樹進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)。
④為了充分驗(yàn)證數(shù)據(jù)收發(fā)情況,在聯(lián)調(diào)及任務(wù)網(wǎng)絡(luò)背景流量下,節(jié)點(diǎn)a接入交換機(jī)1、節(jié)點(diǎn)a接入交換機(jī)2均加入靜態(tài)組播牽引配置進(jìn)行組播接收。
4種條件下各進(jìn)行8組測(cè)試,每組發(fā)5 000包。第1組測(cè)試有3次丟幀,其余3組均未發(fā)生丟幀現(xiàn)象。
通過修改完善PIM-SM協(xié)議原代碼中的SwitchToSptDesired(S,G)函數(shù),能很好地解決RPT向SPT切換時(shí)的丟包問題。其基本原理是:切換分界點(diǎn)(R5)收到從SPT上來(lái)的第1個(gè)(包6)數(shù)據(jù)包后,記錄下其序號(hào)(6),此時(shí)R5繼續(xù)接收從RPT上來(lái)的小于這個(gè)序號(hào)的包(2、3、4、5)并按轉(zhuǎn)發(fā)項(xiàng)(*,G)狀態(tài)原來(lái)的出接口轉(zhuǎn)發(fā)。完后再進(jìn)行RPT到SPT的切換,從而實(shí)現(xiàn)PIM-SM傳輸中數(shù)據(jù)包的零丟包[3]。
因?yàn)橹皇峭七t了向上游RP路由器發(fā)出的Prune(S,G,rpt),當(dāng)上游RP路由器收到消息的接口的 (S,G,rpt),下游狀態(tài)機(jī)仍然按PIM-SM協(xié)議變化,所以對(duì)接收 Prune(S,G,rpt) 上游路由器無(wú)影響[4]。
關(guān)閉此功能是為了禁止RPT向SPT的切換,這樣節(jié)點(diǎn)A接入交換機(jī)始終接收來(lái)自RP(節(jié)點(diǎn)b一級(jí)交換機(jī))轉(zhuǎn)發(fā)的組播數(shù)據(jù)流。由于從節(jié)點(diǎn)b至節(jié)點(diǎn)A網(wǎng)絡(luò)組播流量有限,一般情況下不會(huì)對(duì)作為RP點(diǎn)的交換機(jī)處理能力造成影響。但是在網(wǎng)絡(luò)突發(fā)較大流量時(shí)可能會(huì)造成RP轉(zhuǎn)發(fā)負(fù)擔(dān)過重。
打開此功能后直接生成SPT,不會(huì)經(jīng)RP點(diǎn)匯集后再轉(zhuǎn)發(fā)給接收者。
當(dāng)網(wǎng)段中的組播組成員關(guān)系比較穩(wěn)定時(shí),適用靜態(tài)加入組播組。靜態(tài)加入某組播組后,無(wú)論網(wǎng)段上是否存在該組成員,交換機(jī)將持續(xù)維護(hù)該組的(S,G)表項(xiàng),不會(huì)老化,始終保持最短樹組播路徑[5]。
配置靜態(tài)組加入后只會(huì)決定該組播路徑選擇,不會(huì)影響其他組播組路由。
通過敘述某類試驗(yàn)IP網(wǎng)中PIM-SM組播路由的建立過程,分析了從共享樹(RPT)到最短樹(SRT)的切換過程及由此造成丟包的原因。提出并對(duì)比了幾種解決方案的優(yōu)缺點(diǎn)。實(shí)踐證明,接入靜態(tài)組播是可靠易行的方案。當(dāng)然網(wǎng)絡(luò)丟包的問題可能有很多其他因素,比如網(wǎng)絡(luò)協(xié)議缺陷、交換機(jī)型號(hào)差異、端口流量沖擊和傳輸環(huán)境干擾等,在此不再贅述。
[1] 華為技術(shù)有限公司.華為組播技術(shù)白皮書[M].深圳:華為技術(shù)有限公司,2004.
[2] SHI S Y,TURNER J S.Multicast Routing and Bandwidth Dimensioning in Overlay Net works[J].IEEE Journal on Selected A reas in Communications,2002,20(8):1444-1455.
[3] 李鑫,韓國(guó)棟,劉洪波.RPT到SPT組播切換丟包問題研究[J].計(jì) 算 機(jī) 工 程,2007,33(7):107-108.
[4] 姜山,鄭慶華,南宏聯(lián).一種考慮延遲和丟包率的最小代價(jià)應(yīng)用層組播樹[J].西安交通大學(xué)學(xué)報(bào),2011,45(2):2-5.
[5] 宋留斌,徐友云,謝威,等.基于IEEE 802.11協(xié)議的MAC層協(xié)同組播策略[J].應(yīng)用科學(xué)學(xué)報(bào),2011,29(6):559-562.