组播Multicast进阶:PIM-SM实验配置

描述

实验拓扑

PIM-SM

实验需求

网络拓扑、IP地址规划如上图所示;

R1、R2、R3、R4运行OSPF协议,打通网络的单播路由;

R1、R2、R3、R4同时也是组播路由器,运行PIM-SM;

R3为RP,配置Loopback0,IP地址为3.3.3.3,该地址作为RP的地址;

接收者加入组播组224.1.1.1;观察RPT的构建;

在R4上将RPT-SPT的切换设置为永远不切换,同时从源开始发送组播数据,观察源的注册过程、RP到源的SPT建立过程、组播流量沿着RPT下行的过程。

在R4上将RPT-SPT的切换恢复为默认值,同时将R4的GE0/0/1口的OSPF Cost值稍稍调大,观察RPT到SPT的切换过程。

本实验可使用华为自研模拟器eNSP完成。

实验步骤及配置

R1、R2、R3及R4完成接口IP地址的配置,运行OSPF。

R1的基础配置如下:

 

[R1] interface GigabitEthernet0/0/0
[R1-GigabitEthernet0/0/0] ip address 10.1.12.1 24
[R1] interface GigabitEthernet0/0/1
[R1-GigabitEthernet0/0/1] ip address 10.1.14.1 24
[R1] ospf 1 router-id 1.1.1.1
[R1-ospf-1] area 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] network 10.1.14.1 0.0.0.0

 

R2的基础配置如下:

 

[R2] interface GigabitEthernet0/0/0
[R2-GigabitEthernet0/0/0] ip address 10.1.12.2 24
[R2] interface GigabitEthernet0/0/1
[R2-GigabitEthernet0/0/1] ip address 10.1.23.2 24
[R2] interface GigabitEthernet0/0/2
[R2-GigabitEthernet0/0/2] ip address 10.10.10 24
[R2] ospf 1 router-id 2.2.2.2
[R2-ospf-1] area 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.0.0
[R2-ospf-1-area-0.0.0.0] network 10.10.10.254 0.0.0.0
[R2-ospf-1-area-0.0.0.0] quit
[R2-ospf-1] silent-interface GigabitEthernet0/0/2

 

R3的基础配置如下:

 

[R3] interface GigabitEthernet0/0/0
[R3-GigabitEthernet0/0/0] ip address 10.1.23.3 24
[R3] interface GigabitEthernet0/0/1
[R3-GigabitEthernet0/0/1] ip address 10.1.34.3 24
[R3] interface loopback 0
[R3-loopback0] ip address 3.3.3.3 255.255.255.255  #该地址作为RP的地址
[R3] ospf 1 router-id 3.3.3.3
[R3-ospf-1] area 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] network 3.3.3.3 0.0.0.0

 

R4的基础配置如下:

 

[R4] interface GigabitEthernet0/0/0
[R4-GigabitEthernet0/0/0] ip address 10.1.14.4 255.255.255.0
[R4] interface GigabitEthernet0/0/1
[R4-GigabitEthernet0/0/1] ip address 10.1.34.4 255.255.255.0
[R4] interface GigabitEthernet0/0/2
[R4-GigabitEthernet0/0/2] ip address 10.1.1.254 255.255.255.0
[R4] ospf 1 router-id 4.4.4.4
[R4-ospf-1] area 0
[R4-ospf-1-area-0.0.0.0] network 10.1.14.4 0.0.0.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 1.1.1.254 0.0.0.0
[R4-ospf-1-area-0.0.0.0] quit
[R4-ospf-1] silent-interface GigabitEthernet0/0/2

 

R1、R2、R3及R4部署PIM-SM

R1的配置如下:

 

[R1] multicast routing-enable
[R1] interface GigabitEthernet0/0/0
[R1-GigabitEthernet0/0/0] pim sm  #在接口上激活PIM-SM
[R1] interface GigabitEthernet0/0/1
[R1-GigabitEthernet0/0/1] pim sm  #在接口上激活PIM-SM
[R1] pim
[R1-pim] static-rp 3.3.3.3 #设置静态RP地址3.3.3.3

 

R2的配置如下:

 

[R2] multicast routing-enable
[R2] interface GigabitEthernet0/0/0
[R2-GigabitEthernet0/0/0] pim sm 
[R2] interface GigabitEthernet0/0/1
[R2-GigabitEthernet0/0/1] pim sm
[R2] interface GigabitEthernet0/0/2
[R2-GigabitEthernet0/0/2] pim sm 
[R2] pim
[R2-pim] static-rp 3.3.3.3

 

R3的配置如下:

 

[R3] multicast routing-enable
[R3] interface GigabitEthernet0/0/0
[R3-GigabitEthernet0/0/0] pim sm
[R3] interface GigabitEthernet0/0/1
[R3-GigabitEthernet0/0/1] pim sm 
[R3] interface loopback0
[R3-loopback0] pim sm
[R3] pim
[R3-pim] static-rp 3.3.3.3

 

