报文传输方法及装置、系统、存储介质、电子装置与流程

文档序号:15593834发布日期:2018-10-02 19:16阅读:258来源:国知局

本发明涉及通信领域,具体而言,涉及一种报文传输方法及装置、系统、存储介质、电子装置。



背景技术:

网络应用中,组播作为一种高效的传输方案,被广泛应用于视频传输、消息分发、文件推送,主流的组播方案是,基于无连接的udp(userdataprotocol,用户数据报协议)协议封装原始数据报文,采用组播方式在网络设备中分发和传输。由于组播传输存在不可靠性,在网络异常时容易出现丢包或者误码,必须进行纠错补偿,以保证可靠性数据传输。iptv(网路协定电视,internetprotocoltelevision)\视频会议等视频业务领域中,相关技术中的组播传输方案是udp组播+fec(前向纠错,forwarderrorcorrection):对于媒体数据,发送端除了发送组播原始数据外,还会对媒体内容进行fec纠错编码,发送fec纠错报文,接收端可以同时接收到媒体内容的原始数据报文和fec报文,对于丢包或者误码的原始数据报文,接收端使用fec纠错报文对原始报文进行还原,从而大大提升媒体内容传输的质量。udp组播+fec方案存在的问题:fec冗余报文只能提供部分的冗余度,原始数据报文丢包率超过fec的冗余度的时候,fec纠错报文依旧无法对数据进行还原;fec纠错数据报文如果丢包,接收端将无法对原始数据报文进行还原。

为了实现更加高效的可靠组播传输,相关技术中ietf(theinternetengineeringtaskforce,国际互联网工程任务组)提出了一种基于nack(negativeacknowledge,否定确认)机制的可靠组播协议norm(nack-orientedreliablemulticasttransportprotocol),其主要的思想是,在正常情况下,发送端基于udp+fec方式协议封装传输数据,以组播发送,接收端接收原始数据和fec纠错数据,并且根据报文的序号进行丢包检测,如果没有丢包,则进行fec纠错、解码和业务呈现;如果存在丢包,那么接收端向发送端发送nack(否定确认)报文,以此将丢失的组播报文的序号告诉发送端,发送端则根据nack请求中的丢包报文序号,对指定的原始数据报文或者fec纠错报文发送修复报文,接收端接收到修复报文,则进行数据重组,这样来实现可靠的数据传输。

norm可靠组播传输方案与udp组播+fec纠错传输方案相比,引入了类似于tcp(transportcontrolprotocol)的丢包重传和拥塞控制机制,在传输可靠性上,远远好于udp组播+fec方案,使得norm可以适用于更多的传输场景。目前可以适用norm的业务场景有:比如iptv直播、ott(overthetop)直播、数字视频广播(digitalvideobroadcasting,dvb)直播、分布式消息队列、文件分发、网红直播、视频会议、网络游戏、军事指挥系统等等。著名的开源消息队列zeromq就支持使用norm作为传输协议,cablelabs的iptv规范也将norm定义为媒体传输的标准协议,其市场价值越来越高。

norm的可靠组播传输机制也存在问题,如附图1所示,图1是本发明相关技术中norm可靠组播传输机制的示意图。

如果norm发送端与接收端之间,发生关键传输设备的异常或者抖动,大量的接收端会同时检测到丢包,而向发送端发送大量相同丢包报文序号的nack,形成消息风暴,norm发送端存在处理性能瓶颈。同时norm协议要求发送端需要具有nack一定延迟的修复窗口,即发送端需要在一段时间窗内,收集来自不同的接收端的nack报文,进行去重处理后,然后对丢包报文的并集,发送修复报文。为了尽可能的避免发送重复的修复报文,发送端需要设置比较长的时间窗来处理nack报文,这样拖延了修复报文发出的时间。对于接收端来说,丢包报文修复的延迟比较大,这容易导致业务质量下降,典型地,在视频业务场景,容易导致终端上的视频画面花屏或者跳帧,影响观影体验。随着接收端数量的增加,这个问题越发明显。norm传输机制的这个特点,导致一个norm发送端可以支撑的接收端的数量受到限制,无法支撑iptv/ott等大规模用户的场景。

针对相关技术中存在的上述问题,目前尚未发现有效的解决方案。



技术实现要素:

本发明实施例提供了一种报文传输方法及装置、系统、存储介质、电子装置。

根据本发明的一个实施例,提供了一种报文传输方法,包括:接收第一设备发送的丢失报文的序号,其中,所述丢失报文的序号用于指示在第二设备发送给所述第一设备的报文中丢失报文的序号;对所述丢失报文的序号进行去重操作,得到丢失报文序号集合;将所述丢失报文序号集合发送给所述第二设备。

根据本发明的另一个实施例,提供了一种报文传输装置,包括:接收模块,用于接收第一设备发送的丢失报文的序号,其中,所述丢失报文的序号用于指示在第二设备发送给所述第一设备的报文中丢失报文的序号;处理模块,用于对所述丢失报文的序号进行去重操作,得到丢失报文序号集合;发送模块,用于将所述丢失报文序号集合发送给所述第二设备。

