实验拓扑
实验需求
网络拓扑、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]interfaceGigabitEthernet0/0/0 [R1-GigabitEthernet0/0/0]ipaddress10.1.12.124 [R1]interfaceGigabitEthernet0/0/1 [R1-GigabitEthernet0/0/1]ipaddress10.1.134.124 [R1]ospf1router-id1.1.1.1 [R1-ospf-1]area0 [R1-ospf-1-area-0.0.0.0]network10.1.12.10.0.0.0 [R1-ospf-1-area-0.0.0.0]network10.1.134.10.0.0.0 [R1-ospf-1-area-0.0.0.0]quit [R1-ospf-1]quit
R2的配置如下:
[R2]interfaceGigabitEthernet0/0/0 [R2-GigabitEthernet0/0/0]ipaddress10.1.12.224 [R2]interfaceGigabitEthernet0/0/1 [R2-GigabitEthernet0/0/1]ipaddress10.1.23.224 [R2]interfaceGigabitEthernet0/0/2 [R2-GigabitEthernet0/0/2]ipaddress10.10.10.25424 [R2]ospf1router-id2.2.2.2 [R2-ospf-1]area0 [R2-ospf-1-area-0.0.0.0]network10.1.12.20.0.0.0 [R2-ospf-1-area-0.0.0.0]network10.1.23.20.0.0.0 [R2-ospf-1-area-0.0.0.0]network10.10.10.2540.0.0.0 [R2-ospf-1-area-0.0.0.0]quit [R2-ospf-1]silent-interfaceGigabitEthernet0/0/2#G0/0/2口未连接OSPF路由器 [R2-ospf-1]quit
R3的配置如下:
[R3]interfaceGigabitEthernet0/0/0 [R3-GigabitEthernet0/0/0]ipaddress10.1.23.324 [R3]interfaceGigabitEthernet0/0/1 [R3-GigabitEthernet0/0/1]ipaddress10.1.134.324 [R3]ospf1router-id3.3.3.3 [R3-ospf-1]area0 [R3-ospf-1-area-0.0.0.0]network10.1.23.30.0.0.0 [R3-ospf-1-area-0.0.0.0]network10.1.134.30.0.0.0 [R3-ospf-1-area-0.0.0.0]quit [R3-ospf-1]quit
R4的配置如下:
[R4]interfaceGigabitEthernet0/0/0 [R4-GigabitEthernet0/0/0]ipaddress10.1.134.424 [R4]interfaceGigabitEthernet0/0/1 [R4-GigabitEthernet0/0/1]ipaddress10.1.1.25424 [R4]ospf1router-id4.4.4.4 [R4-ospf-1]area0 [R4-ospf-1-area-0.0.0.0]network10.1.134.40.0.0.0 [R4-ospf-1-area-0.0.0.0]network10.1.1.2540.0.0.0 [R4-ospf-1-area-0.0.0.0]quit [R4-ospf-1]silent-interfaceGigabitEthernet0/0/1 [R4-ospf-1]quit
R1、R2、R3及R4部署PIM-DM
R1的配置如下:
[R1]multicastrouting-enable#激活组播路由功能 [R1]interfaceGigabitEthernet0/0/0 [R1-GigabitEthernet0/0/0]pimdm#在接口上激活PIM密集模式 [R1]interfaceGigabitEthernet0/0/1 [R1-GigabitEthernet0/0/1]pimdm
R2的配置如下:
[R2]multicastrouting-enable#激活组播路由功能 [R2]interfaceGigabitEthernet0/0/0 [R2-GigabitEthernet0/0/0]pimdm#在接口上激活PIM密集模式 [R2]interfaceGigabitEthernet0/0/1 [R2-GigabitEthernet0/0/1]pimdm [R2]interfaceGigabitEthernet0/0/2 [R2-GigabitEthernet0/0/2]pimdm
R3的配置如下:
[R3]multicastrouting-enable#激活组播路由功能 [R3]interfaceGigabitEthernet0/0/0 [R3-GigabitEthernet0/0/0]pimdm#在接口上激活PIM密集模式 [R3]interfaceGigabitEthernet0/0/1 [R3-GigabitEthernet0/0/1]pimdm
R4的配置如下:
[R4]multicastrouting-enable#激活组播路由功能 [R4]interfaceGigabitEthernet0/0/0 [R4-GigabitEthernet0/0/0]pimdm#在接口上激活PIM密集模式 [R4]interfaceGigabitEthernet0/0/1 [R4-GigabitEthernet0/0/1]igmpenable#在接口上激活IGMP
完成配置后,首先做个查看:
[R2]displaypimneighbor VPN-Instance:publicnet TotalNumberofNeighbors=2 NeighborInterfaceUptimeExpiresDr-PriorityBFD-Session 10.1.12.1GE0/0/0000800371N 10.1.23.3GE0/0/1002000251N
上面输出的是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]displayigmpgroup InterfacegroupreportinformationofVPN-Instance:publicnet GigabitEthernet0/0/1(10.1.1.254): Total1IGMPGroupreported GroupAddressLastReporterUptimeExpires 224.1.1.110.1.1.100140057
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):
displaymulticastrouting-table MulticastroutingtableofVPN-Instance:publicnet Total1entry 00001.(10.10.10.10,224.1.1.1) Uptime:0005 UpstreamInterface:GigabitEthernet0/0/2 Listof2downstreaminterface 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]displaymulticastrouting-table MulticastroutingtableofVPN-Instance:publicnet Total1entry 00001.(10.10.10.10,224.1.1.1) Uptime:0019 UpstreamInterface:GigabitEthernet0/0/0
从上面的输出可以看到,R1的(10.10.10.10,224.1.1.1)组播表项没有下行接口。
R2的组播表项就变成:
[R2]displaymulticastrouting-table MulticastroutingtableofVPN-Instance:publicnet Total1entry 00001.(10.10.10.10,224.1.1.1) Uptime:0027 UpstreamInterface:GigabitEthernet0/0/2 Listof1downstreaminterface 1:GigabitEthernet0/0/1
(10.10.10.10,224.1.1.1)表项中,下行接口列表只有一个接口了,也就是GE0/0/1口。这是因为它收到了R1发过来的剪枝消息。
R4在收到组播数据后,也是创建一个组播表项:
[R4]displaymulticastrouting-table MulticastroutingtableofVPN-Instance:publicnet Total1entry 00001.(10.10.10.10,224.1.1.1) Uptime:0041 UpstreamInterface:GigabitEthernet0/0/0 Listof1downstreaminterface 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的组播路由表如下:
displaymulticastrouting-table MulticastroutingtableofVPN-Instance:publicnet Total1entry 00001.(10.10.10.10,224.1.1.1) Uptime:0020 UpstreamInterface:GigabitEthernet0/0/0 R2收到R3发出的Prune消息后,其组播表如下: displaymulticastrouting-table MulticastroutingtableofVPN-Instance:publicnet Total1entry 00001.(10.10.10.10,224.1.1.1) Uptime:0004 UpstreamInterface: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的组播流量。自此,组播树又重新构建完成。
审核编辑:汤梓红
-
网络
+关注
关注
14文章
7511浏览量
88607 -
路由器
+关注
关注
22文章
3705浏览量
113513 -
PIM-DM
+关注
关注
0文章
2浏览量
5410
原文标题:组播Multicast进阶:PIM-DM实验配置
文章出处:【微信号:网络技术干货圈,微信公众号:网络技术干货圈】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论