PIM协议原理与配置

PIM协议原理
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

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。

PIM-DM构建SPT
在这里插入图片描述
扩散过程:PIM-DM假设网络中所有主机都准备接收组播数据,当某组播源开始向组播组G发送数据时,具体过程如下:路由器接收到组播报文时会进行RPF检查。如果RPF检查通过,则创建(S,G)表项,然后将数据向所有下游PIM-DM节点转发,这个过程称为扩散(Flooding)。
如果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消息在全网扩散,刷新所有设备上的剪枝定时器状态。

Graft机制
如图所示,当Client B发送组播组G1的IGMP Report报文请求组播数据后。RTE收到Client B的IGMP Report报文,说明RTE具有转发组播数据需求,则立即向上游路由器RTC发送Graft消息,请求上游路由器恢复对应出接口的转发。RTC收到Graft消息后,向RTE回复Graft Ack并将连接RTE的出接口恢复为转发状态。
在这里插入图片描述
Assert机制
根据Assert竞选结果,路由器将执行不同的操作:
获胜一方的下游接口称为Assert Winner,将负责后续对该网段组播报文的转发。
落败一方的下游接口称为Assert Loser,后续不会对该网段转发组播报文,PIM路由器也会将其从(S,G)表项下游接口列表中删除。
Assert竞选结束后,该网段上只存在一个下游接口,只传输一份组播报文。
所有Assert Loser可以周期性地恢复组播报文转发,从而引发周期性的Assert机制。
在这里插入图片描述
相关命令
multicast routing-enable
interface G0/0/0
pim dm
interface G0/0/1
pim dm
interface G0/0/2
pim dm

display pim routing-table
display pim neighbor

PIM-SM

RPT的建立过程
在这里插入图片描述
主机加入某个组播组时,发送IGMP成员通告。
最后一跳路由器向RP发送(,G)Join消息。
,G)Join消息到达RP的过程中,沿途各路由器都会生成相应的(*,G)组播转发条目。
RPT实现了组播数据按需转发的目的,减少了数据泛洪对网络带宽的占用。

运行PIM-SM的网络,都会进行DR(Designated Router)的选举。其中有两种DR分别称为接收者侧DR和组播源侧DR。
组播接收者侧DR:与组播组成员相连的DR,负责向RP发送(*,G)的Join加入消息。
组播源侧DR:与组播源相连的DR,负责向RP发送单播的Register消息。
PIM-SM中DR的选举原则与PIM-DM相同。

SPT的建立过程
如图所示,在PIM-SM网络中,任何一个新出现的组播源都必须首先在RP处“注册”,继而才能将组播报文传输到组成员。具体过程如下:
组播源向组播组发送第一个组播报文。
源端DR将该组播报文封装成Register报文并以单播方式发送给相应的RP。
RP收到注册消息后,一方面从Register消息中提取出组播报文,并将该组播报文沿RPT分支转发给接收者。
另一方面,RP向源端DR发送(S,G)Join消息,沿途路由器上都会生成相应(S,G)表项。从而建立了一颗由组播源至RP的SPT树。
SPT树建立后,组播源发出的组播报文沿该SPT转发至RP。
RP沿SPT收到该组播报文后,向源端DR单播发送Register-stop消息。
在这里插入图片描述
Switchover机制
在这里插入图片描述
PIM-SM通过指定一个利用带宽的SPT阈值可以实现RPT到SPT的切换。
用户端DR周期性检测组播报文的转发速率,一旦发现从RP发往组播组G的报文速率超过阈值,则触发SPT切换:用户端DR逐跳向源端DR发送(S,G)Join报文并创建(S,G)表项,建立源端DR到用户端DR的SPT。

SPT建立后,用户端DR会沿着RPT逐跳向RP发送剪枝报文,收到剪枝报文的路由器将(*,G)复制成相应的(S,G),并将相应的下游接口置为剪枝状态。剪枝结束后,RP不再沿RPT转发组播报文到组成员端。

如果SPT不经过RP,RP会继续向源端DR逐跳发送剪枝报文,删除(S,G)表项中相应的下游接口。剪枝结束后,源端DR不再沿“源端DR-RP”的SPT转发组播报文到RP。
在VRP中,缺省情况下连接接收者的路由器在探测到组播源之后(即接收到第一个数据报文),便立即加入最短路径树,即从RPT向SPT切换。

通过RPT树到SPT树的切换,PIM-SM能够以比PIM-DM更精确的方式建立SPT转发树。

相关命令
multicast routing-enable
interface G0/0/0
pim sm
interface G0/0/1
pim sm
interface G0/0/2
pim sm
pim
static-rp 4.4.4.4

实验