根据本发明的又一个实施例,提供了报文传输系统,包括一个或多个第一设备、第二设备、过滤设备,其特征在于,其中,所述第一设备,用于接收所述第二设备发送的原始报文,以及在对所述原始报文进行丢包检测确定存在丢失报文时,将所述丢失报文的序号发送给所述过滤设备;所述过滤设备包括:接收模块,用于接收第一设备发送的丢失报文的序号,其中,所述丢失报文的序号用于指示在第二设备发送给所述第一设备的报文中丢失报文的序号;处理模块,用于对所述丢失报文的序号进行去重操作,得到丢失报文序号集合;发送模块,用于将所述丢失报文序号集合发送给所述第二设备;所述第二设备,用于向所述第一设备发送原始报文,以及接收所述丢失报文序号集合。

根据本发明的又一个实施例,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。

通过本发明,通过对丢失报文的序号进行去重操作,减少相同丢失报文的序号的个数然后发送给第二设备,避免在第二设备上形成消息风暴,解决了相关技术中处理丢失报文时间太长的技术问题,减少了第二设备对丢失报文的序号的筛选工作量,进而提高了第二设备针对丢失报文发送修复报文的效率,降低了第一设备修复丢失报文的时延。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是本发明相关技术中norm可靠组播传输机制的示意图;

图2是根据本发明实施例的报文传输方法的流程图;

图3是根据本发明实施例的报文传输装置的结构框图;

图4是根据本发明实施例的报文传输系统的结构框图;

图5是本实施例的可靠组播通讯的示意图;

图6是本实施例的一种可靠组播通讯的系统的工作原理图;

图7是本实施例的一种可靠组播通讯的实现方法流程图;

图8是本实施例的一种可靠组播nack过滤装置内部结构图;

图9是实施场景一的可靠组播消息分发的系统结构图;

图10是实施场景一的可靠组播消息分发的流程图;

图11是本实施场景二的基于norm的ott直播业务系统结构图;

图12是本实施场景二的基于norm的ott直播内容分发的流程图;

图13是本实施场景三的基于norm的iptv直播系统结构图;

图14是本实施场景三的基于norm的iptv直播业务流程图;

图15是本实施场景四的多级norm过滤装置系统结构图;

图16是本实施场景四的多级norm过滤装置消息业务流程图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

实施例1

本申请实施例可以运行的网络架构包括:一个或多个第一设备、第二设备,其中,第一设备与第二设备之间进行交互,第二设备向第一设备发送业务报文或原始报文,第一设备接收到业务报文或原始报文后,检测在传输过程中的丢失报文,或者是未接收到的丢失报文,向第二设备发起反馈过程。

在本实施例中提供了一种运行于上述网络架构的报文传输方法,图2是根据本发明实施例的报文传输方法的流程图,如图2所示,该流程包括如下步骤:

步骤s202,接收第一设备发送的丢失报文的序号,其中,丢失报文的序号用于指示在第二设备发送给第一设备的报文中丢失报文的序号;

步骤s204,对丢失报文的序号进行去重操作,得到丢失报文序号集合;

步骤s206,将丢失报文序号集合发送给第二设备。

通过上述步骤,通过对丢失报文的序号进行去重操作,减少相同丢失报文的序号的个数然后发送给第二设备,避免在第二设备上形成消息风暴,解决了相关技术中处理丢失报文时间太长的技术问题,减少了第二设备对丢失报文的序号的筛选工作量,进而提高了第二设备针对丢失报文发送修复报文的效率,降低了第一设备修复丢失报文的时延。

可选地,上述步骤的执行主体可以为服务器,功能模块等,可以设置在第一设备与第二设备的通信链路之间,或者是集成在第二设备上,但不限于此。去重操作可以删除重复的丢失报文的序号,去重操作后的序号总数少于去重操作前的序号总数,如去重操作前序号1,序号2,序号3分别为5,2,3个,去重操作后,序号1,序号2,序号3可能分别只存在2,1,2个,总数较之前的10个少了5个,在一个特例中,去重操作后,序号1,序号2,序号3可能分别只存在1,1,1个,不管怎样去重,序号1,序号2,序号3都至少存在一个。

在本实施例中,丢失报文包括:在第二设备发送报文后,第一设备在预定时间内未接收到的报文。当然也可以是在解码失败需要重新接收的报文。

可选地,第二设备根据丢失报文序号集合所指示的丢包报文,向第一设备发送修复报文,其中修复报文的序号来自丢失报文序号集合中其中一个。

可选的,在将丢失报文序号集合发送给第二设备之后,还包括:第二设备向第一设备发送修复报文,其中,修复报文为丢失报文序号集合中的序号所指示的报文。第二设备向第一设备发送原始报文,其中原始报文包含不重复的序号,第一设备根据原始报文的序号检测丢包确定丢失报文,第一设备发送的丢包报文的序号,即为第一设备检测到的丢包的原始报文的序号。

可选的,接收第一设备发送的丢失报文的序号包括:接收来自一个或多个第一设备发送的nack报文,其中,nack报文携带丢失报文的序号。

可选地,接收第一设备发送的丢失报文的序号包括:接收第一设备发送的nack报文,其中,nack报文携带丢失报文的序号。在将丢失报文序号集合发送给第二设备时,丢失报文序号集合中的丢失报文序号也可以是携带在nack报文集合的nack报文中。

可选地,nack报文包括:基于可靠组播通讯协议norm的nack报文。

可选地,第一设备与第二设备之间传输的报文可以是组播报文或单播报文,丢失报文包括以下至少之一:组播报文,单播报文。

可选地,对丢失报文的序号进行去重操作,得到丢失报文序号集合,包括以下两种策略:

