朱維嘉,郭曉,帥千鈞
(中國(guó)傳媒大學(xué) 計(jì)算機(jī)與網(wǎng)絡(luò)中心,北京 100024)
基于PIM-SM組播的園區(qū)網(wǎng)IPTV的架構(gòu)與實(shí)現(xiàn)
朱維嘉,郭曉,帥千鈞
(中國(guó)傳媒大學(xué) 計(jì)算機(jī)與網(wǎng)絡(luò)中心,北京 100024)
MPEG2編碼的視音頻TS流直接封裝在UDP的組播數(shù)據(jù)包中,通過IP承載網(wǎng)發(fā)送給接收用戶,組播協(xié)議PIM-SM通過生成(*,G)和(S,G)表項(xiàng)實(shí)現(xiàn)RPT/SPT轉(zhuǎn)發(fā)組播數(shù)據(jù)包,TCAM結(jié)構(gòu)支持系統(tǒng)的硬件轉(zhuǎn)發(fā)。系統(tǒng)實(shí)現(xiàn)在園區(qū)網(wǎng)內(nèi)IPTV的組播方式轉(zhuǎn)發(fā),滿足用戶需求的同時(shí)對(duì)網(wǎng)絡(luò)系統(tǒng)本身無影響。
PIM-SM;RP;DR;RPT;SPT;RPF;(*,G);(S,G);IIF;OIF
IPTV是向家庭用戶提供包括數(shù)字電視在內(nèi)的多種交互式服務(wù)的嶄新技術(shù)。用戶在家可以通過計(jì)算機(jī)或者網(wǎng)絡(luò)機(jī)頂盒+普通電視機(jī)來接收IPTV,對(duì)于園區(qū)網(wǎng)絡(luò)來說,利用組播來傳輸IPTV是一種可行的方法,稀疏模式獨(dú)立組播協(xié)議PIM-SM不依賴于特定的單播路由協(xié)議,適用于較大范圍網(wǎng)絡(luò)。
本文對(duì)PIM-SM協(xié)議[1]基于RPT/SPT的算法進(jìn)行深入研究,并搭設(shè)實(shí)際系統(tǒng)來實(shí)現(xiàn)IPTV在PIM-SM網(wǎng)絡(luò)中的硬件轉(zhuǎn)發(fā)。
如圖1,將數(shù)字信號(hào)TS流輸入復(fù)用器生成多路節(jié)目的TS流輸出到視頻網(wǎng)關(guān)進(jìn)行UDP/IP包封裝,每路節(jié)目對(duì)應(yīng)一個(gè)多播地址,再進(jìn)入到PIM-SM網(wǎng)絡(luò)中進(jìn)行傳輸,用戶端接收經(jīng)VLC解碼即可觀看。
PIM-SM有兩種樹狀結(jié)構(gòu),一種是基于RP的共享樹叫RPT(RP Tree),一種是基于源的SPT(Shortest-path tree),這兩種組播轉(zhuǎn)發(fā)樹提供了組播發(fā)送者到接收者之間的轉(zhuǎn)發(fā)線路。PIM-SM協(xié)議通過建立和維持RPT樹和SPT樹來保證組播數(shù)據(jù)包的合理轉(zhuǎn)發(fā)。單播路由表的變動(dòng)、接收組播組用戶的加入和離開、超過策略閥值等都可能造成RPT/SPT的變化從而造成組播流轉(zhuǎn)發(fā)路徑的變化。
圖1 系統(tǒng)結(jié)構(gòu)圖
PIM-SM協(xié)議的算法策略是默認(rèn)沿著RPT轉(zhuǎn)發(fā)組播數(shù)據(jù)流,根據(jù)策略觸發(fā)切換成SPT繼續(xù)轉(zhuǎn)發(fā)數(shù)據(jù)流。
組播數(shù)據(jù)包在進(jìn)行轉(zhuǎn)發(fā)時(shí),遵循最長(zhǎng)匹配原則,如果存在(S,G)表項(xiàng),先查詢匹配(S,G),如果沒有(S,G),再查詢匹配(*,G),匹配上相應(yīng)表項(xiàng)后,再做入端口檢查,只有從正確方向發(fā)來的數(shù)據(jù)才能被轉(zhuǎn)發(fā),從其他接口過來的數(shù)據(jù)被認(rèn)為無效。
3.1 鄰居發(fā)現(xiàn)和DR選舉
PIM-SM通過對(duì)外發(fā)送HELLO消息來發(fā)現(xiàn)并維護(hù)鄰居關(guān)系,PIM路由器中每個(gè)配置的三層接口都會(huì)對(duì)外發(fā)送HELLO消息,HELLO數(shù)據(jù)包的目的地址是組播地址224.0.0.13,當(dāng)同一個(gè)網(wǎng)段所有PIM路由器都接收HELLO消息來發(fā)現(xiàn)和維護(hù)鄰居消息,建立鄰居關(guān)系后PIM路由器才會(huì)接收其他的PIM控制消息,從而創(chuàng)建組播路由表項(xiàng),建立維護(hù)組播分發(fā)樹。PIM鄰居的變化將導(dǎo)致網(wǎng)絡(luò)中組播拓?fù)涞淖兓瘡亩鴮?dǎo)致組播分發(fā)樹發(fā)生變化。
一個(gè)網(wǎng)段可能有多個(gè)PIM路由器,一般會(huì)選出一臺(tái)作為本網(wǎng)段的DR(Designated Router,指定路由器),DR主要有兩個(gè)作用,在連接組播源的共享網(wǎng)段,DR負(fù)責(zé)向RP發(fā)送Register登記信息;在連接組成員的網(wǎng)段,DR負(fù)責(zé)向RPT樹發(fā)送JOIN信息。
3.2 RPT的生成
表1 PIM Join/Prune數(shù)據(jù)包格式
如表1所示,Join/Prune數(shù)據(jù)包中,對(duì)于組播組G,包含的JOIN/PRUNE Source address 有三種類型,本文后面將包含這三種類型源地址的Join/Prune數(shù)據(jù)包寫成 Join/Prune(G,RP,SWR)、Join/Prune(G,S,SR)和Join/Prune(G,S,S)
當(dāng)用戶申請(qǐng)接收組播組G的數(shù)據(jù)流時(shí),接收用戶直連網(wǎng)絡(luò)上的DR會(huì)接收到一個(gè)申請(qǐng)加入組播組G的IGMP數(shù)據(jù)包,會(huì)檢查本地組播路由表,如果沒有相應(yīng)表項(xiàng),則創(chuàng)立(*,G)表項(xiàng),并將申請(qǐng)用戶所在的端口加到組播輸出端口OIF(outgoing interface)中,同時(shí)DR向表向輸入端口IIF(incoming interface)發(fā)送一個(gè)JOIN數(shù)據(jù)包,如圖1,這里IIF端口是根據(jù)單播路由計(jì)算出來的前往RP的轉(zhuǎn)發(fā)端口,JOIN數(shù)據(jù)包的目的IP地址是224.0.0.13,當(dāng)上一級(jí)DR收到以后,如果本身存在(*,G)表項(xiàng),則將收到JOIN數(shù)據(jù)包的端口加入到OIF中,如果本身不存在(*,G),則生成(*,G)同時(shí)再向RF的IIF端口發(fā)送JOIN 數(shù)據(jù)包。最終接受組播組G用戶直連的DR加入到組播組G的RPT中。
圖1 PIM JOIN
3.3 組播源S的登記
如果組播源S連接,則與組播源相連網(wǎng)絡(luò)的DR直接向RP發(fā)出PIM-register 單播數(shù)據(jù)包,如圖2,連接源S的DR同時(shí)會(huì)生成(S,G)表項(xiàng),如果存在(*,G)且OIF≠Null,則復(fù)制(*,G)OIF端口到(S,G)OIF中,同時(shí)會(huì)向RPT樹的上游路由器發(fā)送Prune(G,S,SR)數(shù)據(jù)包。RP接收到register數(shù)據(jù)包,生成(S,G)flag=T表項(xiàng),如果RP存在(*,G)表項(xiàng)且OIF≠ null,RP一方面將register包中的組播流按照(*,G)OIF列表沿著RPT轉(zhuǎn)發(fā)給接收者,另一方面通過向S的轉(zhuǎn)發(fā)端口發(fā)送JOIN數(shù)據(jù)包請(qǐng)求加入(S,G)的SPT樹。
圖2 PIM register
如果RP下面沒有該組播組G的接收用戶或者RP加入到了SPT樹且通過(S,G)表目收到了數(shù)據(jù)流,則RP會(huì)發(fā)送register-stop信息給DR。DR收到register-stop后會(huì)啟動(dòng)register-suppresion timer 抑制register信息的發(fā)送,如圖3:
圖3 PIM REGISTER-STOP
當(dāng)S和RP之間的SPT建立起來以后,組播流從S沿著SPT樹發(fā)向RP,RP再通過RPT樹向組播組G接收用戶的直連網(wǎng)絡(luò)DR轉(zhuǎn)發(fā)組播流。
3.4 RPT向SPT的切換
當(dāng)組播流從源S沿著SPT樹到達(dá)RP,再沿著RPT樹到達(dá)連接接收用戶的DR時(shí),可以通過設(shè)置SPT-Threshold來控制DR從RPT向SPT的切換,默認(rèn)情況下SPT-Threshold為0,表明當(dāng)連接接收用戶的DR收到第一個(gè)沿RPT到達(dá)的數(shù)據(jù)包后立刻觸發(fā)從RPT到SPT的切換過程。
當(dāng)DR觸發(fā)從RPT切換到SPT過程后,它向S的方向發(fā)送JOIN(G,S,S)數(shù)據(jù)包,請(qǐng)求加入源地址為S組播地址G的SPT樹;當(dāng)(S,G)被創(chuàng)立時(shí),OIF端口列表復(fù)制(*,G)的OIF端口列表。只有直接連接接收用戶的DR才能主動(dòng)觸發(fā)RPT到SPT的切換過程。(S,G)表項(xiàng)初始化時(shí)SPT-bit沒有設(shè)置,表明SPT樹還沒有完全建立,路由器依然從(*,G)表項(xiàng)IIF端口接收來自S的組播組為G的數(shù)據(jù)流。當(dāng)從(S,G)的IIF端口接收到源S目的G的數(shù)據(jù)包,(S,G)表項(xiàng)flags:T,此時(shí)SPT樹建立;如果此時(shí)(*,G)和(S,G)有不同的IIF口,路由器沿著RPT向上級(jí)路由器發(fā)出PRUNE數(shù)據(jù)包(如圖4),不再希望收到源S組播組地址G的數(shù)據(jù)包。如果RPT上級(jí)路由器存在(S,G)表項(xiàng)(無論(S,G)表項(xiàng)是否 flag=R),上級(jí)路由器都會(huì)在(S,G)表項(xiàng)的OIF列表中刪除收到PRUNE數(shù)據(jù)包的端口;如果上級(jí)路由器沒有(S,G)表項(xiàng),它將生成(S,G)flag:R表項(xiàng),復(fù)制(*,G)OIF到新生成(S,G)OIF中,同時(shí)在OIF列表中刪除接收到PRUNE(G,S,SR)的那個(gè)端口。在任何時(shí)候,對(duì)于明確的S和G,路由器最多僅能有一個(gè)(S,G)表項(xiàng)。
當(dāng)路由器上(S,G)flag:R的OIF=Null時(shí),flags增加P,表項(xiàng)將繼續(xù)存在;如果此時(shí)路由器連接上新的組G接收用戶(或者收到RPT下游路由器JOIN(G,RP,SWR)),則路由器將接收用戶端口(或收到JOIN包的端口)加入到(*,G)和(S,G)flag=R 的OIF列表中,同時(shí)向RPT上游路由器發(fā)送JOIN(G,RP,SWR)信息。
圖4 PRUNE(S,G,SWR)
3.5 觸發(fā)(S,G)表項(xiàng)變更的條件
直連用戶的DR可以直接觸發(fā)RPT切換成SPT,超過門限閥值路由器會(huì)生成(S,G)flag:表項(xiàng),同時(shí)從(*,G)OIF列表復(fù)制到(S,G)OIF列表;從SPT樹接收到源S組播流則觸發(fā)flag:T。
對(duì)于連接組播源S的DR,只要有源S的組播流進(jìn)入,就創(chuàng)立(S,G)flag=T表項(xiàng)。通過復(fù)制(*,G)表項(xiàng)OIF列表來生成(S,G)OIF列表,接收J(rèn)oin/Prune(G,S,S)觸發(fā)(S,G)表項(xiàng)OIF列表的變化,如果一直接收源組播流,(S,G)表項(xiàng)將一直存在。
對(duì)于RP,接收到合法組播源S的單播register數(shù)據(jù)包就觸發(fā)生成(S,G)flag:T表項(xiàng),接收J(rèn)oin/Prune信息可能觸發(fā)對(duì)(S,G)OIF列表變化,只要周期性收到register數(shù)據(jù)包,即使OIF=NULL,(S,G)項(xiàng)也將一直存在。
對(duì)于其他的中間路由器,Join(G,S,S)和Prune(G,S,SR)這兩類信息能觸發(fā)生成(S,G)表項(xiàng):flags:T或flags:R表項(xiàng)。
組播轉(zhuǎn)發(fā)通常采用純軟件或者硬件方式轉(zhuǎn)發(fā),軟件處理由于需要消耗大量系統(tǒng)資源,不適合IPTV組播流,而硬件轉(zhuǎn)發(fā)一般通過分布式方式實(shí)現(xiàn),如圖5。將PIM-SM控制平面與數(shù)據(jù)平面分離,控制平面通過軟件方式實(shí)現(xiàn),而數(shù)據(jù)平面利用TCAM+FPGA方式,將轉(zhuǎn)發(fā)表存放于TCAM中,利用FPGA實(shí)現(xiàn)轉(zhuǎn)發(fā)處理邏輯[2]。
圖5 控制與數(shù)據(jù)層面的分離
PIM-SM網(wǎng)絡(luò)中每臺(tái)參與組播路由轉(zhuǎn)發(fā)的路由器必須進(jìn)行相應(yīng)的組播配置,如表2:
表2 組播配置列表
利用VLC播放平臺(tái),可以在PIM-SM網(wǎng)內(nèi)任何點(diǎn)接收到組播流,如圖7:
圖7 用戶端接收到的IPTV節(jié)目流
接收用戶直連網(wǎng)絡(luò)DR的組播路由表如圖8默認(rèn)情況下,連接接收用戶的DR上相關(guān)組播表項(xiàng)都會(huì)有FLAG:JT標(biāo)識(shí),表示從RPT切換成SPT結(jié)構(gòu)接收源S組G視頻流的。
圖8 DR IP MROUTE
用戶點(diǎn)播過程中,DR上PIM和維系組播轉(zhuǎn)發(fā)表的CPU占用率如圖9所示,可以看到對(duì)于PIM-SM網(wǎng)絡(luò)轉(zhuǎn)發(fā)設(shè)備,組播路由協(xié)議和組播轉(zhuǎn)發(fā)占用的資源很小。
圖9 DR PIM/MFIB CPU Utilization
園區(qū)網(wǎng)內(nèi)基于PIM-SM組播協(xié)議可以實(shí)現(xiàn)IPTV的實(shí)時(shí)直播功能,組播協(xié)議的處理和組播流的硬件轉(zhuǎn)發(fā)對(duì)網(wǎng)絡(luò)設(shè)備本身資源的占用很小,對(duì)于接收用戶分散和稀疏的情況下,本系統(tǒng)可以在不影響現(xiàn)有數(shù)據(jù)轉(zhuǎn)發(fā)前提下向用戶提供高質(zhì)量的IPTV服務(wù)。
[1]D Estrin,D Farinacci,A Helmy,D Thaler,S Deering,M Handley,V Jacobson,C Liu,P Sharma,L Wei.RFC 2362-Protocol Independent Multicast-Sparse Mode (PIM-SM)[EB/OL].1998[2013-5-26],http://www.faqs.org/rfcs/rfc2362.html.
[2]馮淵.T比特路由器上PIM-SM協(xié)議實(shí)現(xiàn)研究[D].解放軍信息工程大學(xué),2005.
ArchitectureandRealizationofIPTVinCampusNetworkBasedonPIM-SM
ZHU Wei-jia,GUO Xiao,SHUAI Qian-jun
(Computer and Network Information Center,Communication University of China,Beijing 100024)
TS traffic encoded with MPEG2 is encapsulated in multicast packet of UDP,sending to receivers over IP network.Through matching (*,G)and(S,G)lists following RPT/SPT,multicast packets is forwarding by PIM-SM .Hardware Forwarding is supported by TCAM 。The system achieve IPTV with multicast in campus network,fulfilling the requirement of users,simultaneously,the network system has no influence.
PIM-SM;RP;DR;RPT;SPT;RPF;(*,G);(S,G);IIF;OIF
2013-06-06
朱維嘉(1980-),男(漢族),安徽巢湖人,中國(guó)傳媒大學(xué)工程師.E-mail:wjzhu@cuc.edu.cn
TN915.6
A
1673-4793(2013)04-0022-05
(責(zé)任編輯:宋金寶)