组播原理详解 联系客服

发布时间 : 星期四 文章组播原理详解更新完毕开始阅读64a8e80053ea551810a6f524ccbff121dd36c594

的,而成员查询消息是路由器发出,用来查询网络上是否还有某个组播组的成员的。以上图为例,分析一下IGMP协议的运行过程:

1。本地网络上的一台主机加入了一个多播组G,于是该主机发出一个IGMP加入消息给路由器,告诉路由器自己想加入组播组G,于是路由器开始从上游引入组播组G的数据到本地网络;

2。路由器转发组播组G的数据一段时间后,会发出一个查询消息,看网络上是否还存在组播组G的成员(因为有可能刚才加入的那台主机已经退出组播组了),加入组播组的成员要重新发布IGMP加入消息来作为成员查询消息的响应,如果没有组播组的成员了,路由器将收不到响应,这时候路由器将再次进行查询尝试,如果还没有主机应答,路由器就认为网络上已经没有针对组播组G的主机了,于是停止转发组播组G的数据;

3。路由器发出组播组成员查询消息后,只要收到一台主机的响应,则路由器就必须继续转发组播组G的数据,不能因为网络上接收端的数目少而停止发送。

这样IGMP协议就很清楚了,我们来看一下IGMP窥探协议是怎样工作的。

IGMP窥探是这样的,交换机分析每个接收到的组播数据帧(IGMP加入消息是以组播方式发送的),看该数据正是否是一个IGMP加入消息,如果是,则从该消息中就可以判断出发出该消息的主机想加入的组播组,根据该组播组的IP地址形成组播MAC地址,并把接收到该消息的端口加入出口列表,这样一个组播转发项就创建完成了。

完成之后,交换机把刚才拦截的IGMP消息再不加改变的转发出去。这样不停的窥探,交换机就可以掌握网络上的组播成员情况,并反映在自己内部的组播转发表里,以后就根据创建的组播转发表来进行数据的转发。

IGMP窥探存在一个严重的问题,就是交换机必须分析每个组播数据帧,判断该数据帧是否是IGMP加入消息,如果是,则进行进一步分析,否则转发。这样对一些低性能的交换机来说,是一项很繁重的任务,所以该协议不适合低端交换机,而适合一些核心层的骨干交换机。

到此为止,一些二层的组播协议我们都做了个大体的介绍,相信读者读了这些介绍后,应该对这些协议有个大致的了解了,详细的了解以及一些具体的配置命令请参考相应的书籍。

第三章 三层组播基础概念

在前面部分的介绍中,我们集中在了对二层组播基础概念的介绍上,在本章中,我们引入一些三层组播的基础概念,在这些概念的基础上,简单介绍目前流行的组播路由协议(注意跟二层组播协议的区分)原理及应用场合,使读者对这些协议有个大致的了解,并为以后详细学习这些组播路由协议打下基础。

3.1 组播转发项,组播树和RPF检查

为了引入这些概念,我们首先看一个实际的网络图:

在该图中,路由器MR1连接了一台多播数据源,该数据源不停的播放多播数据,MR2和MR3连接的本地网络都有数据接收端,MR4的本地网络没有数据接收端。这样MR1在转发多播源数据的时候,就只需向MR2和MR3转发即可,没有必要再转发给MR4。这样我们可以通过在路由器MR1上创建三层转发项来完成,三层转发项可以是这样的结构:(S,IIF,G,{S0,S1,...}),其中S是组播数据源的IP地址,IIF是到达组播源S所使用的接口,即在单播方式下,路由器如果要给组播源S发送数据,则通过IIF接口发送,而G则是组播组地址,{S0,S1,。。。}是一个出口集合。这个转发项的含义很明确,就是当路由器接收到一个数据报后,把这个数据报的源IP地址和目的IP地址(该目的IP地址是一个组播地址)读出来,跟转发项匹配,如果有一个转发项的源地址跟组播组地址相同,则把这个数据报向出口集合中所有的接口转发(需要注意的是,在把数据包发送出去之前,还需要进行一个RPF检查,只有通过了才转发,否则丢弃)。 网络上所有路由器的三层组播转发项串接起来,就构成了一棵组播转发树,比如,在下面的图形中,MR1的组播转发项为(S,E0,G,{S0,S1})(其中S0,S1连接MR2和MR3路由器),MR2组播转发项为(S,S0,G,{E0}),MR3组播转发项为(S,S0,G,{E0}),这样就构成下面的树状结构(以红色线条标出):

可以看出,这棵树是以数据源为根的,所以叫做源组播树(还有一种组播树叫共享组播树,后面介绍)。组播数据就是沿着这棵树向下流动的。 在介绍了组播转发项和组播树之后,我们看一个在三层组播中的一个非常重要的概念:RPF(反向路径转发)检查。为了解释RPF检查提出的原因,请参考下面的示例:

在这个简单的网络结构中,流媒体服务器不断的发送出组播数据流,这样跟流媒体服务器连接到同一个以太网交换机上的两个路由器就都会接收并转发该组播数据流。于是一个问题出现了:路由器MR会从两个接口S0,S1上分别收到相同的组播数据流,这个时候MR选取哪个组播数据流并进行转发呢?如果MR把两个组播数据流都进行转发,肯定是不合适的,假设组播数据流是一个电视频道,这样必然引起图象的重复出现,严重影响画面。 于是我们可以这样选择:选择一个组播流,该组播流从组播源到路由器经过的路径最短。

比如在上面的网络中,我们让路由器MR选择从接口S0进入的组播流,因为S0直接连接了组播数据源,而S1的组播数据源则经过了另外一台路由器。然而路由器怎样知道从哪个接口进入的数据流是最近的呢?答案是查找单播路由表。

到此为止,大家对RPF检查的背景一定有印象了,下面我们给出RPF检查的定义:支持组播的路由器每当接收到一个组播数据报,首先把组播数据报的源IP地址提取出来,然后根据这个源IP地址查自己的单播路由表,查找的结果是一个接口,如果该接口跟接收到报文的接口相同,则根据多播转发表来转发该组播数据报,如果不相同,则丢弃该组播数据报。

RPF检查是三层组播中一个最重要的特性,正是它的存在,才把组播转发表和单播转发表结合了起来,在进行组播数据转发的时候,把单播转发表作为参考依据。而且RPF检查确保了到达的数据流不会重复,也确保了到达的数据流对网络的影响最小(因为数据流是通过最短的路径过来的)。

3.2 组播路由协议

在上面我们介绍了组播转发表的概念,组播路由器在进行组播数据的转发的时候,就是依该转发表为基础来进行数据转发的,需要注意的是,在进行组播数据转发的时候,还需要做一个重要的动作:RPF检查。

现在的一个问题是:组播路由器上用于组播数据转发的组播转发项是如何建立起来的?答案是组播路由协议。

跟单播路由协议一样,组播路由协议用于建立路由器上用于组播数据转发的组播转发项。目前常用的组播路由协议有DVMRP,PIM-DM,PIM-SM等。在介绍这些协议之前,首先引入两个概念:剪枝和嫁接。

考虑下面的图形:

组播路由器MR从接口S0,S1上分别接收到组播数据,然而经过RPF检查后,S1上接收到的组播数据被丢弃了,因为在单播路由表中通往流媒体服务器的接口是S0。但是RPF检查是发生在MR上的,连接MR S1接口的路由器(假设为RT1)却不知道MR不需要从