種 景
(中國衛星海上測控部,江蘇江陰214431)
組播技術是根據路由器下游是否有組播成員來決定是否轉發數據包的,這樣,支持組播協議的網絡,由于只在路由有分支的節點復制數據包,與傳統單播協議在源端復制后,再一一發送出去的方式比較,不但大大節省了帶寬資源,還減輕了源端及中間路由器節點處理重復分組的負擔,縮短了通信所需的處理時間,大大提高了網絡工作的效率[1]。一般來說,搭建一個星型網絡,進行點對點的TCP/IP數據包傳輸,并非難事,只要能Ping通對方就行,因為TCP/IP提供可靠傳輸,接收方如果沒有收到數據包,發送方會重發這些包。但是在組播方式下,采用的是不可靠的UDP傳輸,發送方沒有重發數據包的機制,如果傳輸環境不進行優化,或者網絡交換機的配置不很合理,就很容易造成數據包的延時或丟失。
某類內部試驗IP網采用采用“匯聚-接入”二層結構,如圖1所示。匯聚節點和接入節點均采用雙平面冗余配置。

圖1 節點b至節點A網絡拓撲圖
某類試驗IP網,在組播傳輸路徑的Vlan中開啟PIM-SM協議,接收端Vlan啟用IGMP V3協議。
監控A機接入節點a交換機1,監控B機接入節點a交換機2。匯聚交換機至節點a交換機為動態路由。匯聚交換機至節點b接入交換機為靜態路由。
2臺節點b接入交換機組成VRRP組,以VRRP組地址作為網絡任意源組播傳輸的RP匯聚點。發生丟包的過程即發生在監控B機接組播源的組播數據過程中。
組播路由可以分為2大類:信源樹(Source Tree)和共享樹(Shared Tree)。信源樹是指以組播源作為樹根,將組播源到每一個接收者的最短路徑結合起來構成的轉發樹。由于信源樹使用的是從組播源到接收者的最短路徑,因此也稱為最短路徑樹(Shortest Path Tree,SPT)對于某個組,網絡要為任何一個向該組發送報文的組播源建立一棵樹。共享樹以某個路由器作為路由樹的樹根,該路由器稱為匯集點(Rendezvous Point,RP)。將 RP到所有接收者的最短路結合起來構成轉發樹。使用共享樹時,對應某個組,網絡中只有一棵樹。所有的組播源和接收者都使用這棵樹來收發報文,組播源先向樹根發送數據報文,之后報文又向下轉發到達所有的接收者。
信源樹的優點是能構造組播源和接收者之間的最短路徑,使端到端的延遲達到最小;但付出的代價是在路由器中必須為每個組播源保存路由信息,這樣會占用大量的系統資源。路由表的規模也比較大。共享樹的最大優點是路由器中保留的狀態數可以很少,缺點是組播源發出的報文要先經過RP,再到達接收者,經由的路徑通常并非最短,而且對 RP的可靠性和處理能力要求很高。
在大型網絡里,這種以共享樹(RPT)為基礎的組播數據分發拓撲結構往往并不是最優的數據傳輸路徑。因此在PIM-SM協議里規定一旦接收者(R)從共享樹接收到某個源(S)的數據包,可以發起到源的最短路徑樹(SPT)切換。首先,接收者側DR向組播源S逐跳發送(S,G)加入報文,并最終送達組播源側DR,沿途經過的所有路由器在其轉發表中都生成了(S,G)表項,從而建立了SPT分支;
隨后,接收者側DR向RP逐跳發送包含RP位的剪枝報文,RP收到該報文后會向組播源方向繼續發送剪枝報文(假設此時只有這一個接收者),從而最終實現從RPT向SPT的切換。從RPT切換到SPT后,組播數據將直接從組播源發送到接收者。
一旦R5完成了RPT到SPT的轉換,它將只接收沿源樹到來的自S到G的數據包,而接收不到沿RPT而來的自S到G的組播數據包[2]。
假設將S發出的目的地址為G,組播包按照發出的時間先后順序進行編號,如圖2所示,路徑R1---R2---R3(RP)---R4---R5比R1---R5長。當路由器R1建立了SPT路由狀態且R1開始沿SPT轉發的第1個數據包為自S到G的第1個(包6)數據包。R5將置其(S,G)的SPT-Bit為‘1’,表示已完成從RPT到SPT的切換。假設到達路由器R5的包順序為1-6-2-7,根據PIM-SM協議切換機制,此時包2、3、4、5將不會被R5接收。

