组播路由器之间运行组播路由协议,组播路由器协议用于建立和维护组播路由,并正确、高效的转发组播数据包
PIM(protocol independent multicast)是典型的域内组播路由协议,分为DM(dense mode)和SM(sparse mode)两种模型
PIM直接利用单播路由表的路由信息进行组播报文RPF检查,常见组播路由表想,转发组播报文
(RPF,reverse path forwarding,逆向路径转发)
PIM路由表项即通过PIM协议建立的组播路由表项。PIM网络中存在两种路由表项:
(S,G)路由表项或(*,G)路由表项。S表示组播源,G表示组播组,*表示任意。
(S,G)路由表项主要用于在PIM网络中建立SPT。对于PIM-DM网络和PIM-SM网络 适用。
(*,G)路由表项主要用于在PIM网络中建立RPT。对于PIM-SM网络适用。
PIM路由器上可能同时存在两种路由表项。当收到源地址为S,组地址为G的组播报 文,且RPF检查通过的情况下,按照如下的规则转发:
如果存在(S,G)路由表项,则由(S,G)路由表项指导报文转发。
如果不存在(S,G)路由表项,只存在(*,G)路由表项,则先依照(*,G) 路由表项创建(S,G)路由表项,再由(S,G)路由表项指导报文转发。
PIMv2报文头格式
PIM-DM的基本概述:
采用推“推(Push)模式”转发组播报文
PIM-DM的关键任务
建立SPT(shortest Path Tree,最短路径树)
PIM-DM的工作机制:
邻居法发现
扩散与剪枝
状态刷新
嫁接Graft
断言Assert
PIM(Protocol Independent Multicast)协议无关组播,目前常用版本是PIMv2,PIM 报文直接封装在IP报文中,协议号为103,PIMv2组播地址为224.0.0.13。
在PIM组播域中,以组播组为单位建立从组播源到组成员的点到多点的组播转发路 径。由于组播转发路径呈现树型结构,也称为组播分发树(MDT,Multicast Distribution Tree)。
组播分发树的特点:
无论网络中的组成员有多少,每条链路上相同的组播数据最多只有一份。
被传递的组播数据在距离组播源尽可能远的分叉路口才开始复制和分发。
PIM有两种模式:
PIM-DM(Protocol Independent Multicast – Dense Mode)。
PIM-SM (Protocol Independent Multicast – Sparse Mode)。
PIM-DM假设网络中的组成员分布非常稠密,每个网段都可能存在组成员。
其设计思想是:
首先将组播数据报文扩散到各个网段。
然后再裁剪掉不存在组成员的网段。
通过周期性的“扩散—剪枝”,构建并维护一棵连接组播源和组成员的单向 无环SPT。
PIM-DM的关键工作机制包括邻居发现、扩散与剪枝、状态刷新、嫁接和断言。
PIM-DM基本配置
全局开启:multicast routing-enable
接口下配置:inte s 1/0/0
pim dm
PIM-DM邻居发现:
在PIM-DM网络中,路由器周期性发送Hello消息来发现、建立并维护邻居关系。
pim timer hello interval,在接口视图下配置发送Hello消息的时间间隔。Hello 消息默认周期是30秒。
pim hello-option holdtime interval,在接口视图下配置Hello消息超时时间值。默认情况超时时间值为105秒。
DR的选举:
在PIM-DM中各路由器通过比较Hello消息上携带的优先级和IP地址,为多路访 问网络选举指定路由器DR。
DR充当IGMPv1的查询器。
接口DR优先级大的路由器将成为该MA网络的DR,在优先级相同的情况下,接口IP地址大的路由器将成为DR。
当DR出现故障后,邻居路由器之间会重新选举DR。
构建SPT树
扩散
扩散过程:PIM-DM假设网络中所有主机都准备接收组播数据,当某组播源开始向组播组G发送数据时,具体过程如下:
路由器接收到组播报文时会进行RPF检查。
如果RPF检查通过,则创建(S,G)表项,然后将数据向所有下游PIM-DM节 点转发,这个过程称为扩散(Flooding)。
如果RPF检查没有通过,则将报文丢弃。
RPF检查:
RPF检查: 为了防止组播报文在转发过程中出现重复报文及环路的情况,路由器必须执行RPF检查。
所谓RPF检查,就是指路由器通过查找去往组播源的路由来判断所收到的组播 报文是否来自于“正确的”上游接口。某一路由器去往某一组播源的路由所对应的出接口称为该路由器上关于该组播源的RPF接口。一台路由器从某一接口收到一个组播报文后,如果发现该接口不是相应组播源的RPF接口,就意味着RPF检查失败,所收到的组播报文将被丢弃。
剪枝:
剪枝过程:当下游有没有组播成员,扩散组播报文会导致带宽资源的浪费。为避免带宽的浪费PIM-DM使用剪枝机制。
当下游节点没有组播组成员,则路由器向上游节点发Prune消息,通知上游节 点不用再转发数据到该分支。上游节点收到Prune消息后,就将相应的接口从 其组播转发表项(S,G)对应的输出发送列表中删除。剪枝过程继续直到 PIM-DM中仅剩下了必要的分支,这就建立了一个以组播源为根的SPT。
各个被剪枝的节点同时提供超时机制,当剪枝超时时重新开始扩散—剪枝过程。剪枝状态超时计时器的默认值为210秒。
PIM-DM的扩散—剪枝机制周期性进行,每3分钟重复一次,RTC对RTE所在网段处于剪枝状态,RTC对RTE的接口会维护一个“剪枝定时器”,当剪枝定时器超时,RTC 就会恢复对RTE的数据转发,这样会导致不必要的网络资源浪费。
状态刷新:
PIM DM协议采用状态刷新特性解决周期性“扩散-剪枝”带来的问题:离组播源最 近的第一跳RTA周期性触发State Refresh消息。State Refresh消息在全网扩散,刷新 所有设备上的剪枝定时器状态。
状态刷新使得RTE不再周期性的收到组播数据,但是当Client B加入G1组之后,如果 一直是剪枝状态,Client B无法收到组播数据
Graft机制:
如图所示,当Client B发送组播组G1的IGMP Report报文请求组播数据后。RTE收到 Client B的IGMP Report报文,说明RTE具有转发组播数据需求,则立即向上游路由器 RTC发送Graft消息,请求上游路由器恢复对应出接口的转发。RTC收到Graft消息后, 向RTE回复Graft Ack并将连接RTE的出接口恢复为转发状态。
Assert断言机制
如图所示,RTA、RTB、RTC均从上游接口收到组播报文并通过了RPF检查,三台路由器的下游接口连接在同一网段。RTA、RTB、RTC都向该网段发送组播报文,三份重复的组播报文浪费带宽资源。
为避免重复的组播报文浪费带宽资源,PIM路由器在接收到邻居路由器发送的相同组播报文后,会以组播的方式向本网段的所有PIM路由器发送Assert消息,其中目的地址为224.0.0.13。其它PIM路由器在接收到Assert消息后,将自身参数与对方报文中携带的参数做比较,进行Assert竞选。竞选规则如下:
到组播源的单播路由协议优先级较小者获胜。
如果优先级相同,则到组播源的路由协议开销较小者获胜。
如果以上都相同,则连接到接受者MA网络接口IP地址最大者获胜。
根据Assert竞选结果,路由器将执行不同的操作:
获胜一方的下游接口称为Assert Winner,将负责后续对该网段组播报文的转发。
落败一方的下游接口称为Assert Loser,后续不会对该网段转发组播报文,PIM 路由器也会将其从(S,G)表项下游接口列表中删除。
Assert竞选结束后,该网段上只存在一个下游接口,只传输一份组播报文。
所有Assert Loser可以周期性地恢复组播报文转发,从而引发周期性的Assert机制。
在交换机上配置vlan-if口地址,然后运行ospf协议
配置IP和运行ospf协议之后
R:
multicast route-enable
int g0/0/0
pim dm
int g0/0/1
pim dm
SW
multicast route-enable
inte vlan 100
pim dm
int vlan 10
pim dm
igmp enable
v 2
PC加入做播组