PIM-DM/SM

来源:互联网 发布:淘宝网最新版本下载 编辑:程序博客网 时间:2024/04/25 09:58
PIM-SM模式和PIM-DM模式除了在发现组成员的方式上不同之外,记录路由表的方式也不一样,例如网络中有一个组,地址为:224.1.1.1,发送者为100.1.1.1,PIM-SM模式记录为(*,224.1.1.1),可以看出,PIM-SM模式并不关心组播的源地址,而统统将源地址使用星号*来表示,这样一来,PIM-SM为一个组只记录一个条目,而不管这个组有多少个发送者。这样的记录方式称为(*,G),其中*就是组播源地址,G就是组地址。如果有10个组,每个组有5个发送者,使用(S,G)的记录方式,需要记录10×5=50条,而使用(*,G)的记录方式,则只需要10条,所以使用PIM-SM模式,可以大大缩减组播路由表的空间,从而大大节省系统资源。PIM-SM模式不仅需要记录(*,G)信息,也和PIM-DM模式一样需要记录在该组中,哪些接口是出口,从此接口将数据发给接收者。但是与PIM-DM模式不同的是,PIM-SM模式只记录连接着接收者的接口,其它没有接收者,不需要接收组播的接口是不会被记录的。比如路由器上有5个接口有PIM邻居,其中只有一个是出口,再去掉1个RPF接口,还剩3个PIM接口是不需要接收组播的,在PIM-DM模式中,会记录下一个RPF口和一个forwarding状态的出口,以及三个不需要接收组播的pruning状态的接口,而在PIM-SM模式中,只会记录一个RPF口和一个forwarding状态的出口,其它的都不作记录,因此,PIM-SM模式的接口记录方式会比PIM-DM模式更省资源。

在PIM-SM中,因为(*,G)形式的记录中不知道组播源的地址,也就无法完成RPF检测,但是又由于接收者收到的数据,都应该是RP发来的,路由器也就认为PIM-SM中的组播源地址,就是RP的地址,在这种情况下,路由器会以RP的地址为源地址做RPF检测,但是在下面的拓朴中,就会出现问题:

PIM-DM/SM - suy - Suy的博客
如上图所示,当所有路由器都认为RP地址23.1.1.3就是组播源地址时,这样去做RPF检测,在R4上检测时,因为R4的路由表中会显示从接口S0/0出去可以到达23.1.1.3,所以组播从R4的S0/0被发进来时,则RPF检测可以通过,所以在R4上没有任何问题。当在R2上做RPF检测时,因为R2的路由表中显示到达23.1.1.3应该从接口F0/1出去,所以R2只会接收从接口F0/1发进来的组播,从其它接口发进来的,都会被认为是环路而被丢弃。因此在真正的源12.1.1.1将组播从R2的F0/0发进来时,R2会因为RPF检测失败,从而丢弃所有的组播数据,这样一来,组播也就无法通信了。
在PIM-SM中,组播源没有机制用来宣告自己的存在,又因为PIM路由器都认为RP才是组播源,而当直接的组播源向RP发送组播时,会导致某些路由器RPF检测失败,因此在PIM网络中,真正的源需要向RP发送注册消息,以宣告自己的存在,而发送注册消息在多路访问的网络中则是由DR来代为完成的。真正的源向RP发出第一个组播包时,DR将此包封装在单播中发向RP,这称为注册,发送的注册消息会从DR到RP之间建立一条源树,也就是(S,G)的记录,这样,在源到RP之间创建的源树就可以帮助避免RPF检测失败,当RP和真正的源之间创建(S,G)条目之后,就会通知DR停止以单播发送,从而转回发送真正的组播。因为由于误认为RP是源而导致RPF检测失败的情况,只有在RP到源这段上游网络中的路由器才会存在,而RP到组成员的这段网络中是不会出现这种情况的。由此可以想象得出,当源所在的网络需要向RP发送数据包时,应该将DR的位置选为最靠近RP的路由器,否则也会因为RPF检测失败而导致组播不通。
原创粉丝点击