PIM协议详解

PIM独立的组播路由协议(与协议无关的组播路由协议,目前现行PIMv2)

PIM协议产生之前,使用的组播协议是DVMRP(距离矢量组播路由协议),MOSPF(组播OSPF协议),CBT(核心树)...

以上组播协议的特点依赖单播路由协议的类型来进行工作

在PIM-DM网络中,路由器周期性的发送Hello消息来发现,建立并维护邻居关系

DM的任务就是构建并维护SPT树:源到组成员组播的最短路径,SPT树通过(S,G)表项来描述

S表示组播源的地址

G表示组播组的地址

PIM-DM 密集模式:假定每条链路都有接收者,所以可以在每条链路上直接推送组播流量

PIM-DM的DR没有实际用途,为多路访问网络选举指定路由器的DR,做为IGMPv1的查询器,对于DM模式来说,DR没有任何用途

DR选举机制:1,hello报文中协议DR优先级,优先级越大优先成为DR,具备抢夺性

2,如果DR优先级相同,则比较接口IP,IP地址大的成为DR

PIM-DM扩散过程:

扩散过程:假设网络中所有主机都准备接收组播数据,当某组播源开始向组播组G发送数据时

@ 路由器收到组播报文时会进行RPF检查

@ 如果RPF检查通过,则创建(S,G)然后将所有下游PIM-DM节点转发,这个过程称为扩散,(S,G)表项默认老化时间是210s,

210s内没有收到组播流量则删除该(S,G)表项

@ 如果RPF检查不通过,则将报文丢弃

启用PIM协议的路由器在接收到组播流量后,首先对组播流量进行RFC反向路径检测

RPF检测成功则创建(S,G)表项

会查三张表路由表,MBGP表,组播静态路由表

如果配置了按照最长掩码匹配选择路由则按照掩码最长的匹配,如果没有配置则按路由优先级选择

优先级也一样则按照该顺序选择,组播静态路由>MBGP>路由表

上游接口:就是RPF接口,负责接收(S,G)的组播流量,对于每个(S,G)表项来说,RPF接口有且只有一个

RPF接口不能成为下游接口

@如果去往组播源是负载分担的,则选择下一跳地址大的接口为RPF接口,RPF接口有且只有一个

@如果RPF接口上存在多个PIM邻居,则邻居地址大的为RPF邻居

下游接口:将RPF接口收到的组播流量发送出去的接口,即存在直连组成员的接口(由IGMP协议维护)以及存在PIM邻居的接口,

将组播流量通过下游接口扩散

剪枝机制: 当路由器发现没有直连组成员,除RPF接口之外的接口也不存在PIM邻居,则认为下游接口为noll,则向RPF接口发送剪枝报文(Prune报文)

上游接口收到剪枝报文后,将自身(S,G)表项中该接口剪枝(210s内不再下发该组播流量),此时如果该路由器(S,G)

表项还存在其他下游接口,剪枝结束,如果(S,G)表项下游接口为noll,则继续沿S的RPF发送剪枝报文

嫁接机制:在剪枝定时器超时之前(210s)cisco是180s,如果有组成员加组的需求,需要通过嫁接机制,帮助组成员快速拿到组播流量

路由器收到组成员的报告报文后,根据报告报文中的组地址,查自身的(S,G)表项,获取组播源S的信息

如果不存在对应的(S,G)表项,则无法实现嫁接,那么就要求全网路由器在组播源活跃期间都必须维护(S,G)表项的存在

所以PIM-DM模式在组播源活跃期间周期性的扩散和剪枝来保证(S,G)表项不会老化

当存在对应的(S,G)表项,路由器根据组播源的地址进行RPF检查,向去往组播源的RPF接口上的RPF邻居发送单播的嫁接报文(Graft报文)

上游路由器接口接收到嫁接报文后,将该接口加入到自身的(S,G)表项的下游接口中,引导组播流量下发,同时回复单播的嫁接确认报文

剪枝到哪,嫁接就到哪

状态刷新机制:PIM-DM后序新增的机制,华为设备默认开启,思科默认关闭

在连接组播源的接口上开启状态刷新机制即可

由于DM周期扩散和剪枝,而嫁接的需求不多不频繁带来带宽和设备资源浪费

该功能启用后,连接组播源的第一跳路由器在组播源活跃期间,每个60s向所有PIM邻居发送状态刷新报文(State Refresh报文)

状态刷新报文中携带组播源的地址和组地址,当路由器收到状态刷新报文,则意味着组播源是活跃的,所以

重置剪枝接口的剪枝定时器,维持剪枝状态,同时重置(S,G)表项的老化时间,这样全网路由器依然可以在

组播源活跃期间维护(S,G)表项的存在,并保持接口剪枝状态,无需周期性的扩散和剪枝维护表项

节省设备资源和链路带宽

断言机制:为了防止在链路上重复发送相同的组播数据,而开发的机制

当路由器在某个下游接口发送(S,G)流量时,同时在该接口也收到相同的组播流量,则触发断言机制该接口就会

发送断言报文(Assert报文),目的地址224.0.0.13

断言报文中携带3个参数,进行断言的选举,断言的优胜者继续发送组播流量,断言的失败者,将断言失败的接口从自身(S,G)

表项中剪枝掉,比较规则:

1,自身去往组播源地址的路由协议的优先级,越小越优

2,自身去往组播源地址路由的开销值,越小越优

