基于虚拟网络的IP多播原理实验设计

2017-01-09 05:34曹雪峰于万国蔡永华朱会卿陈日升
实验技术与管理 2016年12期
关键词:表项多播剪枝

曹雪峰, 于万国, 蔡永华, 朱会卿, 陈日升

(河北民族师范学院 数学与计算机系, 河北 承德 067000)

基于虚拟网络的IP多播原理实验设计

曹雪峰, 于万国, 蔡永华, 朱会卿, 陈日升

(河北民族师范学院 数学与计算机系, 河北 承德 067000)

采用GNS3中整合的IOU和VirtualBox构建虚拟网络实验环境,设计了IP多播原理实验方案。利用Wireshark协议分析软件捕获报文,通过对报文的分析阐述了IGMP协议加入、离开多播组的工作过程,PIM-SM协议共享树和最短路径树的加入、剪枝过程,多播源注册过程,共享树和最短路径树之间的切换过程。验证了IGMP和PIM-SM协议的工作过程,使学生从理论和实践两方面更好地理解IP多播的工作原理。

虚拟网络; IP多播; PIM-SM; 共享树; 最短路径树

随着数据通信技术的发展,IP多播技术支持下的视频点播、网络电视和视频会议等点到多点业务已经被广泛应用[1-2],成为计算机网络教学的一个重要内容。而学习计算机网络协议的最好方法,就是通过对网络中捕获报文的分析,理解协议的报文格式、协议的工作原理和交互过程[3-4]。思科模拟软件GNS3是一款开源的网络模拟软件[5-7],适用于多种操作系统,其整合的IOU占用物理机资源非常少,配合GNS3中集成的VirtualBox虚拟机,能够完成一些非常复杂的网络环境模拟配置,然后利用Wireshark分析虚拟网络中捕获的报文,以辅助学习计算机网络协议。

1 IP多播原理

1.1 因特网组管理协议

因特网组管理协议(internet group management protocol,IGMP)是一个组成员关系管理协议,主机通过此协议告诉本地路由器希望加入某个特定多播组的信息[8-11]。同时,路由器通过此协议周期性地查询局域网内是否仍有属于某个多播组的成员,实现所连网络组成员关系的收集与维护。

主机发送组成员报告报文请求加入多播组,此报文有时也用于响应本地路由器发出的组成员查询报文。当主机退出组时,向组地址224.0.0.2发送离开组报文,通知本地网络中的所有路由器。

路由器只发送IGMP查询报文,包括General Query和Group-Specific Query。路由器通过General Query报文向与其连接的所有网络进行轮询,来检测网络中有没有组成员的情况。

通过上述机制,在多播路由器里建立起一张表,其中包含路由器的各个端口以及端口所对应的子网上都有哪些组的成员。当路由器接收到某个组G的多播报文后,只向那些有组G成员的端口上转发多播报文。

1.2 多播路由选择协议

协议无关多播稀疏模式(PIM-SM)是常用的多播路由选择协议[12-14],适用于组成员分布相对分散而且范围较广,或者网络带宽资源有限等情况。运行PIM-SM协议的路由器周期性地发送Hello报文,用以发现邻接的PIM-SM路由器,维护邻居关系,并且负责在多路访问网络中进行指定路由器(DR)的选举,通过建立多播分发树来进行多播报文的转发。多播分发树包括以组G的汇聚点RP(RP可以通过手工指定或利用自举机制动态选举)为根的共享树(RPT)和以多播源为根的基于源的树,也称为最短路径树(SPT)。

当主机加入一个多播组G 时,就发送组成员报告报文给DR,DR在多播路由表中生成了(*,G)表项,将接收到多播报文的接口IP地址加入该多播组的出站接口列表,并向该组所对应的RP方向发送join/prune加入报文。上游路由器如果没有加入RPT,先在转发表中生成(*,G)表项,将接收到加入报文的接口IP地址加入多播组的出站接口列表,并向该组的RP方向继续发送加入报文,否则只需将收到加入报文的接口IP地址加入多播组的出站接口列表。重复此操作直到到达RP。这样从DR到RP所经过的路由器就形成了RPT。当有多播组G的多播报文到达RP时,就会沿着已建立好的RPT到达DR,进而到达接收者。