在预定时间周期内接收的全部丢失报文的序号中,将存在重复的序号进行去重,不重复的序号保留,得到丢失报文序号集合;

根据在预定时间内已经发送过的历史丢包序号列表,在接收的全部丢失报文的序号中,选择序号不包括在历史丢包序号列表中的丢失报文的序号,得到丢失报文序号集合。

可选地,在将丢失报文序号集合发送给第二设备包括以下之一:将所述丢失报文序号集合发送给所述第二设备,然后接收第二设备反馈的ack信息,其中,ack信息用于指示第二设备接收到丢失报文序号集合;根据预设重发次数将丢失报文序号集合发送给第二设备。如可以发送三次,保证第二设备可以接收到丢失报文序号集合,第二设备在接收到丢失报文序号集合后,也可以进行去重操作。

可选地,接收第一设备发送的丢失报文的序号包括:接收第一设备在对应的第一区域发送的丢失报文的序号。可以按照第一设备的位置划分多个区域,在每个区域上增加一个过滤装置进行过滤去重,每个过滤装置负责接收区域内第一设备的丢失报文的序号。所述丢失报文序号集合可以携带在基于norm的nack报文中。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

实施例2

在本实施例中还提供了一种报文传输装置、系统,用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图3是根据本发明实施例的报文传输装置的结构框图,如图3所示,该装置包括:

接收模块30,用于接收第一设备发送的丢失报文的序号,其中,丢失报文的序号用于指示在第二设备发送给第一设备的报文中丢失报文的序号;

处理模块32,用于对丢失报文的序号进行去重操作,得到丢失报文序号集合;

发送模块34,用于将丢失报文序号集合发送给第二设备。

可选的,接收模块包括:接收单元,用于接收来自一个或多个第一设备发送的nack报文,其中,所述nack报文携带所述丢失报文的序号。

可选的,处理模块包括以下之一:第一处理单元,用于在预定时间周期内接收的全部丢失报文的序号中,将存在重复的序号进行去重,得到丢失报文序号集合;第二处理单元,用于根据在预定时间内已经发送过的历史丢包序号列表,在接收的全部丢失报文的序号中,选择序号不包括在历史丢包序号列表中的丢失报文的序号,得到丢失报文序号集合。

图4是根据本发明实施例的报文传输系统的结构框图,如图4所示,包括:第一设备40、过滤设备42、第二设备44。

第一设备40,用于接收第二设备发送的原始报文,以及在对原始报文进行丢包检测确定存在丢失报文时,将丢失报文的序号发送给过滤设备;

第二设备44,用于向第一设备发送原始报文,以及接收丢失报文序号集合;

过滤设备42包括:接收模块30,用于接收第一设备发送的丢失报文的序号,其中,丢失报文的序号用于指示在第二设备发送给第一设备的报文中丢失报文的序号;处理模块32,用于对丢失报文的序号进行去重操作,得到丢失报文序号集合;发送模块34,用于将丢失报文序号集合发送给第二设备。

可选的,第二设备还包括:重发模块,用于向第一设备重发修复报文,其中,修复报文为丢失报文序号集合中的序号所指示的报文。

可选的,第一设备还包括:纠错模块,用于接收修复报文,并使用修复报文对数据进行纠错还原处理,以得到完整的原始报文。

可选的,重发模块还包括:第一重发单元,用于确定一个或多个第一设备中每个第一设备所丢失的报文;将修复报文中与所丢失的报文相同的报文发送给对应的第一设备;第二重发单元,用于将修复报文发送给所有的第一设备。仅发送每个第一设备所丢失的报文,目标报文在第一设备上不用再次筛选,可以减小第一设备的工作量。将所有修复报文都发送给所有第一设备,第一设备根据需要在选择修改报文,可以减小第二设备的工作量,因为不用查询每个修复报文所对应的第一设备。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。

实施例3

本实施例是本发明的可选实施例,用于结合具体的场景示例对本申请进行详细说明:

图5是本实施例的可靠组播通讯的示意图,如附图5,通过在发送端与接收端之间增加nack过滤装置来解决的延迟和性能问题,使得能够更好地应用于海量用户的业务场景。本实施例通过在发送端与接收端之间设立过滤装置,可以按照接收端的位置划分多个区域,在每个区域上增加一个nack报文过滤装置,每个过滤装置负责接收区域内终端装置的nack报文;接收端接收发送端的组播数据报文,根据组播数据报文的序号检测丢包,如果有丢包,则给该区域的过滤装置发送nack报文,携带丢失数据包的序号;过滤装置收集该区域内的终端的nack报文,根据nack报文中的携带的序号进行去重,得到本区域的接收端丢包的报文序号,并向发送端发送少量的nack报文;发送端收集不同区域的过滤装置发送的少量nack报文,然后给所有的接收端重传丢失的报文。

本实施例提供了一种可靠组播通讯系统,如图6,图6是本实施例的一种可靠组播通讯的系统的工作原理图,包含发送端、一个或者多个过滤节点、多个数据设备、多个接收端。

