华为数通HCIP-PIM原理与配置

组播网络概念

组播网络由组播源 ,组播组成员与组播路由器组成。

组播源的主要作用是发送组播数据。

组播组成员的主要作用是接收组播数据,因此需要通过IGMP让组播网络感知组成员位置与加组信息。

组播路由器的主要作用是将数据从组播源发送到组播组成员。组播数据转发需要依赖组播分发树,因此组播路由器需要通过协议来构建组播分发树。

PIM(Protocol Independent Multicast,协议无关组播)协议的主要作用就是构建组播分发树。

组播网络基本架构回顾

组播网络大体可以分为三个部分:

源端网络:将组播源产生的组播数据发送至组播网络。

组播转发网络:形成无环的组播转发路径,该转发路径也被称为组播分发树(Multicast Distribution Tree)。

成员端网络:通过IGMP协议,让组播网络感知组播组成员位置与加入的组播组。

PIM(协议无关组播协议)

前提:底层网络能够实现单播互通;

应用:在组播路由器之间运行;

作用:在组播路由器上构建组播路由表,形成组播流量分发树(无环、无次优、无重复组播流);

组播流量分发树:

SPT:组播源到组播接收者组播流量分发树(pim dm、pim sm)

RPT:RP到组播接收者的组播流量分发树(pim sm)

pim-dm(密集模式):由组播源发起,以推的形式构建组播流量分发树;

适用于组播成员分布密集的时候;

pim-sm(稀疏模式):由组播接收者发起,以拉的形式构建组播流量分发树;

适用于组播成员分布稀疏的时候;

RPF检测(逆向路径转发检测)

作用:1、用于构建组播路由表,确定组播路由表的上游接口以及下游接口

2、确保组播流量无环无次优;

检测机制:

pim dm:

1、pim dm路由器收到组播流量时,会直接在本地生成对应的(s g)组播路由表项,然后会根据组播流量的sip查看本地单播路由表,找到去往组播源的最优路由,将该路由的最优出接口设置为对应(s g)表项的上游接口,最优下一跳为上游邻居,其余建立了pim邻居的接口为该表项的下游接口;

如果路由器去往组播源存在多条负载的最优路径时,则选择下一跳更大的路由,其中出接口设置为对应(s g)表项的上游接口,下一跳为上游邻居,其余建立了pim邻居的接口为该表项的下游接口;

2、只有从上游接口收到的组播流量才会从下游接口发送出去;

pim sm:

1、当接收端DR通过IGMP生成了(* g)表项时,根据RP地址进行RPF检测,找到去往RP的最优路由,将该路由的出接口设置为(* g)表项的上游接口,最优下一跳设置为上游邻居;

配置:

[R1]multicast routing-enable //全局下开启组播功能

[R1]pim //全局开启pim

interface Ethernet0/0/0

pim dm //所有的物理接口开启pim dm功能

PIM DM

工作过程:

1、建立PIM邻居

2、选举DR

3、扩散------剪枝

4、状态刷新

5、嫁接

6、断言

报文结构:pim层------IPv4------数据链路层头部

组播发送:224.0.0.13(所有pim路由器均能接收)

1、建立pim邻居

组播路由器开启pim dm后,发送hello报文发现并且建立pim邻居;

hello周期:35s,超时时间为105s

hello时间不一致会向小协商;

interface Ethernet0/0/0

pim hello-option holdtime 90 //修改超时时间为90s

display pim neighbor //查看pim邻居;

display pim interface //查看pim接口信息,其中包含DR优先级、DRIP地址、hello时间;

2、选举DR

选举规则:

(1)接口优先级,越大越优;(默认为1)

interface Ethernet0/0/0

pim hello-option dr-priority 2 //修改接口DR优先级

display pim interface //查看pim的DR以及DR优先级

(2)接口ip越大越优

每个网段有且仅有一个;

其中源端DR为组播源与路由器之间网段的DR,接收端DR为最后一跳路由器与接收者之间网段的DR;

DR在PIM DM中的作用:

(1)负责转发从组播源收到的组播流量(源端DR)

(2)充当IGMPv1的查询器(接收端DR)

(3)当充当多台最后一跳路由器时,只有接收端DR会转发组播流量;

(4)周期发送状态刷新报文(源端DR)

3、扩散-剪枝

3.1 扩散

当组播源需要发送组播流量时,则直接发送,触发扩散机制;

pim dm路由器收到组播流量时,会直接在本地生成对应的(s g)组播路由表项,其中s为组播流量的sip、g为组播流量的dip;

