【华为】组播PIM基本原理(5月份将再次更新,这是以前的笔记 还存在些许问题)

本文目录如下

  • 开头说明
    • 前言
      • RPF校验(Reversave Path Forwarding)
      • PIM 报文
      • DR选举
      • PIM 运行模式
    • 关于(S,G)和(*,G)
    • PIM DM模式
      • Assert断言
      • Assert与DR选举区别
      • Prune修剪报文
      • Graft嫁接
      • DM RPF校验(Reversave Path Forwarding)
      • RPF反向路径转发
    • PIM SM模式
      • RP(Rendezvous Point)汇集点 *面试重点*
        • 静态RP:
        • 动态RP之Auto-RP
        • 动态RP之BSR
        • BSR的RPF校验
      • Join加入报文
      • Register注册报文
      • SM RPF校验
      • 树形结构切换
      • 剪枝
      • RP选举
        • 静态手工RP
        • auto-RP
        • BSR
        • BSR RPF
  • 参考致谢

开头说明

基于针对组播PIM协议,来自自己早些年的笔记中的分享,还存在许多的不止 也需要去重新补充,而且话术可能有点存在啰嗦或者不简洁明了的情况,难免会存在些许错误,后续本人将重新攥写本文。

前言

PIM,协议无关组播。PIM运行在路由器之间,生成组播的路由表项,指导组播流量的转发。

PIM,没有路由!只是指导组播流量的转发罢了。基于单播来指导组播流量的转发。

组播里面没有路由。运行组播路由选择协议的初衷是为了让路由器拥有转发组播流量的功能。

注意:PIM运行于IP协议之上,协议号103 组播地址为224.0.0.13

1、组播流量的过程

如果要说PING、或者TCP的TELNET,HTTP等服务的过程,那么都是先对目的IP进行建立访问,或者就是对目的IP进行访问操作,但是组播并不是这样的,组播对于目的IP是没有一个准确的概念的,组播并不知道到底什么时候会有接收者,什么地方会有接收者,会有多少个接收者。组播好处就是不用对每一个接收流量的目标去挨个发送。但我说他这是坏处,也不为过。为什么?

  1. 如果不知道准确的目标,那么可能有些一直或长时间不会存在流量接收者的路由器,那么他一定要一直保持着关于组播流量的记录,以防止突然有接收者想要接收这股组播流量了。这是弊端之一(采用SM模式可以解决该问题)

而且,组播可不像单播一样,单播的访问是基于路由表项的,而不同路由器之间也可以通过不同的路由协议进行路由条目的传递通告。但是组播并不是这样,组播传递的仅仅是生成组播的转发表项,指导组播流量的转发,换句话说,组播只是指导这个接收者,去查找信源地址,这也说明了,组播中,不同等于单播的,S去找D,而是D去主动找Source Add 信源(毕竟接收者是不固定的,但是信源是固定的)

RPF校验(Reversave Path Forwarding)

组播协议的防环机制。

RPF校验的工作原理就是抄单播IGP的作业,IGP优秀的机制保证了其不会出现环路(而且如果单播IGP出现了环路,那组播就算再完好也没用)

RPF校验根据去往信源的单播路由下一跳,是否是接收到该组播流量的入接口,来判断是否环路。,需要主以的是,路由器针对一个信源,有且只有一个出接口(不然就环路了咯)

能够保证组播无环的机制,因为不可能确定组播信源和接收者,所以路由器想要在建立邻居的过程中防环,不可能做到。所以只能通过实际报文的接收,实时判断该如何防环。

RPF就是抄单播的作业,因为单播路由选择协议,一般不会产生环路,而且你如果单播都出问题,那么组播肯定也无一例外

RPF校验的负载均衡情况:

由于RPF校验是基于单播路由表的选择规则来的,但是网络中负载均衡的情况是十分常见的。如果RPF校验出现了负载均衡的情况,那么奖进行选举:比较负载均衡路由中路由的出接口地址大小,越大越优。若出接口相同,则比较下一跳IP地址的大小。

手工指定RPF

  1. 组播静态路由来更改RPF
  2. MP-BGP

这二者的操作方式有些像单播BGP和静态路由,不过单播BGP和静态路由的作用是为了指导路由的传递或者自身来传递路由。而组播中。这只是为了修改RPF校验的出接口罢了。通过手工指定RPF,在不修改单播路径的情况下,修改RPF的对应接口。

