本发明属于视频制作技术领域,尤其涉及媒体视频制作ip化过程中的一种基于软件定义网络(sdn)实现视频流基于交换机的精准视频切换(净切换)方法。
背景技术:
自从广电行业由模拟时代进入数字时代后,ip的相关技术就一步步地渗透进了广电行业之中。制作由线性转变为非线性,媒资由磁带库转变为磁盘阵列,播出由录像机转变为服务器。单就硬件设备来看,广电的设备机房与it企业的机房已经相当接近了。两者最大的区别在于传输方式,广电行业目前最常见的是使用sdi标准通过同轴电缆传输信号。这看起来与双绞线传输有很大不同,但其实ip化的传输方式早已悄然出现在广电行业的实际应用中。
目前随着超高清信号的发展,分辨率至少达到4k级别,即3840×2160像素,每秒50帧,以10bit量化精度的4:4:4数字视频分量信号为例,其码率约为12gbps。目前传输带宽最高的3g-sdi只支持3gbps的传输速率,无法满足超高清信号的传输;而对于ip化传输来说,万兆以太网10gbps的传输速率已经能够满足超高清传输带宽的需求。
现在采用sdi传输超高清信号通行的做法是将超高清信号拆分为4路高清信号进行传输,这种方法能够在现阶段解决超高清传输的问题。但这并不是长期的解决办法,一旦超高清进入实际应用阶段,这会使系统规模过于庞大。而采用ip方式可以使用单根网线或光纤进行超高清信号的传输,因此更具备实际应用的价值。除此之外,基础架构ip化可以使系统结构更简单,这取决于其本身的传输特点。同时依靠it行业的规模优势可以快速降低成本,另外能够使新媒体业务更好地与广电业务相融合,直面新媒体业态对传统广电行业的冲击。所以,媒体网络ip化是广电发展的趋势。
sdn(softwaredefinednetwork,软件定义网络)是一种新型的基于软件可编程思想的网络架构,它有一个集中式的控制平面和分布式的转发平面,两个平面相互分离,可以实现控制平面对数据平面的集中化控制,并提供开放的编程接口,为网络提供灵活的可编程能力。sdn体系架构具有很强的开放性,它通过对整个网络进行抽象,为用户提供完备的编程接口。在传统网络中,大部分用户对网络的实时状态是不可见的,更难以管理和控制。与传统网络不同,sdn技术通过开放编程接口,使用户可以根据上层的业务与应用个性化地定制网络资源来满足其特有的需求。此外,sdn接口协议标准化也体现出sdn在设计时对开放性的追求,按照其最初的设计思想,非常希望能够通过使用标准化的协议来打破某些厂商对设备、协议以及软件的垄断,从而使更多的研究者可以参与到网络设备和软件相关的研发工作中来。
在广电网络向ip化发展的过程中,不可避免的遇到了一些技术难点,视频精准切换就是其中的一个难点,传统sdi分发串行数字输入信号,无论有多少被路由和切换的活动信号,都提供一致的延迟和性能;提供确定的切换时间。而ip网络是一种“尽力而为”的网络,产生的时延是可变的,这就会导致不同步切换的问题,因此需要精准切换(净切换)解决切换不同步的问题。
目前,实时视频精准切换系统主要有三种技术方案,分别是基于源端的视频切换技术、基于交换机的视频切换技术和基于目的端的视频切换技术,三种方案各有优缺点。
基于源的视频切换技术可以做到净切换,同时带宽利用方面也比较好,但是不利于多层交换机级联,在时间基准方面也存在较大风险。基于目的视频切换技术可以比较简单的完成多级扩展,同时净切换也比较容易实现,但是要做到净切换,带宽要损失一半。基于交换机的视频切换技术切换方式非常接近现有的专业基带视频矩阵,在带宽利用和系统扩展方面有比较明显的优势。
发明概述
本发明要解决的技术问题是,提供媒体视频制作ip化过程中的一种基于软件定义网络(sdn)实现视频流基于交换机的精准视频切换(净切换)方法。
为实现上述目的,本发明采用如下的技术方案:
一种基于sdn交换机的视频净切换方法,通过sdn下发流表控制视频流切换,同时在交换机缓存视频流并完成精准切换,包括以下步骤:
步骤1、视频发送端sourcea和sourceb的视频流分别到达交换机的端口1和端口2;交换机对接收到的视频流进行报文解析,提取元组信息;sdn控制器将流表下发至交换机,交换机将提取的元组信息通过查表算法,与流表进行匹配,根据匹配的结果决定视频流的转发;
步骤2、当目的端希望由接收sourcea的数据转为接收sourceb的数据时,执行切换过程;在sdn北向接口执行切换命令,sdn控制器对交换机下发流表,交换机执行视频精准切换过程,其中,视频精准切换过程为:
交换机转发sourcea的数据,直到检测到sourcea的a1帧中数据包的mark位为1,同时交换机检测缓存中sourceb的数据包的mark位,如果检测到缓存中sourceb中存在mark位为1的数据包,交换机从sourceb缓存中这个mark位为1的下一个数据包开始转发,将sourceb的数据转发到端口3;如果没有检测到sourceb缓存中存在mark位为1的数据包,继续转发来自sourcea的下一个完整帧,直到检测到sourceb缓存中mark位为1的数据包;而后交换机将来自sourceb的数据转发到端口3,停止转发来自sourcea的数据,整个切换过程完成。
作为优选,步骤1中,根据匹配结果,来自sourcea的流命中,根据流表将sourca流转发到端口3,目的端此时接收来自sourcea的信息;若sourceb与流表不匹配,将被存储在交换机的缓存。
附图说明
图1交换机接收源端数据的示意图;
图2视频切换的示意图;
图3视频精准切换中数据包处理示意图。
具体实施方式
本发明实施例提供一种基于sdn交换机的视频净切换方法,通过sdn下发流表控制视频流切换,同时在交换机缓存视频流并完成精准切换。具体如下:
(一)视频切换基本过程
(1)sourcea和sourceb是视频发送端,destination为目的端,交换机具有端口1、端口2和端口3,sourcea和sourceb的视频流分别到达交换机的端口1和端口2。交换机对接收到的视频流进行报文解析,提取元组信息(包括源ip、目的ip、源端口号、目的端口号等)。sdn控制器通过flowmod消息添加流表项,将流表下发至交换机,交换机将提取的元组信息通过查表算法,与流表进行匹配,根据匹配的结果决定流的转发。如下图1所示。
根据匹配结果,来自sourcea的流命中,根据流表将sourca流转发到端口3,目的端此时接收来自sourcea的信息。sourceb与流表不匹配,将被存储在交换机的缓存。
(2)当目的端destination希望由接收sourcea的数据转为接收sourceb的数据时,执行切换过程。在sdn北向接口执行切换命令,sdn控制器通过flowmod消息下发流表,此时,交换机执行我们的视频精准切换算法,而后将sourceb的数据转发到端口3,sourcea的数据停止转发到端口3。
(二)精准切换(净切换)
切换命令下达后,为了实现净切换,需要在交换机对来自sourcea和sourceb的数据包进行元组解析到rtp头,根据rtp协议的mark标志位,确认每帧的帧头和帧尾,以实现切换时的帧对齐,也就是净切换。精准切换算法具体如下(图3所示)。
(1)sdn北向应用平面切换命令下达后,sdn控制器对交换机下发流表(如图2)。
(2)此时交换机继续转发sourcea的数据,直到检测到sourcea的a1帧(每帧被分成许多数据包传输,例如:高清sdi信号每帧分成2699个数据包传输)中数据包的mark位为1(帧尾标志),同时交换机检测缓存中sourceb的数据包的mark位,如果检测到缓存中sourceb中存在mark位为1的数据包,交换机从sourceb缓存中这个mark位为1的下一个数据包开始转发,将sourceb的数据转发到端口3,同时停止转发sourcea的数据;如果没有检测到sourceb缓存中存在mark位为1的数据包,继续转发来自sourcea的下一个完整帧,直到检测到sourceb缓存中mark位为1的数据包,因此交换机需要对每个输入的待切换视频流至少缓存一帧的数据量。由此,可以实现sourcea和sourceb完整帧的切换。
(3)净切换算法执行完成后,交换机将来自sourceb的数据转发到端口3,停止转发来自sourcea的数据,整个切换过程完成。