上游接口:通过RPF检测确定,有且仅有一个;

下游接口:除上游接口以外的所有建立了pim邻居的接口;

确定好上下游接口后,将组播流量从下游接口扩散出去;

直到组播流量扩散到最后一跳路由器,在确定了上下游接口后,还会检查,自身是否存在对应组别的(* g)表项,如果存在则说明该路由器下游存在该组别的接收者,则将(* g)表项的下游接口复制到(s g)表项的下游接口,并且将组播流量从所有下游接口发送出去;

3.2 剪枝(prune)

当pim dm路由器发现自身的(s g)组播路由表项中不存在下游接口时,说明下游没有该组播流量的接收者,则触发剪枝;(触发条件)

机制:发送剪枝报文(dip为224.0.0.13,携带需要剪枝的表项,以及针对的上游邻居)

当上游邻居收到该剪枝报文后,则将收到该报文的接口,从对应表项中移除,并且检查该表项是否存在其他的下游接口,如果存在则停止剪枝,如果不存在则继续向上游发送剪枝报文,过程与上述一致;

作用:防止组播流发送到没有接收者的区域,浪费设备以及链路资源;

缺陷:被剪枝了的接口,不是永久性删除,而是被暂时抑制,抑制时间为210s;

每隔210s被剪枝的接口会恢复,需要重复剪枝的步骤,浪费设备资源;

4、状态刷新

作用:解决剪枝抑制时间所带来的问题,防止被剪枝的接口恢复;

机制:源端DR会周期性发送状态刷新(state-refresh)报文,处于键值抑制状态的接口收到后,会刷新抑制计时器,从头开始计时;

被剪枝的接口永久不会恢复

5、嫁接

机制:当新加入组播接收者时,路由器通过IGMP生成了(* g)表项后,如果自身存在对应的(s g)表项,则直接将(* g)表项的下游接口复制到(s g)表项,并且向上游邻居发送嫁接报文(携带需要嫁接的s g表项,以及上游邻居的地址),上游邻居收到后,新增收到该报文的接口为下游接口;

作用:确保网络中新增组播接收者时,可以收到组播流量;

6、断言(assert)

作用:防止pim dm网络中出现重复组播流,导致链路资源的浪费;

触发条件:当pim dm路由器从下游接口收到从该接口发送出去的一模一样的组播流量;

机制:双方会发送断言报文,其中会携带:

发送者去往组播源的路由优先级、开销;

会进行如下比较:

优先级:越小越优;

开销:越小越优;

接口ip:越大越优;

胜出的一方:winner;

失败的一方:loser;

loser会将自身的断言竞选失败的端口,从(s g)表项中删除,并且从该接口向外发送该(s g)表项的剪枝报文,对端收到后也会删除对应的下游接口,可以消除网络中的重复组播流;

缺陷:只能适用于ASM模型;

不适用于网络分支较多的场景(需要频繁剪枝);

PIM-SM

工作过程:

1、建立pim邻居

2、选举DR(DR在PIM SM作用更多)

3、选举RP

RP(汇聚点)

作用:作为接收端构建RPT树的终点;

向源端发起SPT树构建;

作为组播源向接收端发送组播流量的中间点;

一般越中间越好;

静态:常用

pim

static-rp 3.3.3.3 //指定的地址需要全网可达,必须所有设备都要配置;

动态;

选举过程如下:

在C-BSR中选出一个BSR:

优先级较高者获胜(优先级数值越大优先级越高)。

如果优先级相同,IP地址较大者获胜。

BSR会周期性发送BSR消息,收集网络中的C-RP的参数;

收集完成后,将所有C-RP的选举参数加入到RP-SET中,根据BSR消息泛洪至整个组播网络;

其他pim路由器收到后,则会选举出RP;

与用户加入的组地址匹配的C-RP服务的组范围掩码最长者获胜。

如果以上比较结果相同,则C-RP优先级较高者获胜(优先级数值越小优先级越高)。

如果以上比较结果都相同,则执行Hash函数,计算结果较大者获胜。

如果以上比较结果都相同,则C-RP的IP地址较大者获胜。

pim

c-bsr 接口 //指定自身的某个接口为C-BSR

c-rp 接口 //指定自身的某个接口为C-RP

c-bsr priority x //修改bsr优先级

c-rp priority x //修改rp优先级

4、RPT树构建

RPT:指RP到接收端的组播流量分发路径树;

