协议无关组播-密集模式 PIM-DM
一、组播路由协议
(一)
路由器依靠转发项来转发组播数据包。转发项的生成则是组播路由协议所要完成的任务。组播路由协议有距离矢量组播路由协议(DVMRP)、协议无关组播-密集模式(PIM-DM)、协议无关组播-稀疏模式(PIM-SM)、开放式组播最短路径优先(MOSPF)、有核树组播路由协议(CBT)等多种.这里只讲述目前最成功也是最流行的PIM协议.
协议无关组播
PIM(协议无关组播)表示它不依赖于某种具体的IP路由选择协议。它仅仅是利用单播路由表来实现RPF校验功能。因此,它能工作在任何可以产生单播路由表的IP路由协议上,包括静态路由。值得强调的是:协议无关并不是指不需要单播路由协议;相反,组播协议必须有单播路由协议的支撑,因为它无单播路由功能。
PIM协议报文基于UDP协议,其端口号是103。PIM还有专门的组播地址224.0.0.13,表示所有的PIM路由器。
在组播应用环境中大致可分为两类:一类是密集环境。即:在某一个范围内组成员众多。比如:股票交易大厅信息的发布,学校的网上教学等。路由器的几乎每一个接口都有组成员正在接收组播信息。对于这种环境将采用密集模式协议如:PIM_DM(协议无关组播_密集模式)来解决。
一类是稀疏环境。即:在某一范围内组成员比较少或分布比较散。路由器只有少数几个接口上有组成员接收数据。比如:小区音/视频点播等。在这种环境里将不再适宜采用密集模式协议,因为这将增加路由器的负担和导致网络拥塞。因此,如果采用稀疏模式的组播协议(比如PIM-SM,协议无关组播-稀疏模式)将带来更大的好处。
(二). PIM_DM
-
PIM_DM转发
在运行PIM-DM协议的网络中,路由器默认所有接口上都有接收者。当组播数据到达路由器后,路由器立即建立起转发项。转发项的入接口是路由器依据单播到数据源的接口;出接口则包括除入接口外的所有接口。如果数据RPF检查成功,它将根据转发项向所有接口(除入接口外)溢流。 -
PIM_DM剪枝
如果路由器所有出接口上都没有接收者,它将清空转发项的出接口列表,并向其RPF上游发送剪枝消息,以使组播数据不再流向本路由器。上游路由器收到剪枝消息后,从转发项出接口列表中删除接收到剪枝消息的接口。组播数据就不再从该接口转发出去。
但是这种状况只能维持一段时间。在经过一段时间后,上游路由器重新将该出口添加到转发项出接口列表中。组播数据又能流向先前被剪枝的下游路由器。然后,下游路由器再发起剪枝。周而复始,这个过程被称之为扩散-剪枝。 -
PIM_DM嫁接和嫁接应答
当剪枝期间,路由器需要接收组播数据(比如:收到IGMP加入),怎么办?这时,路由器并不需要等到下一个扩散-剪枝周期,而是立即向RPF上游路由器发送嫁接消息,要求将自己添加到出接口列表中。
上游路由器收到嫁接消息后,立即回送一个嫁接应答,告知下游路由器已收到嫁接消息;然后,上游路由器将收到嫁接消息的接口添加到出接口列表中。组播数据就能够到达希望接收数据的路由器和组成员。 -
PIM_DM状态维护
PIM_DM如何维护转发项而不必总是重复创建过程?PIM_DM是依靠组播数据流来维护的。只要路由器收到某个组的组播数据包,路由器就刷新该转发项。路由器如果长时间未收到这个组的组播数据包,将删除该转发项。 -
断言(assert)机制
在共享网段上,当有多个路由器向网络上发送组播数据包时,共享网段上将收到重复的数据包。怎么办?Assert断言机制能够解决这个问题。
当路由器从出接口接收到其它路由器发来的重复组播数据时,路由器将向该出接口发送断言消息。断言消息中带有本路由器的优先级、到源S的路由开销等信息。
网段上的其它路由器收到断言消息后,将对端路由器的优先级、路由开销以及IP地址与自身相比较(先比较优先级,优先级低者获胜;若二者相同,则比较路由开销,开销小者获胜;若二者还相等,则比较IP地址,大者获胜)。若自己失败,则剪枝该接口,不再向该共享网段转发组播数据包。若自己获胜,则发送断言消息,申明组播数据流应该从本出接口转发,其它路由器重复上面的动作。 -
PIM邻居发现与PIM HELLO消息
路由器周期性的发送Hello消息到所有PIM路由器(224.0.0.13),并借此来发现邻居,建立邻居关系。PIM路由器可以借邻接关系判断自己是否为叶路由器。
PIM Hello消息除了用于建立邻接外,它还被用来为共享网段上选择指定路由器(DR)。PIM路由器都被配有优先级。这个优先级被包含在PIM Hello消息中。当路由器收到PIM Hello消息时,先比较自己的优先级。如果自己的优先级高,路由器将默认消息源为DR,自己变成非DR。当优先级相同时,IP地址最大的获胜,被选举为DR。
DR主要应用在SM中,将在SM中由DR负责向上游发起加入/剪枝过程,或是将直连组播源的数据发向组播分发树。
如果路由器是工作在IGMPv1下,DR同时也是IGMP查询器。
PIM-DM
三层交换机上的配置
+启动组播进程
multicast routing-enable
+在接口上启动PIM-DM
pim dm
禁用PIM-DM协议
undo pim dm
pim timer hello seconds
undo pim timer hello
pim timer hello命令用来配置接口发送Hello报文的时间间隔,undo pim timer hello命令用来恢复接口发送Hello报文时间间隔的缺省值。
display pim interface [interface-type interface-number]
显示当前运行PIM接口的简要信息。
display pim routing-table [ { { *g [ group-address [ mask { mask-length | mask } ] ] | **rp [ rp-address [ mask { mask-length | mask } ] ] } | { group-address [ mask { mask-length | mask } ] | source-address [ mask { mask-length | mask } ] } * } | incoming-interface { interface-type interface-num | interface-name | null } | { dense-mode | sparse-mode } ] *
显示dm或sm组播路由表。
debugging pim dm { all | mrt | timer | warning | { revc | send }{ all | assert | graft | graft-ack | join | prune}}
打开和关闭PIM-DM的调试开关
例子
+配置VLAN虚接口。
PIM-DM协议是应用层协议,运行在三层接口上。
+其次,启动组播路由协议
multicast routing-enable
+在每个VLAN接口视图配置PIM-DM
pim dm
PIM-DM组播网络配置就完成了。记住:组播协议必须依赖单播路由才能工作。单播路由协议可以是OSPF、RIP或者是静态路由等。
www.huawei.com