R4的配置如下:

 

[R4] multicast routing-enable
[R4] interface GigabitEthernet0/0/0
[R4-GigabitEthernet0/0/0] pim sm 
[R4] interface GigabitEthernet0/0/1
[R4-GigabitEthernet0/0/1] pim sm
[R4] interface GigabitEthernet0/0/2
[R4-GigabitEthernet0/0/2] igmp enable #连接组播接收者的接口激活IGMP
[R4] pim
[R4-pim] static-rp 3.3.3.3

 

完成配置后,先做一下初步的验证:

 

display pim neighbor
VPN-Instance: public net
Total Number of Neighbors = 2
Neighbor Interface Uptime Expires Dr-Priority BFD-Session
10.1.14.1 GE0/0/0 0040 0024 1 N
10.1.34.3 GE0/0/1 0039 0037 1 N

 

上述输出的是R4的PIM邻居表,可以看到R4发现了两个PIM邻居。在其他路由器上也做相应的查看,确保PIM邻居都发现完整了。

 

display pim rp-info
VPN-Instance: public net
PIM SM static RP Number:1
Static RP: 3.3.3.3

 

上面的输出查看的是R4的PIM RP信息,我们为R4手工告知了RP的地址,3.3.3.3,其实也就是R3。

组播用户加入组224.1.1.1,查看RPT的建立过程

现在组播接收者PC加入组224.1.1.1(具体的操作方法请见本手册的PIM-DM实验小节,有详细描述),这将触发PC发送IGMP成员关系报告,R4最为最后一跳路由器会从GE0/0/2口上收到这个报告,它便知道该接口下出现了组播组224.1.1.1的成员,它将建立(* , 224.1.1.1)的组播路由表项:

 

display pim routing-table
VPN-Instance: public net
Total 1 (*, G) entry; 0 (S, G) entry
(*, 224.1.1.1)
RP: 3.3.3.3
Protocol: pim-sm, Flag: WC EXT
UpTime: 0004
Upstream interface: GigabitEthernet0/0/1
Upstream neighbor: 10.1.34.3
RPF prime neighbor: 10.1.34.3
Downstream interface(s) information: None

 

随后R4会向RPF上行接口发送(*,G)PIM Join消息,请求加入共享树RPT。R4如何判断哪个接口是RPF上行接口呢?R4通过单播路由表来判断,对于RPT,PIM路由器在做RPF检查的时候是朝向RP的,因此R4在单播路由表中查找到达RP3.3.3.3的路由,选择路由的出接口作为RPF接口,但是这里由于全网接口COST都是默认值,因此R4上关于3.3.3.3的OSPF路由在R1及R3上出现等价负载均衡,这时R4会选择R1及R3中接口IP较大的作为RPF的主邻居,也就是R3,因此R4的GE0/0/1成为RPF接口。这与上面的输出吻合。

R3在收到R4发上来的PIM Join消息后,它会创建一个(*,224.1.1.1)表项,将收到该报文的接口GE0/0/1添加到下行接口列表中,由于自己就是RP了,因此共享树的一个分支就此建立完成。

 

display pim routing-table
VPN-Instance: public net
Total 1 (*, G) entry; 0 (S, G) entry
(*, 224.1.1.1)
RP: 3.3.3.3 (local)
Protocol: pim-sm, Flag: WC
UpTime: 0009
Upstream interface: Register
Upstream neighbor: NULL
RPF prime neighbor: NULL
Downstream interface(s) information:
Total number of downstreams: 1  #下行接口列表
1: GigabitEthernet0/0/1
Protocol: pim-sm, UpTime: 0009, Expires: 0021
PIM-SM

 

源注册、RP到源的SPT建立过程、组播报文的传输过程

接下去我们来观察一下源注册、RP到源的SPT建立过程及组播报文的传输过程。首先在R4上将RPT-SPT的切换设置为永远不切换,因为这个特性我们在下一步中再去关注,这里暂时忽略掉。

 

[R4] pim
[R4-pim] spt-switch-threshold infinity

 

使用上述配置将R4的PIM SPT切换特性设置为永远不切换。

现在组播源开始向组播组224.1.1.1发送组播数据(这可以通过ping 224.1.1.1来模拟)。组播数据到达第一跳路由器R2后,R2会将组播数据封装在单播的PIM Register报文中发往RP也就是R3。

通过在R2的GE0/0/1口上抓包,可以看到Register报文,这是一个单播包,目的地址是3.3.3.3。R3在收到这个包后,解封装发现里头是个(10.10.10.10,224.1.1.1)的组播数据包,因此在本地创建一个(10.10.10.10,224.1.1.1)表项,同时将组播数据包沿着RPT先传下去(从GE0/0/1口发出去)。另一方面,R3紧接着向源的方向(同样是借助单播路由表查找到10.10.10.10的路由来获得RPF接口)发送(10.10.10.10,224.1.1.1)的PIM Join消息,试图在自己与源之间建立一条源树SPT。

 