圖2 RPT向SPT切換示意圖
根據對網絡配置的分析和組播數據轉發路徑的定點抓包排查,發現發生丟包時匯聚2交換機未接受到任何組播數據。由此認為組播數據可能在轉發路徑進行切換時發生丟失(組播路徑開始建立時,路徑為:組播源—>二級交換機→節點b接入交換機1→匯聚交換機2→節點a接入交換機2→監控B機;切換后路徑為:組播源—>二級交換機→節點b接入交換機1→匯聚交換機1→節點a接入交換機2→監控B機)。
測試驗證步驟如下:
① 監控A、B機接入Vlan配置igmp version 3,兼容igmp version 2組播。保持現有配置進行測試,此配置下組播路徑會發生由共享樹到最短路徑樹的切換。
②在節點a接入交換機1和節點a接入交換機2用戶Vlan中配置IGMP靜態組加入(igmp static-group)后進行測試,此配置下直接生成最短路徑樹,沒有共享樹到最短路徑樹的切換過程。
③節點a接入交換機關閉共享樹向最短路徑樹的切換(spt-switch threshold infinity)后測試,此配置下一直經由共享樹進行數據轉發。
④為了充分驗證數據收發情況,在聯調及任務網絡背景流量下,節點a接入交換機1、節點a接入交換機2均加入靜態組播牽引配置進行組播接收。
4種條件下各進行8組測試,每組發5 000包。第1組測試有3次丟幀,其余3組均未發生丟幀現象。
通過修改完善PIM-SM協議原代碼中的SwitchToSptDesired(S,G)函數,能很好地解決RPT向SPT切換時的丟包問題。其基本原理是:切換分界點(R5)收到從SPT上來的第1個(包6)數據包后,記錄下其序號(6),此時R5繼續接收從RPT上來的小于這個序號的包(2、3、4、5)并按轉發項(*,G)狀態原來的出接口轉發。完后再進行RPT到SPT的切換,從而實現PIM-SM傳輸中數據包的零丟包[3]。
因為只是推遲了向上游RP路由器發出的Prune(S,G,rpt),當上游RP路由器收到消息的接口的 (S,G,rpt),下游狀態機仍然按PIM-SM協議變化,所以對接收 Prune(S,G,rpt) 上游路由器無影響[4]。
關閉此功能是為了禁止RPT向SPT的切換,這樣節點A接入交換機始終接收來自RP(節點b一級交換機)轉發的組播數據流。由于從節點b至節點A網絡組播流量有限,一般情況下不會對作為RP點的交換機處理能力造成影響。但是在網絡突發較大流量時可能會造成RP轉發負擔過重。
打開此功能后直接生成SPT,不會經RP點匯集后再轉發給接收者。
當網段中的組播組成員關系比較穩定時,適用靜態加入組播組。靜態加入某組播組后,無論網段上是否存在該組成員,交換機將持續維護該組的(S,G)表項,不會老化,始終保持最短樹組播路徑[5]。
配置靜態組加入后只會決定該組播路徑選擇,不會影響其他組播組路由。
通過敘述某類試驗IP網中PIM-SM組播路由的建立過程,分析了從共享樹(RPT)到最短樹(SRT)的切換過程及由此造成丟包的原因。提出并對比了幾種解決方案的優缺點。實踐證明,接入靜態組播是可靠易行的方案。當然網絡丟包的問題可能有很多其他因素,比如網絡協議缺陷、交換機型號差異、端口流量沖擊和傳輸環境干擾等,在此不再贅述。
[1] 華為技術有限公司.華為組播技術白皮書[M].深圳:華為技術有限公司,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] 李鑫,韓國棟,劉洪波.RPT到SPT組播切換丟包問題研究[J].計 算 機 工 程,2007,33(7):107-108.
[4] 姜山,鄭慶華,南宏聯.一種考慮延遲和丟包率的最小代價應用層組播樹[J].西安交通大學學報,2011,45(2):2-5.
[5] 宋留斌,徐友云,謝威,等.基于IEEE 802.11協議的MAC層協同組播策略[J].應用科學學報,2011,29(6):559-562.