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

描述

实验拓扑

路由器

实验需求

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

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

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

接收者加入组播组224.1.1.1,在R4上观察IGMP信息;

组播源开始向组播组224.1.1.1发送组播数据,观察Assert现象、Prune现象。

实验步骤及配置

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.134.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.134.1 0.0.0.0
[R1-ospf-1-area-0.0.0.0] quit
[R1-ospf-1] quit

 

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.254 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 #G0/0/2口未连接OSPF路由器
[R2-ospf-1] quit

 

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.134.3 24
[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.134.3 0.0.0.0
[R3-ospf-1-area-0.0.0.0] quit
[R3-ospf-1] quit

 

R4的配置如下:

 

[R4] interface GigabitEthernet0/0/0
[R4-GigabitEthernet0/0/0] ip address 10.1.134.4 24
[R4] interface GigabitEthernet0/0/1
[R4-GigabitEthernet0/0/1] ip address 10.1.1.254 24
[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.134.4 0.0.0.0
[R4-ospf-1-area-0.0.0.0] network 10.1.1.254 0.0.0.0
[R4-ospf-1-area-0.0.0.0] quit
[R4-ospf-1] silent-interface GigabitEthernet0/0/1
[R4-ospf-1] quit

 

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

R1的配置如下:

 

[R1] multicast routing-enable  #激活组播路由功能
[R1] interface GigabitEthernet0/0/0
[R1-GigabitEthernet0/0/0] pim dm #在接口上激活PIM密集模式
[R1] interface GigabitEthernet0/0/1
[R1-GigabitEthernet0/0/1] pim dm

 

R2的配置如下:

 

[R2] multicast routing-enable  #激活组播路由功能
[R2] interface GigabitEthernet0/0/0
[R2-GigabitEthernet0/0/0] pim dm #在接口上激活PIM密集模式
[R2] interface GigabitEthernet0/0/1
[R2-GigabitEthernet0/0/1] pim dm
[R2] interface GigabitEthernet0/0/2
[R2-GigabitEthernet0/0/2] pim dm

 

R3的配置如下:

 

[R3] multicast routing-enable  #激活组播路由功能
[R3] interface GigabitEthernet0/0/0
[R3-GigabitEthernet0/0/0] pim dm #在接口上激活PIM密集模式
[R3] interface GigabitEthernet0/0/1
[R3-GigabitEthernet0/0/1] pim dm

 

R4的配置如下:

 

[R4] multicast routing-enable  #激活组播路由功能
[R4] interface GigabitEthernet0/0/0
[R4-GigabitEthernet0/0/0] pim dm #在接口上激活PIM密集模式
[R4] interface GigabitEthernet0/0/1
[R4-GigabitEthernet0/0/1] igmp enable #在接口上激活IGMP

 

完成配置后,首先做个查看:

 

[R2] display pim neighbor
VPN-Instance: public net
Total Number of Neighbors = 2
Neighbor Interface Uptime Expires Dr-Priority BFD-Session
10.1.12.1 GE0/0/0 0008 0037 1 N
10.1.23.3 GE0/0/1 0020 0025 1 N

 

上面输出的是R2的PIM邻居,可以看到R2有两个PIM邻居,分别是R1及R2。确保所有的PIM路由器两两之间都建立起邻居关系。

3.完成PC及组播源的配置

本实验可以使用eNSP来模拟并且能够直观的看到实验现象。在使用eNSP进行组播实验时,组播接收者采用”终端“设备中的PC来模拟,而组播源则使用”终端“ 设备中的MCS来模拟:

路由器

组播接收者(PC)的IP地址配置如下:

路由器

组播源的IP地址配置如下:

路由器

现在,各台设备都已经就绪了,我们主要分析以下几个内容:

4.组成员加入组播组224.1.1.1

现在让组播接收者加入一个用于测试的组播组224.1.1.1,一般组播接收者就是我们的电脑或者其他便携设备,例如视频的业务,在电脑上安装一个视频客户端,打开客户端进行简单的操作就会触发电脑发送IGMP成员关系报告,宣称自己所要加入的组播组。

在eNSP中,PC作为组播接收者的配置如下,切换到组播选项卡,源IP填写PC的IP地址10.1.1.1 ,目的IP地址填写组播组地址224.1.1.1:

路由器

点击“加入“按钮,PC即开始发送IGMP成员关系报告消息申请加入组播组224.1.1.1。现在在最后一跳路由器R4上查看:

 

[R4] display igmp group
Interface group report information of VPN-Instance: public net
GigabitEthernet0/0/1(10.1.1.254):
Total 1 IGMP Group reported
Group Address Last Reporter Uptime Expires
224.1.1.1 10.1.1.1 0014 0057

 

R4已经发现了组播组224.1.1.1内有一个组播成员10.1.1.1,但是由于现在R4还没有收到组播数据,所以自然没有组播数据转发给接收者。

5.组播源开始发送组播数据观察扩散过程、Assert机制

现在组播源开始向组播组224.1.1.1发送组播数据。在eNSP上模拟组播源的设备做如下操作(开始测试前,确保电脑上已安装媒体播放器:VLC media player):

路由器

在配置界面中切换到组播源选项卡,在文件路径处选择电脑中的一个视频文件(FLV、MP4等格式),在组播组IP地址中填入224.1.1.1。点击运行按钮,这个组播源便开始播放视频,视频播放的过程中组播源会持续地向224.1.1.1这个组播地址发送组播流量,如果网络配置正确的话,组播接收者(PC)能够收到这些组播流量,并且在本地开始同步播放视频。在eNSP中,当组播源开始播放视频时,可以在组播接收者处点击“启动VLC“按钮:

路由器

VLC启动后,就能开始在接收者处看到正在播放的视频:

路由器

上面的截图中,左图是组播源正在播放中的视频,而右图则是组播接收者处正在同步播放的视频,这就是组播业务的直观体现。

现在我们来分析一下数据流量的转发过程。视频开始播放时,组播流量开始从组播源泛洪出来,组播数据到达第一跳路由器R2,则R2创建组播路由表项(10.10.10.10,224.1.1.1):

 

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 2 downstream interface
1: GigabitEthernet0/0/1
2: GigabitEthernet0/0/0

 

在该表项中,上行接口朝向源,所以就是GE0/0/2口,而在开始时由于运行的是PIM-DM模式,因此R2将GE0/0/1及GE0/0/0接口都添加到下行接口列表中,然后将组播数据从GE0/0/0口和 GE0/0/1口都转发下去。

随后R1及R3都会收到R2转发下来的组播数据,同样的他们也是创建一个组播路由表项,然后将所有接口(除了RPF接口)都添加到下行接口列表中,并开始向下行接口发送数据数据。

在这个过程中,R1及R3都会向自己的GE0/0/1口转发组播流量,一旦双方在自己的GE0/0/1口上收到(10.10.10.10,224.1.1.1)组播组的数据时,他们就知道在这个LAN中有两台组播路由器在转发数据,这将触发Assert机制,R1及R3都去发送Assert消息,在R1或R2的GE0/0/1口上抓包可以看到:

路由器

看一下R1发送的Assert消息:

路由器

可以看到报文里包含组播组地址、源地址、优先级和度量值。R3发出的Assert消息类似,由于此时R1及R3都是通过OSPF学习到10.10.10.0/24网络的,并且metric相等都是2,因此接口IP地址大的路由器,也就是R3会Assert胜出,由它继续向10.1.134.0/24网络来转发组播组224.1.1.1的数据。

如此一来R1就不需要组播数据了,因此它会向上行接口发送一个Prune剪枝消息,将自己从组播树上剪除,R1的组播路由表就变成:

 

[R1]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: 0019
Upstream Interface: GigabitEthernet0/0/0

 

从上面的输出可以看到,R1的(10.10.10.10,224.1.1.1)组播表项没有下行接口。

R2的组播表项就变成:

 

[R2]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: 0027
Upstream Interface: GigabitEthernet0/0/2
List of 1 downstream interface
1: GigabitEthernet0/0/1

 

(10.10.10.10,224.1.1.1)表项中,下行接口列表只有一个接口了,也就是GE0/0/1口。这是因为它收到了R1发过来的剪枝消息。

R4在收到组播数据后,也是创建一个组播表项:

 

[R4]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: 0041
Upstream Interface: GigabitEthernet0/0/0
List of 1 downstream interface
1: GigabitEthernet0/0/1

 

然后将组播数据从GE0/0/1口转发出去,如此一来接收者也就收到组播数据了。因此,最终网络稳定下来之后,组播流量的传输路径是这样的:

路由器

6.组播成员离组、观察Prune剪枝过程

现在,组播源仍然在不断的发送组播流量,我们让接收者离开组播组224.1.1.1。

由于接收者一旦离开组播组,R4的GE0/0/1口上关于224.1.1.1的组播组就没有成员了,因此它将接口GE0/0/1从自己的(10.10.10.10,224.1.1.1)组播表项的下行接口列表中去除,如此一来下行接口列表也就空了,R4知道自己不再需要224.1.1.1的组播数据,于是它向上行接口GE0/0/0发一个Prune剪枝消息,请求将自己从组播树上剪除。

R3收到这个剪枝消息后,将自己的GE0/0/1口从(10.10.10.10,224.1.1.1)组播表项的下行接口列表中去除,然后它发现接口列表空了,于是也发现自己不再需要组播数据了,因此向上行接口发送Prune消息,此刻R3的组播路由表如下:

 

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: 0020
Upstream Interface: GigabitEthernet0/0/0
R2收到R3发出的Prune消息后,其组播表如下:
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: 0004
Upstream Interface: GigabitEthernet0/0/2

 

下行接口列表为空,因此直接将源发送过来的组播数据丢弃,不从任何接口转发。

7.组播成员再次加组,观察Graft嫁接过程

经过前面的步骤,虽然组播源仍然在不断的向224.1.1.1发送组播数据,但是由于网络中不存在任何的组成员,因此组播流量被R2直接丢弃。

现在我们再次让组播接收者加入组播组224.1.1.1。PC发送IGMP成员关系报文,R4在收到这个报告之后意识到接口GE0/0/1下出现了组播组224.1.1.1的成员,于是将GE0/0/1接口添加到(10.10.10.10,224.1.1.1)表项的下行接口列表中,并向R3发送一个嫁接Graft消息:

路由器

这个消息是一个单播包,R3收到之后将接口GE0/0/1添加到组播表项的下行接口列表,并向R4回送一个Graft-ACK报文以作确认。同时R3向自己的上行PIM邻居R2发送一个Graft消息。R2在收到这个消息的时候,也是将收到该消息的接口GE0/0/2添加到(10.10.10.10,224.1.1.1)表项的下行接口列表,随后开始向该接口转发224.1.1.1的组播流量。自此,组播树又重新构建完成。

  审核编辑:汤梓红

 

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

全部0条评论

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

×
20
完善资料,
赚取积分