当组成员离开多播组G时,与其直连的DR会逆着RPT向该组的RP方向逐跳发送join/prune剪枝报文;上游节点收到该报文后,在其出站接口列表中删除与下游节点相连的接口,并检查自己是否拥有该多播组的接收者,如果没有,则继续向其上游转发该剪枝报文。另外,RPT建立后,路由器周期性向上游邻居发送join/prune报文,以保持激活。如果在保持时间内没有收到下游邻居的join/prune加入报文,则将下游邻居从其多播组的出站接口列表中删除,从而完成剪枝。

多播源通过多播源注册向RP通知多播源的存在。当多播源S向多播组G发送第一个多播报文时,连接多播源的DR就将收到的多播报文封装成注册报文,并以单播方式发送给对应的RP。RP收到该报文解封装后,将其中的多播报文沿着RPT转发给组成员,同时向多播源逐跳发送源为S的组G的join/prune加入报文,这样从RP到多播源所经过的路由器就构建了SPT。然后,多播源沿着已建立好的SPT,在发送源注册报文的同时也直接转发对应的多播报文。RP收到直接转发来的多播报文后,向与多播源直连的DR单播发送注册停止报文,多播源注册过程结束。此后,多播源沿SPT只转发多播报文,不再封装发送源注册报文。

当连接接收者的DR发现从RP发往多播组G的多播报文速率超过了一定的阈值时,将由其发起从RPT向SPT的切换。首先是连接接收者的DR向多播源S逐跳发送(S,G)加入报文,并最终送达连接多播源的DR,沿途经过的所有路由器在其多播路由表中都生成了(S,G)表项和出站接口列表,从而建立了SPT;然后连接接收者的DR向RP逐跳发送包含RP位的剪枝报文。如果只有一个接收者,这时RP收到该报文后会向多播源方向继续发送剪枝报文,从而最终实现从RPT向SPT的切换。从RPT切换到SPT后,多播报文直接从多播源发送到接收者。

1.3 多播高层协议

RTP是针对多媒体数据流的一种传输协议,位于UDP协议之上来传输单播或多播数据流,允许应用传送音频和视频的实时负载,主要提供了时间信息和实现流同步。RTCP属于RTP协议的一部分,它提供了流量控制和拥塞控制服务。

2 搭建虚拟实验环境

2.1 实验拓扑结构

按图1所示拓扑结构搭建基于虚拟网络的IP多播原理实验网络[14-15]。其中7台路由器是IOU Router,4台主机是安装了Windows XP操作系统的VirtualBox虚拟机,设备端口IP地址分配见表1。

图1 IP多播原理实验网络拓扑结构图

表1 虚拟机及路由器端口IP地址分配表

2.2 设备配置

R2路由器主要配置如下[15]:

R2#configure terminal R2(config)#interface ethernet 0/0 R2(config-if)#ip address 172.16.20.1 255.255.255.0 R2(config-if)#ip pim sparse-mode ! 配置PIM的模式为稀疏模式 R2(config-if)#no shutdown R2(config-if)#interface ethernet 0/1 R2(config-if)#ip address 172.16.21.1 255.255.255.0 R2(config-if)#ip pim sparse-mode R2(config-if)#no shutdown R2(config-if)#interface ethernet 0/2 R2(config-if)#ip address 172.16.22.1 255.255.255.0 R2(config-if)#ip pim sparse-mode R2(config-if)#no shutdown R2(config-if)#exit R2(config)#router ospf 1 R2(config-router)#network 172.16.11.0 0.0.0.255 area 0R2(config-router)#network 172.16.12.0 0.0.0.255 area 0R2(config-router)#network 172.16.13.0 0.0.0.255 area 0 R2(config)#ip multicast-routing !启用多播路由功能 R2(config)#ip pim rp-address 1.1.1.1 !指定RP地址

其他路由器参考R2路由器进行配置。在4台虚拟机上安装VLC播放器,配置PC1为多播源。在VLC的“流输出”对话框中,添加要播放的媒体文件,“新目标”选择“RTP/MPEG Transport Stream”,设置地址为225.0.0.1,基本端口为5004。

