CN112564856A - 报文处理方法、装置以及计算机可读存储介质 - Google Patents
报文处理方法、装置以及计算机可读存储介质 Download PDFInfo
- Publication number
- CN112564856A CN112564856A CN201911207236.1A CN201911207236A CN112564856A CN 112564856 A CN112564856 A CN 112564856A CN 201911207236 A CN201911207236 A CN 201911207236A CN 112564856 A CN112564856 A CN 112564856A
- Authority
- CN
- China
- Prior art keywords
- message
- original
- packet
- messages
- group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 11
- 238000000034 method Methods 0.000 claims abstract description 54
- 238000012545 processing Methods 0.000 claims abstract description 48
- 239000011159 matrix material Substances 0.000 claims description 39
- 238000012937 correction Methods 0.000 claims description 10
- 230000005540 biological transmission Effects 0.000 abstract description 6
- 239000002699 waste material Substances 0.000 abstract description 5
- 230000008569 process Effects 0.000 description 36
- 238000010586 diagram Methods 0.000 description 22
- 238000012163 sequencing technique Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/625—Queue scheduling characterised by scheduling criteria for service slots or service orders
- H04L47/6275—Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种报文处理方法、装置以及计算机可读存储介质,属于数据编码技术领域。本方法通过将多个原始报文中除最大的第一报文以外的其他原始报文进行了拼接处理,只有当拼接出的拼接报文大小小于最大报文的大小时,才会对拼接报文进行填充处理,而无需对每个其他原始报文都进行填充处理,因此,填充后的等长数据块中填充的数据较少,降低了FEC编码报文传输时所占用的网络带宽,避免了网络资源浪费。
Description
本申请要求于2019年09月10日提交的申请号为201910854179.X、发明名称为“等长编码块生成方法、装置和***”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及数据编码技术领域,特别涉及一种报文处理方法、装置以及计算机可读存储介质。
背景技术
随着编解码技术的发展,网络设备在传输数据流过程中,可以先对数据流中的多个原始报文进行前向纠错(forward error correction,FEC)编码,得到冗余报文,并将原始报文和冗余报文发送至解码端。
目前,网络设备对多个原始报文进行编码的过程可以是:网络设备在多个原始报文中除最大报文以外的其他原始报文中填充无效数据,使得填充后的报文大小均为多个原始报文中最大报文的大小,网络设备基于填充后的报文以及最大报文进行FEC编码,得到冗余报文。
在上述编码过程中,由于网络设备会在每个比最大报文小的原始报文内填充无效数据,从而得到填充后的原始报文中填充了大量的无效数据,填充后的原始报文的数据量较大,当网络设备将填充后的原始报文发送至解码端的过程中,导致填充后的原始报文占用大量的网络带宽,造成网络资源浪费。
发明内容
本申请提供了一种报文处理方法、装置以及计算机可读存储介质,能够降低报文发送过程中所占用的网络带宽,避免网络资源浪费。该技术方案如下:
第一方面,提供了一种报文处理方法,该方法包括:
获取多个原始报文;
根据所述多个原始报文中的第一报文的大小,将所述多个原始报文中除所述第一报文以外的其他原始报文进行拼接处理,得到至少一个拼接报文,所述第一报文为所述多个原始报文中最大的报文;
当所述至少一个拼接报文中任一拼接报文的大小小于所述第一报文的大小时,对所述至少一个拼接报文进行填充处理,得到等长数据块,所述等长数据块中每个数据块的大小为所述第一报文的大小;
将所述第一报文和所述等长数据块做前向纠错FEC编码处理,得到至少一个冗余报文。
本方法通过将多个原始报文中除最大的第一报文以外的其他原始报文进行了拼接处理,只有当拼接出的拼接报文大小小于最大报文的大小时,才会对拼接报文进行填充处理,而无需对每个其他原始报文都进行填充处理,因此,填充后的等长数据块中填充的数据较少,降低了FEC编码报文传输时所占用的网络带宽,避免了网络资源浪费。
在一种可能的实现方式中,所述根据所述多个原始报文中的第一报文的大小,将所述多个原始报文中除所述第一报文以外的其他原始报文进行拼接处理,得到至少一个拼接报文包括:
根据所述多个原始报文中的第一报文的大小,对所述多个原始报文中除所述第一报文以外的其他原始报文进行分组,得到至少一个报文组,每个报文组包括至少一个原始报文,每个报文组中所有原始报文的大小之和小于或等于所述第一报文的大小;
对每个报文组进行拼接处理,得到所述至少一个拼接报文,每个拼接报文对应一个报文组。
在一种可能的实现方式中,所述根据所述多个原始报文中的第一报文的大小,将所述多个原始报文中除所述第一报文以外的报文进行拼接处理,得到至少一个拼接报文包括:
处理器根据所述多个原始报文中的第一报文的大小,对所述多个原始报文中除所述第一报文以外的其他原始报文进行分组,得到至少一个报文组,并根据所述至少一个报文组,生成编码任务,所述编码任务包括每个报文组的地址信息;
目标硬件引擎根据所述编码任务,对每个报文组进行拼接处理,得到所述至少一个拼接报文。
在一种可能的实现方式中,所述根据所述多个原始报文中的第一报文的大小,对所述多个原始报文中除所述第一报文以外的其他原始报文进行分组,得到至少一个报文组包括:
根据所述多个原始报文中各个原始报文的大小,对所述多个原始报文进行排序,得到每个原始报文的次序i,i为大于等于零的整数,其中,次序为0的原始报文为所述第一报文;
当i=1时,将次序为1的原始报文划分至第1个目标报文组,所述第1个目标报文组的次序为1;
当i>1时,若第j个目标报文组的大小和次序为i的原始报文的大小之和小于或等于目标大小,则将第j个目标报文组和所述次序为i的原始报文合并为第i个目标报文组,所述目标大小为所述第一报文的大小,所述第j个目标报文组为至少一个目标报文组中次序最小的报文组,且所述第j个目标报文组的次序为j,所述至少一个目标报文组中每个报文组的大小和次序为i的原始报文的大小之和均小于或等于所述目标大小,0<j<i;
当i>1时,若不存在所述第j个目标报文组,则增加一个所述第i个目标报文组,将所述次序为i的原始报文划分至所述第i个目标报文组;
当将所述多个原始报文中最后一个原始报文分组完成后,将当前剩余的每个目标报文组作为所述至少一个报文组中的一个报文组。
在一种可能的实现方式中,所述对每个报文组进行拼接处理,得到所述至少一个拼接报文包括:
当所述至少一个报文组的个数与所述多个原始报文中第一报文的个数之和达到第一目标个数,且所述至少一个报文组中不能再添加所述多个原始报文以外的其他原始报文时,对每个报文组进行拼接处理,所述第一目标个数为进行一次FEC编码时待编码矩阵的维数;或,
当所述多个原始报文的个数等于第二目标个数,且将所述第二目标个数的原始报文划分为至少一个报文组时,对每个报文组进行拼接处理,所述第二目标个数为预设的用于进行一次FEC编码的原始报文的个数。
在一种可能的实现方式中,所述方法还包括:
当所述至少一个拼接报文中每个拼接报文的大小均等于所述第一报文的大小时,将所述第一报文和所述至少一个拼接报文做FEC编码处理,得到至少一个冗余报文。
第二方面,提供了一种报文处理装置,包括多个功能模块,所述多个功能模块相互作用,实现上述第一方面及其各实施方式中的方法。所述多个功能模块可以基于软件、硬件,或软件和硬件的结合实现,且所述多个功能模块可以基于具体实现进行任意组合或分割。
第三方面,提供一种计算机可读存储介质,该存储介质中存储有指令,该指令由处理器加载并执行以实现如上述报文处理方法。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种报文传输***的示意图;
图2是本申请实施例提供的一种报文处理方法的流程图;
图3是本申请实施例提供的一种网络设备内实现报文处理方法的流程图;
图4是本申请实施例提供的一种报文组确定过程的示意图;
图5是本申请实施例提供的一种报文分组的流程图;
图6是本申请实施例提供的一种原始报文分组流程的示意图;
图7是本申请实施例提供的一种编码任务的示意图;
图8是本申请实施例提供的一种FEC报文的示意图;
图9是本申请实施例提供的一种网络设备内部交互的流程示意图;
图10是本申请实施例提供的一种编解码的流程图;
图11是本申请实施例提供的一种报文处理装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
图1是本申请实施例提供的一种报文传输***的示意图,参见图2,第一终端101、第一网络设备102、第二网络设备103以及第二终端104,其中,第一终端101用于生成数据流,并将数据流发送至第一网络设备102。第一网络设备102将数据流中的多个原始报文拼接为一个等长数据块,等长数据块中的每个数据块的大小相等,对等长数据块做FEC编码处理,得到多个原始报文的冗余报文,并为等长数据块中每个数据块以及每个冗余报文添加相同的FEC头,封装成多个FEC报文,然后向第二网络设备103发送由FEC报文组成的编码流。第二网络设备303对编码流中丢失的原始FEC报文进行解码,恢复丢失的原始FEC报文,其中,原始FEC报文为任一FEC报文。第二网络设备103基于恢复的原始FEC报文和未丢失的FEC报文,恢复数据流,并将数据流发送至第二终端104。第一终端101和第二终端104可以是手机、笔记本电脑等,第一网络设备102和第二网络设备103可以是路由器和交换机等设备。数据流可以是视频流、音频流,也可以是文本数据组成的文本流,本申请实施例对数据流类型不做具体限定。
图1中是以视频流为例的示意图,当第一用户和第二用户在进行视频会话时,第一用户可以使用第一终端302上的摄像头录制第一用户的视频,并向第一网络设备102发送用于组成该视频的原始报文,形成视频流(数据流),由第一网络设备102对视频流中的原始报文进行FEC编码,得到冗余报文,在每个原始报文以及每个冗余报文上添加FEC报文头,得到对应的FEC报文,第一网络设备102可以通过广域网(wide area network,WAN)向第二网络设备103发送由FEC报文组成的编码流;第二网络设备103在获取到编码流中的FEC报文后,根据FEC报文头判断哪些原始报文丢失,并根据收到的FEC报文(包括原始报文以及冗余报文),恢复丢失的原始报文,第二网络设备103将恢复的原始报文和未丢失的原始报文组成数据流,并向局域网A和B中的第二终端104分别发送数据流,当多个第二终端104接收到视频流以后,进行视频播放,从而使得第二用户可以在第二终端304上观看到第一用户的视频,从而实现第一用户与第二用户的跨局域网的视频会话。在一种可能的实现中,第一终端101、第一网络设备102、第二网络设备103以及第二终端104,可以分布在同一局域网,也可以分布在不同的局域网,本申请实施例对第一终端101、第一网络设备102、第二网络设备103以及第二终端104的分布方式不做具体限定。
在一些可能的实现中,第一网络设备可以直接通过处理器对数据流中的原始报文进行拼接处理,得到等长数据块,处理器再对等长数据块进行FEC编码。在一些可能的实现中,第一网络设备中的处理器可以根据各个原始报文的大小,确定出拼接方案,并将拼接方案发送至目标硬件引擎,由目标硬件引擎根据处理器提供的拼接方案,对数据流中的原始报文进行拼接处理,得到等长数据块,并对等长数据块进行FEC编码。其中,处理器可以是网络处理器(network processer,NP),中央处理器(central processing units,CPU),或者NP与CPU的结合。所述处理器还可以包括硬件芯片,上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmablelogic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complexprogrammable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gatearray,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
可选的,本申请实施例还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由网络设备中的处理器执行以完成下述实施例中的所提供的方法。例如,该计算机可读存储介质可以是只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、只读光盘(compact disc read-only memory,CD-ROM)、磁带、软盘和光数据存储设备等。
为了进一步说明第一网络设备对数据流中的原始报文进行编码的过程,参见图2所示的本申请实施例提供的一种报文处理方法的流程图,该方法流程具体可以包括下述步骤201-208。在一种可能的实现中,本申请在对图2所示的过程进行叙述时,先对图2的整个流程所包括的步骤进行描述,再对各个步骤进行细化描述。
201、第一网络设备获取多个原始报文。
该第一网络设备可以获取多个数据流。该多个原始报文为该多个数据流中的第一数据流,内的报文,且为第一网络设备进行一次FEC编码所使用到的报文。该第一数据流为多个数据流中任一个数据流,该第一数据流可以包括多个原始报文,每个原始报文用于携带数据,原始报文携带的数据可以是视频数据、音频数据或文本数据等,本申请实施例对第一数据流内的数据的类型不做具体限定。
202、处理器根据多个原始报文中的第一报文的大小,对多个原始报文中除第一报文以外的其他原始报文进行分组,得到至少一个报文组,每个报文组包括至少一个原始报文,每个报文组中所有原始报文的大小之和小于或等于该第一报文的大小。
203、处理器根据该至少一个报文组,生成编码任务,该编码任务包括每个报文组的地址信息。
204、处理器向目标硬件引擎发送该编码任务。
在一些可能的实现中,处理器还可以将编码任务下发至内存,由目标硬件引擎从内存中读取该编码任务。在一些可能的实现中,处理器还可以根据数据流的优先级向内存或目标硬件引擎下发编码任务,处理器可以先下发优先级高的数据流的编码任务,再下发优先级低的数据流的编码任务,本申请实施例对处理器下发编码任务的方式不做具体限定。
205、目标硬件引擎根据该编码任务,对每个报文组进行拼接处理,得到至少一个拼接报文。
206、当该至少一个拼接报文中任一拼接报文的大小小于第一报文的大小时,目标硬件引擎对该至少一个拼接报文进行填充处理,得到等长数据块,该等长数据块中每个数据块的大小为该第一报文的大小。
该目标硬件引擎可以在该任一拼接报文中填充目标数据,得到第一报文大小的数据块,该目标数据可以是0或1等数据,当目标硬件引擎对至少一个拼接报文填充完成后,得到一个等长数据块,且等长数据块中每个数据块对应一个拼接报文,且每个数据块的大小均为第一报文的大小。
在一种可能的实现中,当第一网络设备通过处理器对多个原始报文进行编码时,本步骤206可以由处理器来执行。
207、目标硬件引擎将该第一报文和该等长数据块做前向纠错FEC编码处理,得到至少一个冗余报文。
208、当该至少一个拼接报文中每个拼接报文的大小均等于该第一报文的大小时,目标硬件引擎将该第一报文和该至少一个拼接报文做FEC编码处理,得到至少一个冗余报文。
下面开始对图2中的步骤进行细化描述。
在步骤201中,第一网络设备可以对该数据流中的多个原始报文进行FEC编码,当一次FEC编码完成后,再对该数据流中另外多个原始报文进行FEC编码,在一种可能的实现方式中,步骤201可以通过如下步骤2011-2012所示的过程来实现。
步骤2011、第一网络设备将接收到的该数据流中的原始报文存入第一网络设备的内存中。
例如,图3所示的本发明实施例提供的一种网络设备内实现报文处理方法的流程图,第一网络设备的网络接口接收每到该数据流中的一个原始报文后,将该原始报文发送至包解析引擎(packet parse engine,PPE),每当PPE接收到该原始报文后,将该原始报文存储在内存,并记录下该原始报文的存储地址,从而使得PPE可以对网络接口接收的该数据流中的原始报文进行收集。其中,网络接口可以是千兆(gigabit ethernet,GE)网络端口或万兆(ten-gigabit ethernet,GXE)网络端口。
步骤2012,若内存中该数据流的未编码的原始报文的报文量等于或大于第二目标个数,处理器从该数据流的未编码的原始报文中获取第二目标个数的原始报文,该第二目标个数为预设的用于进行一次FEC编码的原始报文的个数。
由于第一网络设备每对第二目标个数的原始报文进行一次FEC编码后,就会对下一组第二目标个数的未编码的原始报文进行编码,因此,对于该数据流,当第一网络设备的内存中每新缓存了第二目标个数的原始报文时,就可以将新缓存的第二目标个数的原始报文作为下一次待编码的多个原始报文。
该处理器包括NP和CPU中的至少一个,仍以图3为例进行说明,当PPE每收集到第一原始报文后,将第一原始报文存储在内存,并将第一原始报文的存储完成消息发送至NP,第一原始报文的存储完成消息可以携带该第一原始报文所属的第一数据流的流标识以及该第一原始报文的存储地址,流标识可以是该第一数据流的名称或编号,用于指示该第一原始报文属于第一数据流。第一原始报文为第一数据流中任一原始报文。
在一种可能的实现方式中,第一网络设备根据业务需求,对每个接收的数据流设置对应的优先级,第一网络设备可以优先处理优先级高的数据流,相应地,存储完成消息还可以携带数据流的优先级,以便第一网络设备内的各个模块可以根据优先级处理数据流中的原始报文。可以在该第一网络设备上配置优先级信息表,该优先级信息表中包括从高到低的多个优先级,每个优先级对应一种业务类型,当第一网络设备接收到一个数据流时,可以根据该数据流中的原始报文携带的数据,确定该数据流的业务类型,并从该优先级信息表中确定该数据流的业务类型所对应的优先级,从而第一网络设备可以为该数据流设置对应的优先级。
仍以图3为例进行说明,当NP接收到该第一原始报文的存储完成消息后,根据该存储完成消息携带的该第一原始报文的存储地址,对内存中的该第一原始报文进行解析,获取该第一原始报文是否需要编码,若该第一原始报文需要编码,则该NP生成编码通知消息,该编码通知消息可以携带该第一原始报文的存储地址、该第一原始报文的大小、该第一数据流的流标识以及优先级中的至少一个,并将该编码通知消息发送至协议栈;用户数据报协议(user datagram protocol,UDP)代理可以从协议栈中收集编码通知消息,每当UPD代理新收集的编码通知消息的数目为第二目标个数时,则新收集的第二目标个数的编码通知消息可以指示内存中新存储了第二目标个数的待编码的原始报文,因此,UDP代理可以将该第二目标个数的编码通知消息发送给FEC软件模块(该过程也即是FEC软件模块从NP获取通知消息的过程),由FEC软件模块确定第二目标个数的原始报文的拼接方案。
在一些可能的实现中,第一网络设备不限定每一次进行FEC编码的原始报文的个数,而是限定每一次进行FEC编码时待编码的原始报文的个数,该待编码的原始报文的个数为在进行FEC编码时待编码矩阵的维数,也即是第一网络设备不预设第二目标个数,而是预设一个第一目标个数,对于这种情况,UPD代理每接收到一个编码通知消息,就会将该编码通知消息发送给FEC软件模块,从而使得FEC软件模块可以得到多个编码通知消息,当FEC软件模块可以从多个编码通知消息获取到多个原始报文的大小,该FEC软件模块可以从多个原始报文中确定最大的第一报文,并根据最大报文的大小(记为目标大小)以及多个原始报文中除第一报文以外的报文的大小,确定出第三目标个数的拼接方案(也即是图3中的FEC软件模块确定原始报文的拼接方案的过程),每个拼接方案为将至少两个原始报文拼接为一个拼接报文拼接方案,每个拼接报文的大小小于或等于目标大小,第三目标个数与多个原始报文中第一报文的个数之和等于第一目标个数,具体拼接方案的确定过程参见步骤202;后续FEC软件模块向目标硬件引擎发送拼接方案,由目标硬件引擎根据拼接方案,对原始报文进行拼接。
对于步骤202进行如下描述:
在步骤202中,该第一报文为该多个原始报文中最大的报文,每个报文组可以视为一个拼接方案,报文组的确定过程也即是拼接方案确定过程。为了使得每个报文组的大小小于或等于第一报文的大小,其中每个报文组的大小也即是每个报文组中所有原始报文的大小。处理器可以先根据多个原始报文的大小,对多个原始报文进行排序,然后在根据多个原始报文的排序以及第一报文的大小,确定至少一个报文组。在一种可能的实现方式中,本步骤202可以由下述2021-2025所示的过程来实现。在一种可能的实现中,本步骤可以由处理器中FEC软件模块来执行。
步骤2021、处理器根据多个原始报文中各个原始报文的大小,对多个原始报文进行排序,得到每个原始报文的次序i,i为大于等于零的整数,其中,次序为0的原始报文为该第一报文。
处理器在对多个原始报文排序时,越大的原始报文的次序越小,越小的原始报文次序越大,由于第一报文为多个原始报文中最大的报文,第一报文的次序最小且为0,多个原始报文中最小的原始报文的次序最大。例如图4所示的本申请实施例提供的一种报文组确定过程的示意图,图4包括左图、中图和右图,其中左图包括一个原始报文序列,该原始报文序列有5个原始报文分别为报文P1-P5,报文P1为第一报文,处理器根据报文P1-P5的大小,对报文P1-P5进行排序,得到中图所示的5个报文的排序:报文P1、P4、P3、P5以及P2,次序分别为0-4。
步骤2022、当i=1时,处理器将次序为1的原始报文划分至第1个目标报文组,该第1个目标报文组的次序为1。
由于第一报文的大小为目标大小,则处理器无需对第一报文进行分组,或者可以直接将每个第一报文视为一个报文组。处理器可以根据多个原始报文的由低至高的顺序,依次对除第一报文以外的其他原始报文进行分组。仍以图4中的中图为例,报文P4的次序为1,处理器可以直接将报文P4划分至第1个目标报文组。
步骤2023、当i>1时,若第j个目标报文组的大小和次序为i的原始报文的大小之和小于或等于目标大小,则处理器将第j个目标报文组和所述次序为i的原始报文合并为第i个目标报文组,该目标大小为该第一报文的大小,该第j个目标报文组为至少一个目标报文组中次序最小的报文组,且该第j个目标报文组的次序为j,该至少一个目标报文组中任一报文组的大小和次序为i的原始报文的大小之和小于或等于该目标大小,0<j<i。
目标报文组的大小,也即是目标报文组内各个报文的大小之和,第j个目标报文组是次序为j的原始报文所在的报文组,第i个目标报文组是次序为i的原始报文所在的报文组,也即是对j个原始报文分组完成后,得到第j个目标报文组,对i个原始报文分组完成后,得到第i个目标报文组。由于处理器为多个原始报文进行了分组,因此,在分组过程中可能存在多个目标报文组,为了便于描述,为每个目标报文组分配一个次序,第j个目标报文组的次序为j,第i个目标报文组的次序为i,也即是第几个目标报文组的次序为几。
仍以图4中的中图为例,当i=2时,处理器对次序为2的报文P3进行分组,此时,第1个目标报文组仅包括报文P4,则第1个目标报文组的大小与次序为2的报文P3的大小之和,也即是报文P4和P3的大小之和,若报文P4和P3的大小之和小于或等于第一报文P1的大小(也即是目标大小),则处理器将报文P4和P3合并为第2个目标报文组,由于第1个目标报文组被合并在第2个目标报文组,则当前仅剩余第2个目标报文组。
在一些可能的实现中,当前可能剩余多个目标报文组,若多个目标报文组中的至少一个目标报文组内每个报文组的大小与次序为i的原始报文的大小之和均小于或等于目标大小,处理器将次序为i的原始报文与第j个目标报文组合并为第i个目标报文组,其中,第j个目标报文组为至少一个目标报文组中次序最小的报文组。
步骤2024、当i>1时,若不存在第j个目标报文组,处理器则增加一个第i个目标报文组,将该次序为i的原始报文划分至该第i个目标报文组。
当前剩余的多个目标报文组中的每个报文组的大小与次序为i的原始报文的大小之和均大于目标大小,则说明该多个目标报文组中不存在第j个目标报文组,则处理器可以另外新增一个目标报文组,作为第i个目标报文组,并将次序为i的原始报文划分至该第i个目标报文组。
仍以图4中的中图为例,当i=3时,当前剩余的目标报文组为由报文P4和P3组成的第2个目标报文组,报文P4、P3以及次序为3的报文P5的大小小于或等于目标大小,则说明第2个目标报文组也即是至少一个目标报文组中的第j个目标报文组,可以直接将报文P4、P3以及p5合并为第3个目标报文组。若报文P4、P3以及次序为3的报文P5的大小大于目标大小,说明当前剩余的目标报文组中不存在第j个目标报文组,则处理器新增第3个目标报文组,并将报文P5划分组新增的第3个目标报文组,此时,就会剩余第2个目标报文组和第3个目标报文组。
步骤2025、当将多个原始报文中最后一个原始报文分组完成后,处理器将当前剩余的每个目标报文组作为该至少一个报文组中的一个报文组。
当处理器将最后一个原始报文分组完成后,当前剩余的目标报文组也即是最终确定的报文组,因此,处理器可以将当前剩余的每个目标报文组作为该至少一个报文组中的一个报文组。
以图4中的右图为例,处理器将报文P4、P3以及P5合并为第3个目标报文组,当i=4时,次序为4的报文P2为报文P1-5中的最后一个报文,报文P4、P3、P5以及P2的大小之和小于目标大小,则处理器将第3个目标报文组和报文P2合并为第4个目标报文组,当前仅剩下第4个目标报文组,因此,第4个目标报文组为对报文P2-P5的最终分组,第4个目标报文组包括报文P2-P5,第4个目标报文组也即是一个拼接方案,由于每个拼接方案用于指示拼接一个第一报文大小的拼接报文,后续若拼接报文的大小小于第一报文的大小时,可以在拼接报文上填充数据,使得拼填充后的报文的大小等于第一报文的大小。
当处理器没有将原始报文的个数设置成第二目标个数,而设置了第一目标个数时,处理器可以每间隔预设时间,对第一网络设备在该预设时间内缓存的原始报文进行分组,分组过程可以是步骤21-25所示的过程,此时的目标大小可以是第一网络设备在该预设时间内缓存的原始报文中最大报文的大小,也可以是预设的报文大小,该预设的报文大小可以是该多个原始报文所属第一数据流中的最大报文的报文;当第一网络设备在该预设时间内缓存的原始报文正好被分入至第三目标个数的报文组内,且第三目标个数的报文组均不能容纳其他报文时,则而本次分组结束;当第一网络设备在该预设时间内缓存的原始报文正好被分入至少一个的报文组内后,若该至少一个报文组的个数等于第三目标个数,但是该至少一个报文组内还能容纳其他报文,则该处理器可以持续收集新原始报文,直至该至少一个报文组内不能容纳新原始报文,则本次分组结束;若至少一个报文组的个数小于第三目标个数,则该处理器持续收集新原始报文,将收集到的新原始报文进行分组,直至得到第三目标个数的报文组,且第三目标个数的报文组均不能容纳新原始报文时,则本次分组结束。
为了便于理解步骤2021-2025所示的过程,参见图5所示的本申请实施例提供的一种报文分组的流程图,该流程包括步骤501-509。
步骤501、处理器设定进行一次排序的原始报文的个数为第二目标个数M,其中,M为正整数。
步骤502、网络接口累计接收M个原始报文。
步骤503、处理器根据M个原始报文的大小,对M个原始报文降序排列,得到包括M个原始报文的原始报文序列,在原始报文序列中,M个原始报文中越大的原始报文排序越小,越小的原始报文排序越大
步骤504、处理器根据M个原始报文的最大报文的大小,构建虚拟报文,并将该虚拟报***虚拟报文序列,该虚拟报文的大小为M个原始报文的最大报文的大小,该虚拟报文序列用于放置虚拟报文。
每个虚拟报文可以看做一个虚拟存储空间,该虚拟存储空间的虚拟存储大小为M个原始报文的最大报文的大小,也即是一个拟报文可以视为一个报文组。
步骤505、处理器遍历原始报文序列中的次序为k的报文Pk,其中,0≤k<M。
步骤506、处理器查询虚拟报文序列中是否存在可以容纳该报文Pk的虚拟报文,若存在,则处理器将报文Pk存储到虚拟报文序列中第一个可以容纳报文Pk的虚拟报文中。
步骤507、若不存在,则处理器新建一个虚拟报文,并将新建的虚拟报文***虚拟报文序列,并将报文Pk放置在新建的虚拟报文中。
步骤508、当将报文Pk放置在虚拟报文后,处理器查询原始报文中是否还存在未遍历的原始报文,若存在则跳转执行步骤505,否则执行步骤509。
步骤509、当原始报文序列中的所有原始报文均遍历完成后,则处理器将虚拟报文序列中的每个虚拟报文视为一个最终的报文组。
在一些可能的实现中,处理器在对多个原始报文进行分组时,可能会将一个原始报文中的部分数据分至一个报文组,将该原始报文中的其他数据分至其他报文组。在一种可能的实现方式中,在一次分组过程中,若处理器将接收的第一个原始报文划分至第一个报文组中,第一个报文组的大小为目标大小,此时该目标大小可以是任一预设的大小,若一个原始报文的大小小于或等于目标大小,处理器则将该第一个原始报文划分子第一个报文组,若第一个原始报文的大小大于目标大小,处理器则将第一原始报文虚拟拆分成至少两个数据块,该至少两个数据块中最后一个数据块的大小小于或等于目标大小,该至少两个数据块中除最后一个数据块以外的其他数据块的大小均等于目标大小,处理器将每个数据块分别划分至一个报文组中;当处理器后续每接收到一个新原始报文时,若新原始报文的大小和当前所有报文组中最后一个报文组的大小之和小于或等于目标大小时,将该新原始报文划分至该最后一个报文组;若新原始报文的大小和当前所有报文组中最后一个报文组的大小之和大于目标大小时,将该新原始报文虚拟划分为一个第一目标数据块和至少一个第二目标数据块,其中,第一目标数据块的大小为最后一个目标大小与该最后一个报文当前大小的差值,至少一个第二目标数据块中最后一个数据块的大小小于或等于目标大小,该至少一个第二目标数据块中除最后一个数据块以外的数据块的大小均等于目标大小,处理器将第一目标数据块划分至最后一个报文组,并新增至少一个报文组,将每个第二目标数据块划分别划分至一个新增的报文组内;当处理器将第二目标个数的原始报文划分完成后,或者当确定出第一目标个数的报文组,且第一目标个数的报文组不能再容纳其他原始报文后,本次分组结束。例如,图6所示的本申请实施例提供的一种原始报文分组流程的示意图,本次对原报文1-8进行分组,每个报文组的大小固定为目标大小,处理器将原报文1-2以及原报文4的前部分报文划分至报文组1,将原报文4的后部分报文、原本报文5以及原报文6的前部分报文划分至报文组2,将原报文6的后部分报文以及原报文7-8划分至报文组2,报文组3的大小小于目标大小,后续可以在报文3中的报文拼接出的拼接报文上填充数据,以便填充后的报文的大小为目标大小。
在一种可能的实现中,当第一网络设备通过处理器直接对多个原始报文进行FEC编码时,则处理器直接执行下述步骤205,也即是对每个报文组进行拼接处理,得到至少一个拼接报文,每个拼接报文对应一个报文组。而不与目标硬件引擎进行交互,若第一网络设备通过目标硬件引擎对多个原始报文进行FEC编码时,则处理器执行下述步骤203。
对于步骤203进行如下描述:
在步骤203中,该编码任务用于指示将每个报文组内的原始报文拼接为一个拼接报文,并对拼接出的多个拼接报文进行编码,每个报文组的地址信息包括一个报文组中所有原始报文的存储地址,在一些可能的实现中,每个报文组的地址信息还包括拼接标识,例如,图7所示的本申请实施例提供的一种编码任务的示意图,图7中的编码任务包括多个地址信息,每个地址信息包括一个拼接标识和各个原始报文的存储地址。该拼接标识可以用于指示将一个报文组内的所有原始报文拼接为一个拼接报文,该拼接标识还可以用于指示一个报文组的地址信息内的所有存储地址为一组,本申请实施例对该拼接标识的表示方式不做具体限定。
每个报文组的地址信息可以以一个集合的形式来表示,例如,报文组2包括原始报文3和4,若集合1包括原始报文3和4的存储地址以及拼接标识,则该集合1为该报文组2的地址信息。在一些可能的实现中,每个报文组的地址信息可以以一个字符串的形式来表示,仍以报文组2为例,字符串1为“原始报文3的存储地址;原始报文4的存储地址;拼接标识”,则该字符串1也即是报文组2的地址信息。在一些可能的实现中,每个报文组的地址信息可以以一个表格的形式来表示,仍以报文组2为例,参见下述表1,表1中的原始报文3和4的存储地址均对应同一个拼接标识,则表1也即是报文组2的地址信息。
表1
该编码任务还可以携带第一报文的存储地址,以便后续目标硬件引擎可以根据第一报文的存储地址获取第一报文。该编码任务还可以携带编码参数、数据流的标识、第一数据流的优先级标识中的至少一个,该第一数据流为多个原始报文所在的数据流,该编码参数可以包括待编码报文量(也即是第一目标个数)、冗余报文量以及目标大小,其中,待编码报文量为多个原始报文中第一报文的个数与至少一个报文组的个数之和,以便后续目标硬件引擎可以根据编码参数,对多个原始报文进行编码。
对于步骤205进行如下描述:
在步骤205中,目标硬件引擎可以根据编码任务中的地址信息,从内存中获取至少一个报文组,每个报文组中的原始报文为一个地址信息内的一个存储地址中的报文;目标硬件引擎将每个报文组内的原始报文拼接为一个拼接报文,从而目标硬件引擎可以得到至少一个拼接报文。
当第一网络设备通过处理器对多个原始报文进行编码时,若至少一个报文组的个数与多个原始报文中第一报文的个数之和达到第一目标个数,且该至少一个报文组中的最后一个报文组不能再添加该多个原始报文以外的其他原始报文时,处理器对每个报文组进行拼接处理,第一目标个数为进行一次FEC编码时待编码矩阵的维数。
或者是,当多个原始报文的个数等于第二目标个数,且将第二目标个数的原始报文划分为至少一个报文组时,处理器对每个报文组进行拼接处理,该第二目标个数为预设的用于进行一次FEC编码的原始报文的个数。其中,处理器对每个报文组进行拼接处理于目标硬件引擎对每个报文组进行拼接处理的过程同理,在此,本申请实施例对处理器对每个报文组进行拼接处理的过程不做赘述。
对于步骤207进行如下描述:
在步骤207中,该目标硬件引擎可以从该编码任务中获取到编码参数,设该编码参数中的待编码报文量为Q、冗余报文量为R以及目标大小为L,其中,Q和R均为正整数,L为大于0的数值,冗余报文量R为对Q个待编码报文进行FEC编码后所得的冗余报文的个数,Q个待编码的原始报文包括多个原始报文中的第一报文以及等长数据块。目标硬件引擎可以根据编码任务携带的第一报文的存储地址,从内存中获取第一报文,将获取的第一报文以及步骤206中获得的等长数据块作为待编码报文。目标硬件引擎可以先将Q个待编码报文组成Q*L待编码矩阵,待编码矩阵的每一行为一个等长数据块或一个第一报文;目标硬件引擎根据待编码报文量Q以及冗余报文量R,构建一个(Q+R)*Q的生成矩阵,生成矩阵由第一子矩阵和第二子矩阵组成,其中,第一子矩阵为Q*Q的单位矩阵,第二子矩阵为R*Q的柯西矩阵。
xi-1以yi-1及和均为迦罗华域(galois field,GF)(2w)中的元素,其中,i和j均为大于或等于0的整数,w可以是8;目标硬件引擎将该生成矩阵和待编码矩阵进行乘法计算,得到(Q+R)*L的编码矩阵,其中,编码矩阵包括待编码矩阵以及R*L的校验矩阵,其中,校验矩阵的每一行为一个冗余报文。
在一种可能的实现中,步骤205-207所示的过程也即是目标硬件引擎根据编码任务,对每个报文组进行拼接处理的过程。当第一网络设备通过处理器对多个原始报文进行编码时,本步骤207可以由处理器来执行。
对于步骤208进行如下描述:
在步骤208中,当该至少一个拼接报文中每个拼接报文的大小均等于该第一报文的大小时,该至少一个报文可以视为一个等长数据块,因此,目标硬件引擎可以直接执行本步骤208。在一种可能的实现方式中,当第一网络设备通过处理器对多个原始报文进行编码时,本步骤207可以由处理器来执行。
当该目标硬件引擎获取到该至少一个冗余报文后,将至少一个冗余报文存储至内存,并向处理器发送编码完成消息,该编码完成消息可以携带该至少一个冗余报文的存储地址,以便处理器可以从内存中获取到该至少一个冗余报文。或者是,该目标引擎直接将该至少一个冗余报文发送给处理器,本申请实施对处理器获取至少一个冗余报文的方式不做具体限定。
处理器可以从内存中获取每个报文组内的原始报文,对每个报文组进行拼接处理,得到至少一个拼接报文,当至少一个拼接报文中任一拼接报文的大小小于第一报文的大小时,对至少一个拼接报文进行填充处理,得到等长数据块,并从内存中获取多个原始报文中的第一报文。当然,该目标硬件引擎还可以直接将该等长数据块以及第一报文发送给处理器,本申请实施例对处理器获取等长数据块与第一报文的方式不做具体限定。
当处理器获取到等长数据块、第一报文以及至少一个冗余报文后,在等长数据块及第一报文中的每个数据块上添加FEC报文头,得到多个原始FEC报文,并在每个冗余报文中均添加FEC报文头,得到至少一个冗余FEC报文,FEC报文头携带编码参数。例如,图8所示的本申请实施例提供的一种FEC报文的示意图中的FEC报文,FEC报文包括FEC报文和负载报文,当该负载报文为第一报文或等长数据块中的一个数据块时,该FEC报文为原始FEC报文,当该FEC报文的负载报文为冗余报文时,该FEC报文为冗余FEC报文。
FEC报文头用于指示该多个原始报文的编码情况。FEC报文头携带多个原始报文的编码参数,例如图8中的FEC报文头携带待编码报文量、冗余报文量以及目标大小。FEC报文头还可以携带该多个原始个报文的目标标识,该目标标识用于指示对该多个原始报文所属数据流进行编码的次数。该FEC报文头还可以携带该多个原始报文在数据流中的序列号(也即是拼接前原始报文的原始序号)、原始报文的大小、每个第一报文以及等长数据块中的每个数据块在待编码矩阵中的序列号、每个冗余报文在编码矩阵中的序列号以及与每个数据块对应的目标拼接标识,该目标拼接标识用于指示数据块为拼接出的数据块。
当处理器获取到原始FEC报文和冗余FEC报文后,可以将原始FEC报文和冗余FEC报文发送至第二网络设备。当然,在一些可能的实现中,目标硬件引擎可以直接将第一报文和等长数据块封装为原始FEC报文,将冗余报文封装为冗余FEC报文,并向第二网络设备发送原始FEC报文和冗余FEC报文。
参见图9所示的本申请实施例提供一种网络设备内部交互的流程示意图,该流程具体包括步骤901-907。图9示意了第一网络设备对多个原始报文进行FEC编码时,内部各个模块的交换情况。
步骤901、网络接口每从网络中接收到1个原始报文,将该原始报文发送给PPE。
步骤902、PPE将接收到的该原始报文写入内存。
步骤903、PPE将该原始报文的存储完成消息发送至NP,以通知NP处理内存中的该原始报文。
步骤904、NP接收到该存储完成消息后,对该原始报文进行解析,以确定该原始报文是否需要编码,若需要编码,则NP向CPU发送该原始报文的编码通知消息。
CPU可以通过协议栈以及UDP代理将编码完成消息发送至FEC软件模块,具体的过程在上述步骤2012中有相关描述,在此不做赘述。
步骤905、当CPU中的FEC软件模块收集到第二目标个数的编码通知消息后,相当于FEC软件模块收集齐了需要编码的第二目标个数的原始报文,该FEC软件模块基于第二目标个数的原始报文中,向目标硬件引擎发送对该第二目标个数的原始报文的编码任务。
该编码任务相当于一种通知消息,通知目标硬件处理器根据编码任务进行FEC编码。
步骤906、目标硬件引擎根据编码任务,从内存中获取第二目标个数的原始报文,并对第二目标个数的原始报文进行FEC编码,得到至少一个冗余报文。
本步骤906所示的过程与步骤205-207所示的过程同理,在此,本申请实施例对本步骤906所示的过程不做赘述。
步骤907、目标硬件引擎将至少一个冗余报文写入内存,并将至少一个冗余报文的存储地址发送至FEC软件模块,以便出FEC软件模块获取至少一个冗余报文,并向第二网络设备发送第二目标个数的原始报文和至少一个冗余报文。
在一种可能的实现方式中,FEC软件模块可以部署在NP中,还可以部署在CPU中,本申请实施例对FEC软件模块的部署方式不做具体限定。
本申请实施例提供的方法,通过将多个原始报文中除最大的第一报文以外的其他原始报文进行了拼接处理,只有当拼接出的拼接报文大小小于最大报文的大小时,才会对拼接报文进行填充处理,而无需对每个其他原始报文都进行填充处理,因此,填充后的等长数据块中填充的数据较少,降低了FEC编码报文传输时所占用的网络带宽,避免了网络资源浪费。
当第二网络设备在接收到第一网络设备发送的FEC报文时,若原始FEC报文在传输过程中有丢失,则第二网络设备对未丢失的FEC报文进行解码,以恢复丢失的报文。为了进一步说明多个原始报文的编解码过程,参见图10,为本申请实施例提供的一种编解码的流程图,该流程包括下述步骤1001-1006。
步骤1001、当第一网络设备内的FEC软件模块收集到第二目标个数的原始报文后,根据第二目标个数的原始报文,确定第二目标个数的原始报文中的第一报文和至少一个报文组,并向目标硬件引擎发送编码任务。
在步骤1001之前,UDP代理收集第一终端发送的数据流中的原始报文,并将其收集的原始报文的存储地址以及原始报文的大小发送至FEC软件模块,当FEC软件模块接收到第二目标个数的原始报文的存储地址和大小后,执行本步骤1001。以第二目标个数为6为例,当FEC软件模块从UDP代理收集到原始报文1-6的存储地址以及大小后,说明FEC软件模块集齐了6个原始报文,FEC软件模块将原始报文1和6分别作为第一报文,将原始报文2和4划分至报文组1,将原始报文3和5划分至报文组2。FEC软件模块还可以将该原始报文2和4拼接为拼接报文1,FEC软件模块还可以将该原始报文3和5拼接为拼接报文2,当任一拼接报文的大小小于原始报文3的大小时,对任一拼接报文进行填充处理,得到填充报文,否则不对任一拼接报文进行填充处理。在图10中,任一拼接报文的大小为原始报文3的大小为例进行说明,FEC软件模块将原始报文1和6以及拼接报文1-2作为一个待编码矩阵,在图10中原始报文在待编码矩阵中记为报文1,拼接报文1-2在待编码矩阵中分别记为报文2-3,原始报文6在待编码矩阵中记为报文4。
步骤1002、目标硬件引擎根据编码任务中的地址集合,获取原始报文1和6以及拼接报文1-2所形成的待编码矩阵,根据编码任务中的编码参数构建对应的生成矩阵,并根据待编码矩阵和生成矩阵,进行FEC编码,得到冗余报文a、b和c,并将冗余报文a、b和c存储在内存中,并且将冗余报文a、b和c的存储地址发送给FEC软件模块。
步骤1003、FEC软件模块根据冗余报文a、b和c的存储地址,从内存中获取冗余报文a、b和c,并在报文1-4以及冗余报文a-c上分别添加一个FEC报文头,得到多个FEC报文,并将FEC报文组成的编码流发送UDP代理,UDP代理通过WAN将编码流发送给第二网络设备。
步骤1004、第二网络设备的UDP代理接收编码流,编码流中的报文1和3丢失,当第二网络设备的FEC软件模块收集到报文2、4以及冗余报文a、b、c中任意2个冗余报文后,FEC软件模块向第二网络设备内的目标硬件引擎下发解码任务,该解码任务携带报文2、4以及冗余报文a、b、c中任意2个冗余报文的存储地址以及解码参数,其中,解码参数包括编码参数丢失的报文的个数、丢失的报文在编码矩阵中的位置以及目标大小。
步骤1005、目标硬件引擎根据解码任务中的存储地址,从内存中获取报文2、4以及冗余报文a、b、c中任意2个冗余报文,将报文2、4以及冗余报文a、b、c中任意2个冗余报文组成待解码矩阵,目标硬件引擎根据解码参数,构建对应的解码矩阵,目标硬件引擎基于待解码矩阵和解码矩阵进行FEC解码,得到丢失的报文1和3,并将丢失的报文1和3存储在内存中,且将报文1和3的存储地址发送中FEC软件模块。
步骤1006、FEC软件模块根据原始报文1和拼接报文1存储地址,从内存中获取原始报文1和拼接报文1存储地址,并获取原始报文2和拼接报文2,从拼接报文1拆分出原始报文2和3、从拼接报文2拆分出原始报文3和5,并恢复原始报文1-6在数据流中顺序,按照顺序向UDP代理发送原始报文1-6,形成数据流,UDP代理向第二终端发送数据流。
图11是本申请实施例提供的一种报文处理装置的结构示意图,该装置1100包括:
处理器1101,用于执行上述步骤201;
所述处理器1101,还用于根据所述多个原始报文中的第一报文的大小,将所述多个原始报文中除所述第一报文以外的其他原始报文进行拼接处理,得到至少一个拼接报文,所述第一报文为所述多个原始报文中数据量最大的报文;
所述处理器1101,还用于当所述至少一个拼接报文中任一拼接报文的大小小于所述第一报文的大小时,对所述至少一个拼接报文进行填充处理,得到等长数据块,所述等长数据块中每个数据块的大小为所述第一报文的大小;
所述处理器1101,还用于将所述第一报文和所述等长数据块做前向纠错FEC编码处理,得到至少一个冗余报文。
可选地,所述装置还包括存储器,用于存储程序指令。所述处理器1101可以为CPU,用于运行所述存储器中存储的指令,用于实现如图2所示的报文处理方法。
在一种可能的实现方式中,所述处理器1101用于:
执行上述步骤202;
对每个报文组进行拼接处理,得到所述至少一个拼接报文,每个拼接报文对应一个报文组。
在一种可能的实现方式中所述报文处理装置还包括目标硬件引擎1102;
所述处理器1101,还用于执行上述步骤202-203;
所述目标硬件引擎1102,用于执行上述步骤205。
在一种可能的实现方式中,所述处理器1101用于:
根据所述多个原始报文中各个原始报文的大小,对所述多个原始报文进行排序,得到每个原始报文的次序i,i为大于等于零的整数,其中,次序为0的原始报文为所述第一报文;
当i=1时,将次序为1的原始报文划分至第1个目标报文组,所述第1个目标报文组的次序为1;
当i>1时,若第j个目标报文组的大小和次序为i的原始报文的大小之和小于或等于目标大小,则将第j个目标报文组和所述次序为i的原始报文合并为第i个目标报文组,所述目标大小为所述第一报文的大小,所述第j个目标报文组为至少一个目标报文组中次序最小的报文组,且所述第j个目标报文组的次序为j,所述至少一个目标报文组中每个报文组的大小和次序为i的原始报文的大小之和均小于或等于所述目标大小,0<j<i;
当i>1时,若不存在所述第j个目标报文组,则增加一个所述第i个目标报文组,将所述次序为i的原始报文划分至所述第i个目标报文组;
当将所述多个原始报文中最后一个原始报文分组完成后,将当前剩余的每个目标报文组作为所述至少一个报文组中的一个报文组。
在一种可能的实现方式中,所述处理器1101还用于:
当所述至少一个报文组的个数与所述多个原始报文中第一报文的个数之和达到第一目标个数,且所述至少一个报文组中不能再添加所述多个原始报文以外的其他原始报文时,对每个报文组进行拼接处理,所述第一目标个数为进行一次FEC编码时待编码矩阵的维数;或,
当所述多个原始报文的个数等于第二目标个数,且将所述第二目标个数的原始报文划分为至少一个报文组时,对每个报文组进行拼接处理,所述第二目标个数为预设的用于进行一次FEC编码的原始报文的个数。
在一种可能的实现方式中,所述处理器1101还用于:
当所述至少一个拼接报文中每个拼接报文的大小均等于所述第一报文的大小时,将所述第一报文和所述至少一个拼接报文做前向纠错FEC编码处理,得到至少一个冗余报文。
在一种可能的实现方式中,所述目标硬件引擎1101还用于执行上述步骤208。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
上述实施例提供的报文处理装置在在报文进行处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的报文处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (11)
1.一种报文处理方法,其特征在于,所述方法包括:
获取多个原始报文;
根据所述多个原始报文中的第一报文的大小,将所述多个原始报文中除所述第一报文以外的其他原始报文进行拼接处理,得到至少一个拼接报文,所述第一报文为所述多个原始报文中最大的报文;
当所述至少一个拼接报文中任一拼接报文的大小小于所述第一报文的大小时,对所述至少一个拼接报文进行填充处理,得到等长数据块,所述等长数据块中每个数据块的大小为所述第一报文的大小;
将所述第一报文和所述等长数据块做前向纠错FEC编码处理,得到至少一个冗余报文。
2.根据权利要求1所述的方法,其特征在于,所述根据所述多个原始报文中的第一报文的大小,将所述多个原始报文中除所述第一报文以外的其他原始报文进行拼接处理,得到至少一个拼接报文包括:
根据所述多个原始报文中的第一报文的大小,对所述多个原始报文中除所述第一报文以外的其他原始报文进行分组,得到至少一个报文组,每个报文组包括至少一个原始报文,每个报文组中所有原始报文的大小之和小于或等于所述第一报文的大小;
对每个报文组进行拼接处理,得到所述至少一个拼接报文,每个拼接报文对应一个报文组。
3.根据权利要求1所述的方法,其特征在于,所述根据所述多个原始报文中的第一报文的大小,将所述多个原始报文中除所述第一报文以外的报文进行拼接处理,得到至少一个拼接报文包括:
处理器根据所述多个原始报文中的第一报文的大小,对所述多个原始报文中除所述第一报文以外的其他原始报文进行分组,得到至少一个报文组,并根据所述至少一个报文组,生成编码任务,所述编码任务包括每个报文组的地址信息;
目标硬件引擎根据所述编码任务,对每个报文组进行拼接处理,得到所述至少一个拼接报文。
4.根据权利要求1所述的方法,其特征在于,所述对每个报文组进行拼接处理,得到所述至少一个拼接报文包括:
当所述至少一个报文组的个数与所述多个原始报文中第一报文的个数之和达到第一目标个数,且所述至少一个报文组中不能再添加所述多个原始报文以外的其他原始报文时,对每个报文组进行拼接处理,所述第一目标个数为进行一次FEC编码时待编码矩阵的维数;或,
当所述多个原始报文的个数等于第二目标个数,且将所述第二目标个数的原始报文划分为至少一个报文组时,对每个报文组进行拼接处理,所述第二目标个数为预设的用于进行一次FEC编码的原始报文的个数。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述至少一个拼接报文中每个拼接报文的大小均等于所述第一报文的大小时,将所述第一报文和所述至少一个拼接报文做FEC编码处理,得到至少一个冗余报文。
6.一种报文处理装置,其特征在于,所述装置包括:
处理器,用于获取多个原始报文;
所述处理器,还用于根据所述多个原始报文中的第一报文的大小,将所述多个原始报文中除所述第一报文以外的其他原始报文进行拼接处理,得到至少一个拼接报文,所述第一报文为所述多个原始报文中数据量最大的报文;
所述处理器,还用于当所述至少一个拼接报文中任一拼接报文的大小小于所述第一报文的大小时,对所述至少一个拼接报文进行填充处理,得到等长数据块,所述等长数据块中每个数据块的大小为所述第一报文的大小;
所述处理器,还用于将所述第一报文和所述等长数据块做前向纠错FEC编码处理,得到至少一个冗余报文。
7.根据权利要求6所述的装置,其特征在于,所述处理器用于:
根据所述多个原始报文中的第一报文的大小,对所述多个原始报文中除所述第一报文以外的其他原始报文进行分组,得到至少一个报文组,每个报文组包括至少一个原始报文,每个报文组中所有原始报文的大小之和小于或等于所述第一报文的大小;
对每个报文组进行拼接处理,得到所述至少一个拼接报文,每个拼接报文对应一个报文组。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括目标硬件引擎;
所述处理器,还用于根据所述多个原始报文中的第一报文的大小,对所述多个原始报文中除所述第一报文以外的其他原始报文进行分组,得到至少一个报文组,并根据所述至少一个报文组,生成编码任务,所述编码任务包括每个报文组的地址信息;
所述目标硬件引擎,用于根据所述编码任务,对每个报文组进行拼接处理,得到所述至少一个拼接报文。
9.根据权利要求7所述的装置,其特征在于,所述处理器还用于:
当所述至少一个报文组的个数与所述多个原始报文中第一报文的个数之和达到第一目标个数,且所述至少一个报文组中不能再添加所述多个原始报文以外的其他原始报文时,对每个报文组进行拼接处理,所述第一目标个数为进行一次FEC编码时待编码矩阵的维数;或,
当所述多个原始报文的个数等于第二目标个数,且将所述第二目标个数的原始报文划分为至少一个报文组时,对每个报文组进行拼接处理,所述第二目标个数为预设的用于进行一次FEC编码的原始报文的个数。
10.根据权利要求8所述的装置,其特征在于,所述处理器还用于:
当所述至少一个拼接报文中每个拼接报文的大小均等于所述第一报文的大小时,将所述第一报文和所述至少一个拼接报文做前向纠错FEC编码处理,得到至少一个冗余报文。
11.一种计算机可读存储介质,其特征在于,所述存储介质中存储指令,所述指令由处理器加载并执行以实现如权利要求1至权利要求5任一项所述的报文处理方法。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP20863129.1A EP3993294A4 (en) | 2019-09-10 | 2020-09-10 | DEVICE AND METHOD FOR PROCESSING PACKETS AND COMPUTER STORAGE MEDIA |
KR1020227004719A KR20220029751A (ko) | 2019-09-10 | 2020-09-10 | 패킷 처리 방법 및 장치, 그리고 컴퓨터 저장 매체 |
PCT/CN2020/114600 WO2021047612A1 (zh) | 2019-09-10 | 2020-09-10 | 报文处理方法、装置以及计算机存储介质 |
MX2022002529A MX2022002529A (es) | 2019-09-10 | 2020-09-10 | Metodo y aparato de procesamiento de paquete, y medio de almacenamiento en computadora. |
JP2022515555A JP7483867B2 (ja) | 2019-09-10 | 2020-09-10 | パケット処理方法及び装置、及びコンピュータ記憶媒体 |
US17/679,758 US11683123B2 (en) | 2019-09-10 | 2022-02-24 | Packet processing method and apparatus, and computer storage medium |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910854179X | 2019-09-10 | ||
CN201910854179 | 2019-09-10 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112564856A true CN112564856A (zh) | 2021-03-26 |
Family
ID=75030291
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911207236.1A Pending CN112564856A (zh) | 2019-09-10 | 2019-11-29 | 报文处理方法、装置以及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112564856A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114567603A (zh) * | 2021-12-29 | 2022-05-31 | 云洲(盐城)创新科技有限公司 | 一种报文传输方法、报文传输装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103475451A (zh) * | 2013-09-10 | 2013-12-25 | 江苏中科梦兰电子科技有限公司 | 一种适合前向纠错和加密应用的数据报网络传输方法 |
US20170294984A1 (en) * | 2016-04-08 | 2017-10-12 | Cisco Technology, Inc. | Efficient error correction that aggregates different media into encoded container packets |
CN108650061A (zh) * | 2018-04-24 | 2018-10-12 | 达闼科技(北京)有限公司 | 基于fec的vpn代理方法、装置、存储介质和*** |
CN109327283A (zh) * | 2018-11-23 | 2019-02-12 | 深圳银澎云计算有限公司 | 一种网络自适应的抗丢包方法、装置及终端设备 |
-
2019
- 2019-11-29 CN CN201911207236.1A patent/CN112564856A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103475451A (zh) * | 2013-09-10 | 2013-12-25 | 江苏中科梦兰电子科技有限公司 | 一种适合前向纠错和加密应用的数据报网络传输方法 |
US20170294984A1 (en) * | 2016-04-08 | 2017-10-12 | Cisco Technology, Inc. | Efficient error correction that aggregates different media into encoded container packets |
CN108650061A (zh) * | 2018-04-24 | 2018-10-12 | 达闼科技(北京)有限公司 | 基于fec的vpn代理方法、装置、存储介质和*** |
CN109327283A (zh) * | 2018-11-23 | 2019-02-12 | 深圳银澎云计算有限公司 | 一种网络自适应的抗丢包方法、装置及终端设备 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114567603A (zh) * | 2021-12-29 | 2022-05-31 | 云洲(盐城)创新科技有限公司 | 一种报文传输方法、报文传输装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6516435B1 (en) | Code transmission scheme for communication system using error correcting codes | |
US6320520B1 (en) | Information additive group code generator and decoder for communications systems | |
KR100968086B1 (ko) | 멀티캐스트 또는 브로드캐스트에서 향상된 화일 배포를위한 방법 및 장치 | |
CN100362782C (zh) | 对丢失数据单元进行恢复的方法 | |
KR20210038959A (ko) | 서비스 전송 방법, 설비 및 컴퓨터 저장매체 | |
CN110943800A (zh) | 数据包的发送方法、装置及***、存储介质、电子装置 | |
KR101983032B1 (ko) | 방송 및 통신 시스템에서 패킷 송수신 장치 및 방법 | |
CN107181971A (zh) | 一种iptv终端的升级方法及相关设备 | |
CN113541856A (zh) | 数据恢复方法及装置 | |
WO2020210779A2 (en) | Coded data chunks for network qualitative services | |
CN117336394B (zh) | 一种基于再生转发的多用户数据传输协议 | |
CN112564856A (zh) | 报文处理方法、装置以及计算机可读存储介质 | |
EP4191911A1 (en) | Coding method and apparatus and decoding method and apparatus | |
US8117514B2 (en) | Methods and apparatus for encoding data in a communication network | |
RU2646346C2 (ru) | Устройство и способ передачи и приема пакета с прямой коррекцией ошибок | |
CN107547169B (zh) | 一种数据重传方法和相关装置 | |
WO2021047612A1 (zh) | 报文处理方法、装置以及计算机存储介质 | |
Shokrollahi | Theory and applications of Raptor codes | |
US20200259589A1 (en) | Method and device for transmitting or receiving broadcast service in multimedia service system | |
KR20140027586A (ko) | 방송 및 통신 시스템에서 패킷 송수신 장치 및 방법 | |
US20230105937A1 (en) | Systems and methods for seamless reset for seamless redundancy of tsn/detnet | |
CN111865884B (zh) | 一种报文处理方法、装置及设备 | |
CN112564855A (zh) | 报文处理方法、装置以及芯片 | |
CN114520709A (zh) | 网络数据编码传输方法及装置 | |
US11695502B2 (en) | Packet processing method and apparatus, and chip |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |