任意源组播下的丢包分析与避免
2020-07-29张潇男石湘
张潇男 石湘
摘要:在任意源组播(ASM)网络环境的基础上,对因PIM-SM协议构建组播路由过程中自动对组播共享树向最短路径树(SPT)切换时所导致的组播数据丢失问题进行了分析。针对目前主流网络设备避免SPT切换的几种方法的优缺点进行了介绍,并指出在专网应用时的不合理性。通过原理分析和模拟环境试验,提出了一种通过添加静态组播组构建稳定组播路由,避免SPT切换的新方法。
关键词:任意源组播;最短路径树;丢包
中图分类号:TP393文献标志码:A文章编号:1008-1739(2020)09-57-3
0引言
组播较单播传输更节省网络带宽,而且广播传输安全性高,因此组播已逐渐在网络中得到较大规模应用。组播根据源和目的的不同,可分为ASM、源过滤组播(SFM)和指定源组播(SSM)三种模型。目前组播技术应用较为广泛的是ASM模型,此模型假设不知道发送者和接收者的位置,因此需要在网络中选取一个设备来当作桥梁去收集组播源和接收者的信息,这个设备就是汇聚点(RP),它为二者建立共享路径树(RPT)。因此RP即使不在最优路径上,数据也要经过RP进行转发。为了减少RP的负荷,接收者收到组播数据后会根据数据包的源地址重新建立接收者到发送者的最短路径并进行切换,这就会导致数据在切换过程中瞬间丢失。本文对ASM的转发机制进行了分析,依据分析结果提出了解决问题的措施。
1任意源组播路由的建立机制
ASM的实现方法是:①在网络中维护一台重要的PIM路由器,也称组播RP,网络中所有的PIM路由器都知道RP的位置;②当网络中出现组成员时,最后一跳路由器向RP发送Join报文,逐跳创建(*,G)表项,生成一棵以RP为根的RPT;③当网络中出现活跃的组播源时,第一跳路由器将组播数据封装在Register报文中单播发往RP,在RP上创建(S,G)表项,注册源信息,从而生成基于RP的SPT表项。
1.1 PIM-SM RPT构建
PIM-SM(ASM模型)RPT是一棵以RP为根,以PIM路由器为叶子的组播分发树。
当网络中出现组成员时,组成员端DR向RP发送Join报文,在通向RP的路径上逐跳创建(*,G)表项,生成一棵以RP为根的RPT。加入报文从组成员端DR开始逐跳发送,直到RP,RPT构建如图1所示。
1.2 PIM-SM组播源注册
组播源注册如图2所示,在PIM-SM网络中,任何一个新出现的组播源都必须首先在RP处注册,继而才能将组播报文传输到组成员。
具体过程如下:①组播源将组播报文发给源端DR;②源端DR接收到组播报文后,将其封装在Register报文中,发送给RP;③RP接收到Register报文,将其解封装,建立(S,G)表项,并将组播数据沿RPT发送到组成员。
1.3 PIM-SM SPT切换
在PIM-SM网络中,一个组播组只对应一个RP,只构建一棵RPT。
在未进行SPT切换的情况下,所有发往该组的组播报文都必须先封装在注册报文中发往RP,RP解封装后,再沿RPT分发。RP是所有组播报文必经的中转站,当组播报文速率逐渐变大时,对RP形成巨大的负担。
为了解决此问题,PIM-SM允许RP或组成员端DR通过触发SPT切换来减轻RP的负担。
(1)RP触发SPT切换
RP收到源端DR的注册报文后,将封装在Register报文中的组播报文沿RPT转发给组成员,同时RP会向源端DR逐跳发送Join报文。发送过程中在PIM路由器创建(S,G)表项,从而建立了RP到组播发送者的源路径树。
(2)组成员端DR触发SPT切换
组成员端DR触发SPT切换如图3所示,组成员端DR周期性检测组播报文的转发速率,一旦发现(S,G)报文的转发速率超过阈值,则触发SPT切换。
组成员端DR向源端DR逐跳发送Join报文并创建(S,G)表项,建立源端DR到组成员DR的SPT。SPT建立后,组成员端DR会沿着RPT逐跳向RP发送剪枝报文,删除(*,G)表项中相应的下游接口。剪枝结束后,RP不再沿RPT转发组播报文到组成员端。
如果SPT不经过RP,RP会继续向源端DR逐跳發送剪枝报文,删除(S,G)表项中相应的下游接口。剪枝结束后,源端DR不再沿“源端DR-RP”的SPT转发组播报文到RP。RP或者组成员端DR在接收到第一份组播报文时都会触发各自的SPT切换。
2丢包分析与避免措施
2.1 SPT切换过程中造成丢包的分析
组成员端DR收到来自源端的第一份组播报文后便已得知发送端的源IP地址,接收端DR通过单播路由表向源端逐跳建立组播路由,组播路由完成后SPT建立。此时DR会对旧的转发路径进行清理,这就是组播的剪枝。剪枝完成后组播数据沿着SPT重新转发切换才算全部完成。
可是这一切复杂过程发送者全然不知,组播数据传输不会中断,剪枝完成前为了避免组播数据通过SPT和RPT同时转发而造成数据重报,在剪枝过程中必然会出现转发的瞬间中断,当完成剪枝后组播数据才将会沿着最新的SPT继续转发,所以SPT切换过程中的丢包将不可避免。
2.2寻找避免路径切换机制
通过上述分析得知,SPT切换是造成数据丢包的主要原因,避免丢包的思路应该是围绕建立一个稳定的组播路由展开。目前避免路径切换的主要方式是配置组成员DR的SPT不进行切换,通过强制改变设备默认配置从而保持组播的路由稳定。但在这种情况下,组播数据都会通过RP进行传播,即使RP不是最优路径。这种方法下组播路由虽得到稳定,但无法减轻RP设备的负担。选择一种通过接收端DR直接向组播源端建立一个稳定的SPT才是解决问题的最好方法。
在工程应用中有一种手动牵引组播数据流量的技术,即在接收端DR相应接口上配置静态组播组。可在静态组播组加入中通过配置组播源地址的方式强行构建接收者到组播数据发送者的SPT,从而避免路径切换。这种方式不仅可以实现路由的稳定,还可以减轻RP的负担。
2.3确定组播源地址
要完成上述设置首先应确定组播发送者的地址(源地址)。获取源地址是进行配置前的必要步骤,可通过Wireshark抓包软件在接收端抓组播报文,并对组播数据报文流进行分析。
(1)配置端口镜像
①配置抓包口:observe-port N interfacegigabitethernet;
②进入被观察端口:Quidway-GigabitEthernetx/x/x;
③将此端口收到的数据复制到抓包口:port-mirroring to observe-port 1 inbound。端口配置完成后将装有Wireshark软件的计算机通过网口连接至配置好的抓包口,打开Wireshark准备进行抓包。
(2)确定特定组
首先确定任意源组播地址,任意源组播地址段一般为:224.0.1.0~231.255.255.255;233.0.0.0~238.255.255.255
抓包完成后在Wireshark中点击需要设置的组播数据报文,在数据包IP层中找到IP的源地址即组播发送者的IP地址并进行记录。
2.4配置组播组加入
静态组播组加入应在组播接收端的DR路由器上进行使用,从而使接收端DR通过此命令建立长久稳定的SPT路径。
①首先在交换机中打开组播路由功能:multicast routing-enable;
②找到接收者所在VLAN(N),然后进入3层vlanif(N)中:interface vlanif N;
③完成静态组播组加入配置:igmp tatic-group;[group-address][source-address]。
2.5建立稳定SPT路径
静态组播组加入相当于在网络中手动添加了稳定的组播组成员,可以实现组播数据的快速、稳定转发,在用户侧接口配置静态组播组并指定源地址后,接收端DR将按照组播源地址查找自身单播路由表并逐跳建立SPT。SPT随着命令的存在而长期存在,组播路径中的每跳路由器都会针对此组数据生成(S.G)表项,并明确上下行转发端口,如图4所示。
3应用效果
上述措施完成之后,在路由器A,D上进行组播路由查询可以发现,从接收者R2到组播源S的每跳路由器都产生了(S.G)组播路由表项,如表1所示。
实际应用中,接收者R完整地接收了组播数据并未产生丢包。此时无论源端是否发送组播,接收者R2到组播源S的SPT仍然稳定建立,组播数据传输时,省去了组播路由建立的过程,静态组播组加入后稳定了组播路径,提高了转发效率,避免了ASM模型中的SPT切换,从而避免了丢包的产生。
4结束语
上述分析以及提供的丢包避免措施可解决对于丢包率要求较高且使用组播ASM模型构建的专网之中,从原理出发找到问题根源,应用一些看似不相关的技术去弥补不好解决的机理问题。
参考文献
[1]朱仕耿.HCNP路由交换学习指南[M].北京:人民邮电出版社,2017.
[2]武忠,于红增.同源同宿SSM组播路由控制技术研究[J].计算机与网络,2014,40(7):64-66.
[3]徐俊,陳雪军,赵乾宏,等.航天测控通信IP网中可控组播的实现[J].遥测遥控,2012,33(4):61-63,68.
[4]李乃振.专网组播应用设计与安全策略[J].四川兵工学报, 2015,36(7):113-116,124.
[5]狄彩云,张英,狄卫国,等.航天测控通信中指定源组播的技术研究[J].无线电工程,2014,44(9):5-7.
[6]方山,李华.指定源组播原理分析与应用研究[J].中国新通信,2016,18(23):90.