发送端:可靠组播的发送源,可以是消息服务器、文件服务器、视频源站、网站服务器、中心控制系统等等。发送端需要支持norm协议,可以创建norm群组会话,能够将消息、文件和实时流等数据封装成ip/udp/rtp等原始数据和fec纠错数据。发送端能够给每个原始数据、fec纠错数据生成报文序号,并且顺序将报文以组播方式发送给接收端。发送端支持接收过滤节点发送的nack报文,并且在一定的时间窗内,收集不同区域的nack报文,能够按照nack报文中的丢包报文的序号进行去重,获得接收端丢包报文的序号列表,最后,发送端可以根据这个丢包报文的序号列表,将接收端丢失的报文重新在同一个norm群组会话中发送。可选地,根据发送端的类型的不同,发送还支持发送norm_cmd(包括但不限于cc、eot、squelch、repair_adv、flush,参考rfc5740)。本实施例中描述的norm协议是以rfc5740为例说明的,而在实际的应用中,norm规范会更新,本实施例提出的装置、方法和系统同样是适用于rfcnorm协议的后续版本的,基于norm新的版本使用本实施例,同样属于权利保护范围之内。

过滤装置:用来实现对接收端的nack请求的收集和过滤。过滤装置在区域内接收本区域所有接收端的单播或者组播nack报文,并且可以采用时间窗聚集过滤模式以及缓存转发模式,能够对nack报文中的丢包报文序号进行去重,得到本区域所有接收端的丢失报文序号集合,并且可以将丢失的报文序号放在新的nack报文中发送给发送端。过滤装置对于接收到的多个nack报文中包含的每个丢包报文序号,可以采用一定的冗余策略,通过一个或者多个nack报文发送给发送端,但每个丢包报文序号,过滤装置发给发送端的次数要小于接收的次数。可选地,过滤装置还可以将的nack报文进行单播到组播或者是组播到单播的转换之后,再发送给发送端。过滤装置的形态可以是数据设备上的软件模块,也可以是消息代理服务器、文件分发服务器、实时流中继服务器、cdn节点、数据设备上的特殊模块、sdn控制器+sdn转发设备等等,在部署上可以是一级部署:按照地域位置,将不同地域位置的接收端划分成不同区域,每个区域部署一个;或者是多级部署,即根据接收端的数量,数据设备组网,在网络的中心和边缘都部署,形成级联。

其中,冗余策略之一,在过滤装置与上级实体之间扩展norm信令,具体可以参考norm协议norm_info消息,对于过滤装置发送的每个nack报文,再返回一个ack消息,过滤装置对过滤之后的丢包报文序号,发送nack报文之后,确认上级实体反馈nack报文的ack之后,才不再重传向上级实体重复发送包含该丢包报文序号的nack报文,否则重发n(可配置)次。冗余策略之二,过滤装置设置一定的重发次数m(可配置),对于经过过滤去重之后的丢包报文序号,每个序号在过滤装置发送给上级实体的nack报文中出现m次。

数据设备:分成2种,组播复制装置,以及组播路由网络。组播复制装置可以分成多级部署,与发送端相连的组播复制装置主要是用来发送端发出的组播报文,并且复制成多份,发送给下级组播复制装置,直到将组播报文发送到所有的接收端。组播路由网络为支持转发单播和组播报文的交换机和路由器组成的网络,在实际应用中,可以根据需要,在发送端、过滤装置和接收端之间部署多个甚至是多级数据设备。

接收端:分散在网络各个区域,支持使用norm协议接收原始数据以及fec纠错数据的组播报文。在接收来自发送端的norm组播数据报文时,可以按照组播数据包中的序号,来检测是否有数据报文丢失,如果有数据报文丢失的时候,接收端可以向过滤节点发送nack报文,并在nack报文中包含所丢包报文的序号列表;接收端可以接收发送端发送的重传修复报文,并且可以使用修复报文进行数据还原。可选地,接收端还可以接收发送端发送的norm_cmd(包括但不限于cc、eot、squelch、repair_adv、flush,参考rfc5740)并且做响应处理。接收端在能够对norm传输的三种对象(消息、文件以及实时流)进行对应的业务呈现,业务呈现的方式包括大不限于消息展示、文件下载、音视频播放等等。接收端的形态可以是支持norm标准协议的消息客户端、文件客户端、代理服务器、网络设备、电脑、手机等等。

本实施例提供了一种可靠组播通讯的实现方法,图7是本实施例的一种可靠组播通讯的实现方法流程图,如附图7,包括:

发送端初始化配置norm群组会话的组播地址和端口:

发送端创建norm群组会话,其中群组会话使用步骤1中定义的组播地址和端口;

多个接收端按照以下过程加入群组通信会话:

接收端初始化配置norm群组会话的组播地址和端口,其中组播地址和端口与发送端创建的群组会话的组播地址和端口相同;

可选地,接收端初始化配置本区域的过滤装置地址信息,用于后续向此过滤装置发送单播norm_nack报文;

接收端根据步骤3中配置的组播地址和端口,加入norm群组会话,并且开始在会话中接收norm组播数据报文norm_data,以及指令norm_cmd(包括但不限于cc、eot、squelch、repair_adv、flush);

可选地,发送端可以周期性地在群组会话中以组播发送norm_cmd(flush)指令,通知所有的接收端,发送准备接收nack报文;

norm组播数据包发送过程包括:

发送端在上述群组会话中,将需要传输的数据使用udp封装原始数据报文,可选地,发送端还根据冗余策略,将需要传输的数据进行fec编码,按照一定的顺序,生成norm数据包序号,并且按照序号发送norm组播数据报文,报文的类型为norm_data,根据norm协议的定义,可以是数据、文件或者实时流,每个norm的数据包包含对应的序号;发送端在发送norm组播数据报文的时候,原始数据,以及fec纠错数据,可以是在一个norm_data消息中,也可以分成不同的norm_data消息。