运行组播MP-BGP的接口将优先成为RPF接口

建立IPv4 Multicast组播邻居,注意他们并不会传递组播路由,组播没有路由的概念!组播只有转发信息。这传递的看起来好像是路由,但是,是用来改写RPF接口的,在不切换单播路径的情况下,待填写。运行组播MP-BGP的接口成为RPF接口

如果在路由器同时拥有单播路由组播静态MP-BGP组播,则根据最长匹配原则。看三个路由,那个匹配信源 的IP掩码最长。其次比较管理距离(组播静态>MP-BGP组播>单播路由)

本文中总过出现3个RFP校验

DM RPF校验:根据去往信源的单播路由所对应的出接口,是否是收到这股组播流量的入口接口。是则放行,不是,则丢弃。

SM RPF校验:根据去往RP的单播路由所对应的出接口,是否是收到这股组播流量的入口接口。是则放行,不是,则丢弃。

BSR RPF校验:根据去往BSR的单播路由所对应的出接口,是否是收到这股组播流量的入口接口。是则放行,不是,则丢弃。


PIM 报文

HELLO报文,30秒/s周期性发送,HOLD超时为3.5*30s 即145秒。超时时间内没收到,则down

单播发送的报文 组播224.0.0.13
1、Graft 嫁接报文 0、Hello
2、Graft ack 嫁接回应 3、Assert
6、Register 注册报文 5、State-refresh
7、Register stop 注册停止 join/prune
8、RP-advertisement C-RP通告 bootstrap
Hello报文:组播组Dip 224.0.0.13,报文中包含字段
Register注册报文:首跳路由器将组播帧封装成注册报文,发送给RP
Reg Stop报文:RP向DR发送注册停止报文。
bootstrap报文:由BSR发出,1、用于C-BSR之间选举BSR.2、汇总C-RP发出通告报文,选举RP。
组播报文;DIP 224.0.0.13
单播
Graft嫁接:
Gra ack嫁接回应:
Reg 注册:由首跳DR路由器 将收到的第一份组播帧封装成单播注册报文,发送给RP。
Reg Stop注册停止:用于告知DR,停止发送注册报文
RP-ad:C-RP通告报文,所有的C-RP向BSR发送通告报文,

PIM-DM模式采用

PIM-DM使用0/3/5/6/7
PIM-SM使用0/1/2/3/4/5/8 0、 3、4、5、8

其中1/2/6/7/8类型都为单播发送

DR选举

由于网络中需要形成高可用性或高负载性,所以连接第一跳或最后一跳(信源或接收者)的路由器设备,很大程度上都进行冗余配置,那么当冗余配置存在时,就需要通过DR的选择,来根据参数选举出一台最优的DR,进行组播流量的发送。

PIM路由器之间通过发送HELLO报文中的优先级和IP地址。来进行DR选举。比较规则:优先比较接口优先级,相同则比较IP地址大小。越大越优先,不存在BDR。

注意:

  1. DR的选举仅存在于MA网络中
  2. IGMPv1中查询器的选举就依赖于PIM的DR。
  3. 接口优先级默认为1,0不代表不参选。取值为1~42亿。
  4. 当PIM运行模式为DM模式时,由于DM模式特性,DR的选举并不是那么重要。

PIM 运行模式

路由器收单播,直接看DIP,查单播路由表,转发即可。

路由器收组播,查看接收接口是否启用PIM,基于三层报头的SID,进行三层报头校验,校验成功,按照我的树形结构,进行转发。具体是什么样的树形结构,要注意是那种运行模式。

在前言的时候提到过一个概念,就是说如果接收者下面没有想要接收该组播流量的话,那么这台PIM路由器需要持续性的去接收没必要的组播流量,并且为了不确定什么时候将会到来的访问者一直的提供该组播流量的运作,那么这个资源消耗将会是巨大的,什么,你听不懂?

就这样说吧,两个班级的班长之间互相记录着对方班级中详细的 职位和对应成员名称,如果当我这个班级有人想要去访问对方班级的学习委员时,他会来找我,但怕就是怕的是,我这里并没有需求去找学习委员,但我却要一直记录着这些人的名字和职位信息,这是疯狂恐怖的资源消耗。所以PIM诞生了两种运行模式。