display pim routing-table
VPN-Instance: public net
Total 1 (*, G) entry; 1 (S, G) entry
(*, 224.1.1.1)
RP: 3.3.3.3 (local)
Protocol: pim-sm, Flag: WC
UpTime: 0057
Upstream interface: Register
Upstream neighbor: NULL
RPF prime neighbor: NULL
Downstream interface(s) information:
Total number of downstreams: 1
1: GigabitEthernet0/0/1
Protocol: pim-sm, UpTime: 0057, Expires: 0033

(10.10.10.10, 224.1.1.1)
RP: 3.3.3.3 (local)
Protocol: pim-sm, Flag: SPT 2MSDP ACT
UpTime: 0022
Upstream interface: GigabitEthernet0/0/0
Upstream neighbor: 10.1.23.2
RPF prime neighbor: 10.1.23.2
Downstream interface(s) information:
Total number of downstreams: 1
1: GigabitEthernet0/0/1
Protocol: pim-sm, UpTime: 0022, Expires: -

 

R2收到这个Join消息后,将GE0/0/1口添加到(10.10.10.10,224.1.1.1)组播表项的下行接口列表中国,然后将组播流量沿着建立好的SPT转发到RP,而不再将组播流量封装到Register报文中。

 

dis pim routing-table
VPN-Instance: public net
Total 0 (*, G) entry; 1 (S, G) entry
(10.10.10.10, 224.1.1.1)
RP: 3.3.3.3
Protocol: pim-sm, Flag: SPT LOC ACT
UpTime: 0041
Upstream interface: GigabitEthernet0/0/2
Upstream neighbor: NULL
RPF prime neighbor: NULL
Downstream interface(s) information:
Total number of downstreams: 2
1: GigabitEthernet0/0/1
Protocol: pim-sm, UpTime: 0041, Expires: 0049
2: Register
Protocol: pim-sm, UpTime: 0041, Expires: -
PIM-SM

 

SPT切换过程

现在,将R4上之前配置的SPT切换的相关配置去除(undo spt-switch-threshold)。在默认情况下,R4作为最后一跳路由器,只要一收到224.1.1.1的组播数据包,则立即进行SPT的切换。接着将R4的GE0/0/1口OSPF Cost稍稍调大,调节为2(默认是1),我们通过这个动作来模拟这样一个事实:“R4从R1到达源,比从R3到达源要更近”。

现在,当R4从GE0/0/1口收到第一个224.1.1.1的组播数据包时,将启动SPT切换机制,朝着源的方向(也就是R1)发送(10.10.10.10,224.1.1.1)的PIM Join消息,请求加入SPT。

R1收到这个Join消息后,创建(10.10.10.10,224.1.1.1)表项,将GE0/0/1口添加到下行接口列表,同时向R2发送Join消息。R2收到这个Join消息后,将自己的GE0/0/0口添加到(10.10.10.10,224.1.1.1)表项的下行接口列表,并开始向GE0/0/0口下传组播数据。

 

display multicast routing-table
Multicast routing table of VPN-Instance: public net
Total 1 entry
00001. (10.10.10.10, 224.1.1.1)
Uptime: 0005
Upstream Interface: GigabitEthernet0/0/2
List of 3 downstream interfaces
1: GigabitEthernet0/0/0
2: GigabitEthernet0/0/1
3: Register

 

这一步完成之后,网络中的组播路径树如下所示:

PIM-SM

现在R4会从R1及R3收到组播数据的两份拷贝,这显然是没有意义的,因此它向R3发送一个Prune消息,将自己从RPT上剪除。R3收到这个消息后,将接口GE0/0/1从(*,224.1.1.1)表项的下行接口列表中删除,也就不再向GE0/0/1口发送组播流量了,然后发现下行接口列表为空,因此向R2发送一个Prune消息,请求将自己从SPT上修剪掉,因为它不再需要组播流量了。R2收到这个Prune消息后,将GE0/0/1口从表项的下行接口列表中删除。

最终R2的组播表项如下:

 

display pim routing-table
VPN-Instance: public net
Total 0 (*, G) entry; 1 (S, G) entry
(10.10.10.10, 224.1.1.1)
RP: 3.3.3.3
Protocol: pim-sm, Flag: SPT LOC ACT
UpTime: 0019
Upstream interface: GigabitEthernet0/0/2
Upstream neighbor: NULL
RPF prime neighbor: NULL
Downstream interface(s) information:
Total number of downstreams: 2
1: GigabitEthernet0/0/0
Protocol: pim-sm, UpTime: 0019, Expires: 0011
2: Register
Protocol: pim-sm, UpTime: 0019, Expires: -

 

组播路径树如下:

PIM-SM

  审核编辑:汤梓红
 
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分