我是艺博东 ,是一个思科出身、专注于华为的网工;开始之前,来一个灵魂提问,请问你在2020立的flag都实现了吗?反正我没有,害,打脸时刻 笑哭笑哭。好了,话不多说,我们直接进入正题。
高难度篇小白慎入;之前有同学对我说,让我把代码写全一些,别省略太多,这样他可以快速看懂,所以这期来一次代码全一些的。(是非常详细的那种噢)
PIMv2与协议无关的组播路由协议,对单播网络路由协议没做任何要求,网络使用静态路由,RIP,EIGRP,ISIS ,MP-BGP都可以运行PIM协议。
PIMv2有3种工作模式
1、密集模式DM
2、稀疏模式SM
DM,SM 用于支持ASM的组播网络。
3、指定源组播模式SSM
SSM 用于支持SSM的组播网络
DVMRP 距离矢量组播路由协议
MOSPF 组播OSPF协议
但是对单播网络有要求,比如DVMRP要求IGP使用RIP, MOSPF要求IGP使用OSPF
R1
[Huawei]sysname R1
[R1]multicast routing-enable
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]ip address 1.1.1.1 24
[R1-GigabitEthernet0/0/0]quit
[R1]pim
[R1-pim]int g0/0/0
[R1-GigabitEthernet0/0/0]pim dm
[R1-GigabitEthernet0/0/0]rip
[R1-rip-1]version 2
[R1-rip-1]network 1.0.0.0
R2
[Huawei]sysname R2
[R2]int g0/0/1
[R2-GigabitEthernet0/0/1]ip address 1.1.1.2 24
[R2-GigabitEthernet0/0/1]quit
[R2]multicast routing-enable
[R2]int g0/0/2
[R2-GigabitEthernet0/0/2]ip address 10.1.24.2 24
[R2-GigabitEthernet0/0/2]q
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]ip address 10.1.23.2 24
[R2]pim
[R2-pim]int g0/0/1
[R2-GigabitEthernet0/0/1]pim dm
[R2-GigabitEthernet0/0/1]quit
[R2]rip
[R2-rip-1]v 2
[R2-rip-1]net 1.0.0.0
[R2-rip-1]network 10.0.0.0
R3
[Huawei]sysname R3
[R3]
[R3]int g0/0/1
[R3-GigabitEthernet0/0/1]ip address 10.1.23.3 24
[R3-GigabitEthernet0/0/1]q
[R3]multicast routing-enable
[R3]int g0/0/0
[R3-GigabitEthernet0/0/0]ip address 192.168.1.254 24
[R3-GigabitEthernet0/0/0]q
[R3]int g0/0/2
[R3-GigabitEthernet0/0/2]ip address 10.1.34.3 24
[R3-GigabitEthernet0/0/2]q
[R3]rip
[R3-rip-1]v 2
[R3-rip-1]network 10.0.0.0
[R3-rip-1]net 192.168.1.0
[R3-rip-1]q
[R3]pim
[R3-pim]int g0/0/0
[R3-GigabitEthernet0/0/0]pim dm
[R3-GigabitEthernet0/0/0]igmp enable
[R3-GigabitEthernet0/0/0]int g0/0/1
[R3-GigabitEthernet0/0/1]pim dm
[R3-GigabitEthernet0/0/1]int g0/0/2
[R3-GigabitEthernet0/0/2]pim dm
R4、R5配置类似
R1、R2之间的接口开启了pim dm
模拟ping
[R1]ping multicast -c 10000 239.1.1.1
抓包
R5
[Huawei]sysname R5
[R5]int g0/0/0
[R5-GigabitEthernet0/0/0]ip address 10.1.34.5 24
[R5-GigabitEthernet0/0/0]int g0/0/1
[R5-GigabitEthernet0/0/1]ip address 192.168.5.254 24
[R5]multicast routing-enable
[R5]rip
[R5-rip-1]v 2
[R5-rip-1]network 10.0.0.0
[R5-rip-1]network 192.168.2.0
[R5-rip-1]q
[R5]pim
[R5-pim]int g0/0/0
[R5-GigabitEthernet0/0/0]pim
[R5-pim]int g0/0/0
[R5-GigabitEthernet0/0/0]pim dm
[R5-GigabitEthernet0/0/0]int g0/0/1
[R5-GigabitEthernet0/0/1]pim
[R5-pim]int g0/0/1
[R5-GigabitEthernet0/0/1]pim dm
[R5-GigabitEthernet0/0/1]igmp enable
[R5]dis pim neighbor
[R2]dis multicast rpf-info 1.1.1.1
PC1
加组
[R3]dis pim routing-table
R1模拟ping
R2
[R5]dis pim routing-table
尝试修改R3的rip优先级,看看RPF邻居会不会改变?
[R3]rip
[R3-rip-1]pre
[R3-rip-1]preference 10
抓包R2的接口g0/0/1,R5接口g0/0/1。
有收到报文。
[R1]ping multicast -c 1000 239.1.1.2
都发剪枝报文剪枝掉。
1、PM-DM–邻居发现
Hello消息
a.建立和维护邻居关系
b.在IGMPv1中选举查询者
Hello报文中携带多项PIM协议报文参数,主要用于PIM邻居之间PIM协议报文的控制。具体参数如下:
DR_Priority:表示各路由器接口竞选DR的优先级,优先级越高越容易获胜。该参数只用于PIM-SM中DR的选举。
Holdtime:表示保持邻居为可达状态的超时时间。
LAN_Delay:表示共享网段内传输Prune报文的延迟时间。
Neighbor-Tracking:表示邻居跟踪功能。
Override-Interval:表示Hello报文中携带的否决剪枝的时间间隔。
2、DM模式是扩散机制
(1)路由器接收到组播流量后,对接收该组播流量的接口进行RPF检测。如果RPF检测成功,则创建(S,G)表项,
RPF检测成功的接口成为该(S,G)表项的上游接口。RPF检测失败则丢弃该组播流量。
(2)从上游接口接收到的(S,G)流量,从除了RPF接口之外的存在PIM邻居的接口以及存在直连组成员的接口进行扩散。
(3)周期性扩散-剪枝机制维护(S,G)表项
3、DM模式剪枝/加入机制
(1)当路由器发现自身不存在任何下游接口时,将发起剪枝机制,向RPF接口上发送剪枝报文,即该接口上的所有PIM邻居。
上游路由器收到剪枝报文后,如果剪枝报文中携带的RPF 邻居地址是自身接口IP,则将自身接收剪枝报文的接口从(S,G)下游接口中删除。
a.如果剪枝后,下游接口为NULL ,则继续向(S,G)的RPF接口发送剪枝报文,向上游继续剪枝。
b.如果剪枝后,下游接口不为NULL,则剪枝结束,不在继续朝上游剪枝。
4、PM-DM–嫁接
嫁接,剪枝的路径上如果存在新组成员的加入快速获得组播流量。路由器根据组地址查找对应的(S,G)表项。如果没有对应的(S,G)表项则无法完成嫁接。如果有对应的(S,G)表项,那么根据组播源地址查RP接口,朝RPF邻居的RPF邻居发送单播嫁接报文,SIP为自身路由器接口地址,DIP为RPF邻居的地址。上游RPF邻居接收到嫁接报文,将接收该报文的接口加入到自身(S,G)表项的下游接口中,并单播回复嫁接确认报文。
5、断言机制
为避免在网段上有多个路由器进行组播流量的扩散,引入断言机制。断言报文发给该网段上的所有PIM路由器,即224.0.0.13。断言的优胜者负责在该网段扩散组播流量,失败者将失败的接口从(S,G)表项中删除。
断言的优胜者被下游路由器认为是自己的RPF邻居,比下游路由器自身判断RPF邻居的机制优先。
断言的失败者会在该网段发送剪枝报文,企图将断言优胜者也剪枝掉,断言优胜者如果在3s收到join报文,则否决剪枝报文,如果3s后没有收到join报文,也将接口从(S,G)表项删除,剪枝否决机制。
(1)断言报文中携带
a.路由器到达组播源路由的协议优先级。
b.路由器到达组播源路由的开销值。
c.路由器自身在该网段接口的地址。
(2)断言选举机制
a.协议优先级优的成为断言的winner
b.开销值小的的成为断言的winner
c.接口地址大的成为断言的winner
6、状态刷新机制
是PIM-DM 默认的优化机制,避免了周期性扩散-剪枝行为的发生,导致组播占用网络带宽,节省网络资源。第一跳路由器会周期性每个60s发送PIM的状态刷新报文,目的地址为224.0.0.13,即发给所有的PIM邻居,该报文还携带(S,G)的信息。下游路由接收到状态刷新报文后,会重置(S,G)表项的老化时间以及重置剪枝接口的剪枝超时定时器。当组播源不在向网络发送组播流时,第一跳路由器停止状态刷新报文的发送,全网(S,G)表项超时后被剔除。
通过第一跳路由器周期性发送State Refresh来避免被裁剪的接口因为“剪枝定时器”超时而恢复转发
pim state-refresh-capable //重新启用此功能
undo pim state-refresh-capable //禁止状态刷新报文的转发
扩展: DM模式周期性扩散的意义
1、让全网路由器表明组播源是活跃的。
2、能够维护(S,G)不被老化。
RPF检测机制:
根据组播流量的源地址查找单播路由表,如果接收组播流量的接口是去往组播源地址的单播路由出口,则RPF检测通过,接收该组播流量,并创建(S,G)表项。
如果去往组播源存在多条等价出口,则下一跳地址大的出口,做为RPF接口。RPF接口上的PIM邻居,称为RPF邻居。
R1
[Huawei]sysname R1
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]ip address 10.1.12.1 24
[R1-GigabitEthernet0/0/0]q
[R1]ospf
[R1-ospf-1]a 0
[R1-ospf-1-area-0.0.0.0]network 10.1.12.1 0.0.0.0
[R1-ospf-1-area-0.0.0.0]q
[R1-ospf-1]q
[R1]multicast routing-enable
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]pim dm //配置密集模式,充当组播源
[R1-GigabitEthernet0/0/0]q
[R1]pim
[R1-pim]static-rp 30.30.30.30
R2
[Huawei]sysname R2
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]ip address 10.1.12.2 24
[R2-GigabitEthernet0/0/0]int g0/0/1
[R2-GigabitEthernet0/0/1]ip address 10.1.23.2 24
[R2-GigabitEthernet0/0/1]q
[R2]ospf
[R2-ospf-1]a 0
[R2-ospf-1-area-0.0.0.0]network 10.1.12.2 0.0.0.0
[R2-ospf-1-area-0.0.0.0]network 10.1.23.2 0.0
[R2-ospf-1-area-0.0.0.0]q
[R2-ospf-1]q
[R2]multicast routing-enable
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]pim sm
[R2-GigabitEthernet0/0/0]int g0/0/1
[R2-GigabitEthernet0/0/1]pim sm
[R2-GigabitEthernet0/0/1]q
[R2]pim
[R2-pim]static-rp 30.30.30.30
R3
[Huawei]sysname R3
[R3]int g0/0/0
[R3-GigabitEthernet0/0/0]ip address 10.1.23.3 24
[R3-GigabitEthernet0/0/0]int g0/0/1
[R3-GigabitEthernet0/0/1]ip address 10.1.34.3 24
[R3-GigabitEthernet0/0/1]int l0
[R3-LoopBack0]ip address 30.30.30.30 32
[R3-LoopBack0]q
[R3]ospf
[R3-ospf-1]a 0
[R3-ospf-1-area-0.0.0.0]network 30.30.30.30 0.0.0.0
[R3-ospf-1-area-0.0.0.0]network 10.1.23.3 0.0.0.0
[R3-ospf-1-area-0.0.0.0]network 10.1.34.3 0.0.0.0
[R3-ospf-1-area-0.0.0.0]q
[R3-ospf-1]q
[R3]multicast routing-enable
[R3]int g0/0/0
[R3-GigabitEthernet0/0/0]pim sm
[R3-GigabitEthernet0/0/0]int g0/0/1
[R3-GigabitEthernet0/0/1]pim sm
[R3-GigabitEthernet0/0/1]q
[R3]pim
[R3-pim]static-rp 30.30.30.30
R4
[Huawei]sysname R4
[R4]int g0/0/0
[R4-GigabitEthernet0/0/0]ip address 10.1.34.4 24
[R4-GigabitEthernet0/0/0]int g0/0/1
[R4-GigabitEthernet0/0/1]ip address 10.1.45.4 24
[R4-GigabitEthernet0/0/1]q
[R4]ospf
[R4-ospf-1]a 0
[R4-ospf-1-area-0.0.0.0]network 10.1.34.4 0.0.0.0
[R4-ospf-1-area-0.0.0.0]network 10.1.45.4 0.0.0.0
[R4-ospf-1-area-0.0.0.0]q
[R4-ospf-1]q
[R4]multicast routing-enable
[R4]int g0/0/0
[R4-GigabitEthernet0/0/0]pim sm
[R4-GigabitEthernet0/0/0]int g0/0/1
[R4-GigabitEthernet0/0/1]pim sm
[R4-GigabitEthernet0/0/1]q
[R4]pim
[R4-pim]static-rp 30.30.30.30
R5
[Huawei]sysname R5
[R5]int g0/0/0
[R5-GigabitEthernet0/0/0]ip address 10.1.45.5 24]
[R5-GigabitEthernet0/0/0]int g0/0/1
[R5-GigabitEthernet0/0/1]ip address 192.168.5.254 24
[R5-GigabitEthernet0/0/1]q
[R5]ospf
[R5-ospf-1]a 0
[R5-ospf-1-area-0.0.0.0]network 10.1.45.5 0.0.0.0
[R5-ospf-1-area-0.0.0.0]network 192.168.5.254 0.0.0.0
[R5-ospf-1-area-0.0.0.0]q
[R5-ospf-1]q
[R5]multicast routing-enable
[R5]int g0/0/0
[R5-GigabitEthernet0/0/0]pim sm
[R5-GigabitEthernet0/0/0]int g0/0/1
[R5-GigabitEthernet0/0/1]pim sm
[R5-GigabitEthernet0/0/1]igmp enable
[R5-GigabitEthernet0/0/1]q
[R5]pim
[R5-pim]static-rp 30.30.30.30
[R5]dis pim rp-info 239.1.1.1
[R5]display multicast rpf-info 30.30.30.30
PC1加组239.1.1.1
dis pim routing-table
抓包,R5的接口g0/0/0
PC1离组
可配置静态加组
[R5]int g0/0/1
[R5-GigabitEthernet0/0/1]igmp static-group 239.1.1.1
[R5]dis pim routing-table
R4、R3也有pim表项信息。
[R5]pim
[R5-pim]spt-switch-threshold infinity
正常情况下,组播流量发过来之后,R1首先把它封装在单播的注册报文发给RP,RP收到之后进行解封装,沿着( * ,G)往下流,解封装之后提取源的地址,创建(S,G)表项,这个表项的出口怎么来?从( * ,G)表项复制过来的,上游接口根据组播源的地址找RPF接口,向上发送(S,G)join消息,组播流量沿着(S,G)join消息创建出来的SPT树往外发,R3收到组播源之后,发组播源的方向(R1)发送注册停止报文。
抓包R2的g0/0/1接口,看看能不能抓取注册报文。
ping测组播源(需要的时候还一个组播地址)
[R1]ping multicast -c 1000 239.1.1.10
源地址是10.1.12.1、目的地址是239.1.1.10的注册报文。
注册报文,注册停止报文是周期性发送的。
PC1加组
dis pim routing-table
可创建(*,G)表项。
概述一下: register由源端DR在自身(S,G)表项没有老化删除之前,会每隔60s秒周期性发送register报文,用于告知组播源是活跃的。当(S,G)表项不存在后,则不再发送regisiter,当创建(S,G)表项是会立即发送注册报文。
分三个部分:
(1)接收者首先加人共享树源
(2)Regisler首先加入
(3)接收者和源域RP之间的SPT加入组
当路由器接收到从RP发来的针对(S,G)项的Register-Stop报文,会立刻停止发送封装组播数据的Register报文,此时路由器进入注册抑制状态。
执行此命令可设置注册抑制状态的超时时间。超时后,源端DR将恢复向RP发送Register报文。
7.1 PIM-SM的DR分为2种
(1)源端DR:负责发送Register报文或者Register-stop报文构建SPT树。
(2)成员端DR:负责发送join报文构建RPT树。
7.2 PIM-SM模式
PIM网络的路由器
(S,G)一定要事先知道S的地址,以及存在S的路由。
(* ,G)一定要事先知道RP的地址,以及存在RP的路由。
7.3 PIM-SM
( * ,G)表项是由收到成员报告报文或者收到( * ,G)join报文而被创建的。
( * ,G)表项的上行接口是根据RP的地址进行RPF检测得到的。
( * ,G)表项的下游接口是存在直连组成员或者收到正确的( * ,G)join报文而被创建出来的。
( * ,G)表项的下游接口收到( * ,G)的剪枝报文或者最后组成员leave报文而被删除。
当( * ,G)表项下游接口为NULL时,朝RP的PRF接口发送( * ,G)剪枝报文。
(S,G)表项在收到(S,G)的join/prune报文或者RP收到Register报文,或者进行SPT切换时。
(S,G)表项的上行接口时根据组播源的地址进行RPF检测得到的。
(S,G)表项的下游接口是存在直连组成员或者收到正确的(S,G)join报文而被创建出来的。
(S,G)表项的下游接口收到(S,G)的剪枝报文或者最后组成员leave报文而被删除。
7.4 工作机制包括
(1)邻居发现
(2)DR竞选
(3)RP发现
(4)RPT构建
(5)组播源注册
(6)SPT切换
(7)剪枝/加入
(8)断言
首先要知道RR的位置。
还有前提条件要有路由。
8.1 RP发现
所有路由器均需知晓RP所在位置.
发现RP方式
(1)静态RP(手工配置)
(2)动态RP
8.2 RP的特点
(1)同一个时刻一个组只能有一个RP
(2)不同的组可以有相同的RP
8.3 简单分析
8.3.1 拓扑
8.3.2 简单配置与分析
R1
[Huawei]sysname R1
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]ip address 10.1.12.1 24
[R1-GigabitEthernet0/0/0]q
[R1]multicast routing-enable
[R1]pim
[R1-pim]static-rp 10.10.10.10
[R1-pim]int g0/0/0
[R1-GigabitEthernet0/0/0]pim sm
R2
[Huawei]sysname R2
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]ip address 10.1.12.2 24
[R2-GigabitEthernet0/0/0]q
[R2]multicast routing-enable
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]pim sm
[R1]acl 2000
[R1-acl-basic-2000]rule permit source 239.1.1.0 0.0.0.255
[R1-acl-basic-2000]q
[R1]pim
[R1-pim]static-rp 20.20.20.20 2000
[R1-pim]dis pim rp-info 239.1.1.1
[R1]acl 2010
[R1-acl-basic-2010]rule permit source 239.1.1.0 0.0.0.31
[R1-acl-basic-2010]q
[R1]pim
[R1-pim]static-rp 30.30.30.30 2010
static-rp 10.10.10.10 将10.10.10.10设置为所有组的RP
static-rp 20.20.20.20 2000 将20.20.20.20设置为acl 2000 组地址范围的RP
static-rp 30.30.30.30 2010 将30.30.30.30设置为acl 2010 组地址范围的RP
总结一下:(1)如果某个组地址同时满足多条ACL,则掩码长度大的优先,即越精确越优先。(2)默认情况动态RP优先使用。
8.3.3 动态RP协议
BSR 自举协议,开放标准的协议。
Auto RP 自动RP协议,思科私有。
8.4 拓扑
8.4.1 BSR的工作机制
1、首先管理员需要手动配置C-BSR路由器,可以是一台或者多台。
2、在所有C-BSR路由器中选举出BSR路由器。
3、如果BSR路由器失效,在其他的C-BSR中重新选举新的BSR路由器。
4、如果只有一台C-BSR,则它成为BSR。
8.4.2 选举过程
1、C-BSR初始认为自身就是BSR,在所有存在PIM邻居的接口上周期性发送Bootstrap报文,源地址为物理接口IP,目的地址为224.0.0.13,ttl=1。
2、Bootstrap报文中携带C-BSR地址,C-BSR优先级,逐跳泛洪到整个PIM网络。
(1)比较C-BSR的优先级,值越大优先成为BSR。
(2)优先级相同,C-BSR地址大的成为BSR。
3、竞选失败的C-BSR将不会周期性发送Bootstrap报文,即此刻网络中只有BSR周期性发送Bootstrape。
4、C-BSR维护一个BSR失效计时器,默认在130s超时如果没有收到Bootstrap报文,则认为BSR失效,重新进行BSR的竞选。
8.4.3 简单配置与分析
AR11
[AR11]sysname AR11
[AR11]int g0/0/0
[AR11-GigabitEthernet0/0/0]ip address 10.1.12.1 24
[AR11-GigabitEthernet0/0/0]int l0
[AR11-LoopBack0]ip add 1.1.1.1 32
[AR11-LoopBack0]pim sm
[AR11-LoopBack0]q
[AR11]mu ro
[AR11]pim
[AR11-pim]c-bsr LoopBack 0
[AR11-pim]c-bsr interval 5 //5秒发一次
[AR11-pim]q
[AR11]int g0/0/0
[AR11-GigabitEthernet0/0/0]pim sm
[AR11]int g0/0/1
[AR11-GigabitEthernet0/0/1]ip address 10.1.14.1 24
[AR11-GigabitEthernet0/0/1]pim sm
[AR11-GigabitEthernet0/0/1]q
[AR11]rip
[AR11-rip-1]v 2
[AR11-rip-1]network 1.0.0.0
[AR11-rip-1]network 10.0.0.0
AR12
[Huawei]sysname AR12
[AR12]int g0/0/0
[AR12-GigabitEthernet0/0/0]ip address 10.1.12.2 24
[AR12-GigabitEthernet0/0/0]int g0/0/1
[AR12-GigabitEthernet0/0/1]ip address 10.1.23.2 24
[AR12-GigabitEthernet0/0/1]q
[AR12]multicast routing-enable
[AR12]int g0/0/0
[AR12-GigabitEthernet0/0/0]pim sm
[AR12-GigabitEthernet0/0/0]int g0/0/1
[AR12-GigabitEthernet0/0/1]pim sm
[AR12-GigabitEthernet0/0/1]q
[AR12]rip
[AR12-rip-1]v 2
[AR12-rip-1]network 10.0.0.0
[AR12-rip-1]q
AR13
[Huawei]sysname AR13
[AR13]int g0/0/0
[AR13-GigabitEthernet0/0/0]ip address 10.1.23.3 24
[AR13-GigabitEthernet0/0/0]q
[AR13]multicast routing-enable
[AR13]int g0/0/0
[AR13-GigabitEthernet0/0/0]pim sm
[AR13]int g0/0/1
[AR13-GigabitEthernet0/0/1]ip address 10.1.34.3 24
[AR13-GigabitEthernet0/0/1]pim sm
[AR13-GigabitEthernet0/0/1]q
[AR13]rip
[AR13-rip-1]v 2
[AR13-rip-1]network 3.0.0.0
[AR13-rip-1]network 10.0.0.0
[AR13-rip-1]q
AR14
[Huawei]sysname AR14
[AR14]int g0/0/0
[AR14-GigabitEthernet0/0/0]ip address 10.1.34.4 24
[AR14-GigabitEthernet0/0/0]pim sm
[AR14-GigabitEthernet0/0/0]q
[AR14]multicast routing-enable
[AR14]int g0/0/1
[AR14-GigabitEthernet0/0/1]ip address 10.1.14.4 24
[AR14-GigabitEthernet0/0/1]pim sm
[AR14-GigabitEthernet0/0/1]q
[AR14]multicast routing-enable
[AR14]rip
[AR14-rip-1]v 2
[AR14-rip-1]network 10.0.0.0
抓包AR11的g0/0/0接口,Bootstrap报文。
[AR11-pim]c-bsr priority 106 //修改c-bsr优先级为106
[AR12]dis pim bsr-info
[AR12]dis multicast rpf-info 1.1.1.1
AR13
[AR13]int l0
[AR13-LoopBack0]ip address 3.3.3.3 32
[AR13-LoopBack0]pim sm
[AR13-LoopBack0]q
[AR13]pim
[AR13-pim]c-bsr LoopBack 0
[AR13-pim]c-bsr interval 5
[AR13-pim]q
1.1.1.1为主,3.3.3.3为候选者。
[AR13-pim]c-bsr priority 200 //修改c-bsr优先级为200
R3的bsr修改优先级为200后,这个时候3.3.3.3为获胜者,1.1.1.1为候选者。
小结: 为了防止Bootstrap的泛洪环路,引入BSR RPF检测机制,路由器收到Bootstrap报文,根据BSR的地址进行RPF检测。只有同时满足以下2个条件时才接收Bootstrap报文,并向其他接口继续泛洪。
(1)收到Bootstrap的接口为去往BSR地址的出口。
(2)收到Bootstrap的源地址为RPF邻居的地址。
8.4.4 RP的选举机制
1、首先管理员需要手动配置C-RP路由器,可以是一台或者多台,C-BSR也可以是C-RP。
2、C-RP向BSR的地址发送单播的Advertisement报文,源地址为C-RP的竞选地址,目的地址为BSR的地址。
3、Advertisement报文中携带RP的竞选参数,包括:C-RP的地址,服务的组地址范围,C-RP优先级。
RP选举机制
(1)服务组范围掩码长的优先。
(2)C-RP优先级值小的优,默认为0。
(3)根据bootstrp设置hash mask len 计算Hash,值大的优先。
(4)C-RP地址大的优先。
R14
[AR14]int l0
[AR14-LoopBack0]ip address 4.4.4.4 32
[AR14-LoopBack0]q
[AR14]rip
[AR14-rip-1]net 4.0.0.0
[AR14-rip-1]q
[AR14]pim
[AR14-pim]c-rp LoopBack 0
[AR14]acl 2060
[AR14-acl-basic-2060]rule permit source 239.1.1.0 0.0.0.255
[AR14-acl-basic-2060]pim
[AR14-pim]c-rp LoopBack 0 group-policy 2060
[AR14-pim]c-rp advertisement-interval 5 //5秒一发
AR12
[AR12]int l0
[AR12-LoopBack0]ip address 2.2.2.2 32
[AR12-LoopBack0]q
[AR12]rip
[AR12-rip-1]net 2.0.0.0
[AR12-rip-1]pim
[AR12-pim]c-rp LoopBack 0
[AR12-pim]c-rp advertisement-interval 5
在AR14的G0/0/0接口抓包
[AR14]dis pim rp-info 239.1.1.127
服务范围:那个组地址越精确,越优。
不发送自举报文,也不接收自举报文,避免多个BSR域互相干扰。
[AR13-GigabitEthernet0/0/0]pim bsr-boundary
9.1 SPT树切换
(1)组成员DR向源方向发送Join报文
(2)组成员DR或上游设备向RP发送Prune报文,RP向源端DR发送Prune报文
9.2 PIM-SM的SPT切换的条件
(1)SPT切换由最后一跳路由器发起。
(2)当最后一跳路由器接收到从RPT树的组播流量后,可以通过组播流量得知组播源的地址,则默认发起SPT切换,希望构架一颗源到最后一跳路由器的SPT树,实现路由优化。
9.3 SPT切换的流程
(1)最后一跳路由根据组播源的地址进行RPF检测,并向指向组播源的RPF接口上RPF邻居发送(S,G)的join报文,逐跳构建SPT树。
(2)当去往组播源地址和去往RP的地址的RPF接口不一致时,路由器沿着去往组播源的RPF发送(S,G)(S)join,沿着去往RP的RPF接口发送(S,G)(SR)prune。
沿着RP方向上的路由将自身(S,G)表项的下游口剪枝,实现SPT切换,通过SPT树接收组播流量。
9.4 拓扑
AR1
[Huawei]sysname AR1
[AR1]int g0/0/0
[AR1-GigabitEthernet0/0/0]ip address 10.1.12.1 24
[AR1-GigabitEthernet0/0/0]ospf
[AR1-ospf-1]a 0
[AR1-ospf-1-area-0.0.0.0]network 10.1.12.1 0.0.0.0
AR2
[Huawei]sysname AR2
[AR2]int g0/0/0
[AR2-GigabitEthernet0/0/0]ip address 10.1.12.2 24
[AR2-GigabitEthernet0/0/0]int g0/0/1
[AR2-GigabitEthernet0/0/1]ip address 10.1.23.2 24
[AR2-GigabitEthernet0/0/1]ospf
[AR2-ospf-1]a 0
[AR2-ospf-1-area-0.0.0.0]network 10.1.12.2 0.0.0.0
[AR2-ospf-1-area-0.0.0.0]network 10.1.23.2 0.0.0.0
AR4
[Huawei]sysname AR4
[AR4]int g0/0/0
[AR4-GigabitEthernet0/0/0]ip address 10.1.34.4 24
[AR4-GigabitEthernet0/0/0]int g0/0/1
[AR4-GigabitEthernet0/0/1]ip address 10.1.45.4 24
[AR4-GigabitEthernet0/0/1]int l0
[AR4-LoopBack0]ip address 4.4.4.4 32
[AR4-LoopBack0]ospf
[AR4-ospf-1]a 0
[AR4-ospf-1-area-0.0.0.0]network 4.4.4.4 0.0.0.0
[AR4-ospf-1-area-0.0.0.0]network 10.1.34.4 0.0.0.0
[AR4-ospf-1-area-0.0.0.0]network 10.1.45.4 0.0.0.0
底层配置AR3、AR5、AR6的类似
[AR6]dis ip routing-table protocol ospf
[AR1]multicast routing-enable
[AR1]int g0/0/0
[AR1-GigabitEthernet0/0/0]pim dm
AR2
[AR2]multicast routing-enable
[AR2]int g0/0/0
[AR2-GigabitEthernet0/0/0]pim sm
[AR2-GigabitEthernet0/0/0]pim hello-option dr-priority 106
[AR2-GigabitEthernet0/0/0]int g0/0/1
[AR2-GigabitEthernet0/0/1]pim sm
AR4
[AR4]multicast routing-enable
[AR4]int g0/0/0
[AR4-GigabitEthernet0/0/0]pim sm
[AR4-GigabitEthernet0/0/0]int g0/0/1
[AR4-GigabitEthernet0/0/1]pim sm
[AR4-GigabitEthernet0/0/1]int l0
[AR4-LoopBack0]pim sm
[AR4-LoopBack0]pim
[AR4-pim]c-bsr LoopBack 0
[AR4-pim]c-rp LoopBack 0
AR6
[AR6]multicast routing-enable
[AR6]int g0/0/0
[AR6-GigabitEthernet0/0/0]pim sm
[AR6-GigabitEthernet0/0/0]int g0/0/1
[AR6-GigabitEthernet0/0/1]pim sm
[AR6-GigabitEthernet0/0/1]igmp version 2
[AR6-GigabitEthernet0/0/1]igmp enable
底层配置AR3、AR5的类似
[AR6]dis pim rp-info
[AR6]pim
[AR6-pim]spt-switch-threshold 1000
//开启SPT切换,阈值为1000,当AR6组播的速率到达每秒1000的时候就开始spt切换,默认为0
[AR6-pim]spt-switch-threshold infinity //关闭spt切换
表项是( * ,G)表项,判断条件 SWR
SM模式下join/Prune报文3bit的意义
S-bit是稀疏bit,对于pim-sm来说该bit为1,用于与PIMv1保持兼容性。
WC-bit=1表示加入地址是RP的地址,而不是组播源地址,向RP发送加入消息时将W-bit置为0,表示组播源地址。
RPT-bit=1表示该消息沿组播树被传播到RP,0表示向组播源发送加入消息。
[AR6]dis pim routing-table
(*,G)表项。
[AR1]ping multicast -c 10000 238.1.1.10
[AR4]dis pim routing-table
[AR1]ping multicast -c 10000 238.1.1.10
PC1加组238.1.1.10
[AR4]dis pim routing-table
在PR在(*,G)的下游接口会复制到(S,G)的下游接口中。RP收到组播源后会往下游接口发出。
[AR5]dis pim routing-table
Flag: SPT ACT
[AR3]int g0/0/2
[AR3-GigabitEthernet0/0/2]ip address 10.1.35.3 24
[AR3-GigabitEthernet0/0/2]pim sm
[AR3-GigabitEthernet0/0/2]ospf
[AR3-ospf-1]a 0
[AR3-ospf-1-area-0.0.0.0]network 10.1.35.3 0.0.0.0
AR5
[AR5]int g0/0/2
[AR5-GigabitEthernet0/0/2]ip address 10.1.35.5 24
[AR5-GigabitEthernet0/0/2]pim sm
[AR5-GigabitEthernet0/0/2]ospf
[AR5-ospf-1]a 0
[AR5-ospf-1-area-0.0.0.0]network 10.1.35.5 0.0.0.0
[AR3]dis pim neighbor
AR3的下有接口是G0/0/2,流量走向。
在AR5的G0/0/0上进行抓包
WC-bit=1 表示加入地址是RP的地址,而不是组播源地址,向RP发送加入消息时将W-bit置为0,表示组播源地址。
征服畏惧、建立自信的最快最确实的方法,就是去做你害怕的事,直到你获得成功的经验。
欢迎访问我的易百纳技术社区文章《华为 协议无关组播PIM 高难度篇小白慎入》
https://www.ebaina.com/articles/140000005303
好了这期就到这里了,如果你喜欢这篇文章的话,请点赞评论分享收藏,如果你还能点击关注,那真的是对我最大的鼓励。谢谢大家,下期见!