APP下载

基于PIM-SM组播的园区网IPTV的架构与实现

2013-11-03朱维嘉郭晓帅千钧

关键词:网段列表路由器

朱维嘉,郭晓,帅千钧

(中国传媒大学 计算机与网络中心,北京 100024)

基于PIM-SM组播的园区网IPTV的架构与实现

朱维嘉,郭晓,帅千钧

(中国传媒大学 计算机与网络中心,北京 100024)

MPEG2编码的视音频TS流直接封装在UDP的组播数据包中,通过IP承载网发送给接收用户,组播协议PIM-SM通过生成(*,G)和(S,G)表项实现RPT/SPT转发组播数据包,TCAM结构支持系统的硬件转发。系统实现在园区网内IPTV的组播方式转发,满足用户需求的同时对网络系统本身无影响。

PIM-SM;RP;DR;RPT;SPT;RPF;(*,G);(S,G);IIF;OIF

1 引言

IPTV是向家庭用户提供包括数字电视在内的多种交互式服务的崭新技术。用户在家可以通过计算机或者网络机顶盒+普通电视机来接收IPTV,对于园区网络来说,利用组播来传输IPTV是一种可行的方法,稀疏模式独立组播协议PIM-SM不依赖于特定的单播路由协议,适用于较大范围网络。

本文对PIM-SM协议[1]基于RPT/SPT的算法进行深入研究,并搭设实际系统来实现IPTV在PIM-SM网络中的硬件转发。

2 系统设计

如图1,将数字信号TS流输入复用器生成多路节目的TS流输出到视频网关进行UDP/IP包封装,每路节目对应一个多播地址,再进入到PIM-SM网络中进行传输,用户端接收经VLC解码即可观看。

3 基于RPT/SPT的算法研究

PIM-SM有两种树状结构,一种是基于RP的共享树叫RPT(RP Tree),一种是基于源的SPT(Shortest-path tree),这两种组播转发树提供了组播发送者到接收者之间的转发线路。PIM-SM协议通过建立和维持RPT树和SPT树来保证组播数据包的合理转发。单播路由表的变动、接收组播组用户的加入和离开、超过策略阀值等都可能造成RPT/SPT的变化从而造成组播流转发路径的变化。

图1 系统结构图

PIM-SM协议的算法策略是默认沿着RPT转发组播数据流,根据策略触发切换成SPT继续转发数据流。

组播数据包在进行转发时,遵循最长匹配原则,如果存在(S,G)表项,先查询匹配(S,G),如果没有(S,G),再查询匹配(*,G),匹配上相应表项后,再做入端口检查,只有从正确方向发来的数据才能被转发,从其他接口过来的数据被认为无效。

3.1 邻居发现和DR选举

PIM-SM通过对外发送HELLO消息来发现并维护邻居关系,PIM路由器中每个配置的三层接口都会对外发送HELLO消息,HELLO数据包的目的地址是组播地址224.0.0.13,当同一个网段所有PIM路由器都接收HELLO消息来发现和维护邻居消息,建立邻居关系后PIM路由器才会接收其他的PIM控制消息,从而创建组播路由表项,建立维护组播分发树。PIM邻居的变化将导致网络中组播拓扑的变化从而导致组播分发树发生变化。

一个网段可能有多个PIM路由器,一般会选出一台作为本网段的DR(Designated Router,指定路由器),DR主要有两个作用,在连接组播源的共享网段,DR负责向RP发送Register登记信息;在连接组成员的网段,DR负责向RPT树发送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数据包,会检查本地组播路由表,如果没有相应表项,则创立(*,G)表项,并将申请用户所在的端口加到组播输出端口OIF(outgoing interface)中,同时DR向表向输入端口IIF(incoming interface)发送一个JOIN数据包,如图1,这里IIF端口是根据单播路由计算出来的前往RP的转发端口,JOIN数据包的目的IP地址是224.0.0.13,当上一级DR收到以后,如果本身存在(*,G)表项,则将收到JOIN数据包的端口加入到OIF中,如果本身不存在(*,G),则生成(*,G)同时再向RF的IIF端口发送JOIN 数据包。最终接受组播组G用户直连的DR加入到组播组G的RPT中。

图1 PIM JOIN

3.3 组播源S的登记

如果组播源S连接,则与组播源相连网络的DR直接向RP发出PIM-register 单播数据包,如图2,连接源S的DR同时会生成(S,G)表项,如果存在(*,G)且OIF≠Null,则复制(*,G)OIF端口到(S,G)OIF中,同时会向RPT树的上游路由器发送Prune(G,S,SR)数据包。RP接收到register数据包,生成(S,G)flag=T表项,如果RP存在(*,G)表项且OIF≠ null,RP一方面将register包中的组播流按照(*,G)OIF列表沿着RPT转发给接收者,另一方面通过向S的转发端口发送JOIN数据包请求加入(S,G)的SPT树。

图2 PIM register

如果RP下面没有该组播组G的接收用户或者RP加入到了SPT树且通过(S,G)表目收到了数据流,则RP会发送register-stop信息给DR。DR收到register-stop后会启动register-suppresion timer 抑制register信息的发送,如图3:

图3 PIM REGISTER-STOP

当S和RP之间的SPT建立起来以后,组播流从S沿着SPT树发向RP,RP再通过RPT树向组播组G接收用户的直连网络DR转发组播流。

3.4 RPT向SPT的切换

当组播流从源S沿着SPT树到达RP,再沿着RPT树到达连接接收用户的DR时,可以通过设置SPT-Threshold来控制DR从RPT向SPT的切换,默认情况下SPT-Threshold为0,表明当连接接收用户的DR收到第一个沿RPT到达的数据包后立刻触发从RPT到SPT的切换过程。

当DR触发从RPT切换到SPT过程后,它向S的方向发送JOIN(G,S,S)数据包,请求加入源地址为S组播地址G的SPT树;当(S,G)被创立时,OIF端口列表复制(*,G)的OIF端口列表。只有直接连接接收用户的DR才能主动触发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向上级路由器发出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,表项将继续存在;如果此时路由器连接上新的组G接收用户(或者收到RPT下游路由器JOIN(G,RP,SWR)),则路由器将接收用户端口(或收到JOIN包的端口)加入到(*,G)和(S,G)flag=R 的OIF列表中,同时向RPT上游路由器发送JOIN(G,RP,SWR)信息。

图4 PRUNE(S,G,SWR)

3.5 触发(S,G)表项变更的条件

直连用户的DR可以直接触发RPT切换成SPT,超过门限阀值路由器会生成(S,G)flag:表项,同时从(*,G)OIF列表复制到(S,G)OIF列表;从SPT树接收到源S组播流则触发flag:T。

对于连接组播源S的DR,只要有源S的组播流进入,就创立(S,G)flag=T表项。通过复制(*,G)表项OIF列表来生成(S,G)OIF列表,接收Join/Prune(G,S,S)触发(S,G)表项OIF列表的变化,如果一直接收源组播流,(S,G)表项将一直存在。

对于RP,接收到合法组播源S的单播register数据包就触发生成(S,G)flag:T表项,接收Join/Prune信息可能触发对(S,G)OIF列表变化,只要周期性收到register数据包,即使OIF=NULL,(S,G)项也将一直存在。

对于其他的中间路由器,Join(G,S,S)和Prune(G,S,SR)这两类信息能触发生成(S,G)表项:flags:T或flags:R表项。

4 控制与数据层面的分离

组播转发通常采用纯软件或者硬件方式转发,软件处理由于需要消耗大量系统资源,不适合IPTV组播流,而硬件转发一般通过分布式方式实现,如图5。将PIM-SM控制平面与数据平面分离,控制平面通过软件方式实现,而数据平面利用TCAM+FPGA方式,将转发表存放于TCAM中,利用FPGA实现转发处理逻辑[2]。

图5 控制与数据层面的分离

5 相关配置

PIM-SM网络中每台参与组播路由转发的路由器必须进行相应的组播配置,如表2:

表2 组播配置列表

6 结论

利用VLC播放平台,可以在PIM-SM网内任何点接收到组播流,如图7:

图7 用户端接收到的IPTV节目流

接收用户直连网络DR的组播路由表如图8默认情况下,连接接收用户的DR上相关组播表项都会有FLAG:JT标识,表示从RPT切换成SPT结构接收源S组G视频流的。

图8 DR IP MROUTE

用户点播过程中,DR上PIM和维系组播转发表的CPU占用率如图9所示,可以看到对于PIM-SM网络转发设备,组播路由协议和组播转发占用的资源很小。

图9 DR PIM/MFIB CPU Utilization

园区网内基于PIM-SM组播协议可以实现IPTV的实时直播功能,组播协议的处理和组播流的硬件转发对网络设备本身资源的占用很小,对于接收用户分散和稀疏的情况下,本系统可以在不影响现有数据转发前提下向用户提供高质量的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

(责任编辑:宋金宝)

猜你喜欢

网段列表路由器
买千兆路由器看接口参数
维持生命
路由器每天都要关
路由器每天都要关
学习运用列表法
扩列吧
基于MP-BGP EVPN的VXLAN实现中的故障
单位遭遇蠕虫类病毒攻击
配置局域网访问方式
可变编组动车组制动系统TCN网络信号传输需求研究*