实验拓扑
实验需求
网络拓扑、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的组播流量。自此,组播树又重新构建完成。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !