1、网络拓扑图
2、重要知识点
几种工作机制:
1)扩散机制:通过组播流进行扩散
- 启动了PIM-DM协议的路由器再接收到组播流量后,首先对组播流量进行RPF检查
- RPF检查通过后,创建(S,G)表项,并将数据向所有下游接口转发,这个过程为扩散
- RPF检查没有通过,则丢弃报文不再继续扩散
- 只要路由组播表项的下游接口为非空,报文就会继续扩散下去
2)剪枝机制,通过prune报文进行剪枝
- 当报文扩散到未端路由器后,路由器发现没有直连组成员或者除RPF接口之外的接口也不存在PIM邻居,则认为下游接口NUII,向上游设备发送剪枝报文。
- 上游设备收到剪枝报文后,将自身(S,G)表项中该下游接口剪除,被剪除的接口会自动关联一个210s的剪枝计时器(210S内不再下发该组组播流量,210s后被剪掉的接口会重新出现在下游接口列表中,组播数据会再次向该接口扩散,一直重复)-此处是不考虑状态刷新机制的情况
- 如果此上游设备的下游接口都被剪除(即下游接口为Nul),会触发路由器继续沿着组播源的RPF发送剪枝4.如果此上游设备(S,G)表项还存在其它下游接口,即下游接口非空,则剪枝结束
3)嫁接(graft)机制
嫁接的作用
通过扩散和剪枝机制可知,在被剪枝的路由器上,如果其下游接口出现组播接收者,接收者需要等待最长210S才可以等到组播流量扩散,获取组播数据。而嫁接机制就是用来降低用户收到组播数据的等待时间,在剪枝定时器210超时前帮助用户收到组播数据嫁接过程--通过Graft报文进行嫁接
- 当被剪枝的路由器从下游接口收到IGMP成员报告后,根据报告报文中的组地址,查询自身的(S,G)表项是否有对应的组播源S信息。
- 如果不存在对应的(S,G)表项,则无法实现嫁接。如果存在对应的(S,G)表项,则会在自身的(S,G)表项添加下游接口,并主动向上游RPF路由器发送Graf报文,并启动嫁接定时器(3s收不到嫁接确认报文会一直发送)
- 上游路由器收到Graf报文后,若下游接口处于还处于剪枝状态,则会把被剪除的接口重新添加到下游接口列表,引导组播流量下发,并回应嫁接确认报文。若下游接口已经处于转发状态,则直接回应嫁接确认报文。
- 若上游路由器在在收到Graft报文之前的下游接口为Nul,收到后变为了非空,则会继续向上游发送Graf报文,依次类推5.若上游路由器在在收到Graft报文之前的下游接口就为非空,则不再继续向上发送Graft报文。
4)断言机制(assert)
- 当触发断言机制后,R1和R2都认为自己是Winner,分别发送Asssert报文(报文携带了各自路由表中自身到组播源的路由协议优先级和度量值)
- R1和R2收到对方发送的Asser报文后,提取出路由协议优先级和度量值进行对比,选举出Winner,其余的为Loser(Winne只有一个,Loser可以有多个)。成为Winner的设备继续发送组播数据3.当R1成为Winner后,R2作为Loser会自动剪除自己的下游接口并立即发送一份剪枝报文给Winner,同时关联一个断言计时器
- Assent Timer(180s超时前接囗会-直保持枝状态)。
- 断言计时器结束后会再次进行断言
对比原则
单播路由协议优先级高的成为Winner(值越小越优)
度量值越小的成为Winner
自身接口IP地址大的称为Winner
5)状态刷新机制(state-refresh)
状态检测机制简称SR,属于PIM DM的可选功能(仅PIM v2支持)此功能通过Hello报文进行协商,默认华为支持PIM DM状态刷新机制状态检测机制的作用
在PIM DM网络中,被剪枝的接口会进行周期扩散组播数据来维持剪枝状态,如果下游没有接收者,那这种扩散对于网络来说就增加了负荷
状态刷新机制通过周期性的扩散SR控制报文(携带组播源与组播组信息)来取代周期扩散组播数据,使已剪枝的接口继续保持剪枝状态
注意
·当状态刷新机制开启后(只需要在连接组播源的接口上开启状态检测机制),只有初次扩散是组播数据,后续扩散都是SR控制报文
当组播源不活跃时,不再产生状态刷新报文
状态刷新报文是逐跳扩散的,每经过一跳,源接口IP的都是出接口IP,目标地址一直为224.0.0.13状态刷新过程--通过SR报文进行状态刷新
- 初次扩散之后,离组播源最近的第一跳路由器会以60s周期性的产生状态刷新报文,并向全网扩散。
- 当设备收到SR报文后,判断报文是否从RPF邻居发来并从RPF接口接收的,如果不是,则丢弃。
- 如果通过RPF检测,并日有接口已经被剪除,则SR报文会复位接口的剪枝计时器(210s),使得接口一直外干声枝状态,并向下游邻居扩散。如果没有接口被剪除,则直接此报文向下流转发。
3、配置
1)第一步:启用组播协议
multicast routing-enable
2)第二步:启用pim协议
pim
3)第三步:接口调用pim dm模式
int g0/0/1
pim dm
4)第四步:接收者接口
igmp enable
igmp version 2