一种移动多媒体数据广播业务处理的方法及系统 【技术领域】
本发明涉及移动多媒体数据广播技术领域,更具体地,涉及一种移动多媒体数据广播业务处理的方法及系统。
背景技术
近年来,数字移动多媒体广播技术和标准发展迅速,例如欧洲的DVB-H(Digital Video Broadcast Handheld,数字视频广播手持式接收),美国的MediaFLO(Media Forward Link Only,媒体单一前向链路)以及中国的CMMB(China Mobile Multimedia Broadcasting,中国移动多媒体广播)等。
数据广播是移动多媒体广播的一项增值业务,扩展并丰富了移动多媒体广播的业务内容。制定数据广播标准对于推动移动多媒体广播业务的开展十分重要。数据广播以点到多点的广播方式,传输多种信息内容,包括视频、音频、文本、图片、网页、软件程序或者其他多媒体信息数据。通过数据广播业务,可以为终端用户提供各类信息服务,如股票资讯、交通导航、气象服务、网站广播等。
CMMB的数据业务分为流模式和文件模式两种,流模式的数据业务以数据流的方式提供,通常数据流的传输具有时序要求,传输时包含时间标签指示或数据流内部有同步要求;而文件模式的数据业务则以离散文件的方式提供,数据的传输无时序要求。
文件模式的数据文件的分割封装语法和XPE(eXtensible ProtocolEncapsulation,可扩展协议封装)/XPE-FEC(eXtensible Protocol Encapsulation-Forward Error Correction,可扩展协议封装-前向纠错)封装语法处于不同的协议层次,而流模式的数据可直接进行XPE/XPE-FEC封装,所以数据广播业务前端可使用独立的设备完成数据文件发生和XPE封装。
如图1所示为CMMB数据广播系统的结构示意图,其中:
文件下载服务器,用于处理CMMB数据广播系统接收到的文件模式数据,实现数据文件的分割和封装,并向协议封装器轮播数据;
数据广播协议封装器,是一种可扩展的支持多种协议、多个业务的数据封装设备,用于将流数据和分割封装的文件数据经过XPE/XPE-FEC封装后适配到复用子帧的数据段中。
数据广播协议封装器可以同时处理多路业务,需要实时侦听每路业务数据并要求及时将数据处理并发送出去。目前暂没有具体如何实施多路业务处理的技术方案。
同时,在这个过程中,业务源的速率是可变的,这就有可能会造成数据丢包,目前的技术主要采用基于窗口的拥塞控制,如应用广泛的网络传输层协议TCP及其若干变种等。一般处理起来相对比较复杂,对于数据量大、实时性要求较高的数据广播业务,需要一种处理相对方便、处理速度较快的UPD拥塞控制机制。
【发明内容】
本发明要解决的技术问题是提供一种移动多媒体数据广播业务处理的方法及系统,为移动多媒体广播系统提供实时、可靠的数据处理和稳定的速率控制。
为了解决上述问题,本发明提供了一种移动多媒体数据广播业务的处理方法,包括:
根据端口号区分多路数据业务,并为每路数据业务设置单独的业务接收单元、业务发送单元及共享缓存,对于每一路数据业务的处理包括:
所述业务接收单元接收数据,并将接收到的数据保存到所述共享缓存的尾部;
所述业务发送单元从所述共享缓存的头部读取数据并发送。
进一步地,上述方法还可具有如下特点:
所述业务接收单元设置最大缓存长度,接收到数据后,读取所述共享缓存的已使用缓存长度,并根据接收到数据的数据长度更新当前的已使用缓存长度,再判断所述最大缓存长度与更新后的已使用缓存长度的差值是否小于临界值,如果是,则增大所述最大缓存长度,成功后,为接收到的数据分配缓存空间;
所述业务发送单元如果发送数据成功,则从所述共享缓存中删除该数据,并更新当前的已使用缓存长度。
进一步地,上述方法还可具有如下特点:
所述业务接收单元将接收到的数据保存到所述共享缓存的尾部是指:在所述共享缓存中创建先入先出FIFO共享队列指针,将接收到的数据保存到所述共享队列的队尾;
所述业务发送单元从所述共享缓存中的头部读取数据并发送是指:从所述共享队列的队首读取数据并发送。
进一步地,上述方法还可具有如下特点:
如果增大所述最大缓存长度失败,则将所述共享队列的队首指针后移,并将队首对应元素所占的内存删除后,更新当前的已使用缓存长度。
进一步地,上述方法还可具有如下特点:
所述临界值的长度至少大于一个最大传输单元MTU。
进一步地,上述方法还可具有如下特点:
所述业务接收单元和所述业务发送单元通过对共享缓存加锁实现数据同步。
本发明还提供了一种移动多媒体数据广播业务的处理系统,包括业务接收单元、业务发送单元和共享缓存,所述业务接收单元进一步包括数据接收模块和缓存分配模块,所述业务发送单元进一步包括数据处理模块和数据发送模块,其中:
所述数据接收模块用于,根据端口号区分多路数据业务,接收所述多路数据业务中的一路数据业务的数据,并将接收到地数据发送至所述缓存分配模块;
所述缓存分配模块用于,将接收到的数据保存到所述共享缓存的尾部;
所述数据处理模块用于,从所述共享缓存的头部读取数据,并对读取的数据进行前向纠错FEC编码标志校验,根据有无FEC编码标志对数据判断是否对其进行FEC编码,对通过校验的数据进行封装处理后,发送给所述数据发送模块;
所述数据发送模块用于,将封装后的数据发送至目的地址。
进一步地,上述系统还可具有如下特点:
所述缓存分配模块通过以下方式将接收到的数据保存到所述共享缓存的尾部:在所述共享缓存中创建先入先出FIFO共享队列指针,并将接收到的数据保存到所述共享队列的队尾;
所述数据处理模块通过以下方式从所述共享缓存的头部读取数据:从所述共享队列的队首读取数据并发送。
进一步地,上述系统还可具有如下特点:
所述缓存分配单元还用于,设置最大缓存长度,并在接收到数据后,读取所述共享缓存的已使用缓存长度,并根据接收到数据的数据长度更新当前的已使用缓存长度,再判断所述最大缓存长度与更新后的已使用缓存长度的差值是否小于临界值,该临界值的长度至少大于一个最大传输单元,如果是,则增大所述最大缓存长度,成功后,为接收到的数据分配缓存空间;
数据发送模块还用于,在成功发送数据后,从所述共享缓存中删除该数据,并更新当前的已使用缓存长度。
进一步地,上述系统还可具有如下特点:
如果所述缓存分配单元增大所述最大缓存长度失败,则将所述共享队列的队首指针后移,并将队首对应元素所占的内存删除后,更新当前的已使用缓存长度。
综上所述,本发明通过在CMMB数据广播系统中采用多路业务并行处理,使得协议封装器实时处理业务的效率大大提高,将延时时间控制在了毫秒级以内;此外,本发明通过在CMMB数据广播系统中采用拥塞控制机制,大大降低了数据的丢包率。
此外,本发明的优选实施例通过实时分配缓存,以及处理后及时释放内存,提高了内存的利用率;并且在分配缓存前对使用的缓存进行校验,进一步降低了数据的丢包,并在多数情况下能保证数据不丢包。本发明采用线程机制处理,实施简单、可靠;此外,本发明提供的协议封装器系统采用B/S架构来实现,可方便用户来管理业务和进行拥塞控制的管理。
【附图说明】
图1为CMMB数据广播系统的结构示意图;
图2为本发明实施例的数据广播协议封装器实现对多路业务进行处理的系统示意图;
图3为本发明实施例的数据广播协议封装器单个业务管理控制的示意图;
图4为本发明实施例的数据广播协议封装器针对单个业务的处理系统示意图;
图5为本发明实施例的数据广播协议封装器进行拥塞控制的流程图。
【具体实施方式】
本发明的核心思想是:根据源端口区分多路业务,每路业务之间都是分别单独处理的,即每路业务都有业务接收单元和业务发送单元,并且接收单元和发送单元并行执行;此外,本发明分别为每路业务提供缓存,业务的接收单元和发送单元共享缓存数据,通过实时分配共享缓存空间进行拥塞控制,以提高内存利用率,减少数据的丢包。
具体地,本发明采用如下技术方案对每路业务进行处理:
业务接收单元根据端口号接收每路业务的流数据或经过分割封装的文件数据,将数据保存到缓存中;
业务发送单元从缓存中读取数据,根据是否进行FEC编码,进行XPE/XPE-FEC封装,将封装后的数据发往目的地址。
其中,目的地址是业务管理门户配置并保存到数据库中去的。
进一步地,业务接收单元采用阻塞模式侦听源端口,区分每路业务。
其中,阻塞模式指的是socket以阻塞模式创建,阻塞模式下,程序在调用接收函数时(如recv),如果没有数据到达,此函数会一直等待,即当前线程会被阻塞,直到有数据时才返回。
进一步地,业务发送单元根据业务发送速率(即根据业务的带宽来读取数据,比如业务带宽是128kbps,则会在每秒从内存读不超过128kbit的数据包)从缓存中读取数据,对于读取的每个数据包进行标志变量校验,判断是否需要进行FEC编码,如果标志为FEC编码,则对缓存中的数据包进行FEC编码,然后对编码后的数据进行XPE-FEC封装。编码数据及进行过XPE-FEC封装过的数据无需放入缓存,先发XPE封装后的源数据,再发对应的XPE-FEC封装后的编码数据。目前CMMB数据广播中FEC采用的是RS编码算法,编码后的数据进行XPE-FEC封装后得到的数据包比XPE封装的长度要小。
进一步地,业务接收单元和业务发送单元通过对共享数据区加锁来实现业务接收单元和业务发送单元的数据同步。
本发明还提供了一种移动多媒体数据广播系统拥塞控制的方法,拥塞控制在业务处理的基础上进行,包括以下步骤:
业务接收单元校验缓存使用长度,为接收到的数据申请缓存空间,并保存到共享缓存的尾部;
业务接收单元通过设置最大缓存长度,接收到数据后,读取所述共享缓存的已使用缓存长度,并根据接收到数据的数据长度更新当前的已使用缓存长度,再判断所述最大缓存长度与更新后的已使用缓存长度的差值是否小于临界值,如果是,则增大所述最大缓存长度,成功后,为接收到的数据分配缓存空间。
业务发送单元根据业务发送速率来从共享缓存的头部读取数据,如果发送数据成功,则释放数据缓存,更新缓存使用长度。
下面以CMMB数据广播中的协议封装器为例,结合附图对本发明具体实施方式作进一步说明。
本发明实施例的业务处理方法中,对单个业务的处理流程的具体步骤如下:
步骤101,业务接收单元以阻塞模式循环侦听源端口,当接收到数据时,保存数据,记录数据长度;
步骤102,业务发送单元根据业务发送速率依次从共享队列中读取数据。对于读取的每个数据包,判断是否进行FEC编码,如果需要进行FEC编码,按照FEC算法对数据包进行编码,对源数据包进行XPE封装,对编码数据进行XPE-FEC封装,将XPE/XPE-FEC封装完的数据包发往目的地址;如果不需要进行FEC编码,则对取到的数据包进行XPE封装,将封装完的数据包发往目的地址。
通过将业务数据的处理放到业务发送单元处理,相对于放到业务接收单元处理,可以更好的提高系统资源利用率和处理速度。
本发明实施例提供的业务处理系统如图2所示,其中,对于文件模式的业务,前端网络指的是文件发生系统,对于流模式的业务,前端网络可以是股票、交通导航等系统。本实施例的业务处理系统具有如下特点:
a、协议封装器采用B/S架构,业务处理和拥塞控制可通过门户来进行管理,门户可通过JAVA实现,门户和后台的通讯通过数据库和内部消息来实现,用户只需简单的熟悉门户,便可以方便的实现对业务的控制;
b、通过门户来管理多路业务,根据源端口区分多路业务,每路业务单独处理,可进行业务的启动、停止、修改以及删除;
c、每个业务都可以通过门户来进行拥塞控制,主要通过修改业务处理及拥塞控制的参数实现,如图3所示,具体包括了FEC编码控制、业务缓存控制、接收单元控制、发送单元控制、拥塞控制算法五个部分,其中,各部分功能如下:
FEC编码控制部分包括是否进行FEC编码,选择FEC编码算法;
业务缓存控制部分提供对本业务的缓存最大长度的修改;
接收单元控制部分提供对业务数据接收端口和业务源地址的配置;
其中,业务数据接收端口是指所要接收的前端网络发过来的文件数据或流数据的目的端口,业务源地址可以是本机地址也可以是前端网络发送到的组播地址。
发送单元控制部分提供对业务发送速率、业务发送目的IP和业务发送目的端口的配置;
其中,目的IP和目的端口是复用器中配置的地址和端口,复用器根据业务的目的IP和端口接收相应的业务数据。
拥塞控制算法部分可进行控制算法的选择,目前提供FIFO(First In FirstOut,先入先出)算法。
图4示出了本发明实施例的实现数据广播协议封装器单个业务处理流程的系统示意图,包括业务接收单元、业务发送单元和共享缓存,其中,业务接收单元进一步包括数据接收模块和缓存分配模块,所述业务发送单元进一步包括数据处理模块和数据发送模块,各模块的主要作用如下:
数据接收模块用于,根据端口号区分多路数据业务,实时接收一路数据业务的数据,并将接收到的数据发送至缓存分配模块;
缓存分配模块用于,将接收到的数据保存到共享缓存的尾部;
数据处理模块用于,从共享缓存的头部读取数据,并对读取的数据进行FEC编码标志校验,根据有无FEC编码标志对数据判断是否对其进行FEC编码,对通过校验的数据进行封装处理后,发送给数据发送模块;
数据发送模块用于,将封装后的数据发送至目的地址。
图5描述了在CMMB数据广播中协议封装器在业务处理时进行拥塞控制的流程,具体步骤如下:
步骤201,对每路业务,在业务接收单元创建空的FIFO共享队列指针;
步骤202,判断是否进行RS(Reed-Solomon)编码(RS是一种具体的算法,可以实现FEC编码功能),如果进行RS编码,则根据RS编码算法计算每个包的编码数据长度,并设置RS编码时可允许分配的最大内存;如果不进行RS编码,设置未RS编码时可允许分配的最大内存;
其中,由系统配置可允许分配的最大内存(即最大缓存长度),并需分别为每路业务进行最大缓存长度设置。最大缓存长度可根据实际可用内存大小、最大并行业务数来设置,最大缓存长度的默认值可从配置文件中读取,具体的配置可通过门户和数据库来修改。例如,一个数据包的长度不能大于MTU(Maximum Transmission Unit,最大传输单元),一般为1024或512字节,则最大缓存长度默认可设为2M,如果此时包是1024字节,这样就可以缓存2000个包。
步骤203,业务接收单元接收到数据后,读取当前已使用的共享缓存长度,并根据接收到的数据长度更新已使用的共享缓存长度,如果当前最大缓存长度与更新后的已使用共享缓存长度的差值小于某临界值,(该临界值至少大于一个MTU),则增加最大缓存,增加的长度可配置,一般需保证大于一个MTU,成功则分配内存,如果失败仍根据接收的数据长度分配内存,同时通知用户;
步骤204,将数据保存到队尾,如果步骤203最大缓存长度与新的共享缓存长度小于某临界值且增大缓存失败,则将队首指针后移N(N包括但不限于10的正整数)个元素,并删掉队首前N个元素所占的内存,并更新当前已使用共享缓冲长度;
步骤205,业务发送单元每发送完一个数据后,从缓存中删掉数据,释放内存,并更新当前已使用共享缓存长度。
由上可知,采用本发明的业务处理方法,可保证业务数据实时、稳定的处理及传输。
此外,除应用于CMMB系统外,本发明的方法同样适用于其他移动多媒体广播系统。