PIM的两种运行模式:DM密集 & SM 稀疏(Dense-mode,Sparse-Mode)

DM密集模式:

推push模型,适用于接收者密集,小型网络的情况,SPT树越多,很多网段都有接受者,就认为接收者越多,也就越密集。

SM 稀疏模式:

拉pull模型。适用于接收者少,大型网络。源数+RPT树(信源—RP,SPF;RP-----接收者,RPT共享树)

PIM IP协议号103,组播组地址224.0.0.13。路由器间需要启用PIM,最后一跳路由器连接PC也要启用( 不然无法发Query)。DM同理

关于(S,G)和(*,G)

统用规则:

  • 从接收者收到Report后,会形成(*,G)表项 ( *,239.0.0.1)
  • 从信源接收到组播流量后,形成(S,G)表项 (123.123.123.123,239.0.0.1)

注:具体PIM协议不同的模式,形成表项会有一定的区别

PIM DM

PIM SM

PIM DM模式

DM密集模式中,所有的PIM路由器都要学习到所有的组播路由表项

Dense Mode中最重要的三个特性,Prunne和Assert。Graft嫁接

Assert断言

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8SJS53Hn-1680307974591)(.//Images/组播Assert描述图片.png)]

虽然每台路由器基于每个信源都会选举一个唯一的RPF接口,但在上述图片的情况下,AR14,AR17和PC1处于一个MA网络中,交换机找不到出接口,那么他泛洪操作,AR14和AR17都会收到一份,对方发送过来的组播包,并且PC也会收到,并且是两份。断言机制,应运而生。

当满足以下条件时,说明该网段上还存在着其他的组播转发者。即设备执行Assert

  • 接收到组播报文的接口是本设备上(S,G)表项中的一个下游接口。
  • 该组播报文不能通过RPF检查。

当满足以上条件时,路由器从该下游接口发送Assert消息。同时,该下游接口也接收了来自该网段上其他组播转发者的Assert消息。PIM Assert消息的目的地址为224.0.0.13,源地址为下游接口地址,TTL为1

通过断言机制Assert防止重复报文,

DM模式中常用。

发送一个组播流量,我能通过这个发送接口收到一摸一样的组播流量,这样的情况下,断言机制一定会开启。

接收发送相同流量的接口,去发送断言报文。

通过断言机制Assert防止重复报文,做负载均衡的路由器通过既能发送又能接收组播流量的接口发送断言报文(断言报文包含:去往信源路由的管理距离去往信源单播路由的度量值和接口IP地址),通过比较断言报文中的参数("管理距离>度量值>IP地址,管理距离/度量值是越小越好,IP地址是越大越好)选举出Winner,由Assert winner发送组播流量,其他接口不允许转发组播流量。

MA网络中,Winner有且只有一台。Winner将在后续的网络中,由他来发送组播流量,没有被选举到winner的其他设备接口,将会持续性监听winner状态,如果winner挂掉了,就会再次选举。

Assert与DR选举区别

DR的选举是用于,连接信源或者是连接最后一跳路由器,存在多台时,选举出一台DR,由DR来连接信源,发送Register或者是,连接接收者,然后发出Join报文。而Assert则是在PIM DM中,为了防止MA网络中,收到重复的组播包,而出现的机制。

DR选举:多台连接源或者接收者得路由器,竞选出一台,来作为发送组播流量得设备。

Assert:多台发送相同组播流量的设备,来竞选出一台设备,作为发送组播流量的设备。

Prune修剪报文

组播流量泛洪后3min才会开始修剪,对于没有连接到组播组成员或者没有下游其他邻居的路由器,会给上有邻居会向发送Prune修剪报文,上游路由器收到Prune报文后不会立即停止发送组播,只有在路由器连接所有邻居的接口都收到Prune报文才会停止发送组播流量;但是不会删除对应的(S,G)组播组表项每隔3分钟还有再泛洪一次保证新的接入者能够加入。

在路由器发送Prune后的3min时间内,如果有组员出现了,那么就会通过嫁接的方式,来直接把这个被修剪得路径,还原。

加强描述:上游路由器收到了Prune后,将会对收到得接口开启一个3min得计时器。这个还可能会产生连锁反应,就是R1发现自己没组成员or没下游邻居,那么给上游发送Prune,然后上游也发现了,自己现在这个邻居给自己发了个Prune,那我也没邻居可发了呀,我发给我得上游邻居Prune。

PIM Dense模式:快,直接发,不需要考虑接收者PC是否存在。但缺点就是,没有连接接收者得路由器,虽然有Prune了,但他还是会记录表项,会消耗内存资源。

Graft嫁接

有关于这个接收者想要接收得组播流量,所对应得表项。当有表项了,就会向上游路由器发送一个嫁接报文,这个嫁接报文能够让上游路由器立即超时掉Prune的3min计时器,

DM RPF校验(Reversave Path Forwarding)

能够保证组播无环的机制,因为不可能知道组播信源和接收者,所以路由器想要在建立邻居的过程中防环,不可能做到。所以只能通过实际报文的接收,实时判断该如何防环。

RPF就是抄单播的作业,因为单播路由选择协议,一般不会产生环路,而且你如果单播都出问题,那么组播肯定也无一例外

路由表中,去往信源的单播路由所对应的出接口,是否是组播流量的入接口。路由器对于一个信源,有且只有一个接口。

上述这段话,没有理解明白

单播路由表,可能存在负载均衡现象,那么RPF怎么办? 执行PK选举。比较单播路由表中负载均衡的路由的不同的出接口地址,谁大谁优。如果负载均衡路由的出接口相同,则比较下一跳IP地址大小。

但是也可以手工指定RPF。

  1. 写组播静态路由

  2. MP-BGP

建立IPv4 Multicast组播邻居,注意他们并不会传递组播路由,组播没有路由的概念!组播只有转发信息。这传递的看起来好像是路由,但是,是用来改写RPF接口的,在不切换单播路径的情况下,待填写。运行组播MP-BGP的接口成为RPF接口

如果在路由器同时拥有单播路由组播静态MP-BGP组播,则根据最长匹配原则。看三个路由,那个匹配信源 的IP掩码最长。其次比较管理距离(组播静态>MP-BGP组播>单播路由)

DM的RPF校验能够保证PIM-DM网络中组播流量的无环。因为组播的信源和接收者总是不确定的,所以组播如果想要仿照IGP路由那般,是不行的,只能通过实际报文的接收,来实时判断该如何防环。

RPF依靠单播路由选择协议来进行防环,网络处于稳定的情况下,单播路由是不会出现异常的,而如果单播路由也出现了网络环路而导致网络不稳定,如果你单播路由都出现了问题,那么组播还有什么存在的意义呢?

路由表中,去往信源的单播路由所对应的下一跳出接口,是否是组播流量的入接口

RPF反向路径转发

在组播网络中,要转发信源组播数据包的时候首先需要做一个RPF校验,校验成功才能够转发该数据。

在转发信源发送过来的组播流量包时,查看收到该流量包的接口,和IGP中去往该信源地址的接口,是否为同一个出接口,如果接口相同,那么数据包将会在组播路由表中的outgoing列表中的接口转发出去

目的是为了防止组播数据出现环路,只有当RPF校验成功后,组播流量才能够被转发

一台路由器在接收到一个组播数据包之后,将会查看该组播数据包中的源地址,如果该组播路由器中关于这个数据包的出接口,就是该组播报文的入接口,则RPF检查成功;否则丢弃这个报文。收到报文的接口接口A,是组播数据包的出接口,也是入接口,则RPF校验成功

当数据包来的时候才会发生RPF检查,在做RPF检查之前要先找到PRF邻居。当路由是从多个Source Routeing学习到时,组播PRF将使用协议优先级来计算

路由器在接收到由源S 向组播组G 发送的组播报文后,首先查找组播转发表:
1、如果存在对应(S,G)表项,且该组播报文实际到达接口与Incoming interface 一致,则向所有的outgoing interfaces 执行转发;

2、如果存在对应(S,G)表项,但是报文实际到达接口与Incoming interface 不一致,则对此报文执行RPF 检查。如果检查通过,则将Incoming interface 修改为报文实际到达接口,然后向所有的outgoing interfaces 执行转发。

3、如果不存在对应(S,G)表项,则对此报文执行RPF 检查。如果检查通过,则根据相关路由信息,创建对应路由表项,然后向所有的outgoing interfaces 执行转发。

4、如果当前组播路径沿袭从组播源S 到客户端的SPT 或组播源S 到RP的源树,则路由器以源S 的IP 地址为目的地址查找单播路由表,对应表项中的出接口为RPF接口。路由器认为由该RPF 接口接收到的组播报文所经历的路径是从源S 到本地的最短路径。

5、如果当前组播路径沿袭从RP 到客户端的RPT,则路由器以RP 的IP 地址为目的地址查找单播路由表,对应表项中的出接口为RPF 接口。路由器认为由该RPF 接口接收到的组播报文所经历的路径是从RP 到本地的最短路径。
将RPF 接口与组播报文的实际到达接口相比较,判断到达路径的正确性,从而决定是否进行转发。

6、如果两接口相一致,那么就认为这个组播包是从正确路径而来,RPF 检查成功。

7、如果两接口不一致,将该组播报文丢弃。作为路径判断依据的单播路由信息可以来源于任何一种单播路由协议、组播静态路由或者MBGP 路由协议。

PIM SM模式

一台路由器收到组播发送的信源,尽可能确定域内是否存在接收者,会在发送流量之前,先判断是否存在接收者。PULL

两棵树

源----RP,源树。 RP-----接收者----共享树。 树的形成和Dense形成不一样

Dense树的形成,是基于发生者而形成的的树。树根就是发送者。

而SM模式的两棵树,源树是从源到达RP的,树根是源,共享树的树根是RP。然后这两根树再进行树形结构切换。

RP

运行RP的接口,一定要开启PIM,逻辑接口也无一例外的要开启。

我最后一跳路由器连接了组员后,我最后一跳路由器需要告知RP我拥有接收者,那么这个时候会查询单播路由表,查看去往RP的单播路由的下一跳地址。基于下一跳地址,会发送一个 单播的join报文。JOIN发给上一跳(组播的上一跳定义,非IGP的上一跳),用于告知我的上一跳,我现在希望形成一个RPT,你是我去往RP的下一跳,所以我给你单播发送JOIN。JOIN中包含了(*,G),我发送给上一跳路由器之后,上一跳路由器也会形成( *,G)表项,发送给他的上一跳路由器,直到送给RP。要注意的是这里的 *代表着All Source,也就是源不知道,但我这里有组员 有需求。

RP(Rendezvous Point)汇集点 面试重点

RP必须IGP可达必须启用PIM 存在疑惑。可以是逻辑接口

  • 在小型PIM-SM网络中,仅仅依靠单个RP即可完成所有数据的转发,该RP为所有组播组服务。

  • 在大型PIM-SM网络中,组播流浪庞大,而单个RP的处理能力有限,为了缓解RP的负担同时优化RPT的拓扑结构,可以通过动态RP,在网络中同时配置多个RP,每个RP只为部分组播组服务。

**注:**可以通过配置,限制RP只为一定范围内的IP地址提供组播组服务。

  • 静态RP:在PIM域中的所有PIM路由器上配置静态RP。
  • 动态RP:在PIM域内选择几台PIM路由器,配置C-RP(候选Candidate-RP)。从C-RP中竞选产生RP。
  • 使用动态RP,必须同时配置C-BSR(Candidate-BootStrap Router)。由C-BSR竞选产生BSR。

静态RP:

在PIM-SM网络中,必须所有的PIM路由器都需要知道RP的地址,且可达,并且在PIM路由器上都需要配置一样的静态RP命令

静态RP配置:
PIM视图下
[Huawei]pim
[Huawei-pim]static-rp 1.1.1.1

动态RP之Auto-RP

动态RP之BSR

BSR和auto-PR,auto-RP支持冗余备份,BSR支持冗余备份和负载均衡

BSR的RPF校验

Join加入报文

连接接收者的最后一跳路由器来发送的,用于向RP发送Join报文,告知我这里有组成员,想要接收某个组的流量。

Register注册报文

信源开始发组播流量,那么第一跳路由器,将收到的第一个组播帧,封装成单播的PIM报文,发送给RP。

用于向RP确认,域内中是否有关于 某个组播组的流量 是否有接收者存在。

RP收到注册报文之后,RP根据是否建立了共享树,来确定是否有接收者存在,来确定是否要做响应。如果发现对于这个组播组,我有共享树存在,那这个时候RP会将Register注册报文解封装,使其还原成组播数据,通过共享树给下游发走。并且RP会给第一跳路由器逐跳发回一个表项(S,G)的Join,称为加组报文。

(S,G)每发一跳,源树的沿途路由器,都会形成对应源数表项。然后最终达到第一跳路由器。并且RP会给首跳路由器发一个Register-Stop(单播),告诉第一跳路由器别再发送注册了,因为树已经OK了,形成了,再发送注册的话,那就会出现重复包。

第一跳路由器和RP形成源树后,会立即发送Register STOP。

SM RPF校验

SM稀疏模式中的RPF校验,将不再像DM模式一样,对报文的S DIP地址做校验。SM中,将是对RP的地址来做校验。收到共享树传递下来的组播流量之后,需要查看去往RP的单播路由出接口,是否是我收到这股流量的入接口。如果是,那么RPF校验成功,如果不是,RPF校验失败。因为之前发送的Join就是按照去往RP的最优路由的出接口来逐条发送的。

信源达到RP的SPT树和RP达到最后一跳路由器的RPT树都形成了之后,要做一个树形结构切换,以免所有流量都经过RP,导致RP流量过于庞大。

按照上述所说,两种树形结构,都需要经过RP,然后RP来做一个再次的转发,首先信源达到RP,然后RP再找接收者,再给接收者发下去。再协议初始阶段还可以,但后续每次发流量都是这样的过程,那RP的数据层面负载是否严重,这个时候就要做树形结构切换

树形结构切换

最后一跳路由器受到组播流量之后,根据接口是速率阈值,当我通过共享树接收组播流量,速率阈值超过了,就会开始做树形结构切换。这个阈Yu值,默认是0kbit/s。因为两棵树都已经OK了,最后一跳路由器也知道源在哪了,就会发送(S,G)的JOIN报文,在单播路由表中查找去往信源的下一跳,逐跳发送,没发一跳,就会做树形结构迁移,将旧得SG表项,切换成新的,也就是刚刚发的那个JOIN的。

在向正确的下一跳,发送S,G JOIN的下一跳同时,会沿着旧得共享树,给RP发送一个,RP-bit Prune。RPT的Prune,不同于SPT的Prune,RPT的Prune将会是永久性阻塞,RP收到了这个Prune之后,就直接在树形结构中,删去,这里不同于SPT中的Prune。RP收到了来自路由器的RP-Bit的Prune,它如果只有那么一个接收者,就会告知上游路由器,自己没下一跳了,即发送Prune

剪枝

PIM SSM中,当发生切换的时候,由分叉路由器会向着RPT做RP bit位的修剪,修剪的是流量,RPT依旧存在。

RP选举

RP选举有着三个方式:手工指定、auto-rp和BSR。

手工指定则需要在域内所有组播路由器上,指定相同RP。且没有冗余备份,容易单点故障。

auto-rp协议选举RP,能够冗余备份,缺点是容易死脑筋,如果C-RP和CMA不是直连链路,将会出现如下情况:C-RP发包给邻居,让邻居发给CMA,但邻居没有RP,要找RP,但RP还没选举出来,无法发送。

BSR解决了auto-rp的死脑筋问题。能够冗余备份,负载均衡

静态手工RP

没有冗余,容易出现单点故障,配置繁琐,默认动态RP优先级高于静态,需要接Override可以让其高于动态。RP的接口,无论是动态静态,必须参与IGP和PIM。

auto-RP

思科私有选举方式。可以实现RP的自动选举、冗余备份;适用于PIM-SM中大型网络使用

两种角色)

CRP(RP候选者): 想要成为RP的路由器,谁都可以成为。

CMA(候选者中级代理):用来判断谁是RP,并通告RP信息的路由器。

两种报文)

