Design and Implementation of Network Video Multicast System for SDN
唐文萱① TANG Wen-xuan;刘星宇① LIU Xing-yu;杨雪芹① YANG Xue-qin;梁勇② LIANG Yong
(①西安邮电大学通信与信息工程学院,西安 710121;②西安邮电大学图书馆,西安 710121)
(①School of Communication and Information Engineering,Xi'an University of Posts and Telecommunication,Xi'an 710121,China;
②Library,Xi'an Institute of Posts & Telecommunication,Xi'an 710121,China)
摘要:随着互联网视频组播业务需求以及结合SDN网络的优越性,设计并仿真了面向SDN网络视频组播系统。本系统采用模块化设计思想,并结合一种跳数、带宽和链路状态相结合的组播路由控制策略,实现了系统的组播系统模块的搭建过程以及视频流媒体的播放过程。最后验证组播路由控制策略和SDN在视频组播系统上的结合,不仅能够提高系统组播的流畅性和稳定性,而且也克服由于网络拥塞、丢包等原因造成的视频通信效果不稳定的问题。
Abstract: With the demand of Internet video multicast service and the superiority of SDN network, SDN network video multicast system is designed and simulated. This system adopts modular design idea, and combines a multicast routing control strategy that combines the number of jumps, bandwidth, and link state, and realizes the construction process of the multicast system module and the video streaming media playback process. Finally, the combination of multicast routing control strategy and SDN on video multicast system can not only improve the fluency and stability of system multicast, but also overcome the instability of video communication due to network congestion and packet loss.
关键词:SDN;Ryu控制器;流媒体;组播;路由选择
Key words: SDN;Ryu controller;streaming media;multicast;routing selection
中图分类号:TP393.1 文献标识码:A 文章编号:1006-4311(2019)23-0234-04
0 引言
多媒体业务的快速普及使网络中视频应用的数量呈爆炸性增长,视频通信正成为多媒体业务中发展最为迅速的领域。随着新兴的网络架构软件定义网络(SDN)的出现,在SDN网络架构下有许多以高带宽网络资源为需求的多媒体业务,这就需要SDN网络中能提供组播业务,解决传统IP挽留过由于网络拥塞、丢包等原因造成的视频通信效果不稳定的问题。
SDN架构为视频组播提供的许多优势,目前已经有了很多基于SDN的组播相关研究。如向熊研究在组播中实现基于流量的负载均衡,来避免链路拥塞;高强研究在控制层支持路由动态选择,来达到明显提升分层视频流媒体传输质量的效果。陈亮研究设计具备IP组播功能的控制器,来生成多棵组播树;张凯琳研究利用SDN中SVC组播实现的视频会议架构,来满足不同终端设备对于视频会议系统的需求;这些文献研究虽然是基于SDN网络,但都是考虑影响组播路由的单一参数,并没有综合考虑多个因素(如组播的路由的跳数、时延、带宽、负载均衡等),文章是根据SDN架构特点,设计并实现SDN网络视频组播系统,采用了跳数、带宽和链路状态相结合的路由控制策略,实现系统的多个模块,并通过视频播放效果验证了该系统能克服的由于网络拥塞、丢包等原因造成的视频通信效果不稳定的问题。
1 SDN的架构
SDN的核心思想在于转发平面与控制平面的分离,不再将纷繁复杂的软件代码与网络硬件设备绑定,取而代之的是集中控制,网络硬件设备只完成接收控制器指令并根据要求进行转发的工作,从而达到控制器在上层视角,对网络进行全局性控制的目的。基本的SDN 的三层式模型自下而上分别为设备层、控制层和应用层,如图1所示。
2 面向SDN网络视频组播系统设计
2.1 SDN视频组播系统架构设计
对应于SDN三层架构,基于SDN实现的流媒体组播系统架构如图2所示,也分为三层,第一层设备层是基础的网络转发设备,如OVS交换机、可以作为客户端(组播成员)的虚拟用户主机以及可以作为视频服务器(组播源)的虚拟主机;第二层控制层是一个Ryu控制器,它提供与下层设备层和上层应用层进行通信的南向接口和北向接口;第三层应用层,主要包括了要实现路由功能的最重要的两个部分,组播管理程序以及根据实际需求给出的路由控制策略,并将这个策略用于组播网络设备上,实现对整个网络路由的控制。
在图2中,具体的视频组播系统架构模块完成功能如下:
①控制器:本组播系统选择使用开源控制器Ryu作为控制层设备,RYU控制器作为整个系统的控制中心,完成组成员管理、信息维护、流表下发、组表下发、路由策略通知下发等工作。同时通过北向接口向应用层调用两个主要组播管理程序(igmplib管理库[15])以及组播路由控制策略,组播管理程序提供实现组播所需要的组表管理、流表管理、组管理、组成员管理等功能,并进行流媒体传输,而组播路由控制策略是所有组播内的成员按照此策略进行路由选择。
②交换机:交换机指支持Openflow1.3版本协议的OVS交换机。交换机与上层Ryu控制器直接通过Openflow协议进行下发流表项与组表项信息,所有的信息管理全部在控制层中完成,OVS交换机负责接收并按照要求进行数据转发即可。
③设备层:主要有视频服务器(组播源)和客户端(组播组成员),在视频发送端,利用VLC播放器制作用于网络流媒体数据。当一个客户端(组播成员)想要加入进本次组播组内时,需要程序加入组播地址。
2.2 SDN视频组播系统模块功能设计
根据图2中SDN视频组播系统架构和功能,本文采用模块化方法,将系统分为组播网络拓扑模块、组播管理模块、路由控制策略模块、视频传输发送和接收模块以及控制器监控模块。
2.2.1 系统网络拓扑模块设计
首先通过Mininet建立实现组播系统的网络拓扑如图3所示,其中 c0为Ryu控制器,s1-s10是三层结构,s1-s2为核心交换机,s3-s6为汇聚交换机,s7-s10为边缘交换机,均为OVS交换机,h1-h8是8个虚拟主机,虚拟主机h1为视频播放源,h2-h8为组播组内成员, h3、h6、h8作为用户依次加入组播组,从视频服务器h1获取视频流媒体的传输。
2.2.2 系统组播管理模块设计
本系统的控制器是Ryu,而igmplib库是由Ryu研发公司开发的一款组播管理库,主要完成组管理、组成员管理、流表管理等组播功能。
系统在igmplib库的组管理的流表项的进行设置,当有主机在加入组播组时会发送report消息,离开组的时候会发送leave消息。一旦控制器收到report消息后,首先把接口加入到组里面,如果是第一次收到report消息就会下发流表项和组表项;如果在收到leave消息之后,因为不能确定是否有组成员连接到这个交换机,所以对流表项和组表项的操作查询组成员接口,先删除或者修改相关接口的流表项,然后修改或者删除现有组表项。如果igmplib库组管理的流表项设置成功,控制器直接可以通过app调用。
2.2.3 组播路由控制模块设计
应用层的组播路由控制模块是设计组播路由选择算法。本系统采用带宽、跳数和链路状态综合考虑的策略,组播路由控制的基本思想是,假如有一个数据流需要从S1交换机发送到S2交换机,首先在路径空闲的状态下,选取所有可能的达到路径n条;接着,在所有的路径下选取可能最小跳数的路径,最后计算每一条最小跳数路径的最小带宽,然后比较路径的最小带宽的最大值,选取最大的带宽的路径进行数据传输,同时这条路径标注为忙,并记录到网络拓扑视图表。如果选取的路径标状态为忙,则选取状态为空闲的次优路径。
如图4中S1到S2交换机的可能路径为上、中、下三条,上路为3跳,每跳带宽为2,5,8;中路为4跳,每跳带宽为3,4,6,3;下路为3跳,每跳带宽为4,5,6;先选取最短跳数的路径上路和下路;接着选取最短路径中最小带宽值,即就是上路和下路的每一段带宽的最小值,上路为2,下路为4;比较最小带宽的最大值,上路为2小于下路的4,所以选出路径为下路,同时标注所选取路径的状态为1,并记录到网络拓扑视图中。
2.2.4 视频传输发送和接收模块
①视频服务器(组播源)。在视频发送端,利用VLC播放器制作用于网络流媒体数据,同时在视频发送端程序中,设置了IP网关地址(10.0.0.X),本系统SDN实现组播采用原IP网络的D类组播地址,设置为224.1.1.1,进程端口号为1234,同时设置发送视频的属性。
②客户端(组播组成员)。当一个客户端(组播成员)想要加入进本组播组时,在该主机的终端接收端文件中只需指明其想要加入的组播地址和端口号224.1.1.1:1234。
2.2.5 控制器监控模块
前4个模块设计好之后,组播客户端也能正常播放视频,那么可以通过Ryu控制器端查看组播测试结果,不仅包括组播成员的加入,组播成员的变化情况,组播成员的离开等信息,而且还能查看中间交换机的流表项的状态以及行为。
3 SDN视频组播系统实现步骤
文章的仿真环境采用的是仿真软件为Mininet(用来模拟网络拓扑)、Ryu(控制器)和Python语言,同时在Ryu控制器中用igmplib库来实现组播,并进行流媒体传输。根据设计的5个功能模块,SDN视频组播系统实现按照启动控制器、启动拓扑网络(设备层各基础网络设备)、启动组播源服务器、启动客户端接收、系统视频播放结果以及控制器的监控的步骤进行,如图5所示。
3.1 启动控制器组播模块
开启Ryu控制器时控制器终端的进程如图6所示,其中第1行multiple.py为组播路由控制策略模块算法(路由算法的调用函数已写进multiple.py,启动时一并开启),第2行ryu.controller.ofp_handler代表正在加载负责处理交换机管理以及基础的Openflow事件管理的线程,例如下发流表、组表以及上下层信息通信的实现就依赖于这个进程。紧接着的两行代表已经可以使用igmplib库,后两行代表着加载的前两个进程已经加载完毕。此时只是控制器开启了,还并未连通图3系统拓扑网络(未连通设备层)。
3.2 启动拓扑网络
启动图3设计的拓扑网络时,Mininet的终端显示内容如图7所示,其中通过Adding controller、Adding host、Adding switches、Adding link的形式表现拓扑。其中的h1-h8为主机信息,s1-s10为交换机信息,(h1,s7)…(s8,s4)为链路连接信息,c0代表启动控制器c0,Starting CLI出现以后可以进行命令行操作。
3.3 连通拓扑网络
针对图3的网络拓扑图,图8的交换机与控制器之间已经连通,控制器终端信息更新,c0为Ryu控制器,s1-s10为OVS交换机,h1-h8是虚拟主机。其中显示交换机s1-s10已连接(例如Switch 1 connected!),并开始产生正常的query问询行为。
3.4 组播源发送和客户端接收
接下来是组播源发送和客户端接收,本系统选取主机h1作为组播源,则在h1的终端,发送视频流过程如图9所示。首先设置了网关,随后的内容是生成流媒体的控制代码,其中sout意为串行输出,vcodec=h264是视频转码要求,acodec=mpga为音频转码要求,字符串长度128,采用双工通信方式,采样频率为44100Hz,sout-keep代表持续性串流传输。h3、h6、h8加入组播组进行接收如图10所示,只需把D类地址224.1.1.1:1234加入组播组即可。
3.5 系统视频播放结果
若组播源为h1,客户端h3、h6、h8需要加入组播组,h3、h6、h8接收到视频的画面如图11和图12所示。
图11中组播源h1是黑屏、没有图像和声音,是因为组播源视频文件在源端被采样、压缩、编码而变成数据包流,所以在源端的视频文件是已经经过处理的,因而无法播放;图11黄色方框①处,因为源端拥有完整的流媒体文件,因此在源端有视频总时长,并可以显示进度条;而在方框②处,接收端因为是实时流式接收,并不能得知视频的总时长,所以并没有进度显示;在方框③处,客户端通过D类组播地址加入组播组,h8的视频播放器标题抬头即为组播组地址以及相应进程端口号。
图12是当h1作为组播源,每隔一段时间分别有一个、两个、三个客户端加入组播组时,整个视频播放流畅,网络稳定性高。这是因为基于SDN网络,不会随着客户端的增多影响播放效果。同时,通过图12的播放进度表明,源端h1播放进度都不会由其成员加入的时间早晚决定,而是不论何时加入的组播组,都是以组播源的播放进度为准。这就是实时流媒体传输。
由此可见实时流媒体传播时,客户端的接收具有实时性,当前接收的数据流不会因为成员新加入而从头开始播放,始终以组播源的播放情况为准。
3.6 控制器监控信息
在实现组播的过程中,在控制器的终端不仅可以查看组播测试结果,而且可以看到组成员的信息变更如图13所示,其中第1行为有新成员加入(Added),加入的地址为224.1.1.1,首次收到该信息,组播组成员数量暂时不明确,hosts[ ]为空;第2行为组播组成员变动,有新成员加入,加入的地址为224.1.1.1,首次收到该信息,目前组播组成员为3个(不包括组播源),hosts[3]为3;第3行为组播组成员变动,有组内成员离开(removed),离开的地址为224.1.1.1,首次收到该信息,目前组播组成员数量有待于确定,hosts[ ]为空;第4行为问询网络链路状况,交换机s2的第3端口报告IGMP报文信息并被控制器接收成功;第5行为问询网络链路状况,控制器向交换机的第2端口下发问询消息并被交换机接收成功。至此整个面向SDN网络的视频组播系统仿真完成。
4 结论
本文研究面向SDN网络视频组播系统的设计与仿真,阐述了该系统的设计思想,模块组成,同时,结合一种跳数、带宽和链路状态相结合的路由控制策略,最终展现了该系统搭建的过程以及最终的演示效果。该系统验证了路由控制策略和SDN在视频组播系统上的结合,能够提高整个系统组播播放流畅度和网络稳定性,而且也克服由于网络拥塞、丢包等原因造成的视频通信效果不稳定的问题。
参考文献:
[1]黎亮,王彦昱,黎明.SDN分层组播视频会议系统的实现与技术分析[J].通讯世界,2019,26(03):229-230.
[2]向熊.基于SDN网络的流媒体阻比实现[J].信息技术,2018(10):121-125.
[3]陈量,瞿辉.基于SDN思路的组播实现[J].微处理机,2016,37(02):31-36,40.
[4]尤子扬.P2P流媒体视频点播系统设计和研究[D].兰州理工大学,2017.
[5]谢永斌,张宸.基于SDN的IP组播研究[J].信息通信,2015(02):202-203.
[6]高永顺.面向SDN网络组播路由问题研究[D].西南交通大学,2017.
[7]孙超.软件定义网络中流媒体QoE控制技术研究[D].山东大学,2018. |