在各链路段上执行捕获报文命令,启用Wireshark软件开始抓包。在PC3虚拟机上选择“打开网络串流”选项,输入地址RTP://225.0.0.1:5004,准备接收多播视频。在虚拟机PC4、PC2上依序执行相同的操作。在虚拟机PC1上播放视频,在另外3台虚拟机上都能接收多播视频后,按PC3、PC4、PC2和PC1的顺序依次退出虚拟机上的VLC程序,并停止抓包。把各链路段上捕获报文的文件进行合并,通过设置显示过滤规则,可以只显示与多播工作原理分析相关协议的报文。

3 实验内容

3.1 IGMP协议工作过程分析

主机PC3发送9171号组成员报告报文,请求加入组地址为225.0.0.1的多播组,如图2所示。路由器R5和R3发送9175、6132和6308号普通组成员查询报文;当PC3离开多播组时,发送10796号离开组报文,连接PC3的R5发送10797号特殊组查询报文,以确定在地址为225.0.0.1的多播组中是否还有其他的组成员。因此IGMP是用来在主机和与其直接相连的多播路由器之间建立、维护多播组成员关系的。

图2 捕获的IGMP报文

3.2 加入RPT过程分析

路由器R5收到PC3发送加入组成员的报告报文后,因为自己不是RP,又没在RPT上,所以先在多播路由表中创建(*,225.0.0.1)表项,将Ethernet0/0加入出站接口列表,然后向RP方向发送15615号join/prune加入报文,如图3所示。组地址为225.0.0.1,RP地址为1.1.1.1。路由器R6收到此报文后,同样先创建(*,225.0.0.1)表项,并将Ethernet0/3加入出站接口列表,再向上游发送6455号join/prune加入报文;此报文到达R3(RP)后,由于路由器中没有225.0.0.1多播组的路由表项,先创建(*,225.0.0.1)表项,并将Ethernet0/2加入出站接口列表,构建了一条以R3为根的RPT分支。

图3 捕获的PIM-SM加入或剪枝报文

路由器R7收到PC4发送加入组成员报告报文后,创建(*,225.0.0.1)表项,将Ethernet0/0加入出站接口列表,向上游发送13486号join/prune加入报文;路由器R6收到此报文后,因为已经加入了共享树,因此只将Ethernet0/2加入(*,225.0.0.1)表项的出站接口列表,不再向上游发送join/prune加入报文,RPT又增加了一个分支。路由器R4收到PC2发送加入组成员报告报文后,创建(*,225.0.0.1)表项,将Ethernet0/0加入出站接口列表,向RP方向发送6314号join/prune加入报文,R3收到此报文后,只将Ethernet0/1加入(*,225.0.0.1)表项的出站接口列表,至此构建了完整的RPT,如图4所示。

图4 构造RPT和SPT示意图

3.3 多播源注册过程分析

通过对捕获报文分析可以看到,多播源PC1发送的RTP报文封装在42号UDP报文中,其源IP地址为172.16.20.10,目的IP地址为225.0.0.1。R2路由器收到此报文后,先把它封装在3206号多播源注册报文中,此报文源IP地址为172.16.20.1,目的IP地址为1.1.1.1,如图5所示。

图5 多播源注册过程捕获的报文

此注册报文以单播方式传送到R1,R1再通过6155号注册报文转发给R3。R3收到此报文后解封装注册报文,并将封装在其中的多播报文沿着RPT转发给R6和R4,这就是图5中的6484和6331号报文。

R3收到6155号第一个注册报文后,在沿着RPT转发多播报文的同时,向多播源方向发送6156号join/prune加入SPT报文;R1收到此报文后,在多播路由表中创建(172.16.20.10,255.0.0.1)表项,将Ethernet0/1加入出站接口列表,同时R1向多播源方向发送3207号join/prune加入SPT报文;R2收到此报文后,向多播路由表中(172.16.20.10,255.0.0.1)表项的出站接口列表添加Ethernet0/1。至此,从RP到多播源所经过的路由器就构建了SPT。

此时R2收到PC1发送的第60号多播报文,既沿着SPT向R1发送3226号多播源注册报文,同时也发送3227号直接转发多播报文,R1收到这两个报文后又转发到R3,这就是图5中的6176和6177号报文。R3在收到注册报文的同时又收到了同一个UDP多播报文后,向与多播源直连的R2发送6179号多播源注册停止报文,此报文的源IP地址是1.1.1.1,目的IP地址是172.16.21.1。R1收到此报文后向R2转发,这就是图5中的3229号多播源注册停止报文。R2收到此报文后停止发送多播源注册报文,多播源注册过程结束,以后R2直接沿SPT转发多播报文。

3.4 SPT切换过程分析

引起RPT向SPT切换的条件是DR发现从RP发往多播组G的多播报文速率超过了一定的阈值,在思科路由器上,这个值被默认设置为0,因此R5收到从R3转发的第一个多播报文后,就向多播源方向的R2发送3390号join/prune加入SPT报文(见图3),R2收到此报文,将Ethernet0/2加入(172.16.20.10,255.0.0.1)表项的出站接口列表。同样,R7向多播源方向的R6发送13510号join/prune加入SPT报文。R6收到此报文,创建(172.16.20.10,255.0.0.1)表项,将Ethernet0/2加入出站接口列表,R6向R5发送15654号join/prune加入报文。R5收到此报文,将Ethernet0/1加入(172.16.20.10,255.0.0.1)表项的出站接口列表。R4向R6发送10891号join/prune加入报文,R6收到此报文后将Ethernet0/1加入(172.16.20.10,225.0.0.1)表项的出站接口列表。此时在R6路由器上显示多播路由表内容如下:

R5#show ip mroute IP Multicast Routing Table Flags: D-Dense, S-Sparse, B-Bidir Group, s-SSM Group, C-Connected, L-Local, P-Pruned, R-RP-bit set, F-Register flag, T-SPT-bit set, J-Join SPT, M-MSDP created entry, E-Extranet, Outgoing interface flags: H-Hardware switched, A-Assert winner Timers: Uptime/Expires Interface state: Interface, Next-Hop or VCD, State/Mode (*, 225.0.0.1), 00:02:41/00:02:57, RP 1.1.1.1, flags: S Incoming interface: Ethernet0/0, RPF nbr 172.16.32.1 Outgoing interface list: Ethernet0/2, Forward/Sparse, 00:02:30/00:02:57 Ethernet0/3, Forward/Sparse, 00:02:41/00:02:47 (172.16.20.10, 225.0.0.1), 00:00:49/00:02:10, flags: T Incoming interface: Ethernet0/3, RPF nbr 172.16.63.2 Outgoing interface list: Ethernet0/1, Forward/Sparse, 00:00:49/00:02:40 Ethernet0/2, Forward/Sparse, 00:00:49/00:02:57

至此完成了从RPT向SPT切换后的SPT的构建。

但是这时RP还通过RPT向接收者转发多播报文,造成接收者收到重复的多播报文,因此R4向R3发送6347号join/prune剪枝报文,通知R3不再通过Ethernet0/1接口转发源地址为172.16.20.10的多播报文;同样R5向R6发送15655号剪枝报文,R6继续向R3方向发送6501号剪枝报文,R3收到该报文后向多播源方向的R1发送6192号剪枝报文,R1继续向R2发送3242号剪枝报文,至此实现从RPT向SPT的切换。

当PC2、PC3和PC4离开多播组时,采用类似的join/prune剪枝报文剪枝SPT和RPT,在此不再赘述。

4 结语

通过实验,初步验证了IGMP协议加入、离开多播组的工作过程,PIM-SM协议共享树和最短路径树的加入、剪枝过程,多播源注册过程,共享树和最短路径树之间的切换过程等内容,体会了IP多播技术的实际应用,使学生从理论和实践两方面加深了对IP多播原理的理解。

References)

[1] 童文,许勇,胡雯.IP多播技术在远程监控系统中的应用[J].计算机技术与发展,2013,23(9):174-177.