3,自身接口的IP地址,越大越优

参与竞选的路由器失败者可以周期性的恢复组播报文转发并周期性的重复竞选过程,重复时间为60s

竞选失败的路由器还会向外发送一个剪枝报文。竞选成功的路由器收到剪枝报文会启动一个定时器,RTD也收到剪枝报文会立即发送一个join报文,剪枝否决

剪枝否决机制:

在广播多路访问环境中,PC2不属于组228.1.1.1,则R4会向上游接口的PIM邻居发送剪枝报文,但会导致PC1接收不到组播报文。

所以R3也接收剪枝报文后,会发出join消息拒绝剪枝。

当R2接收到剪枝报文,会启动一个剪枝计时器,2.5s,这样是为了防止后面接收到 join消息,导致组播流量断断续续。

启用PIM/SM协议的接口,收到IGMP的报告报文,会自动创建(*,G)表项

DM模式不用关注(*,G)的作用,DM模式通过(S,G)进行组播流量转发

创建(S,G)表项的下游接口,从对应的(*,G)的下游接口复制而来

PIM-SM 稀疏模式

适用于需求很少,范围很大的场景,采用“拉”的方式,在SM模式中,找RP(汇聚点)去拉组播流量

即也就要求全网路由器都事先要知道某个组的RP地址即可

连接组成员的路由器会逐跳的构建一颗以RP为根的RPT树,即共享树,RPT树的根是RP,用(*,G)描述

连接组播源的路由器只需要将组播流量分发给这个组的RP即可,构建一颗源到RP的SPT树,SPT树的根是组播源,用(S,G)描述。

RP树的建立过程:

1,当连接组成员的DR路由器收到IGMP报告报文,创建(*,G)表项,根据G查找对应的RP地址,收到报告报文的接口为(*,G)的下游接口

2,根据RP的地址进行RPF检查,找到去往RP的RPF接口,并发送(*,G)join报文,该RPF接口为(*,G)表项的上游接口

3,上游路由器收到(*,G)join报文后,创建(*,G)的表项,收到(*,G)join的接口为下游接口,根据G地址查RP地址,找到RP的PRF

接口作为上游接口,并继续向RPF接口发送(*,G)join,逐跳构建RPT树到RP为止

源到RP的SPT构建过程:

1,当连接组播源的DR路由器收到组播流量后,根据组地址查到RP的地址,将组播报文通过 Register报文中单播发往RP,

在RP上创建(S,G)表项,注册源信息。(携带源信息和组信息)发送给RP

2,如果RP存在(*,G)表项,并存在下游接口,则解封装注册报文,根据RPT树转发组播流量,并根据组播源地址查RPF接口,

RP会向源端DR逐跳发送(S,G)Join 报文。发送过程中在PIM路由器创建(S,G)表项,从而建立了RP到源的SPT。

3,如果RP上不存在(*,G)表项或者没有下游接口,则直接注册停止报文给源端DR,源端DR停止将组播报文封装在注册报文中,

RP也不会在发送(S,G)的join报文,源端DR每隔60秒发送一注册报文,RP向源端DR发送注册停止报文

配置静态RP命令:[Huawei-pim] static-rp 10.110.0.6

PIM-SSM模式(*,G)表项规则

1,(*,G)总是被·显式上网report报文或者(*,G)Join报文触发而产生

2,(*,G)上行接口规则:总是指向去往改组的RP的RPF接口

3,(*,G)下行接口规则:收到report报文或者(*,G)Join报文作为下行接口

PIM-SM模式(S,G)表项规则

1,(S,G)总是被显式的(S,G)Join报文触发而产生,或者收到(S,G)组播流量,register报文

2,(S,G)上行接口:总是指向去往该组的组播源的RPF接口

3,(S,G)下行接口规则:(S,G)join报文做为下行接口以及与之对应的(*,G)的下游接口的副本

Switchover机制,SPT切换

当组播流量的路径出现多跳分叉,可能会出现成员端到组播源非最优路径

R2直接走R6 比 R2走R1在到组播源更优化

用户端收到组播报文的速率超过阈值时,由连接组成员的路由器发起SPT切换,发送 (S,G)的join消息

阈值默认为0,表示只要我收到组播流量就进行SPT切换

那么如何区分成员端DR发出的是(*,G)的join还是(S,G)的join呢?

在发出的join报文中有该字段表示:

S置为1表示这是稀疏模式,R置为0表示这是(S,G)的join,join的IP地址则为组播源的ip地址

关闭SPT切换命令:【R3-pim】spt-switch-threshold infinity //将阈值改为无穷大,无论什么时候都不进行SPT切换

华为默认(S,G)表项优先于(*,G)表项

BSR协议,动态生成RP的协议

1,C-BSR 在网中指定一个或者多个C-BSR

2,在C-BSR中选举出BSR

BSR选举机制:

1,C-BSR会周期性向所以PIM邻居泛洪自举报文, 自举报文ttl值为1,源地址会改变成发送该报的接口的地址,目的地址是所以pim邻居224.0.0.13

2,当C-BSR收到其他C-BSR的自举报文后,开启BSR选举

@BSR竞选优先级越大越优,默认为0

@竞选优先级相同,则比较BSR的竞选地址越大越优先

@BSR可以抢夺

@BSR选举完成后,C-BSR停止发送自举报文

@BSR周期性60s发送自举报文,全网路由器都知道BSR是谁

  • 25
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路明非z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值