Announce宣告:接口启用CRP的接口,会自动发送该报文给所有邻居,CMA设备会监听该地址(SIP为CRP接口,DIP224.0.1.39),普通路由器并不会;如果有多台路由器参选RP,比较接口地址,大者为RP。

Discover发现:RP选举完毕后,CMA用此报文给邻居路由器通告(SIP为CMA接口地址,DIP为224.0.1.40),然后邻居路由器会泛红扩散给域内所有其他路由器。

宣告报文中,CMA监听的地址为224.0.1.39

RP的缺陷:

在SM模式中,第一跳路由器收到组播流量,都需要先发送Register注册给RP才行。那么问题来了

环境如此:A--------B----------C--------D

A是C-RP,D是CMA,A发送宣告报文给邻居B,邻居B收到之后,他在SM下,不会将其扩散出去,而是将这个组播帧,封装成注册报文,然后发送给RP,好死不死的,这个报文是选举RP的报文,RP还没选举出来呢,找个鬼的RP呢?B找不到RP,B就会丢包。CMA设备没有收到Announce,不知道A要成为RP。

当C-RP和CMA不直连时,CMA不能够知道谁要做C-RP,也不能告诉所有人,谁是RP。

解决方案:

1、在所有路由器接口,不运行单纯的SM模式,运行SDM混合模式。

