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

PIM协议原理与配置相关推荐

  1. OSPF协议原理及配置4-邻接关系的建立和LSDB同步

    OSPF协议原理及配置4-邻接关系的建立和LSDB同步 进入ExStart状态后,广播和NBMA型网络要等待4倍的Hello时间,确定DR和BDR.然后建立邻接关系,并交互链路状态通告,以使用LSDB ...

  2. 华为路由与交换 MPLS 协议原理与配置

    本次博客主要介绍MPLS协议原理与配置 MPLS(英语:Multi-Protocol Label Switching,缩写为MPLS)  多协议标签交换 90年代初,互联网流量快速增长,而由于当时硬件 ...

  3. HCNP学习笔记之OSPF协议原理及配置1-基础知识

    7.25日在济南博赛参加了HCNP的培训,感觉和HCDA不同,内容偏重理论,多而杂,现整理一下,和大家分享,也希望得到高手的指点. 先说下学习的感想和给初学者的建议: 学习的过程本身对自己就一种锻炼, ...

  4. RSTP协议原理与配置整——RSTP对STP的改进

    1.端口角色与端口状态 端口角色的重新划分 RSTP定义了两种新的端口角色:备份端口(Backup Port)和预备端口(Alternate Port). 根据STP的不足,RSTP新增加了两种端口角 ...

  5. RSTP协议原理与配置

    文章目录 前言 一.STP存在的问题 问题一:设备运行初始化环境 问题二:交换机有BP端口,RP端口down掉场景 问题三:交换机无BP端口,RP端口down掉场景 问题四:运行STP的交换机连接用户 ...

  6. OSPF协议原理与配置方法

    一.OSPF协议原理 OSPF是一种基于链路状态的路由协议,它从设计上就保证了无路由环路.它支持区域的划分,区域内部的路由器使用SPF最短路径算法保证了区域内部的无环路.同时它还利用区域间的连接规则保 ...

  7. IGMP协议原理与配置

    IGMP协议:因特网组管理协议 (在路由器与客户端间,不属于组播路由协议:组播路由协议:应用与路由器之间,传播路由,维护组播路由表) 作用:是TCP/IP协议族中负责IP组播成员管理的协议,用来在接收 ...

  8. STP生成树协议原理及配置

    STP:SpanningTree Protocol,生成树协议. 作用:在实际的网络环境当一个物理环路可以提高网络的可靠性,当一条线路断掉的时候,另外一条链路仍然可以传输数据.但是在交换的网络中,当交 ...

  9. 计算机通信网络实验(三) RIP协议原理及配置

    相关软件链接: wireshark 链接:https://pan.baidu.com/s/1cboYrF80eoNUsk23cyNsDQ 提取码:riik prckettracer 链接:https: ...

最新文章

  1. 【C++】lambda 表达式
  2. Logstash5.4.1解析日志报错处理
  3. im即时通讯源码_IM消息ID技术专题(六):深度解密滴滴的高性能ID生成器(Tinyid)
  4. TypeError: 'MongoClient' object is not callable
  5. 如何查看现有项目的struts和hibernate和spring版本
  6. 曲线曲面积分、重积分总结
  7. php .net mvc,总是觉得asp.net MVC 写着很别扭,对比PHP的mvc,asp.net 麻烦很多?
  8. kafka的消费者客户端偏移的维护
  9. L1-008. 求整数段和-PAT团体程序设计天梯赛GPLT
  10. Ubuntu18.04 evo安装
  11. FISCO BCOS(四)——— 在Ubantu上安装python3.8
  12. 拓端tecdat|Python用ARIMA和SARIMA模型预测销量时间序列数据
  13. 俄罗斯方块 java_java代码实现俄罗斯方块
  14. fataexception matlab,人工势场法路径规划(附MAtlab程序)
  15. 为什么前端工程师的工资越来越高了?
  16. 硬核图解面试最怕的红黑树【建议反复摩擦】
  17. 1.投骰子的随机游戏
  18. Java线上诊断工具:Arthas简单快速学习
  19. 我的第一次直播,聊聊「职业规划」和「个人成长」
  20. 基于Android studio个人财务记账管理系统

热门文章

  1. 互联网日报 | 小米Q3营收净利创单季历史新高;字节跳动推出线下“松果门诊”;优客工场正式敲钟纳斯达克...
  2. flash 与分解:分解百度MP3图片墙
  3. uniapp的tabBar不显示
  4. DevFest14 珠海 Wear 主题大会总结
  5. 代码评级指南:请用四个字形容你的代码水平
  6. 用户登录查全表好还是用用户名好_白杨SEO:长尾关键词挖掘工具哪个好?5118站长工具功能大全看这...
  7. 安卓系统层开发之C++
  8. 马科维茨的均值一方差组合模型(转载)
  9. 【xquic】ubuntu20.04: libevent ( Event notification library )构建
  10. 这6个超好用的免费图片素材网站,赶紧收藏~