在这里插入图片描述
要求
本实验模拟简单组播的网络环境,完成以下需求:
1.如图所示,配置各设备IP地址。
其中R3配置Loopback0:3.3.3.3/32
2.运行IGP
2.1 R1/2/3/4运行OSPF,进程1。
2.2 RID手动设置如下:
R1:1.1.1.1
R2:2.2.2.2
R3:3.3.3.3
R4:4.4.4.4
2.3 使用network命令宣告,通配符0.0.0.0
2.4 确认所有设备可以访问3.3.3.3。
3.R1/2/3/4运行PIM-SM
3.1 开启组播路由功能。
3.2 所有接口开启PIM-SM。
3.3 静态设置RP为3.3.3.3
3.4 R4上关闭switchover功能。
3.5 PC1加入组播组224.1.1.1,使用IGMPv2。
查看各路由器的组播路由表。描述RPT建立过程。
3.6 使用组播源发送组播报文,组地址:224.1.1.1
3.7 查看各路由器的组播路由表。描述SPT建立过程。
确认组播流量的路径为组播源-R1-R2-R3-R4-PC1。
3.8 R4上恢复默认的switchover功能
再次查看各路由器的组播路由表。
确认当前组播流量的路径为组播源-R1-R2-R4-PC1。

具体过程
1.如图所示,配置各设备IP地址。
其中R3配置Loopback0:3.3.3.3/32
R1:
interface GigabitEthernet0/0/0
ip address 10.0.1.254 255.255.255.0
interface GigabitEthernet0/0/1
ip address 12.1.1.1 255.255.255.0
R2:
interface GigabitEthernet0/0/0
ip address 12.1.1.2 255.255.255.0
interface GigabitEthernet0/0/1
ip address 23.1.1.2 255.255.255.0
interface GigabitEthernet0/0/2
ip address 24.1.1.2 255.255.255.0
R3:
interface GigabitEthernet0/0/0
ip address 23.1.1.3 255.255.255.0
interface GigabitEthernet0/0/1
ip address 34.1.1.3 255.255.255.0
interface LoopBack0
ip address 3.3.3.3 255.255.255.255
R4:
interface GigabitEthernet0/0/0
ip address 34.1.1.4 255.255.255.0
interface GigabitEthernet0/0/1
ip address 24.1.1.4 255.255.255.0
interface GigabitEthernet0/0/2
ip address 20.0.1.254 255.255.255.0

2.运行IGP
2.1 R1/2/3/4运行OSPF,进程1。
2.2 RID手动设置如下:
R1:1.1.1.1
R2:2.2.2.2
R3:3.3.3.3
R4:4.4.4.4
2.3 使用network命令宣告,通配符0.0.0.0
2.4 确认所有设备可以访问3.3.3.3。
R1:
ospf 1 router-id 1.1.1.1
area 0.0.0.0
network 10.0.1.254 0.0.0.0
network 12.1.1.1 0.0.0.0
R2:
ospf 1 router-id 2.2.2.2
area 0.0.0.0
network 12.1.1.2 0.0.0.0
network 23.1.1.2 0.0.0.0
network 24.1.1.2 0.0.0.0
R3:
ospf 1 router-id 3.3.3.3
area 0.0.0.0
network 3.3.3.3 0.0.0.0
network 23.1.1.3 0.0.0.0
network 34.1.1.3 0.0.0.0
R4:
ospf 1 router-id 4.4.4.4
area 0.0.0.0
network 20.0.1.254 0.0.0.0
network 24.1.1.4 0.0.0.0
network 34.1.1.4 0.0.0.0

3.R1/2/3/4运行PIM-SM
3.1 开启组播路由功能。
3.2 所有接口开启PIM-SM。
3.3 静态设置RP为3.3.3.3
R1/2/3/4
multicast routing-enable
pim
static-rp 3.3.3.3
R1:
interface GigabitEthernet0/0/0
pim sm
interface GigabitEthernet0/0/1
pim sm
R2:
interface GigabitEthernet0/0/0
pim sm
interface GigabitEthernet0/0/1
pim sm
interface GigabitEthernet0/0/2
pim sm
R3:
interface GigabitEthernet0/0/0
pim sm
interface GigabitEthernet0/0/1
pim sm
R4:
interface GigabitEthernet0/0/0
pim sm
interface GigabitEthernet0/0/1
pim sm
interface GigabitEthernet0/0/2
pim sm

3.4 R4上关闭switchover功能。
R4:
pim
spt-switch-threshold infinity
#关闭自动切换SPT的功能,默认开启。
本实验提前关闭该功能主要是为了方便查看各设备组播路由表,研究RPT和SPT建立过程。

3.5 PC1加入组播组224.1.1.1,使用IGMPv2。
在这里插入图片描述
R4:
interface GigabitEthernet0/0/2
igmp enable
查看各路由器的组播路由表。描述RPT建立过程。
[R4]dis igmp group
在这里插入图片描述
[R4]dis pim routing-table

R4上的RP为3.3.3.3,根据单播路由表,找到RPF接口G0/0/0,作为组播流量上游接口。
另外,收到IGMP加组消息的接口G0/0/2作为下游接口。即:将来会从G0/0/0接口收到组
播,然后从G0/0/2转发出去。这就是(,G)组播路由表。
[R3]dis pim routing-table
R3的G0/0/1接口会收到来自R4的(*,G)Join消息,则把G0/0/1口作为组播流量的下游接口。
由于暂时没有组播源,所有没有上游接口。此时从RP到接收者的RPT建立完成。
另外,R1和R2此时没有任何组播路由表项,请自行查看。
3.6 使用组播源发送组播报文,组地址:224.1.1.1
3.7 查看各路由器的组播路由表。描述SPT建立过程。
确认组播流量的路径为组播源-R1-R2-R3-R4-PC1。
[R3]dis pim routing-table

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值