关于组播

来源:互联网 发布:windows文件系统结构 编辑:程序博客网 时间:2024/05/22 15:41

这篇总结是针对如下问题而专门整理的:

问题:

1 组播完成后才能形成路由表,但是组播树形成的过程中又有一个反向路径。那么这不是矛盾吗?

2 224.0.0.5这种组播协议具体是怎么做的,是否依赖于前面的组播树。因为这时候还没有单播的路由表啊。


解答:

概念上区分两种类型的组播:

1 传统意义的组播。

2 源组播,典型例子就是224.0.0.5/6的OSPF组播。


对于传统意义上的组播,核心有三点:

1) 通过IGMP Snooping在主机和与主机直接相连的组播路由器之间建立组播对应关系;

2) 路由器通过运行组播路由协议(如PIM-SM)形成PIM路由表,在汇总成组播路由表(Multicast Routing-Table),最后形成组播转发表(Multicast Forwarding-Table)。

3) 逆向路径转发(Reverse path forwarding, RPF).

RPF是组播路由的基础,必须在RPF检查通过后,才可以创建组播路由表项、构建组播分发树,从而转发组播报文。执行RPF检查的依据是单播路由或组播静态路由,单播路由表中汇集了到达各个目的网段的最短路径,而组播静态路由表中则列出了用户通过手工静态配置指定的RPF路由信息。设备在接口上收到组播报文后,如果去往组播源的单播路由也是从该接口学到的,则转发组播数据,否则丢弃。



对于源组播,其本质上就是在同一个网段local的广播。

OSPF里面224的组播不需要构建组播树,这个是与PIM-SM协议最本质的区别,所以它也就不需要进行RPF检查,所以也就是不需要预先的单播路由了。OSPF里224的组播本质上就相当于一种广播,在这个Area中进行泛洪Flood,其实大多数协议用来维护邻接关系都是用这种方法,只不过有的用的广播(如RIP),有的用的是组播而已。

由于它本质上就是一种local或者说同一个网段的广播,所以1)所有路由器都靠224.0.0.5的地址发送hello包,用来维持邻居关系;2)所有的DROTHER靠组播地址224.0.0.5都只将自己学习到的路由通告给DR;3)DR收到各个DROTHER的路由信息后,通过224.0.0.6的组播地址再把自己从所有DROTHER那里收到的路由更新发送到其它DROTHER上,上述过程都是针对在同一个网段中。


NBMA网络本质上就是把非广播介质通过手动配置成为支持广播特性。



最短树、共享树和双向树

PIM-SM中的SSM(Source Specific Multicast),是指应用程序的组播源是预先知道和设定好的,则组播接收者可以直接按照RPF生成到组播源的最短路径树SPT。

PIM-SM中的ASM(Any Source Multicast),是指发送者(组播源)和接收者(组播目的)之间是不用预先互相知道的,这时就需要静态配置也可以动态选举RP(rendezvous point)用于构建PIM组播共享树。接收者加入以RP为根的组播树;发送者发出的包被路由器trap到,并封装在PIM注册消息中发送给RP。顾名思义,共享树可以支持当个组播源,当然也可以供多个组播源共享使用。由于组播源和RP可能不是同一个路由器,这时通常要切换到最短路径树(SPT),有两个好处:1) 当组播源有大量数据要发送的时候,共享树自然就不是最优的,SPT可以优化数据路径;2) 减少组播源发往RP的PIM注册消息数量。本质上,共享树和SPT都是通过前面所谓的RPF来实现的,只不过由于树根不同,前者是从接受者到RP路由器,后者则是从接受者到组播源。

不管是ASM还是SSM,组播树的数量都和组播源的数量成正比,这就造成了扩展性的问题。为此,双向树(PIM-BIDIR)会让所有的组播源和接受者都在同一个共享树上,并省去了PIM注册消息的封装。但问题是组播路径并不优化,因此带宽节省率有限。




0 0