接收端开始接收norm组播数据报文,接收端根据norm组播数据报文的序号进行检测丢包,组播数据报文序号具体参考rfc5740中norm_data消息格式定义;

接收端对于丢失的组播数据报文,生成norm_nack报文,nack报文中包含丢失组播数据报文的序号,接收端向本区域内的过滤装置发送normnack报文,其中nack报文可以单播方式(使用步骤4中初始化的过滤装置地址),也可以是组播方式(使用上述步骤中初始化的norm组播会话地址),丢包报文的序号放在norm_nack的载荷中,具体参考rfc5740norm_nack的定义。

过滤装置nack过滤、去重、转换和转发过程包括:

过滤装置在长度为n的时间窗段内,接收本区域不同接收端的nack报文;该步骤中,n的特点是,比较小;

过滤装置根据不同的接收端发送的nack报文的丢包报文的序号列表,进行去重;

过滤装置将去重后的nack报文,以单播或者组播的方式转发给发送端。该步骤中,nack报文序号列表,为在该时间窗段内,本区域所有接收端的nack报文中序号列表的并集的子集。

发送端发送修复报文过程包括:

发送端在长度为m的时间窗内,接收不同的过滤装置的nack报文;

发送端根据过滤装置发送的nack报文中发送端丢失的组播数据报文的序号,进行去重,得到整个系统中所有接收端丢包报文的序号集合;

发送端对于接收端丢失的组播数据报文,修复报文的序号与nack报文中携带的丢失组播报文的序号相同,格式与对应序号的组播数据报文格式相同,发送端在上述的群组会话中,重传修复报文,重传报文格式依旧是norm_data,具体参考rfc5740。

接收端进行数据修复过程包括:

接收端对于每个接收到的发送端发送的norm_data修复报文,判断修复报文中的序号,是否是该接收端丢失的组播数据包。如果是,则使用该norm_data修复报文进行数据还原;如果不是,则接收端丢弃该norm_data修复报文;

接收端对于还原后的完整norm组播数据报文进行其他处理,做业务呈现,业务呈现的形式包括但不限于,媒体播放、文件下载、消息分发。

对于有边界的数据,发送端、过滤装置、接收端反复执行步骤07~17,直到数据发送完成;

对于无边界的数据,比如实时流,可选地,接收端可以在任何时刻加入群组会话,发送端可以一直不关闭会话,持续发送norm数据包;对于有边界的数据,比如消息和文件,发送端和接收端之间,在数据发送完成之后,还包含一个会话关闭过程:

可选地,对于有边界的数据,发送端发送norm_cmd(eot)指令,通知所有的接收端,传输完成;

接收端对norm_eot指令进行响应,等待传输完成后,退出群组会话,返回norm_ack;

发送端等所有的客户端都返回norm_ack之后,关闭群组会话。至此,附图7的流程结束。

本实施例提供了一种normnack过滤装置,图8是本实施例的一种可靠组播nack过滤装置内部结构图,如图8所示,所述norm过滤装置,包括:

发送模块101,将过滤以及转换之后的nack报文发送给上级实体,发送的nack报文的格式由过滤模块过滤去重得来;

转换模块102,可选模块,用于将经过过滤去重之后的nack报文进行单播转组播、或者是组播转单播的处理;

过滤模块103,对于接收到的多个nack报文,根据nack报文的丢包报文的序号,进行过滤去重;

接收模块104,用于接收来自下级实体的单播或者组播nack报文;

使用本实施场景的方案,在各个区域都有部署nack过滤装置,在大量的接收端检测到丢包时,接收端发送的nack报文,先经过nack过滤装置过滤和去重,在一个区域内,不同的终端都是丢失相同的数据包,因此区域内的nack过滤装置处理过的nack报文会大大减少,对于发送端来说,只是收集不同区域的nack过滤装置发送的少量nack报文,发送端不会接收到nack报文风暴,发送端的性能处理要求大大降低。对发送端的nack报文处理性能要求,更多的是与发送直接相关的过滤装置的数量,接收端的数量的增加不直接增加发送端的性能要求,采用本实施例的系统、装置和方法后,在同一个norm会话中,接收端的数量可以大大提升。由于nack过滤装置只接收到该区域的接收端的nack报文,数量可控,因此nack过滤装置可以使用很短的时间窗来收集nack报文,接收端的nack随机退避时长可以很小,而发送端同样因为只接收到少量nack报文,没有性能瓶颈,也可以使用很小的时间窗来收集nack报文,因此发送端可以更快地发出修复报文,接收端则可以尽快地接收到norm修复报文,从而降低接收端的延迟。

本实施例可以从业务场景、部署位置上来展开成不同的应用场景。

业务场景上看,norm有三种主要的类别,消息、文件和实时流。消息业务场景主要有:聊天室、实时消息推送、军事指挥系统等等(实施场景一);文件业务场景有iptv点播、ott点播、ott直播、互联网内容分发等等(实施场景二);实时流的业务场景有iptv直播、dvb直播、视频会议、全球眼监控、网红直播等等(实施场景三)。

从部署上看,过滤装置的位置,可以在发送端所在的网络中心,也可以是和接收端一起分散不同的网络边缘,也可以多层部署,比如,网络中心和网络边缘都存在过滤装置。norm过滤装置接收接收端的nack报文,可以是单播方式,也可以是组播方式,对于接收端发送的组播nack报文,norm过滤装置在去重之后,还可以转换成单播方式,转发给发送端,以支持长距离部署场景。实施场景四展示了2级过滤装置,并且进行了nack的组播到单播的转换。下面分别进行详细说明:

