前文我们了解了组播技术中的igmp-snooping相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15860484.html;今天我们来聊一聊组播技术中的另一个话题组播分发;
所谓组播分发我们可以理解为单播里面的路由;对于组播来说,它也会根据组播路由来转发数据;不同于单播,组播关心的是源在何处,而单播关心的是目标在何处;在了解组播路由之前我们先来聊一聊组播分发树;
组播分发树
所谓组播分发树就是指描述组播数据在网络中的转发路径,由组播路由协议建立;对于组播分发树来说,它有两个类型,一个是最短路径树(SPT),一个是共享树(RPT);
组播分发表示方法
最短路径树(SPT)表示方法:(S,G);其中S表示特定组播源地址,G表示特定组播组;即最短路径树(SPT)就是描述特定组播源发往特定组播组的路由;类似单播路由中的明细路由(个人理解);
共享树(RPT)表示方法:(*,G);其中*表示任意组播源,G表示特定组播组;即共享树(RPT)就是用来表示任意组播源发往特定组播的路由;类似单播路由中的默认路由(个人理解);
SPT:Shortest Path Tree,最短路径树,也称为“Source Tree” 源树;所谓源树就是以组播源作为树根,将组播源到每一个接收者的最短路径结合起来构成的转发树;也就是说每一个组播源与接收者之间建立一颗独立的SPT;
提示:源树是用来表示一个组播源到接收者的转发数据树,它关心组播源,即一个组播源到所有接收者说形成的转发树;组播源到接收者的路径一定是最短的;
RPT:Rendezvous Point Tree,共享树;所谓共享树就是指以某个路由器作为路由树的树根,这个根通常被称为RP(汇合点或核心);所有的组播源和接收者都是用这一颗树来转发报文,组播源先向树根发送数据报文,之后的报文再向下转发到达所有接收者;
提示:共享树是用来表示任意组播源到接收者的转发树;它不关心源到底是谁,即共享点往后的路由器它会建立共享树;组播源到接收者的路径不一定最短;
SPT组播转发表项
提示:在同一组播组中每增加一个组播源,对应路由器的表项就会增加一颗源树;表项较多;
RPT组播转发表项
提示:在同一组播组中不管怎么增加组播源,对于RP以后的路由器都只有一颗共享树,表项相对较少;
SPT和RPT比较:
SPT优点:路径最优,延迟最小;缺点:占用内存较多,因为一个源就会建立一颗树,相对于共享树表项较多,所以消耗内存资源也相对较多;
RPT优点:占用内存较少;缺点:源到接收者的路径不一定最优,所以相对源树来说它会引入额外的延迟;
组播防环机制
组播数据转发过程
组播路由和单播路由是相反的,单播路由关心数据报文要到哪里去,而组播路由关心数据报文从哪里来;单播报文的转发过程中,路由器并不关心源地址,它只关心报文的目标地址,通过目标地址从而决定了向哪个接口转发数据;而组播报文转发过程中,报文是发送给一组接收者,这些接收者用一个逻辑地址标识(组播地址);路由器在接收到报文后,必须根据源和目标的地址确定出上游接口(指向组播源)和下游方向,然后把报文沿着远离组播源的方向进行转发;组播使用RPF机制来防止环路;
RPF(Reverse Path Forwarding),反向路径转发;该机制主要作用是用来确保组播数据能够沿正确的路径传输,避免组播环路;工作过程大致是路由器收到组播数据报文后,只有确认这个数据报文是从自身连接到组播源的接口收到的才进行转发,否则丢弃;即路由器只有通过路由接口收到组播源的数据才会转发,其他非路由接口收到的数据均丢弃;
提示:如上图所示,对于中间路由器来说,正常报文应该从离组播源最近的接口收到数据,如果不是该接口接受到对应组播数据,而是从其他接口收到组播数据,路由器会认为该数据不应该从该接口收到,所以从该接口收到的对应组播数据都会被丢弃;
RPF检查过程:
1、在单播路由表中查找到组播报文源地址的路由;
2、如果该路由的出接口就是组播报文的入接口,即RPF检查成功;否则RPF检查失败,报文丢弃;
提示:如上所示,如果路由器从s0/0口收到来自192.18.0.32的组播数据,首先路由器会查看自己路由表中去往192.18.0.32的路由的出接口是不是s0/0,如果是,则RPF检查通过,否则对应报文就会丢弃;它会认为该组播数据不应该从该接口进来,即从s0/0口收到来自192.18.0.32的组播数据报文是不合理的;所以要丢弃;
提示:如果从s0/1收到来自192.18.0.32发送的组播数据,路由器查找去往192.18.0.0/16的出接口是s0/1,此时路由器RPF就会检查通过;因为对应去往组播源的单播路由的出接口是组播源发送数据的入接口,路由器认为从s0/1接口收到192.18.0.32的组播数据是合理的,所以路由器开始转发数据;简单讲RPF就是依赖单播路由进行防止环路;