Spare-Dense-Mode 稀疏密集模式

运行该模式后,一台路由器收到一股组播流量,首先会尝试SM模式寻找RP,寻找无果之后,就用DM模式来做泛洪扩散。

2、在思科所有路由器的全局配置下,输入ip pim auto-rp listener

所有路由器会专门针对一个组播组开一个后门。接口运行纯SM模式也行,

当收到去往224.0.1.39的Anno报文,会针对这种报文,以DM模式做泛洪扩散,但对于其他的组播组地址,还是使用SM模式来运作。

BSR

BSR在RP的切换过程中,能够做到更快的RP切换,且BSR支持冗余备份和负载均衡。

两种角色)

RP-Candidate: 相当于RP候选者 C-RP

C-BSR :相当于候选者中级代理 CMA

两种报文)

RP通告 单播

BSR通告 组播224.0.0.13

C-BSR之间需要做一个PK,当开启好C-BSR后,会开启一个等待计时器(130s),这个计时器又叫“初始通告延迟”,在初始通告延迟内,不会发报文,但是会监听,监听网络中,有没有其他BSR,。如果没收到,那么130s超时之后,将自身成为BSR。如果有 那么会周期性60s一次,发送BSR通告报文,和已存在的BSR设备做PK,比较双方BSR优先级,谁低,看谁小,谁做BSR,优先级一样,就比较IP地址,谁IP地址大。