实施场景一

使用norm组播进行消息进行分发,消息组播报文不带fec编码,发送端收到nack后直接重传原始数据包,所有接收端同步接收所有的消息,并且展示。

图9是实施场景一的可靠组播消息分发的系统结构图,如附图9,本实施场景中:部署1个消息服务器,作为本发明中的norm发送端;设立一个中间服务器,作为本发明中提出的nack过滤装置;设立2个消息客户端(1和2),用作本发明中的norm接收端,消息发送的组播地址为221.1.1.1:8080;在用户网络边缘的区域内部署1个组播路由器,作为组播复制装置。

图10是实施场景一的可靠组播消息分发的流程图,如附图10,消息分发流程交互如下:

701.消息服务器使用组播地址norm://221.1.1.1:8080创建群组会话;

702.消息客户端1以组播地址norm://221.1.1.1:8080加入群组会话;

703.消息客户端2以组播地址norm://221.1.1.1:8080加入群组会话;

704.消息服务器以norm_data对象封装消息数据,norm_data的类型是norm_object_data,发送10个消息message(1~10),消息norm序号分别是1~10,在发送过程中,message4~5由于网络异常导致消息客户端1丢包,message5~6由于网络异常导致消息客户端2丢包,其他序号的包都正常发送和接收,消息客户端1和消息客户端2对于正常的包都做展示处理。

705.消息客户端1检测到丢包,向中间服务器以组播方式发送一个normnack报文nack1,nack1包含丢包序号4和5;

706.消息客户端2检测到丢包,向中间服务器以组播方式发送一个normnack报文nack2,nack2包含丢包序号5和6;

707.中间服务器在10ms的时间窗口内,收集到nack1和nack2以后,对其中的序号进行去重,取并集,得到序号并集,得到消息客户端1和消息客户端2丢包并集是4,5,6,然后中间服务器给消息服务器发送nack3,nack3中消息载荷中包含序号4,5,6;

708.消息服务器,收到nack3,取得消息客户端1和2丢包的包是4,5,6,则重新发送三个原始数据报文message4、message5和message6;

709.消息客户端1收到message4、message5、message6,则使用重传的message4和messag5进行展示,则丢弃重传的message6,使用第一次厚道的message6进行展示。

710.消息客户端2收到message4、message5、message6,则丢弃重传的message4,使用第一次收到的message4,以及重传的message5和message6进行展示。

711.等到所有的message发送并且展示完成后,消息客户端1关闭norm群组会话;

712.等到所有的message发送并且展示完成后,消息客户端2关闭norm群组会话;

713.消息服务器关闭norm群组会话。

实施场景二

将一个文件分发到多个区域的机顶盒终端,说明在文件分发的业务应用中如何实施本发明。

图11是本实施场景二的基于norm的ott直播业务系统结构图,如附图11所示的ott业务系统,本实施场景中:部署1个hls内容源站,作为本发明中的norm发送端;设立一个cdn节点,具备本发明中提出的nack过滤装置功能;设立2个机顶盒客户端端(1和2),具备本发明中的norm接收端功能。在用户网络边缘的区域内部署1个组播路由器,作为组播复制装置。hls内容源站需要将一个视频文件列表file01~10.ts,推送到所有的机顶盒终端上播放。对于每个视频文件01~10.ts,hls内容源站循环采用下面的步骤知道所有的视频文件传输并且播放完成。在本实施场景中,我们详细描述其中一个文件的组播分发过程,并且假设第一个文件01.ts,编码成300个norm组播包filepack001~300,由于中间数据设备异常,导致机顶盒1和机顶盒2同时对丢失的filepack011~020产生nack报文nack1和nack2,nack1和nack2中包含的丢包序号列表为11~20,以此说明。

图12是本实施场景二的基于norm的ott直播内容分发的流程图,如附图12,视频文件分发流程交互如下:

901.hls内容源站创建norm群组会话,组播地址是norm://221.1.1.1:8080;

902.机顶盒1以norm://221.1.1.1:8080加入norm群组会话;

903.机顶盒2以norm://221.1.1.1:8080加入norm群组会话;

hls内容源站、cdn节点和机顶盒,重复使用步骤804到7xx视频文件直到所有的文件file01~10.ts播放完成。

904.hls内容源站以norm_data对象封装视频内容01.ts内容,编码成300个normdata数据包filepack(001~300),norm消息序号分别是1~300,norm_data的类型是norm_object_file,其他序号的包都正常发送和接收,机顶盒1和机顶盒2对于正常的包都做展示处理。

905.机顶盒1检测到filepach011到filepack020丢包,向cdn节点以组播方式发送一个nack报文nack1,nack1载荷中包含10个丢包序号11~20;

906.机顶盒2检测到filepach011到filepack020丢包,向cdn节点以组播方式发送一个nack报文nack1,nack1载荷中包含10个丢包序号11~20;

907.cdn节点在10ms的时间窗内收集到nack1和nack2以后,对其中的序号进行去重,取并集,得到序号并集,得到机顶盒1和机顶盒2丢包并集是11~20,然后中间服务器给hls内容源站发送nack3,nack3中消息载荷中包含10个序号11~20;

