編者按:本文針對(duì)單位特殊控制數(shù)據(jù)在掉頭路由器組網(wǎng)環(huán)境下配置為協(xié)議無(wú)關(guān)組播任意源組播出現(xiàn)丟包問(wèn)題進(jìn)行了詳細(xì)分析,并測(cè)試和驗(yàn)證了解決方案的有效性。
筆者單位網(wǎng)絡(luò)配置為協(xié)議無(wú)關(guān)任意源組播,路由RP(匯聚點(diǎn))在路由器3上。與核心交換機(jī)直連的組播源作為發(fā)送端,使用任意源組播協(xié)議進(jìn)行數(shù)據(jù)傳輸,抽象出網(wǎng)絡(luò)邏輯拓?fù)淙鐖D1所示,此網(wǎng)絡(luò)拓?fù)潢P(guān)系即為掉頭路由器場(chǎng)景。
匯聚點(diǎn)RP是任意源組播的轉(zhuǎn)發(fā)核心,網(wǎng)絡(luò)中所有組播路由器都必須知道RP的地址。為了避免在多臺(tái)路由器上配置靜態(tài)指定RP(Static-RP),選擇動(dòng)態(tài)競(jìng)選C-RP的配置方法,配置路由器1、路由器2和路由器3的優(yōu)先級(jí)一致,那么IP地址大的路由器3將選為RP,路由器3宕機(jī)時(shí),路由器2競(jìng)選為RP。配置完成后,組播源開(kāi)始向接收端發(fā)送數(shù)據(jù),由于特殊控制數(shù)據(jù)不是連續(xù)發(fā)送數(shù)據(jù),且發(fā)送頻率較高,使得接收端接收組播源發(fā)送的偶發(fā)組播數(shù)據(jù)會(huì)出現(xiàn)丟包現(xiàn)象,且丟失的均為每段組播數(shù)據(jù)流開(kāi)始的一些數(shù)據(jù)包。經(jīng)過(guò)測(cè)試,發(fā)送間隔的時(shí)間在3 min以上均出現(xiàn)丟包現(xiàn)象。
圖1 網(wǎng)絡(luò)邏輯拓?fù)鋱D
路由器的操作系統(tǒng)平臺(tái)是VRP(通用路由平臺(tái)),VRP可以同時(shí)維護(hù)多種組播路由協(xié)議,通過(guò)控制平面與轉(zhuǎn)發(fā)平面之間的信息交互,實(shí)現(xiàn)組播路由建立和轉(zhuǎn)發(fā)組播數(shù)據(jù)??刂破矫尕?fù)責(zé)生成并維護(hù)組播路由表,收集路由信息,創(chuàng)建并維護(hù)路由表項(xiàng)。轉(zhuǎn)發(fā)平面繼承控制平面的路由表項(xiàng),負(fù)責(zé)指導(dǎo)報(bào)文轉(zhuǎn)發(fā)。組播路由表由(S,G)表項(xiàng)組成,其 中(S,G)表示由指定源S向組播組G發(fā)送組播數(shù)據(jù)的路由信息,(*,G)表示任意源向組播組G發(fā)送組播數(shù)據(jù)的路由信息口。接收端首先啟用組播接收軟件,隨后組播源向接收端發(fā)送組播數(shù)據(jù)。
RPT(共享分發(fā)樹(shù))建立過(guò)程為:接收端通過(guò)向路由器1發(fā)送Report消息,申請(qǐng)加入組播組;路由器1接收到Report消息后,創(chuàng)建路由表項(xiàng)(*,G1),并將與接收端相連的接口添加到下游列表,上游接口為與路由器2相連的接口;路由器2通過(guò)上游接口向路由器3發(fā)送Join消息,路由器3收到消息后,創(chuàng)建路由表項(xiàng)(*,G1),并將與路由器2相連的接口添加到下游列表,由于路由器3是RP,它不再向外發(fā)送Join消息。
當(dāng)組播源開(kāi)始向接收端發(fā)送控制數(shù)據(jù)時(shí),組播路由的建立過(guò)程為:路由器1接收到組播源發(fā)的組播報(bào)文后,創(chuàng)建(S,G1)表項(xiàng),之后將組播數(shù)據(jù)封裝在Register消息中單播發(fā)往路由器2;路由器2接收到組播源的注冊(cè)報(bào)文并解封裝出組播報(bào)文后,在本地創(chuàng)建(S,G1)表項(xiàng),繼承(*,G1)表項(xiàng)的內(nèi)容,將組播報(bào)文從下游接口發(fā)送出去;路由器3從上游接口接收到組播源的組播報(bào)文后,在本地創(chuàng)建(S,G1)表項(xiàng),繼承(*,G1)表項(xiàng)的內(nèi)容,將組播報(bào)文從下游接口發(fā)送出去;路由器2、路由器1從上游接口接收到組播源的組播報(bào)文后,在本地創(chuàng)建(S,G1)表項(xiàng),繼承(*,G1)表項(xiàng)的內(nèi)容,將組播報(bào)文從下游接口發(fā)送出去,接收端收到組播報(bào)文。
同時(shí),RP和組成員端DR周期性檢測(cè)組播報(bào)文的轉(zhuǎn)發(fā)速率,一旦發(fā)現(xiàn)(S,G)報(bào)文的轉(zhuǎn)發(fā)速率超過(guò)閾值,則觸發(fā)SPT(最短路徑樹(shù))切換。在默認(rèn)情況下,RP收到第1個(gè)組播注冊(cè)報(bào)文后,啟動(dòng)源端DR到RP的SPT建立過(guò)程。組成員端DR收到第1個(gè)組播報(bào)文后啟動(dòng)RPT向SPT的切換過(guò)程,組播數(shù)據(jù)將直接從組播源發(fā)送到接收端。由于單位組播配置為默認(rèn)設(shè)置,因此收到第1個(gè)組播報(bào)文后立刻啟動(dòng)RPT向SPT的切換過(guò)程。
由上述分析可知,假設(shè)將組播源發(fā)出的目的地址為G,組播包按照發(fā)出的時(shí)間先后順序進(jìn)行編號(hào),路徑路由器1—路由器2—路由器3 (RP)—路由器2—路由器1比直接從路由器1轉(zhuǎn)發(fā)長(zhǎng)。當(dāng)路由器1建立了SPT路由狀態(tài)且路由器1開(kāi)始沿SPT轉(zhuǎn)發(fā)的第1個(gè)數(shù)據(jù)包為自組播源到G的第1個(gè)數(shù)據(jù)包。路由器1將置其(S,G)的SPT-Bit為“1”,表示已完成從RPT到SPT的切換。假設(shè)到達(dá)路由器1的包順序?yàn)閘—12—2—13,根據(jù)PIM-SM協(xié)議切換機(jī)制,此時(shí)包2—11將不會(huì)被接收端接收。
(1)問(wèn)題原因如上分析,筆者首先想到的是針對(duì)特殊控制數(shù)據(jù)所在的組播組關(guān)閉RPT向SPT切換功能,這樣路由器1始終接收來(lái)自RP轉(zhuǎn)發(fā)的組播數(shù)據(jù)流。由于特殊控制數(shù)據(jù)組播流量有限,一般情況下不會(huì)對(duì)作為RP點(diǎn)的路由器3處理能力造成影響。但路由器3和路由器1距離較遠(yuǎn),時(shí)延較大且是跨單位使用,因此,該方案不是一個(gè)最優(yōu)解決方法。
(2)配置IGMP靜態(tài)組加入,打開(kāi)此功能后直接生成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)段上是否存在該組成員,路由器1將持續(xù)維護(hù)該組的(S,G)表項(xiàng)始終保持最短樹(shù)組播路徑。配置靜態(tài)組加入后只會(huì)決定該組播路徑選擇,不會(huì)影響其他組播組路由。
為了驗(yàn)證解決方法的有效性,對(duì)路由器配置完成后進(jìn)行了測(cè)試,組播源發(fā)送間隔的時(shí)間在3 min以上均無(wú)出現(xiàn)丟包現(xiàn)象。最終進(jìn)行權(quán)衡,選擇用第二種方法解決組播丟包問(wèn)題。
組播數(shù)據(jù)出現(xiàn)丟包現(xiàn)象比單播更難定位和分析故障成因。因此,在組播網(wǎng)絡(luò)設(shè)計(jì)時(shí),要充分考慮傳輸鏈路對(duì)組播數(shù)據(jù)的影響,對(duì)組播數(shù)據(jù)產(chǎn)生洪泛的路由設(shè)備,要詳細(xì)分析其機(jī)理,并采取必要措施,以確保組播數(shù)據(jù)傳輸?shù)耐暾院涂煽啃浴?/p>