(1)多播路由协议(路由器之间的交互):主要有mospf,dvmrp,pim这三个。
前面两种协议需要建立自己的多播路由表。大多数路由器只支持pim。
PIM,协议无关性,它不需要建立自己的路由表,关心的只是路由器中有没有单播路由表,无论这个单播表项是怎样建立的,通过怎样的路由协议。
PIMMODE:PIMDM(密集模式,使用源分发树),
PIMSM(稀疏模式,使用共享分发树),
PIMSDM(稀疏密集模式,先尝试使用共享树,找不到RP再切向源分发树)
PIMDM,用于用户密集的情况,如果存在着没有要求多播的路由器则将其“裁剪”,如果存在着后来接入又需要多播的路由器则将其“嫁接”!
PIMSM,用于用户分散的情况,只有一棵树,初始为空,只有路由器发起要求才建立分支。这种模式存在着第一个到目的的数据包会触发目的向源发送一个单播形式的该数据,如果到源的路径好过走rp的路径则自动向最佳路径切换。
PIMSDM,使用最多的模式,效率最高。
rp的选举问题,三种方式:手工指定,autorp(ciscoonly),BSR自举路由器(只有pimv2支持)
配置:
(config)#ipmutilcast-routing
(config-if)#ippim模式
密集模式的配置:
(config-if)#ippimdense
稀疏模式的配置:
静态:(config)#ipmutilcast-routing
(config-if)#ippimsparse
(config)#ippimrp-addx.x.x.x
(config)#ippimspt-thresheldinfin/具体值指定向源切换的界限
auto:定义候选者,(config)#ippimsend-rp-amounce接口scopettl值(定义边界)group-list访问列表
定义映射代理,(config)#ippimsend-rp-discoveryscopettl值
指定模式,(config-if)#ippimsp-demode
注意,要224.0.1.39和224.0.1.40一对组播地址支持rp选举:
rp映射代理发往rp候选者用224.0.1.40
反过来,用224.0.1.39
BSR:(config-if)#ippim1/2更改pim版本号,bsr只支持2
(config-if)#ippimbsrborder定义多播边界
(config)#ippimrp-candidate接口定义rp候选者
(config)#ippimbsr-candidate接口定义bsr
这里,bsr用224.0.1.13向候选者通告,候选者用单播回应bsr。
shipmroute;shippimint;shippimnei;
shippimrp;shippimbsr;shippimmap.
(2)IGMP(Internet组管理协议)处理pc和router的交互。
三个版本:
igmpv1:report(pc发出,地址255.1.1.1,ttl=1),query(router发出,发项0.0.0.0,60秒一次,120s没收到report回应则停止向该pc发组播)。
igmpv2:在v1基础上增加了一个leave消息,query消息的作用就变成了防止pc意外离开(没有leave消息,不被router所知)。
igmpv3:可以对信源地址做控制了,选择pc需要的特定多播。
另外还有一个igmpv3lite,是cisco私有的过渡方案,目的是让程序员能立刻编写ssm。
(3)switch的多播处理:cgmp和switchsnooping
CGMP:思科私有协议,运行于思科交换机与思科路由器之间,让交换机能够通过路由器给出的消息间接支持组管理。
流程大致是:pc发igmp告知路由器我需要什么多播,如果路由器就直接把多播传入则经过交换机的时候会被交换机发向与该pc一个vlan的所有主机,router需要将该多播的mac通告交换机,让其明白多播具体该发向哪,并建立一个多播的转发表。
IGMPsnooping:公有协议,只要交换机单独运行即可。它是靠帧听igmpreport来建立多播转发表的。所以对于2层交换机,因为看不到3层信息,所以要监听每一个组播帧,从中发现igmp成员报告,这样加大了cpu等资源的使用,比较不利;而对于3层交换机,能够看到3层信息,可以识别igmp成员报告,只要处理igmp流即可,所以负担轻。