908.hls内容源站,收到nack3,取得机顶盒1和2丢包的包是11~20,则重新发送10个包的组播修复报文filepack010~020,分别是filepack011~020的修复报文;

909.机顶盒1收到filepack011~020,则开始进行数据修复,然后则转换成视频画面,继续播放file01.ts,直到播放完成。

910.机顶盒2收到filepack011~020,则开始进行数据修复,然后则转换成视频画面,继续播放file01.ts,直到播放完成。

911.等到所有的message发送并且展示完成后,机顶盒1关闭群组会话;

912.等到所有的message发送并且展示完成后,机顶盒2关闭群组会话;

913.hls内容源站关闭群组会话。

实施场景三

以norm的实时流对象说明,如何在无边界的实时流业务中实施本发明。

图13是本实施场景三的基于norm的iptv直播系统结构图,如附图13所示的iptv直播业务系统,本实施场景中:部署1个直播编码器,作为本实施例中的norm发送端;设立一个cdn节点,具备本发明中提出的nack过滤装置功能;设立2个机顶盒客户端端(1和2),具备本发明中的norm接收端功能。在用户网络边缘的区域内部署1个组播路由器,作为组播复制装置。直播编码器向所有的机顶盒推送h.264直播流,直播流以h.264方式编码,并且使用8%的fec冗余度,fec纠错数据随norm原始数据一起发送,直播编码器采用统一的norm_data封装原始数据编码和fec编码,序号统一生成。直播源在07:00分开始创建norm会话,初始视频组播报文的序号是1,机顶盒1在07:05分加入norm会话接收组播,开始观看视频,接收第一个组播报文的序号是30000。机顶盒2在07:10分加入norm会话接收组播,开始观看视频,接收到的第一个组播报文序号是60000。直播编码器循在07:15分由于网络原因导致丢包50个,丢包报文的序号从90000~90050,对应的组播报文为stream90000~90050.机顶盒1和机顶盒2同时在07:15分同时产生nack1和nack2,nack1和nack2中均包含丢包序号列表90000~90050。

图14是本实施场景三的基于norm的iptv直播业务流程图,如附图14所示的iptv直播业务系统的交互流程如下:

1101.直播编码器以组播地址norm://224.1.1.1:8080创建群组会话;

1102.07:00:00开始,直播编码器对产生组播直播流,直播流的基于norm_data格式封装,norm对象类型为norm_oject_stream,norm_data包含原始数据和fec编码数据,以每秒100个组播报文速度发送,每个组播报文生成一个norm_data序号,从0开始,序号为x的报文为streamx。

1103.07:05:00开始,机顶盒1以组播地址norm://224.1.1.1:8080加入norm群组会话,并且开启一个缓存区,存放5秒以内接收到的组播直播流报文;

1104.机顶盒1开始组播报文序号30000开始接收组播直播流,解析norm_data,获取到原始数据以及fec编码数据,然后进行fec解码,视频播放开始。

1105.07:10:00开始,机顶盒2以组播地址norm://224.1.1.1:8080加入norm群组会话,并且开启一个缓存区,存放5秒以内接收到的组播直播流报文;

1106.机顶盒2开始组播报文序号60000开始接收组播直播流,解析norm_data,获取到原始数据以及fec编码数据,然后进行fec解码,视频播放开始。

1107.07:15:00,机顶盒1检测到缓存区中序号为90000~90050的组播直播流报文未接收到,向cdn节点以组播方式发送一个nack报文nack1,nack1载荷中包含丢包序号范围90000~90050;

1108.07:15:00,机顶盒2检测到缓存区中序号为90000~90050的组播直播流报文未接收到,向cdn节点以组播方式发送一个nack报文nack2,nack2载荷中包含丢包序号范围90000~90050

1109.cdn节点在100ms的时间窗段内,收到nack1和nack2以后,对其中的序号列表进行去重,取并集,得到序号并集,得到机顶盒1和机顶盒2丢包并集是90000~900500,然后cdn节点给直播编码器发送nack3,nack3中消息载荷中包含序号范围90000~90050;

1110.直播编码器在100ms的时间窗段内,收到nack3,取得机顶盒1和2丢包的包是90000~90050,则重新发送序号为90000~90050的组播直播流报文,stream90000~stream90050;

1111.机顶盒1收到stream90000~stream90050,补齐缓冲区中对应的数据包,等到机顶盒视频播放达到stream90000时,然后重新解析norm_data,获取到原始数据以及fec编码数据,然后进行fec解码,持续进行画面展示。

1112.机顶盒2收到stream90000~stream90050,补齐缓冲区中对应的数据包,等到机顶盒视频播放达到stream90000时,然后重新解析norm_data,获取到原始数据以及fec编码数据,然后进行fec解码,持续进行画面展示。

1113.机顶盒1在遥控器切换或者关闭频道时,关闭群组会话,停止接收组播直播流;

1114.机顶盒2在遥控器切换或者关闭频道时,关闭群组会话,停止接收组播直播流;

本实施场景中,只要步骤1107、1110和1111所占用的时间之和,小于机顶盒1缓冲区的长度,即可以实现视频的连续播放,机顶盒1丢视频丢包无感知。同样,只要步骤1108、1110和1112所占用的时间之和,小于机顶盒2缓冲区的长度,即可以实现视频的连续播放,机顶盒2丢视频丢包无感知。

实施场景四

