一种数据的传输方法和设备
技术领域
本发明涉及通信技术领域,尤其是涉及一种数据的传输方法和设备。
背景技术
一、视频MEPG(Moving Pictures Experts Group,动态图像专家组)帧。
如图1所示的MPEG视频压缩帧的构成示意图,MPEG定义了I、P、B三种图像格式,分别简称为帧内图(Intra Picture)、预测图(Predicted Picture)和双向图(Bidirectional Picture),即I帧、P帧和B帧,其用于表示固定时间间隔的帧序列画面。其中,
I帧:为帧内编码图像,在编解码时不需要参考信息,主要由变换系数组成,不合运动矢量。
P帧:为帧间编码图像,来自于前一图像的前向预测图像,前一图像可以是I图像或P图像,由前一图像中用以描述每个宏块的矢量和宏块变换系数所组成。
B帧:为帧间编码图像,是来自先前的和/或随后的I或P帧而作出的双向预测图像,由描述先前或随后的图像数据的矢量所组成,同时含有帧内编码数据以提供必要的校正。
二、视频数据传输过程中的传输报文时序。
MPEG时间压缩的特性会使得图像的传输顺序与图像的显示顺序并不一致。其中,P图像需要在I图像之后,或作为预测参考的P图像之后;但是,在对双向编码的B图像解码之前,需要先接收和解码B图像的两个参考图像。
如图2所示的视频MPEG压缩报文时序示意图,上方是GOP(Group ofPictures,画面组)图像的显示顺序,下方是GOP图像的传输顺序。需要注意的是,在传输顺序中,B图像总是在其两个预测参考图像之后。
三、视频数据传输过程中的传输特征。
由于I、P、B帧的特点及内容的不同,由此产生的I、P、B帧的大小也不同;其中,I、P、B帧的大小需要满足:I帧尺寸>P帧尺寸>B帧尺寸。在传输视频数据时,如果采用固定报文大小,则在单位时间内用于传输I帧的报文数量会大于用于传输P帧、B帧的报文数量。
如图3所示的视频MPEG压缩I/P/B帧传输特征示意图,为以报文数量及时间分别作为纵横坐标,视频数据传输的波形,从图3中可以发现,I帧对应流量为波峰。
四、I,B,P帧编码错误/丢包对后续帧的影响情况。
对于I,B,P帧,视频数据的运动向量由每个Block和编码决定,I帧的错误可以导致整个视频片断或者一段视频帧不可用;一个I帧或者P帧的丢失可以导致后续所有帧均不可用,直到收到下一个I帧。以上情况会导致该时间段内视频数据质量的下降、图像停滞或者黑屏等现象。
五、视频流量突发对网络设备(如接入层交换机)的压力。
视频流量的网络传输多采用CBR(Constants Bit Rate,固定码率)方式,即固定报文大小,固定帧间隔。由于I、P、B帧大小不一,则会存在突发流量,即I帧发送时的流量较大。如图4所示的突发流量压力的场景示意图,接入层交换机同时接入多台视频编码器,当多路突发流量同时在接入层交换机的上行端口集中时,将导致端口拥塞,甚至流量丢失,并造成网络的压力。
为了解决上述问题,现有技术中提供了两种流量控制方式:XON/XFF机制和耗尽型机制。
XON/XOFF机制:利用PAUSE(暂停)帧唤醒功能进行工作的机制。当一端的接收FIFO(First In First Out,先进先出)达到高水线时,向对端发送PAUSE帧,且PAUSE帧携带时间参数,由对端根据时间参数进行相应处理。其中,如果时间参数不为0,则对端停止发送数据报文;如果时间参数为0,则对端可以发送报文(即唤醒功能)。
耗尽型机制:在接收到流控帧之后,获取流控帧中的流控时间。如果流控时间为0,则取消流控,允许发送数据帧;否则,按照流控时间禁止数据报文的发送;在流控时间结束后,开始发送数据报文,且不必等待流控时间为0的流控帧。
但是,在现有技术中,当接入层交换机的出端口拥塞需要触发流控时,会影响所有接入的视频编码器(例如,控制所有接入的视频编码器暂停输出视频数据),且在下一时刻仍然可能出现端口拥塞。进一步的,当要求视频编码器长时间暂停输出视频数据时,会降低视频效果。
发明内容
本发明提供一种数据的传输方法和设备,以解决网络设备的端口拥塞问题,保证视频数据的正常传输。
为了达到上述目的,本发明提供了一种数据的传输方法,应用于包括管理设备和多个终端设备的系统中,该方法包括以下步骤:
所述管理设备接收来自所述终端设备的时刻请求报文;
所述管理设备根据所述时刻请求报文为所述终端设备分配时间偏移量;
所述管理设备将所述时间偏移量发送给所述终端设备,由所述终端设备根据所述时间偏移量发送数据。
所述管理设备根据所述时刻请求报文为所述终端设备分配时间偏移量,具体包括:
所述管理设备在分配所述时间偏移量时,协调各终端设备发送数据的启动时间,并通过分配所述时间偏移量错开各终端设备发送数据的启动时间。
所述管理设备接收来自所述终端设备的时刻请求报文,具体包括:
所述管理设备接收来自所述终端设备的注册报文,所述注册报文中携带所述终端设备的信息;
所述管理设备根据所述终端设备的信息为所述终端设备分配UUID,并将所述UUID通知给所述终端设备;
所述管理设备接收来自所述终端设备的所述时刻请求报文,所述时刻请求报文中携带所述UUID。
所述管理设备根据所述时刻请求报文为所述终端设备分配时间偏移量,具体包括:
所述管理设备对所述时刻请求报文中携带的UUID进行校验,并在校验成功时为所述终端设备分配时间偏移量。
所述管理设备根据所述时刻请求报文为所述终端设备分配时间偏移量,具体包括:
假定时间周期为T,当前时间为t1,上一个分配的时间偏移量为t2,当前分配的时间偏移量为t,则:
t=[(t1-t2)/T]向上取整*T+i*T+T/n;
其中,i为预设延迟因数,n为正整数。
所述管理设备根据所述时刻请求报文为所述终端设备分配时间偏移量,具体包括:
假定时间周期为T,当前时间为t1,上一个分配的时间偏移量为t2,当前分配的时间偏移量为t,则:
t=[(t1-t2)/T]向上取整*T+i*T+T/m,
其中,i为预设延迟因数,m值由当前时间偏移量的分配情况确定;
当第一次分配时间偏移量时,则T/m为0,当第二次分配时间偏移量时,则m为1/2,当第三次分配时间偏移量时,则m为1/4,当第四次分配时间偏移量时,则m为3/4,当第五次分配时间偏移量时,则m为1/8,以此类推并迭代细分下去。
一种管理设备,应用于包括所述管理设备和多个终端设备的系统中,该管理设备包括:
接收模块,用于接收来自所述终端设备的时刻请求报文;
分配模块,用于根据所述时刻请求报文为所述终端设备分配时间偏移量;
发送模块,用于将所述时间偏移量发送给所述终端设备,由所述终端设备根据所述时间偏移量发送数据。
在分配所述时间偏移量时,协调各终端设备发送数据的启动时间,并通过分配所述时间偏移量错开各终端设备发送数据的启动时间。
所述接收模块,具体用于接收来自所述终端设备的注册报文,所述注册报文中携带所述终端设备的信息;根据所述终端设备的信息为所述终端设备分配UUID,并将所述UUID通知给所述终端设备;以及接收来自所述终端设备的所述时刻请求报文,所述时刻请求报文中携带所述UUID;
所述分配模块,具体用于对所述时刻请求报文中携带的UUID进行校验,并在校验成功时为所述终端设备分配时间偏移量。
假定时间周期为T,当前时间为t1,上一个分配的时间偏移量为t2,当前分配的时间偏移量为t,则:
t=[(t1-t2)/T]向上取整*T+i*T+T/n;其中,i为预设延迟因数,n为正整数;或者,
t=[(t1-t2)/T]向上取整*T+i*T+T/m,其中,i为预设延迟因数,m值由当前时间偏移量的分配情况确定;当第一次分配时间偏移量时,则T/m为0,当第二次分配时间偏移量时,则m为1/2,当第三次分配时间偏移量时,则m为1/4,当第四次分配时间偏移量时,则m为3/4,当第五次分配时间偏移量时,则m为1/8,以此类推并迭代细分下去。
与现有技术相比,本发明至少具有以下优点:
通过接收终端设备的时刻请求报文,并根据时刻请求报文为终端设备分配时间偏移量,由终端设备根据该时间偏移量发送数据,从而使得终端设备产生的流量峰值能够互相错开,解决端口拥塞的问题;而且在不暂停视频业务的前提下,可充分利用网络带宽,并可针对单路视频流调整流量。
附图说明
图1是现有技术中MPEG视频压缩帧的构成示意图;
图2是现有技术中视频MPEG压缩报文时序示意图;
图3是现有技术中视频MPEG压缩I/P/B帧传输特征示意图;
图4是现有技术中接入层交换机接入多视频编码器的场景示意图;
图5是本发明中接入层交换机接入多视频编码器的场景示意图;
图6是本发明中提供的一种数据的传输方法流程图;
图7和图8是本发明中时间偏移量的时间片分配方式示意图;
图9是本发明中时间偏移量的优化的时间片分配方式示意图;
图10是本发明中针对不同配置的视频终端的时间片分配方式示意图;
图11是本发明提供的一种管理设备的结构示意图。
具体实施方式
由于视频流量存在波峰突发现象,对于交换机来说,如果接入该交换机的视频终端产生的流量峰值能够互相错开,则单位时间内对于交换机的流量压力就更平缓,总体上达到了一种平滑效果,能够有效解决端口拥塞的问题。
需要注意的是,流量波峰是出现在输出关键帧(即I帧)数据时,视频终端在视频压缩时会优先产生I帧,也就是说,在视频终端启动视频编码时,输出的第一帧图像是I帧,而在视频编码参数固定的情况下,I帧生成的间隔是固定的。例如,设定码率2Mbps,帧率25帧/秒,I帧间隔25,GOP为25,则每秒会产生一个I帧。
基于上述情况,本发明中,如图5所示,通过主动错开交换机下接入的各个视频终端的编码启动时间(即首次数据发送的时间),让各个视频终端输出I帧数据时保持一定的时间间隔,则能够使接入交换机的各视频终端产生的流量峰值互相错开,从而解决端口拥塞问题。具体的,通过调整交换机下接入的视频终端的I帧启动时间点,可实现视频流量错峰,来达到使多路视频流码流波峰均匀分布的目的,以便充分利用网络带宽。
基于上述策略,本发明提供一种数据的传输方法,该方法应用于包括管理设备和多个终端设备的系统中;该数据包括但不限于视频数据、音频数据、文本数据等;该终端设备包括但不限于视频终端(如图4所示的视频编码器)等;该管理设备包括但不限于交换机(如图4所示的接入层交换机)、视频终端(如图4所示的视频编码器)、第三方设备等,该管理设备可以人为手工指定,也可以通过协议来选举得出,本发明中不再说明。
为了方便描述,本发明中管理设备以接入层交换机为例,终端设备以视频编码器为例,数据以视频数据为例。
基于上述组网情况,如图6所示,该数据的传输方法包括以下步骤:
步骤601,管理设备接收来自终端设备的时刻请求报文。
具体的,管理设备接收来自终端设备的注册报文,该注册报文中携带终端设备的信息;管理设备根据终端设备的信息为终端设备分配UUID(即管理设备生成的用户设备的唯一ID),并将该UUID通知给终端设备;之后,管理设备可接收来自终端设备的时刻请求报文,该时刻请求报文中携带UUID。
本发明中,视频编码器向接入层交换机的注册过程包括:视频编码器在接入该接入层交换机的端口后,向接入层交换机发送注册报文(Register);接入层交换机在接收到注册报文后,返回确认报文(OK),该确认报文中至少携带为视频编码器分配的UUID。
优选的,该注册报文可为周期性发送,且该注册报文定义为二层报文,可至少携带以下信息:MAC地址、设备ID、支持最大视频输入数量(即视频编码器通过多少端口输出码流)等。
优选的,在接收到注册报文后,接入层交换机为视频编码器分配UUID时,UUID可通过下述方式得到:拼接字符串SID=视频编码器MAC地址+视频编码器ID+接入层交换机MAC地址;之后,对SID执行MD5,可获得UUID。
优选的,该针对注册报文的确认报文定义为二层报文,可至少携带以下信息:UUID。
本发明中,视频编码器在注册成功后,在启动视频会话之前,向接入层交换机发送时刻请求报文(Token Request),以获得时间偏移量。其中,该时刻请求报文中至少携带UUID(即客户端唯一ID)。
优选的,时刻请求报文定义为二层报文,还可至少携带以下信息:MAC地址、设备ID、当前视频会话ID等。
步骤602,管理设备根据时刻请求报文为终端设备分配时间偏移量。其中,当接收到时刻请求报文后,管理设备需要对时刻请求报文中携带的UUID进行校验,并在校验成功时为终端设备分配时间偏移量。
本发明中,管理设备在分配时间偏移量时,需要协调各终端设备发送数据的启动时间,并通过分配时间偏移量错开各终端设备发送数据的启动时间。其中,可由管理设备来协调各个接入的终端设备的发包时刻,并可维护一张时刻表,以及根据接入的终端设备的视频流码率、接入的网络端口号等信息来下发启动令牌,统一调度各终端设备发送数据的启动时间,从而错开各终端设备发送数据的启动时间。
步骤603,管理设备将时间偏移量发送给终端设备。
具体的,接入层交换机在接收到时刻请求报文后,如果对UUID校验成功,则返回携带时间偏移量的确认报文(OK)。优选的,该确认报文定义为二层报文,且该确认报文中还可至少携带以下信息:UUID、当前视频会话ID等。
步骤604,终端设备根据时间偏移量发送数据。其中,终端设备在接收到时间偏移量后,可启动本地定时器,并在时间偏移到达时,开始启动数据的发送(I帧数据首先)。
综上所述,本发明中,接入层交换机通过协调各视频编码器的数据发送时间,从而避免端口拥塞。视频编码器向接入层交换机发送注册报文,注册成功后,视频编码器在发送数据之前,首先向接入层交换机发送时刻请求报文,并接收接入层交换机分配的时间偏移量,根据时间偏移量发送数据。接入层交换机为各视频编码器分配时间偏移量,通过时间偏移量控制视频编码器在不同时刻发送数据。
需要说明的是,接入层交换机与各视频编码器之间还需要支持时钟同步,可通过NTP(Network Time Protocol,网络时间协议)、PTP(Precision TimeProtocol,精确时钟同步协议)或其他时钟同步协议来完成。
此外,视频编码器在接入该接入层交换机时需要请求时间偏移量,另一种情况下,视频编码器在接入该接入层交换机后的一段时间内中止输出数据,而后重新输出数据。这种情况下也可能导致各视频编码器同时输出突发流量,导致端口拥塞。
因此,本发明中,接入层交换机会周期性刷新关键帧启动时间,并周期性下发更新报文(Token Update),该更新报文定义为二层报文,且至少需要携带以下信息:UUID。视频编码器收到更新报文后,对UUID进行校验,并在校验成功时,返回确认报文(OK),并重新启动会话启动申请流程。其中,该确认报文(OK)定义为二层报文,且至少需要携带以下信息:UUID、MAC地址、设备ID。需要注意的是,更新报文的下发周期为I帧周期的整数倍。
本发明中,为了实现通过分配时间偏移量错开各终端设备发送数据的启动时间,则可以采用以下方式:
方式一:时间片分配方式。
假定时间周期为T,当前时间为t1,上一个分配的时间偏移量为t2,当前分配的时间偏移量为t,则:t=[(t1-t2)/T]向上取整*T+i*T+T/n;其中,i为预设延迟因数,n为正整数。
如图7所示,在分配时间偏移量时,可以考虑固定间隔时段来分配,取时间周期T,4分(可以取4之外的整数值,4为优选值)后,每个时刻点为一个视频编码器的启动时间,考虑到数据发送和响应处理的时间需要,还可加入一个延迟因数i(可根据实际经验值进行设置,如3),每个时刻点可以加入一个延迟因数i×时间周期T的偏移。
需要说明的是,当前分配的时间偏移量t可以是一个相对时间量,如上述的:[(t1-t2)/T]向上取整*T+i*T+T/n,即为相对时间量(可以为相对于上一个启动的视频编码器的时间量);当前分配的时间偏移量t还可以是一个绝对时间量,此时,t=t2+[(t1-t2)/T]向上取整*T+i*T+T/n。
如图8所示,假设周期T为2秒、延迟因数i为3。当前时间为13时0分0秒,视频编码器1接入,为其分配的启动时间为:13时0分0秒+i×T=13时0分0秒+3×2=13时0分6秒。
在视频编码器2接入后,假如当前时间为13时10分3秒,则视频编码器2的启动时间点为:13时0分6秒+[(当前时间-上一个终端启动时间)/T]向上取整×T +i×T+T/4;即13时0分6秒+[(603-6)/2]×2+3×2+2/4,为13时10分10秒500毫秒。
方式二:优化的时间片分配方式(即采用2分递归算法,确保时间片尽可能分布均匀)。
假定时间周期为T,当前时间为t1,上一个分配的时间偏移量为t2,当前分配的时间偏移量为t,则:t=[(t1-t2)/T]向上取整*T+i*T+T/m,其中,i为预设延迟因数,m值由当前时间偏移量的分配情况确定;当第一次分配时间偏移量时,则T/m为0,当第二次分配时间偏移量时,则m为1/2,当第三次分配时间偏移量时,则m为1/4,当第四次分配时间偏移量时,则m为3/4,当第五次分配时间偏移量时,则m为1/8,以此类推并迭代细分下去。
如图9所示,假定时间周期为T,则第1个视频编码器分配的时间片偏移为0+i×T,第2个视频编码器分配的时间片偏移为n×T+i×T+T/2,第3个视频编码器分配的时间片偏移为n*T+i×T+T/4,第4个视频编码器分配的时间片偏移为n*T+i×T+3T/4,依次类推并迭代细分下去。
需要说明的是,在该分配方式下,其分配策略主要是考虑视频编码器的依次接入问题,视频编码器可能分多次部署,在2分策略下,可以让时间片分配的更加均匀,同时后加入的视频编码器不会和之前的视频编码器时间段发生重叠现象,更好的实现错峰效果。
方式三:针对不同配置的视频编码器的时间片分配方式。
上述方式一和方式二是针对相同配置的视频编码器所使用的,如果接入的视频编码器配置不同,如码率、帧率、I帧间隔等,则如图10所示,可通过下面的计算模型分配时间偏移量(即采用平衡2分算法):
设定总的时间周期T,第1个终端分配的时间片偏移为(2)i×T+T/2;第2个终端的输出码率大于或等于第1个终端,分配的时间片偏移(4)为n×T+i×T+3T/4;第2个终端的输出码率小于第1个终端,分配的时间片偏移(1)为n×T+i×T+0;第3个终端的输出码率先和第一个终端相比,如果小于,就取左边,如果大于或等于,就取右边,依次类推。
基于上述方法同样的发明构思,本发明中还提出一种管理设备,应用于包括所述管理设备和多个终端设备的系统中,该管理设备包括但不限于交换机(如图4所示的接入层交换机)、视频终端(如图4所示的视频编码器)、第三方设备等如图11所示,该管理设备包括:
接收模块11,用于接收来自所述终端设备的时刻请求报文;
分配模块12,用于根据所述时刻请求报文为所述终端设备分配时间偏移量;
发送模块13,用于将所述时间偏移量发送给所述终端设备,由所述终端设备根据所述时间偏移量发送数据。
在分配所述时间偏移量时,协调各终端设备发送数据的启动时间,并通过分配所述时间偏移量错开各终端设备发送数据的启动时间。
所述接收模块11,具体用于接收来自所述终端设备的注册报文,所述注册报文中携带所述终端设备的信息;根据所述终端设备的信息为所述终端设备分配UUID,并将所述UUID通知给所述终端设备;以及接收来自所述终端设备的所述时刻请求报文,所述时刻请求报文中携带所述UUID;
所述分配模块12,具体用于对所述时刻请求报文中携带的UUID进行校验,并在校验成功时为所述终端设备分配时间偏移量。
假定时间周期为T,当前时间为t1,上一个分配的时间偏移量为t2,当前分配的时间偏移量为t,则:
t=[(t1-t2)/T]向上取整*T+i*T+T/n;其中,i为预设延迟因数,n为正整数;或者,
t=[(t1-t2)/T]向上取整*T+i*T+T/m,其中,i为预设延迟因数,m值由当前时间偏移量的分配情况确定;当第一次分配时间偏移量时,则T/m为0,当第二次分配时间偏移量时,则m为1/2,当第三次分配时间偏移量时,则m为1/4,当第四次分配时间偏移量时,则m为3/4,当第五次分配时间偏移量时,则m为1/8,以此类推并迭代细分下去。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。