当接收端DR通过IGMP生成了(* g)表项时,根据RP地址进行RPF检测,找到去往RP的最优路由,将该路由的出接口设置为(* g)表项的上游接口,最优下一跳设置为上游邻居;

并且产生一份join报文(携带需要构建的RPT树的组播表项以及上游邻居的地址),向上游邻居发送;

上游邻居收到后,会在本地生成(* g)表项,并且将收到该join报文的接口设置为下游接口,并且根据RP地址进行RPF检测,确定上游接口与上游邻居,直至RP收到join报文为止;

RP收到join报文后,生成(* g)表项,接收到join报文的接口为下游接口,并且暂无上游接口;

5、源活跃阶段(注册阶段/停止注册)

组播源发送组播流量后,源端DR会将组播流量打包成注册报文,单播发送给RP;

RP收到后,拆除外层封装,看到原始组播流量,会进行如下操作;

(1)判断本设备的组播路由表,是否存在匹配该组播流量的(* g)表项,如果存在则根据(* g)表项进行转发,一直给到接收端,并且沿途经过的pim sm路由器会创建(s g)表项,上下游接口直接从(* g)表项中复制过来;

(2)生成(s g)表项,并且根据组播流量的sip,进行RPF检测,找到去往组播源的最优路径,其中最优出接口作为上游接口,最优下一跳作为上游邻居,并且向上游邻居发送join报文,上游邻居收到join报文后生成(s g)表项,重复上述动作,直到源端DR;(构建SPT树)

当RP可以直接通过组播流量分发树收到组播流量时,则向源端DR发送注册停止报文,源端DR收到后,则停止发送注册报文;

至此,网络中存在两颗组播流量分发树:

RPT(RP到接收端):存在两张表(* g)、(s g)

SPT(源端到RP):存在一张表(s g)

6、SPT切换

当接收端DR收到组播流量后,会向组播源发起SPT树构建;

构建过程:本地生成(s g)表项,上游接口与上游邻居通过RPF检测确定,下游接口从(* g)表项复制;

向上游邻居发送join报文,上游邻居收到后,生成(s g)表项,下游接口为收到报文的接口,上游接口与邻居通过RPF检测确定,重复上述步骤,直到组播源;

当接收端DR可以通过SPT树收到组播流量时,则发起RPT树(S G)表项的剪枝,一直到RP,如果RP删除了(S G)表项的下游接口后,没有其余的下游接口,则说明网络中存在次优路径,则继续向上游发起剪枝;

作用:防止组播流量的次优路径;

DR在PIM SM中的作用:

1、充当IGMPv1的查询器;(接收端DR)

2、向RP发起RPT树构建;(接收端DR)

3、发送注册报文、接收注册停止报文;(源端DR)

4、向组播源发起SPT树切换(接收端DR)

PIM-SSM

定义:PIM-SM工作与SSM模型下;

工作过程:

1、建立邻居;

2、选举DR;

3、接收端DR在通过IGMP生成了(S G)表项后,直接向源端构建SPT树;

相关推荐
逢生博客9 小时前
Mac 搭建仓颉语言开发环境(Cangjie SDK)
macos·华为·鸿蒙
青柠_项目管理9 小时前
PMP证书持有者,在华为、腾讯一般能拿多少薪资?
华为·pmp
小强在此12 小时前
【基于开源鸿蒙(OpenHarmony)的智慧农业综合应用系统】
华为·开源·团队开发·智慧农业·harmonyos·开源鸿蒙
Reuuse14 小时前
【HCIA-Datacom】华为VRP系统
服务器·网络·华为
PlumCarefree16 小时前
基于鸿蒙API10的RTSP播放器(四:沉浸式播放窗口)
华为·harmonyos
中关村科金20 小时前
中关村科金推出得助音视频鸿蒙SDK,助力金融业务系统鸿蒙化提速
华为·音视频·harmonyos
繁依Fanyi20 小时前
828 华为云征文|华为 Flexus 云服务器部署 RustDesk Server,打造自己的远程桌面服务器
运维·服务器·开发语言·人工智能·pytorch·华为·华为云
小强在此1 天前
基于OpenHarmony(开源鸿蒙)的智慧医疗综合应用系统
华为·开源·团队开发·健康医疗·harmonyos·开源鸿蒙
奔跑的露西ly1 天前
【鸿蒙 HarmonyOS NEXT】popup弹窗
华为·harmonyos
繁依Fanyi1 天前
828华为云征文|华为Flexus云服务器搭建OnlyOffice私有化在线办公套件
服务器·开发语言·前端·python·算法·华为·华为云