C-BSR选举

在BSR环境中,由于候选RP是单播发送RP通告给BSR;所以要先确定BSR。

BSR初始延迟通告为130s,在该时间内,BSR不会发送任何报文,而是监听是否有其他BSR存在。所有候选BSR周期性60s发送BSR通告,通过pk选举出C-BSR(**选举规则:**先看优先级,选最小;再看接口地址,选最大)

C-BSR选举成功后,周期性60s发送BSR通告,通告的DIP地址为224.0.0.13(即 PIM的Hello地址),其中包含BSR接口地址、BSR优先级、计时器和RP-SET(RP-SET中包含所有候选RP的信息,初始为空)

RP选举

在C-BSR选举成功后 发送的BSR通告中,就包含了RP-SET,这就包含了所有候选RP的信息。在BSR中,RP的选举是由所有RP来选择的,而auto-RP是不做选举,由CMA选举。

这就是BSR的好处,解决了AUTO-PR的痛点,解决了 CMA和C-PR设备,如果不是直连,那么就会出现,我发包给邻居,邻居要找RP,但是我RP还在选举。

BSR RPF

收到BSR通告的路由器会先就从BSR的RPF校验

1、查看单播路由表去往BSR路由的出接口,是否是我接收BSR通告的入接口

2、查看去往BSR单播路由的下一跳地址和接收BSR通告三层SIP是否一致。如果成功,则接收BSR报文,并通过其他接口产生对应的BSR通告并发出;不一致,就丢弃。

RP的选举:收到BSR通告的路由器会根据最长匹配原则、比较优先级,选最小,比较RP接口地址,选最大。

AUTO-RP是由CMA确认RP,BSR是由各自选举出适合自己的RP,以实现RP的负载均衡。

参考致谢

HCIE路由交换学习指南
HedEx产品文档
知了社区

你可能感兴趣的:(相关笔记——数通,华为,网络,PIM,思科)