[2] 李亮,黄石平,臧胜鲲.组播技术高清数字电视直播系统在校园网中的应用[J].实验室研究与探索,2015,34(1):118-121,237.

[3] Sanders C. Wireshark数据包分析实战[M].诸葛建伟,陈琳,许伟林,译.2版.北京:人民邮电出版社,2013.

[4] Orebaugh A, Ramirez G, Burke J, et al. Wireshark & Ethereal Network Protocol Analyzer Toolkit[M].Rockland:Syngress Publishing Inc,2007.

[5] 李林林,孙良旭,吴建胜.基于GNS3与VirtualBxo构建虚拟网络工程实验室研究[J].实验技术与管理,2015,32(9):144-148.

[6] 顾春峰,李伟斌,兰秀风.基于VMware、GNS3实现虚拟网络实验室[J].实验室研究与探索,2012,31(1):73-75.

[7] Welsh C. GNS3 Network Simulation Guide[M]. Birmingham:Packt Publishing Ltd,2013.

[8] Williamson B.IP组播网络设计开发:第1卷[M].顾金星,张拥军,南亲良,等译.北京:电子工业出版社,2000.

[9] 谢希仁.计算机网络[M].5版.北京:电子工业出版社,2008.

[10] 曹雪峰.计算机网络原理:基于实验的协议分析方法[M].北京:清华大学出版社,2014.

[11] Weinstein F. Internet Group Management Protocol: Version 2[J].Work in Progress,1997,17(6):241-243.

[12] Doyle J, Carroll J D.TCP/IP路由技术:第二卷[M].夏俊杰,译.北京:人民邮电出版社,2009.

[13] Estrin D,Farinacci D,Helmy A,et al. Protocol Independent Multicast-Sparse Mode (PIM-SM): Protocol Specification[S].IETF RFC 2362,1998.

[14] Fenner B,Handley M,Holbrook H,et al. Protocol Independent Multicast-Sparse Mode (PIM-SM):Protocol Specification (Revised)[S].IETF RFC 4601,2006.

[15] Solie K, Lynch L.CCIE实验指南:第2卷[M].姚军玲,顾彬,梅洪涛,等译.北京:人民邮电出版社,2006.

Experimental design for principle of IP multicast based on virtual network

Cao Xuefeng, Yu Wanguo, Cai Yonghua, Zhu Huiqing, Chen Risheng

(Department of Mathematics and Computer,Hebei Normal University for Nationalities,Chengde 067000,China)

By using integrated IOU in GNS3 and VirtualBox software to build a virtual network experimental environment in a single computer, this paper designs the experimental scheme of IP multicast. Using Wireshark software to capture packets, through the analysis of packets, this paper expounds on the working processes of the IGMP protocol to join and leave the multicast group, the joining process and the pruning process of the PIM-SM(Protocol Independent Multicast-Sparse Mode) rendezvous point tree and the shortest path tree, the registration process of the multicast source, the switchover process between the rendezvous point tree and the shortest path tree. This paper verifies the IGMP protocol and the PIM-SM protocol’ working process, and can let students better understand the working principle of IP multicast from both theoretical and practical aspects.

virtual network; IP multicast; PIM-SM; rendezvous point tree; the shortest path tree

10.16791/j.cnki.sjg.2016.12.033

2016-06-28

国家民委高等教育教学改革研究项目(15114);河北民族师范学院科研项目(201406)

曹雪峰(1967—),男,河北隆化,硕士,副教授,主要研究方向为计算机网络技术.

E-mail:cxf_cd@163.com

TP391.9

: A

: 1002-4956(2016)12-0132-05

猜你喜欢
表项多播剪枝
胖树拓扑中高效实用的定制多播路由算法
一种改进的TCAM路由表项管理算法及实现
人到晚年宜“剪枝”
用于超大Infiniband网络的负载均衡多播路由
InfiniBand中面向有限多播表条目数的多播路由算法
基于模型性能相关性的分级剪枝率剪枝方法
基于YOLOv4-Tiny模型剪枝算法
基于ARMA模型预测的交换机流表更新算法
SDN数据中心网络基于流表项转换的流表调度优化
剪枝