多级架构下,以文件分发为例,说明如何部署多级norm过滤装置,以支持一个norm发送端支持的接收端的数量,同时为了防止normnack报文扩散,本实施场景中区域的过滤装置上增加了组播nack转单播的方法,使得不同区域接收端的发送的组播nack报文,只在本区域内传播,避免了组播nack报文对接收端的性能冲击,进一步增加本发明的实用性。

图15是本实施场景四的多级norm过滤装置系统结构图,如图15所示,本实施场景中:部署1个消息服务器,作为本发明中的norm发送端;设立2级norm过滤装置,2个边缘过滤装置和1个中心过滤装置。区域1中包含消息客户端(1、2、3),区域2中包含息客户端(4、5、6),作为本发明中的接收端。每个区域中包含一个norm过滤装置,分别是过滤装置1和过滤装置2,分别接收对应区域的消息客户端的组播nack报文,边缘过滤装置1和2,将过滤去重之后的nack报文转换成单播,发送给中心过滤装置3,中心过滤装置通过单播方式发送nack报文给发送端。同时,每个区域还包含一个组播路由器,作为本发明中说明的组播复制装置。同时,为了说明本发明附属权利中提出的过滤装置的2种过滤模式,本实施场景中边缘过滤装置1和2,采用了时间窗聚集过滤模式,中心过滤装置3采用了缓存转发过滤模式,初始缓存中,已经发过nack的丢包报文序号列表为空。

本实施场景还是采用消息类业务作为说明,出于篇幅考虑,关于消息类norm会话创建、会话关闭的步骤请参考实施场景一,本实施场景中只列出和多级norm过滤装置,以及nack转换相关的步骤。本实施场景中norm组播消息为norm_data,传输对象类型为norm_object_data,无fec编码;nack报文为norm_nack。norm_data和norm_nack格式参考rfc5740。

图16是本实施场景四的多级norm过滤装置消息业务流程图,如附图16,多级norm过滤装置的消息业务实现流程包括:

1201,消息服务器按照顺序发送norm组播消息message1~10。

1202~1204三个步骤为区域1的客户端、过滤装置的工作过程;

1202,区域1的消息客户端1,2,3检测到序号4,5丢包,分别向过滤装置1发送组播nack报文1,包含序号丢包序号4,5;

1203,过滤装置1采用时间窗聚集过滤模式,即在10ms的时间窗内,接收客户端1,2,3发送的三个组播nack报文,按照nack报文中携带的序号进行过滤,去重,得到区域1丢包的报文序号列表4,5;

1204,过滤装置1向过滤装置3发送单播nack报文nack3,nack报文中包含序号列表4,5;

1205~1207三个步骤为区域2的客户端、过滤装置的工作过程;

1205,区域2的消息客户端4,5,6检测到序号5,6丢包,分别向过滤装置2发送组播nack报文2,包含序号丢包序号5,6;

1206,过滤装置2采用时间窗聚集过滤模式,即在10ms的时间窗内,对客户端4,5,6发送的组播nack2报文,按照nack报文中携带的丢包序号进行过滤,去重,得到区域2丢包的报文序号列表5,6;

1207,过滤装置2向过滤装置3发送单播nack报文nack4,nack报文中包含序号列表5,6;

区域1和区域2的2个工作过程为并行的,没有先后关系。这里我们假设,过滤装置1发送的nack3比过滤装置2发送的nack4先到达过滤装置3.

1208,过滤装置3采用缓存转发过滤模式,即收到过滤装置1发送的单播nack报文nack3后,从缓存中判断序号4,5的nack报文未发送过,则立即向发送端发送单播nack报文nack5,nack中包含丢包序号列表4,5,过滤装置3,将丢包序号4,5保存在缓存中;

1209,过滤装置3采用缓存转发过滤模式,收到过滤装置2发送的单播nack报文nack4后,从缓存中判断丢包序号5的nack报文未发送过,而丢包序号6的nack报文已经发送过,则向发送端发送单播nack报文nack6,nack中只包含丢包序号列表6;过滤装置3将丢包序号6保存在缓存中;

1210,发送端收到过滤装置3发送的单播nack报文nack5之后,则开始重传原始组播消息message4,5;

1211,发送端收到过滤装置3发送的单播nack报文nack6之后,则开始重传原始组播消息message6;

1212,客户端1,2,3接收到发送端重传的message4,5,则使用message4,5进行数据还原,然后展示消息。

1213,客户端4,5,6接收到发送端重传的message4,5,则丢弃message4,使用message5,还原部分数据。

1214,客户端1,2,3接收到发送端重传的message6,则丢弃message6。

1215,客户端4,5,6接收到发送端重传的message6,则使用message6还原剩余的部分数据,然后展示消息。

实施例4

本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:

s1,接收第一设备发送的丢失报文的序号,其中,所述丢失报文的序号用于指示在第二设备发送给所述第一设备的报文中丢失报文的序号;

s2,对所述丢失报文的序号进行去重操作,得到丢失报文序号集合;

s3,将所述丢失报文序号集合发送给所述第二设备。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read-onlymemory,简称为rom)、随机存取存储器(randomaccessmemory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。

本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。

可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。

可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:

s1,接收第一设备发送的丢失报文的序号,其中,所述丢失报文的序号用于指示在第二设备发送给所述第一设备的报文中丢失报文的序号;

s2,对所述丢失报文的序号进行去重操作,得到丢失报文序号集合;

s3,将所述丢失报文序号集合发送给所述第二设备。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1