实验拓扑
实验需求
网络拓扑、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 neighborvpn-instance: public nettotal number of neighbors = 2neighbor interface uptime expires dr-priority bfd-session10.1.12.1 ge0/0/0 0008 0037 1 n10.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 groupinterface group report information of vpn-instance: public netgigabitethernet0/0/1(10.1.1.254):total 1 igmp group reportedgroup address last reporter uptime expires224.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-tablemulticast routing table of vpn-instance: public nettotal 1 entry00001. (10.10.10.10, 224.1.1.1)uptime: 0005upstream interface: gigabitethernet0/0/2list of 2 downstream interface1: gigabitethernet0/0/12: 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-tablemulticast routing table of vpn-instance: public nettotal 1 entry00001. (10.10.10.10, 224.1.1.1)uptime: 0019upstream interface: gigabitethernet0/0/0
从上面的输出可以看到,r1的(10.10.10.10,224.1.1.1)组播表项没有下行接口。
r2的组播表项就变成:
[r2]display multicast routing-tablemulticast routing table of vpn-instance: public nettotal 1 entry00001. (10.10.10.10, 224.1.1.1)uptime: 0027upstream interface: gigabitethernet0/0/2list of 1 downstream interface1: gigabitethernet0/0/1
(10.10.10.10,224.1.1.1)表项中,下行接口列表只有一个接口了,也就是ge0/0/1口。这是因为它收到了r1发过来的剪枝消息。
r4在收到组播数据后,也是创建一个组播表项:
[r4]display multicast routing-tablemulticast routing table of vpn-instance: public nettotal 1 entry00001. (10.10.10.10, 224.1.1.1)uptime: 0041upstream interface: gigabitethernet0/0/0list of 1 downstream interface1: 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-tablemulticast routing table of vpn-instance: public nettotal 1 entry00001. (10.10.10.10, 224.1.1.1)uptime: 0020upstream interface: gigabitethernet0/0/0r2收到r3发出的prune消息后,其组播表如下:display multicast routing-tablemulticast routing table of vpn-instance: public nettotal 1 entry00001. (10.10.10.10, 224.1.1.1)uptime: 0004upstream 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的组播流量。自此,组播树又重新构建完成。
表面清洁度检测仪在汽车焊接领用的应用
基于恩智浦LPC2478的家庭智能安全报警系统的设计
大数据为农业装“智慧芯”,驱动智慧农业快速发展
十代酷睿 CometLake-H 标压处理器与下一代TigerLake-U 处理器的区别
!销售/收购/维修HP4284A电桥HP4284A.小兵R/
组播Multicast进阶:PIM-DM实验配置
全场景智慧生活已来!荣耀亲选多款智慧生活新品发布
英飞凌推出CIPOS™ Tiny IM323-L6G新型智能功率模块,最大限度地提高效率和设计灵活性
电子电路仿真基础:SPICE模型的种类
荣耀20系列搭载的超级蓝牙是什么
电子温控器设置方法
医疗邮政银行瘫痪三周后,佛罗里达两城市接连向黑客屈服
空调系统的尼龙绳从哪里来的
华为重大人事变动!余承东再度挂帅
逆变器高频与低频指的什么频率
智能充电机怎么用
三星手机败走中国,血战印度
一个中国联通员工眼中的联通及联通混改
物联网设备的分类及未来发展中存在的问题有哪些?
什么是拉电流和灌电流看了就知道