朱維嘉,郭曉,帥千鈞
(中國傳媒大學 計算機與網絡中心,北京 100024)
基于PIM-SM組播的園區(qū)網IPTV的架構與實現
朱維嘉,郭曉,帥千鈞
(中國傳媒大學 計算機與網絡中心,北京 100024)
MPEG2編碼的視音頻TS流直接封裝在UDP的組播數據包中,通過IP承載網發(fā)送給接收用戶,組播協議PIM-SM通過生成(*,G)和(S,G)表項實現RPT/SPT轉發(fā)組播數據包,TCAM結構支持系統(tǒng)的硬件轉發(fā)。系統(tǒng)實現在園區(qū)網內IPTV的組播方式轉發(fā),滿足用戶需求的同時對網絡系統(tǒng)本身無影響。
PIM-SM;RP;DR;RPT;SPT;RPF;(*,G);(S,G);IIF;OIF
IPTV是向家庭用戶提供包括數字電視在內的多種交互式服務的嶄新技術。用戶在家可以通過計算機或者網絡機頂盒+普通電視機來接收IPTV,對于園區(qū)網絡來說,利用組播來傳輸IPTV是一種可行的方法,稀疏模式獨立組播協議PIM-SM不依賴于特定的單播路由協議,適用于較大范圍網絡。
本文對PIM-SM協議[1]基于RPT/SPT的算法進行深入研究,并搭設實際系統(tǒng)來實現IPTV在PIM-SM網絡中的硬件轉發(fā)。
如圖1,將數字信號TS流輸入復用器生成多路節(jié)目的TS流輸出到視頻網關進行UDP/IP包封裝,每路節(jié)目對應一個多播地址,再進入到PIM-SM網絡中進行傳輸,用戶端接收經VLC解碼即可觀看。
PIM-SM有兩種樹狀結構,一種是基于RP的共享樹叫RPT(RP Tree),一種是基于源的SPT(Shortest-path tree),這兩種組播轉發(fā)樹提供了組播發(fā)送者到接收者之間的轉發(fā)線路。PIM-SM協議通過建立和維持RPT樹和SPT樹來保證組播數據包的合理轉發(fā)。單播路由表的變動、接收組播組用戶的加入和離開、超過策略閥值等都可能造成RPT/SPT的變化從而造成組播流轉發(fā)路徑的變化。
圖1 系統(tǒng)結構圖
PIM-SM協議的算法策略是默認沿著RPT轉發(fā)組播數據流,根據策略觸發(fā)切換成SPT繼續(xù)轉發(fā)數據流。
組播數據包在進行轉發(fā)時,遵循最長匹配原則,如果存在(S,G)表項,先查詢匹配(S,G),如果沒有(S,G),再查詢匹配(*,G),匹配上相應表項后,再做入端口檢查,只有從正確方向發(fā)來的數據才能被轉發(fā),從其他接口過來的數據被認為無效。
3.1 鄰居發(fā)現和DR選舉
PIM-SM通過對外發(fā)送HELLO消息來發(fā)現并維護鄰居關系,PIM路由器中每個配置的三層接口都會對外發(fā)送HELLO消息,HELLO數據包的目的地址是組播地址224.0.0.13,當同一個網段所有PIM路由器都接收HELLO消息來發(fā)現和維護鄰居消息,建立鄰居關系后PIM路由器才會接收其他的PIM控制消息,從而創(chuàng)建組播路由表項,建立維護組播分發(fā)樹。PIM鄰居的變化將導致網絡中組播拓撲的變化從而導致組播分發(fā)樹發(fā)生變化。
一個網段可能有多個PIM路由器,一般會選出一臺作為本網段的DR(Designated Router,指定路由器),DR主要有兩個作用,在連接組播源的共享網段,DR負責向RP發(fā)送Register登記信息;在連接組成員的網段,DR負責向RPT樹發(fā)送JOIN信息。
3.2 RPT的生成
表1 PIM Join/Prune數據包格式
如表1所示,Join/Prune數據包中,對于組播組G,包含的JOIN/PRUNE Source address 有三種類型,本文后面將包含這三種類型源地址的Join/Prune數據包寫成 Join/Prune(G,RP,SWR)、Join/Prune(G,S,SR)和Join/Prune(G,S,S)
當用戶申請接收組播組G的數據流時,接收用戶直連網絡上的DR會接收到一個申請加入組播組G的IGMP數據包,會檢查本地組播路由表,如果沒有相應表項,則創(chuàng)立(*,G)表項,并將申請用戶所在的端口加到組播輸出端口OIF(outgoing interface)中,同時DR向表向輸入端口IIF(incoming interface)發(fā)送一個JOIN數據包,如圖1,這里IIF端口是根據單播路由計算出來的前往RP的轉發(fā)端口,JOIN數據包的目的IP地址是224.0.0.13,當上一級DR收到以后,如果本身存在(*,G)表項,則將收到JOIN數據包的端口加入到OIF中,如果本身不存在(*,G),則生成(*,G)同時再向RF的IIF端口發(fā)送JOIN 數據包。最終接受組播組G用戶直連的DR加入到組播組G的RPT中。
圖1 PIM JOIN
3.3 組播源S的登記
如果組播源S連接,則與組播源相連網絡的DR直接向RP發(fā)出PIM-register 單播數據包,如圖2,連接源S的DR同時會生成(S,G)表項,如果存在(*,G)且OIF≠Null,則復制(*,G)OIF端口到(S,G)OIF中,同時會向RPT樹的上游路由器發(fā)送Prune(G,S,SR)數據包。RP接收到register數據包,生成(S,G)flag=T表項,如果RP存在(*,G)表項且OIF≠ null,RP一方面將register包中的組播流按照(*,G)OIF列表沿著RPT轉發(fā)給接收者,另一方面通過向S的轉發(fā)端口發(fā)送JOIN數據包請求加入(S,G)的SPT樹。
圖2 PIM register
如果RP下面沒有該組播組G的接收用戶或者RP加入到了SPT樹且通過(S,G)表目收到了數據流,則RP會發(fā)送register-stop信息給DR。DR收到register-stop后會啟動register-suppresion timer 抑制register信息的發(fā)送,如圖3:
圖3 PIM REGISTER-STOP
當S和RP之間的SPT建立起來以后,組播流從S沿著SPT樹發(fā)向RP,RP再通過RPT樹向組播組G接收用戶的直連網絡DR轉發(fā)組播流。
3.4 RPT向SPT的切換
當組播流從源S沿著SPT樹到達RP,再沿著RPT樹到達連接接收用戶的DR時,可以通過設置SPT-Threshold來控制DR從RPT向SPT的切換,默認情況下SPT-Threshold為0,表明當連接接收用戶的DR收到第一個沿RPT到達的數據包后立刻觸發(fā)從RPT到SPT的切換過程。
當DR觸發(fā)從RPT切換到SPT過程后,它向S的方向發(fā)送JOIN(G,S,S)數據包,請求加入源地址為S組播地址G的SPT樹;當(S,G)被創(chuàng)立時,OIF端口列表復制(*,G)的OIF端口列表。只有直接連接接收用戶的DR才能主動觸發(fā)RPT到SPT的切換過程。(S,G)表項初始化時SPT-bit沒有設置,表明SPT樹還沒有完全建立,路由器依然從(*,G)表項IIF端口接收來自S的組播組為G的數據流。當從(S,G)的IIF端口接收到源S目的G的數據包,(S,G)表項flags:T,此時SPT樹建立;如果此時(*,G)和(S,G)有不同的IIF口,路由器沿著RPT向上級路由器發(fā)出PRUNE數據包(如圖4),不再希望收到源S組播組地址G的數據包。如果RPT上級路由器存在(S,G)表項(無論(S,G)表項是否 flag=R),上級路由器都會在(S,G)表項的OIF列表中刪除收到PRUNE數據包的端口;如果上級路由器沒有(S,G)表項,它將生成(S,G)flag:R表項,復制(*,G)OIF到新生成(S,G)OIF中,同時在OIF列表中刪除接收到PRUNE(G,S,SR)的那個端口。在任何時候,對于明確的S和G,路由器最多僅能有一個(S,G)表項。
當路由器上(S,G)flag:R的OIF=Null時,flags增加P,表項將繼續(xù)存在;如果此時路由器連接上新的組G接收用戶(或者收到RPT下游路由器JOIN(G,RP,SWR)),則路由器將接收用戶端口(或收到JOIN包的端口)加入到(*,G)和(S,G)flag=R 的OIF列表中,同時向RPT上游路由器發(fā)送JOIN(G,RP,SWR)信息。
圖4 PRUNE(S,G,SWR)
3.5 觸發(fā)(S,G)表項變更的條件
直連用戶的DR可以直接觸發(fā)RPT切換成SPT,超過門限閥值路由器會生成(S,G)flag:表項,同時從(*,G)OIF列表復制到(S,G)OIF列表;從SPT樹接收到源S組播流則觸發(fā)flag:T。
對于連接組播源S的DR,只要有源S的組播流進入,就創(chuàng)立(S,G)flag=T表項。通過復制(*,G)表項OIF列表來生成(S,G)OIF列表,接收Join/Prune(G,S,S)觸發(fā)(S,G)表項OIF列表的變化,如果一直接收源組播流,(S,G)表項將一直存在。
對于RP,接收到合法組播源S的單播register數據包就觸發(fā)生成(S,G)flag:T表項,接收Join/Prune信息可能觸發(fā)對(S,G)OIF列表變化,只要周期性收到register數據包,即使OIF=NULL,(S,G)項也將一直存在。
對于其他的中間路由器,Join(G,S,S)和Prune(G,S,SR)這兩類信息能觸發(fā)生成(S,G)表項:flags:T或flags:R表項。
組播轉發(fā)通常采用純軟件或者硬件方式轉發(fā),軟件處理由于需要消耗大量系統(tǒng)資源,不適合IPTV組播流,而硬件轉發(fā)一般通過分布式方式實現,如圖5。將PIM-SM控制平面與數據平面分離,控制平面通過軟件方式實現,而數據平面利用TCAM+FPGA方式,將轉發(fā)表存放于TCAM中,利用FPGA實現轉發(fā)處理邏輯[2]。
圖5 控制與數據層面的分離
PIM-SM網絡中每臺參與組播路由轉發(fā)的路由器必須進行相應的組播配置,如表2:
表2 組播配置列表
利用VLC播放平臺,可以在PIM-SM網內任何點接收到組播流,如圖7:
圖7 用戶端接收到的IPTV節(jié)目流
接收用戶直連網絡DR的組播路由表如圖8默認情況下,連接接收用戶的DR上相關組播表項都會有FLAG:JT標識,表示從RPT切換成SPT結構接收源S組G視頻流的。
圖8 DR IP MROUTE
用戶點播過程中,DR上PIM和維系組播轉發(fā)表的CPU占用率如圖9所示,可以看到對于PIM-SM網絡轉發(fā)設備,組播路由協議和組播轉發(fā)占用的資源很小。
圖9 DR PIM/MFIB CPU Utilization
園區(qū)網內基于PIM-SM組播協議可以實現IPTV的實時直播功能,組播協議的處理和組播流的硬件轉發(fā)對網絡設備本身資源的占用很小,對于接收用戶分散和稀疏的情況下,本系統(tǒng)可以在不影響現有數據轉發(fā)前提下向用戶提供高質量的IPTV服務。
[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協議實現研究[D].解放軍信息工程大學,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-),男(漢族),安徽巢湖人,中國傳媒大學工程師.E-mail:wjzhu@cuc.edu.cn
TN915.6
A
1673-4793(2013)04-0022-05
(責任編輯:宋金寶)