6、组播静态路由
组播静态路由是RPF检查的重要依据之一,根据不同的应用场景,组播静态路由有如下2种作用。
1、改变RPF路由
在相同拓扑的网络中,可以通过配置组播静态路由,改变RPF路由,为组播数据创建一条与单播不同的传输路径。
![9e184cfb7c89586d726c945d768b3870.png](https://i-blog.csdnimg.cn/blog_migrate/0f96635dabedbea88c2c4647ce2b26f7.jpeg)
图1 配置组播静态路由改变RPF路由示例
如上图1所示的网络中,RouterC到组播源(Source)的RPF邻居为RouterA,从Source发出的组播报文会沿着Source->RouterA->RouterC的路径传输。
此时,在RouterC上配置组播静态路由,指定RouterC的RPF邻居为RouterB,则从Source发出的组播报文的传输路径将发生改变,改为沿Source->RouterA->RouterB->RouterC的路径传输,区别于原来的单播路由路径。
2、衔接RPF路由
当某组播网络中的单播路由被阻断时,组播数据流传输将因为没有RPF路由而中断。
此时,可以通过配置组播静态路由,生成新的RPF路由,从而在设备上创建新的组播转发表项来指导组播数据的转发。
![9f0b06183762e281b6e1e02104e65a96.png](https://i-blog.csdnimg.cn/blog_migrate/6751b1655899c53eba24756c8280847f.jpeg)
图2 配置组播静态路由衔接RPF路由示例
如上图2所示,Domain1和Domain2是单播路由隔离的2个路由域(如RIP和OSPF),Domain2中的Receiver无法接收到来自组播源的组播数据。
此时在Domain2中的RouterC、RouterD上分别配置组播静态路由,重新指定其RPF邻居(RouterC邻居指定为RouterB,RouterD邻居指定为RouterC),这样Receiver就能接收到组播源的数据流了。
组播静态路由仅在配置的组播路由器上生效,不会引入或广播给网络中的其他路由器。
7、组播负载分担
“负载分担”与“负载均衡”是不同的概念。
“负载分担”是指如果发往某一目的地的数据流存在多条等价的转发路径,就将数据在这多条路径上转发,达到分流的目的。在进行数据转发时,每一条路径上转发的数据流量并不一定相同,转发流量多少需要根据负载分担方式来决定。
“负载均衡”属于“负载分担”的一种特殊形式,不仅将数据流在这多条路径上转发,并且每条路径转发等量的数据流量。
1、组播负载分担基本原理
缺省情况下,组播报文转发过程中如果存在多条等价的最优转发路径,按照RPF检查对等价路由的处理规则分两种情况:
如果这几条等价路由都是来自同一张路由表项,比如单播路由表、组播静态路由表或者MBGP路由表中的一种,则选取下一跳地址最大的路由作为RPF路由。
如果这几条等价路由来自不同的路由表,首先会比较路由优先级,再比较掩码长度。如果上述都相同,则设备会根据一定的函数计算选取出一条路由作为RPF路由。
无论上述哪种情况,设备在RPF检查时都只会选取出一条路由作为RPF路由,进行组播报文转发。
“组播负载分担”是指如果存在多条等价的最优转发路径时,不按照RPF检查规则来选取下一跳地址最大的路由,而是根据配置的组播负载分担方式将组播流在这多条路径上进行分流转发。
![8f684afb9d86db5d5f3e83f670b4b0cf.png](https://i-blog.csdnimg.cn/blog_migrate/cb4a9b2b6c7f7f0192f00e80a7743cbb.jpeg)
图1 配置组播负载分担前后对比示意图
如上图1所示,组播源Source向组播组G发送组播流,路由器RouterA和RouterD之间运行某种IGP协议(如OSPF),RouterA→RouterB→RouterD和RouterA→RouterC→RouterD是2条等价转发路径。
缺省情况下,根据RPF检查规则,组播流会从Int0端口转发,因为Int0的IP地址比Int1地址大。配置组播负载分担之后,就不会根据下一跳地址来选取转发路径,RouterA→RouterB→RouterD和RouterA→RouterC→RouterD都会转发组播流。
2、组播负载分担方式
对于来自任意源组播(*,G)或指定源(S,G)组播的数据流,“组播负载分担”提供了不同的负载分担方式来支持不同应用场合。
2.1、基于组播组G的负载分担
![86b862769ecfc805c2890146846ac182.png](https://i-blog.csdnimg.cn/blog_migrate/56df5f33a0ef294f6874a05885c14bc2.jpeg)
图2 基于组播组G的负载分担示意图
如上图2所示,从源Source发往不同组播组G(G1~G10)的数据流,沿途的Router7、Router6和Router5分别存在2条来自源Source的等价路由。组播路由器经过一系列算法,从等价路径中为不同的组播组G选择一条合适的路径,作为转发路由。
实现负载分担后,不同转发路径上的流量属于不同的组播组G。
2.2、基于组播源S的负载分担
![f47063148889ae102cb7b60eb0134492.png](https://i-blog.csdnimg.cn/blog_migrate/93b3bf8eb342f0b7a2029ec74caeafe4.jpeg)
图3 基于组播源S的负载分担示意图
如上图3所示,从不同源Source(S1~S10)发往相同组播组G的数据流,沿途的Router7、Router6和Router5分别存在2条来自源Source的等价路由。组播路由器经过一系列算法,从等价路径中为不同的组播源S选择一条合适的路径,作为转发路由。
实现负载分担后,不同转发路径上的流量属于不同的组播源S。
2.3、基于组播源组(S,G)的负载分担
![5a1eec73e7924d2cc5f6e360d410224f.png](https://i-blog.csdnimg.cn/blog_migrate/1d2ea2d171a70edecd8d42d47850527b.jpeg)
图4 基于组播源组(S,G)的负载分担示意图
如上图4所示,从不同源Source(S1~S10)发往不同组播组G(G1~G10)的数据流,沿途的Router7、Router6和Router5分别存在2条来自源Source的等价路由。组播路由器经过一系列算法,从等价路径中为不同的组播源组(S,G)选择一条合适路径,作为转发路由。
实现负载分担后,不同转发路径上的流量属于不同的组播源组(S,G)。
2.4、其他负载分担方式
![4c5428558301bd91689cb2dc8c92866c.png](https://i-blog.csdnimg.cn/blog_migrate/cc13d69fd58d9a79ead53a7b184cda0e.jpeg)
图5 其他负载分担方式示意图
2.4.1、稳定优先负载分担
如上图5所示,当组播网络中发生路由震荡时,如果组播路由器频繁调整负载,会加剧路由的不断震荡。
配置稳定优先负载分担的路由器,不会立刻调整负载,而是等到震荡结束后才进行调整。当网络拓扑稳定无震荡时,路由器上来自同一个组播源的路由表项会均衡分布在各等价路径上。
2.4.2、均衡优先负载分担
如上图5所示,当组播网络中发生路由震荡时,配置均衡优先负载分担的路由器,会立刻重新调整负载到均衡状态。当网络拓扑稳定无震荡时,路由器上来自同一个组播源的路由表项会均衡分布在各等价路径上。
2.4.3、不均衡负载分担
如上图5所示,不均衡负载分担,是对上述2种“稳定优先”和“均衡优先”负载分担方式的补充,不改变这2种方式的基本行为,只是让路由表项按比例分布在各等价路径上。
实际网络中各路径的负载能力存在差异,或者需要人为干预某路径上的负载。不均衡负载分担模式允许在路由器指定接口上配置权值,权值越大的接口所在路径上分布的路由表项越多,从而解决上述问题。
8、组播MPing/MTrace
随着Internet网络的不断发展,网络中交互的各种数据、语音和视频信息越来越多,组播业务随之快速发展起来,紧接着是对组播网络的管理的需求越来越大。于是组播Ping和组播Tracert应运而生,为用户提供了对组播业务探测、故障诊断等功能。
组播Ping(Multicast Ping,以下简称MPing)是一种组播业务的探测工具,通过发送ICMP Echo Request报文促进组播转发树的建立和检测网络中的保留组成员。
保留组:保留的本地组播组地址224.0.0.0~224.0.0.255。例如:224.0.0.5是OSPF路由器地址,224.0.0.13是PIM路由器地址。
组播Tracert(Multicast trace route,以下简称MTrace),是一种组播路径的追踪工具,可以追踪某一接收者沿着组播转发树到组播源的路径。
1、MPing
MPing使用标准的ICMP报文,查询者(发起检测命令的设备)构造ICMP Echo Request报文,其内部封装的IP报文的目的地址为组播地址,包括保留组地址和普通组地址。
目的地址为保留组地址时,查询者必须指定ICMP Echo Request报文的出接口,保留组成员(组播设备)收到目的组地址为保留组地址的ICMP Echo Request消息后,回应ICMP Echo Reply消息。因此,通过对保留组地址进行Ping操作,可以用来检测网络中的保留组成员。
目的地址为普通组地址时,查询者不能指定ICMP Echo Request报文的出接口,ICMP Echo Request报文作为有限的组播流量,在组播网络中正常转发,触发组播路由的建立。通过对目的主机反馈的ICMP Echo Reply报文进行统计处理,计算从MPing发起者到组播组成员的TTL、响应时间等。
2、MTrace
MTrace遵循IETF的协议草案draft-fenner-traceroute-ipm-01。
该草案描述了一种实现检测组播数据从组播源到特定目的接收者所经过的网络路径的机制。
![78873347ccba8b1f1256802d2a4807ce.png](https://i-blog.csdnimg.cn/blog_migrate/bb56449b34f8078f7cb70a1eb0b9de65.jpeg)
图1 MTrace组网图
MTrace基于的网络必须使能了组播协议,例如PIM-SM协议,并建立了组播转发树。MTrace通过发送查询报文探测组播路径。
报文分为三类:IGMP Tracert Query、IGMP Tracert Request和IGMP Tracert Response。
实现原理如下:
1、查询设备向目的主机所连接的最后一跳设备发送IGMP Tracert Query报文。
2、最后一跳设备收到该报文后,增加包含本设备接口地址信息的响应数据块,然后沿着到组播源的逆向组播路径向上一跳设备发送IGMP Tracert Request报文。
3、每一跳设备都会增加本跳的响应数据块并向组播源方向转发IGMP Tracert Request报文。
4、当连接组播源的第一跳组播设备收到IGMP Tracert Request报文时,添加本设备响应数据块,然后向查询设备发送IGMP Tracert Response报文。
5、在查询设备上通过解析Response报文获取转发的路径信息,显示从组播源到目的主机的组播路径信息。
6、如果因为某种错误原因,请求消息在转发时无法到达第一跳组播设备,则直接向查询设备返回Response报文,根据解析数据块信息,了解故障节点,从而实现故障点监测的目的。