CN112564855A - 报文处理方法、装置以及芯片 - Google Patents
报文处理方法、装置以及芯片 Download PDFInfo
- Publication number
- CN112564855A CN112564855A CN201911205835.XA CN201911205835A CN112564855A CN 112564855 A CN112564855 A CN 112564855A CN 201911205835 A CN201911205835 A CN 201911205835A CN 112564855 A CN112564855 A CN 112564855A
- Authority
- CN
- China
- Prior art keywords
- fec
- target
- queue
- messages
- task
- 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 19
- 238000000034 method Methods 0.000 claims abstract description 102
- 230000005540 biological transmission Effects 0.000 claims abstract description 35
- 239000011159 matrix material Substances 0.000 description 114
- 230000008569 process Effects 0.000 description 67
- 238000010586 diagram Methods 0.000 description 17
- 238000011084 recovery Methods 0.000 description 12
- 238000004364 calculation method Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 230000003993 interaction Effects 0.000 description 4
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
- 238000004148 unit process 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)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
本申请公开了一种报文处理方法、装置以及芯片,属于数据处理技术领域。本方法通过直接在网络设备的目标硬件引擎中对第一数据流中的M个原始报文进行FEC编码,而无需在CPU中进行FEC编码,因此,可以降低对CPU的开销,提高网络设备的编码效率,进而可以使得网络设备在传输报文过程中容易满足大吞吐量的要求。
Description
本申请要求于2019年09月10日提交的申请号为201910854367.2、发明名称为“FEC加速方法、装置、系统和FEC硬件加速器”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及数据处理技术领域,特别涉及一种报文处理方法、装置以及芯片。
背景技术
数据流在两个网络设备之间进行传输时,往往会出现报文丢失的情况,目前,可以采用前向纠错(forward error correction,FEC)编解码技术,来解决数据流传输过程中出现的丢包问题。
具体地,一级网络设备对数据流中的原始报文进行FEC编码,得到原始报文的冗余报文,一级网络设备在原始报文和冗余报文上分别添加一个FEC报文头,并将携带FEC报文头的原始报文和冗余报文发送至二级网络设备,当在传输过程中有原始报文丢失时,二级网络设备根据未丢失的原始报文和冗余报文,恢复丢失的原始报文,将未丢失的原始报文和恢复出来的原始报文再组合成原来的的数据流,二级网络设备并输出数据流,因此,可以避免数据流传输过程中出现报文丢失的情况。
上述报文传输过程中的FEC编码过程以及原始报文恢复的过程均需要进行大量的计算,这些计算是由网络设备的中央处理器(central processing units,CPU)来完成的。而CPU自身的计算能力以及计算速率有限,如果要满足快速编码和解码的要求就难以满足在报文传输过程中的大吞吐量要求。
发明内容
本申请提供了一种报文处理方法、装置以及芯片,使得网络设备在快速进行报文的编码和解码处理的同时,满足传输报文过程中的大吞吐量的要求。
第一方面,提供了一种报文处理方法,应用于包括处理器以及目标硬件引擎的网络设备,所述方法包括:
所述处理器根据待处理的第一数据流中的M个原始报文,生成第一编码任务,M为正整数,所述第一编码任务用于指示对所述M个原始报文进行编码;
所述目标硬件引擎根据所述第一编码任务,对所述M个原始报文进行前向纠错FEC编码,得到R个冗余报文,R为正整数。
本方法通过直接在网络设备的目标硬件引擎中对第一数据流中的M个原始报文进行FEC编码,而无需在处理器中进行FEC编码,因此,可以降低对CPU的开销,提高网络设备的编码效率,进而可以使得网络设备在传输报文过程中容易满足大吞吐量的要求。
在一种可能实现方式中,所述处理器根据待处理的第一数据流中的M个原始报文,生成第一编码任务之后,所述方法还包括:
所述处理器将所述第一编码任务存储在第一目标发送队列,所述第一目标发送队列用于存储所述网络设备的待处理数据流的编码任务,所述网络设备的待处理数据流包括所述第一数据流;
所述目标硬件引擎从所述第一目标发送队列中读取所述第一编码任务。
在一种可能实现方式中,所述处理器将所述第一编码任务存储在第一目标发送队列包括:
所述处理器根据所述第一数据流的优先级,将所述第一编码任务添加在所述第一目标发送队列中,所述第一目标发送队列的优先级与所述第一数据流的优先级相等。
在一种可能实现方式中,所述目标硬件引擎从所述第一目标发送队列中读取所述第一编码任务包括:
所述目标硬件引擎根据各个发送队列的优先级的高低顺序,依次查询各个发送队列中是否有编码任务,所述各个发送队列中的每一个队列对应一个优先级;
在所述各个发送队列中,当比所述第一目标发送队列的优先级高的队列内没有编码任务时,所述目标硬件引擎从所述第一目标发送队列中读取所述第一编码任务。
在一种可能实现方式中,所述第一目标发送队列位于所述网络设备的内存、所述处理器以及所述目标硬件引擎中的任一个。
在一种可能实现方式中,所述处理器根据存储的待处理的第一数据流中的M个原始报文,生成第一编码任务之前,所述方法还包括:
所述网络设备将接收到的所述第一数据流中的原始报文存入所述网络设备的内存中;
若所述网络设备的内存中所述第一数据流的未编码的原始报文的报文量等于或大于M,所述处理器从所述第一数据流的未编码的原始报文中获取所述M个原始报文。
在一种可能实现方式中,所述第一编码任务包括所述M个原始报文的存储地址,或,所述第一编码任务包括M个原始报文的存储地址以及所述第一数据流的优先级,或,所述第一编码任务包括所述M个原始报文,或,所述第一编码任务包括所述M个原始报文以及所述第一数据流的优先级。
第二方面,提供了一种报文处理方法,应用于包括处理器以及目标硬件引擎的网络设备,所述方法包括:
所述处理器从接收到的第一数据流中获取第一组FEC报文,所述第一组FEC报文中所有FEC报文具有相同的FEC报文头,所述FEC报文头中包括FEC编码的原始报文量M;
当所述第一组FEC报文中原始报文的个数小于所述原始报文量M时,所述处理器根据所述第一组FEC报文,生成第一解码任务,所述第一解码任务用于指示对所述第一组FEC报文进行解码;
所述目标硬件引擎根据所述第一解码任务,对所述第一组FEC报文中的原始报文以及所述原始报文的冗余报文进行FEC解码,得到所述第一组FEC报文中丢失的原始报文。
本方法通过直接在网络设备的目标硬件引擎中对第一组FEC报文中未丢失的FEC报文进行FEC解码,而无需在CPU中进行FEC解码,因此,可以降低对CPU的开销,提高网络设备的解码效率,进而可以使得网络设备在传输报文过程中容易满足大吞吐量的要求。
在一种可能实现方式中,所述处理器根据所述第一组FEC报文,生成第一解码任务之后,所述方法还包括:
所述处理器将所述第一解码任务存储在第二目标发送队列,所述第二目标发送队列用于存储所述网络设备的待处理数据流的解码任务,所述网络设备的待处理数据流包括所述第一数据流;
所述目标硬件引擎从所述第二目标发送队列中读取所述第一解码任务。
在一种可能实现方式中,所述处理器将所述第一解码任务存储在第二目标发送队列包括:
根据所述第一数据流的优先级,所述处理器将所述第一解码任务添加在所述第二目标发送队列中,所述第二目标发送队列的优先级与所述第一数据流的优先级相等。
在一种可能实现方式中,所述目标硬件引擎从所述第二目标发送队列中读取所述第一解码任务包括:
所述目标硬件引擎根据各个发送队列的优先级的高低,依次查询所述各个发送队列中是否有解码任务,所述各个发送队列中的每一个队列对应一个优先级;
在所述各个发送队列中,当比所述第二目标发送队列的优先级高的队列内没有其他解码任务时,所述目标硬件引擎从所述第二目标发送队列中读取所述第一解码任务。
在一种可能实现方式中,所述第二目标发送队列位于所述网络设备的内存、所述处理器以及所述目标硬件引擎中的任一个。
在一种可能实现方式中,所述第一解码任务包括所述第一组FEC报文的存储地址,或,所述第一解码任务包括所述第一组FEC报文的存储地址以及所述第一数据流的优先级,或,所述第一解码任务包括所述第一组FEC报文,或,所述第一解码任务包括所述第一组FEC报文以及所述第一数据流的优先级。
第三方面,提供了一种报文处理装置,用于执行上述报文处理方法。具体地,该装置包括用于执行上述第一方面或上述第一方面的任一种可选方式提供的报文处理方法的功能模块。
第四方面,提供了一种报文处理装置,用于执行上述报文处理方法。具体地,该装置包括用于执行上述第二方面或上述第二方面的任一种可选方式提供的报文处理方法的功能模块。
第五方面,提供一种芯片,该芯片包括处理器和目标硬件引擎,所述处理器用于实现上述第一方面或上述第一方面的任一种可选方式提供的处理器,所述目标硬件引擎用于实现上述第一方面或上述第一方面的任一种可选方式提供的目标硬件引擎。
第六方面,提供一种芯片,该芯片包括处理器和目标硬件引擎,所述处理器用于实现上述第二方面或上述第二方面的任一种可选方式提供的处理器,所述目标硬件引擎用于实现上述第二方面或上述第二方面的任一种可选方式提供的目标硬件引擎。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种FEC编码计算过程的示意图;
图2是本申请实施例提供的一种FEC解码计算过程的示意图;
图3是本申请实施例提供的一种报文传输系统的示意图;
图4是本申请实施例提供的一种报文处理装置的结构示意图;
图5是本申请实施例提供的一种报文处理装置的结构示意图;
图6是本申请实施例提供的一种目标硬件引擎的示意图;
图7是本申请实施例提供的一种报文处理方法的流程图;
图8是本申请实施例提供的一种报文处理方法的流程图;
图9是本申请实施例提供的一种网络设备内部交互流程的示意图;
图10是本申请实施例提供的一种FEC报文的示意图;
图11是本申请实施例提供的一种FEC编码的流程图;
图12是本申请实施例提供的一种报文处理方法的流程图;
图13是本申请实施例提供的一种FEC解码的流程图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
为了便于理解本申请的实施过程,在此结合图1所示的本申请实施例提供的一种FEC编码计算过程的示意图,对FEC编码进行如下介绍:FEC编码过程中用到的参数为编码参数,编码参数包括原始报文量M、冗余报文量R以及目标大小L,其中,M和R均为正整数,L为大于0的数值,原始报文量M为待编码的原始报文的个数,冗余报文量R为对M个原始报文进行FEC编码后所得的冗余报文的个数,由于M个原始报文的大小不一,第一网络设备在对M个原始报文进行编码生成冗余报文的过程中,首先基于M个原始报文进行填充处理,得到M个等长报文,每个等长报文为一个原始报文填充后的报文,每个等长报文的大小以及冗余报文的大小均为目标大小L,目标大小L可以是M个原始报文中最大的原始报文的大小,此时M个原始报文中最大报文无需填充,可以将其视为一个等长报文。然后,第一网络设备可以先将M个等长报文组成M*L待编码矩阵,待编码矩阵的每一行是一个等长报文,例如图1中的M=4,4个等长报文M0-M3,则待编码矩阵由等长报文M0-M3所组成;第一网络设备构建一个(M+R)*M的生成矩阵,生成矩阵由第一子矩阵和第二子矩阵组成,其中,第一子矩阵为M*M的单位矩阵,第二子矩阵为R*M的柯西矩阵。
xi-1以及yi-1和均为迦罗华域(galois field,GF)(2w)中的元素,其中,和均为大于或等于0的整数,w可以是8,例如,图1中的生成矩阵;网络设备将该生成矩阵和待编码矩阵进行乘法计算,得到(M+R)*L的编码矩阵,其中,编码矩阵包括待编码矩阵以及R*L的校验矩阵,其中,校验矩阵的每一行为一个冗余报文,例如图1的中R=2,冗余报文为R0和R1。
第一网络设备得到R个冗余报文后,将该M个原始报文和R个冗余报文添加相同的FEC报文头,从而将M个原始报文和R个冗余报文冗余报文封装成一组FEC报文,并将这一组FEC报文发送至第二网络设备。当这一组FEC报文在传输过程中,属于编码矩阵中的任一等长报文丢失时,第二网络设备还可以通过解码的过程恢复丢失的任一等长报文,在此结合图2所示的本申请实施例提供的一种FEC解码计算过程的示意图,对FEC解码进行如下介绍:当编码矩阵中的等长报文M2和M3丢失时,第二网络设备可以将未丢失的等长报文M0、M1以及冗余报文R0、R1组成恢复矩阵;构建目标校验矩阵,其中,目标校验矩阵包括第三子矩阵和第二子矩阵,因为丢失了2个等长报文,因此,第三子矩阵为2*M的单位矩阵;第二网络设备将目标校验矩阵的逆矩阵乘以恢复矩阵,就可以得到待编码矩阵,第二网络设备可以从待编码矩阵中获取到丢失的等长报文M2和M3。
图3是本申请实施例提供的一种报文传输系统的示意图,参见图3,第一终端301、第一网络设备302、第二网络设备303以及第二终端304,其中,第一终端301用于生成数据流,并将数据流发送至第一网络设备302,第一网络设备302可对数据流中的报文进行FEC编码并向第二网络设备303发送由FEC报文组成的编码流,第二网络设备303对编码流中未丢失的FEC报文进行解码,恢复丢失的原始报文,并将恢复的原始报文和未丢失的原始报文,组成原来的数据流,并将数据流发送至第二终端304,其中,第一终端301和第二终端302可以是手机、笔记本电脑等,第一网络设备302和第二网络设备303可以是路由器和交换机等计算机设备,数据流可以是视频流,也可以是文本数据组成的文本流,本申请实施例对数据流类型不做具体限定。
以视频流为例的示意图,当第一终端301和多个第二终端302进行视频会话时,用第一终端301向第一网络设备302发送用于组成该视频的原始报文,形成视频流(也即是数据流),由第一网络设备302对视频流中的原始报文进行FEC编码,得到冗余报文,并将原始报文和冗余报文封装成FEC报文,得到编码流,并将编码流发送至第二网络设备303,第二网络设备303在获取到编码流中的每组FEC报文后,根据每组FEC报文的FEC报文头判断每组FEC报文是否丢失原始报文,若丢失,则对丢失原始报文的一组FEC报文进行解码,来恢复丢失的原始报文,将恢复的原始报文和未丢失的原始报文组成视频流发送至多个第二终端304,当每第二终端304接收到该视频流以后,进行视频播放,从而实现多个终端之间的视频会话。
在一些可能的实现中,第一终端301也可以具有第一网络设备的功能,参见图4所示的是本申请实施例提供的一种报文处理装置的结构示意图,所述装置400包括:
处理器401,用于根据待处理的第一数据流中的M个原始报文,生成第一编码任务,M为正整数,所述第一编码任务用于指示对所述M个原始报文进行编码;
目标硬件引擎402,用于根据所述第一编码任务,对所述M个原始报文进行前向纠错FEC编码,得到R个冗余报文,R为正整数。
可选地,所述处理器401,还用于将所述第一编码任务存储在第一目标发送队列,所述第一目标发送队列用于存储所述装置的待处理数据流的编码任务,所述装置的待处理数据流包括所述第一数据流;
所述目标硬件引擎,还用于从所述第一目标发送队列中读取所述第一编码任务。
可选地,所述处理器401,用于根据所述第一数据流的优先级,将所述第一编码任务添加在所述第一目标发送队列中,所述第一目标发送队列的优先级与所述第一数据流的优先级相等。
可选地,所述目标硬件引擎402用于:
所述目标硬件引擎根据各个发送队列的优先级的高低顺序,依次查询所述各个发送队列中是否有编码任务,所述各个发送队列中的每一个队列对应一个优先级;
在所述各个发送队列中,当比所述第一目标发送队列的优先级高的队列内没有编码任务时,从所述第一目标发送队列中读取所述第一编码任务。
可选地,所述装置400还包括内存403,所述第一目标发送队列位于所述网络设备的内存、所述处理器以及所述目标硬件引擎中的任一个。
可选地,所述装置400还包括内存403;
所述内存403,用于存储接收到的所述第一数据流中的原始报文;
所述处理器401,还用于若所述内存中所述第一数据流的未编码的原始报文的报文量大于或等于M,从所述第一数据流的未编码的原始报文中获取所述M个原始报文,执行根据存储的待处理的第一数据流中的M个原始报文,生成编码任务的步骤。
所述处理器401可以是通用处理器,例如CPU,或者网络处理器(networkprocesser,NP),或者CPU和NP的组合。所述处理器还可以包括硬件芯片,上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
内存403可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器也可以包括非易失性存储器(non-volatilememory),例如快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD),或其任意组合。
可选地,所述第一编码任务包括所述M个原始报文的存储地址,或,所述第一编码任务包括M个原始报文的存储地址以及所述第一数据流的优先级,或,所述第一编码任务包括所述M个原始报文,或,所述第一编码任务包括所述M个原始报文以及所述第一数据流的优先级。
在一些可能的实现中,图4所示的报文处理装置的功能还可以由一个芯片来实现,该芯片可以包括图4中的处理器401和图4中的目标处理引擎402。
在一些可能的实现中,第二终端304也可以具有第二网络设备303的功能,参见图5是本申请实施例提供的一种报文处理装置的结构示意图,所述装置500包括处理器501和目标硬件引擎502;
所述处理器501,用于从接收到的第一数据流中获取第一组FEC报文,所述第一组FEC报文中所有FEC报文具有相同的FEC报文头,所述FEC报文头中包括FEC编码的原始报文量M;
当所述第一组FEC报文中原始报文的个数小于所述原始报文量M时,根据所述第一组FEC报文,生成第一解码任务,所述第一解码任务用于指示对所述第一组FEC报文进行解码;
所述目标硬件引擎502,用于根据所述第一解码任务,对所述第一组FEC报文中的原始报文以及所述原始报文的冗余报文进行FEC解码,得到所述第一组FEC报文中丢失的原始报文。
可选地,所述处理器501,还用于将所述第一解码任务存储在第二目标发送队列,所述第二目标发送队列用于存储所述装置的待处理数据流的解码任务,所述装置的待处理数据流包括所述第一数据流;
所述目标硬件引擎502,还用于从所述第二目标发送队列中读取所述第一解码任务。
可选地,所述处理器501,用于根据所述第一数据流的优先级,所述处理器将所述第一解码任务添加在所述第二目标发送队列中,所述第二目标发送队列的优先级与所述第一数据流的优先级相等。
可选地,所述目标硬件引擎502用于:
根据各个发送队列的优先级的高低,依次查询所述各个发送队列中是否有解码任务,所述各个发送队列中的每一个队列对应一个优先级;
在所述各个发送队列中,当比所述第二目标发送队列的优先级高的队列内没有其他解码任务时,从所述第二目标发送队列中读取所述第一解码任。
可选地,所述装置设备还包括内存,所述第二目标发送队列位于所述内存、所述处理器以及所述目标硬件引擎中的任一个。
可选地,所述第一解码任务包括所述第一组FEC报文中未丢失的FEC报文的存储地址,或所述第一组FEC报文中未丢失的FEC报文的存储地址以及所述第一数据流的优先级,或,所述第一解码任务包括所述第一组FEC报文,或,所述第一解码任务包括所述第一组FEC报文以及所述第一数据流的优先级。
在一些可能的实现中,图5所示的报文处理装置的功能还可以由一个芯片来实现,该芯片可以包括图5中的处理器501和图5中的目标处理引擎502。
为了便于叙述将第一网络设备302和第二网络设备303均记为计算设备,计算设备均可以包括目标硬件引擎,目标硬件引擎用于进行编解码计算。本申请实施例提供一种目标硬件引擎的示意图,参见图6中的目标硬件引擎600,该目标硬件引擎600包括控制器601、缓存单元602、数据处理单元603、矩阵生成器604以及编解码单元605。其中,控制器601用于接收计算设备的CPU发送的编解码参数以及待编解码报文的存储地址,根据编解码参数确定对应的数据处理策略、编解码模型的模型参数以及矩阵模型的模型参数;其中,编解码参数包括编码参数或解码参数,解码参数可以是FEC报文头中的内容;待编解码的报文可以报文M个原始报文,或未丢失的FEC报文;编解码模型可以包括编码模型或解码模型,编码模型的模型参数为原始报文量M以及目标大小L,解码模型的模型参数包括为丢失的原始FEC报文的报文量F以及目标大小L,F大于0且小于等于R;矩阵模型的模型参数包括生成矩阵的模型参数或目标校验矩阵的模型参数,生成矩阵的模型参数包括原始报文量M、冗余报文量R以及目标大小L,目标校验矩阵的模型参数包括为丢失的原始FEC报文的报文量F、冗余报文量R以及目标大小L。
控制器601还用于根据接收的待编解码报文的存储地址,从计算设备的内存中获取待编解码报文,并将待编解码报文存储在缓存单元602。控制器601还用于将编解码模型的模型参数以及数据处理策略发送至数据处理单元603,以便数据处理单元603根据编解码模型的模型参数以及数据处理策略,基于待编解码的报文生成待编码矩阵或恢复矩阵,并将待编码矩阵或恢复矩阵发送至编解码单元605。
控制器601还用于将矩阵模型的模型参数发送至矩阵生成器604,以便验矩阵生成器604根据矩阵模型的模型参数,构建生成矩阵或目标校验矩阵,并将生成矩阵或目标校验矩阵发送至编解码单元605。
编解码单元605用于对接收的待编码矩阵或恢复矩阵以及对应的生成矩阵或目标校验矩阵进行编解码计算,得到冗余报文或丢失的原始FEC报文(具体参见图1和图2所示的编解码计算过程),并将冗余报文或丢失的原始FEC报文发送至缓存单元602,由缓存单元602将冗余报文或恢复的报文发送至计算设备的内存或处理器。
目标硬件引擎中的编解码单元605可以复用FEC编码逻辑以及FEC解码逻辑,当需要进行FEC编码时,编解码单元605根据FEC编码逻辑,对生成矩阵和待编码矩阵进行FEC编码;当需要进行FEC解码时,编解码单元605根据FEC解码逻辑,对目标校验矩阵和恢复矩阵进行FEC解码。在一些可能的实现中,编解码单元605可以包括编码子单元和解码子单元,其中,编码子单元可以根据FEC编码逻辑,对生成矩阵和待编码矩阵进行FEC编码,解码子单元可以根据FEC解码逻辑,对目标校验矩阵和恢复矩阵进行FEC解码。
为了进一步说明计算设备的编解码过程,参见图7所示的本申请实施例提供的一种报文处理方法的流程图,计算设备通过千兆(gigabit ethernet,GE)网络端口或万兆(ten-gigabit Ethernet,GXE)网络端口接收数据流中的报文,GE/GXE网络端口将接收的报文发送至包解析硬件引擎(packet parse engine,PPE),PPE将该报文存储至内存,并对该报文进行初步解析,得到该报文的描述符,并通过分流向网络处理(network processer,NP)引擎发送携带该报文的存储地址的通知消息;NP引擎可以对内存中的报文进行深度解析,以确定其是否需要编码,当报文需要进行编码时,NP引擎还可以将通知消息转发至CPU;CPU的协议栈向用户数据报协议(user datagram protocol,UDP)代理发送通知消息;当UDP代理接收到的通知消息达到一定数目时,说明内存在当前时间段内已经存储了本次编码所需的待编码报文,则CPU通过FEC软件接口向目标硬件引擎下达编码任务;目标硬件引擎根据编码任务中携带的待编码报文的存储地址,从内存中获取待编码报文,并生成冗余报文,将冗余报文存储在内存,当存储完成之后,目标硬件引擎向CPU中的FEC软件接口报告编码任务完成信息;FEC软件接口根据编码任务完成信息中携带的待编码报文的存储地址以及冗余报文的存储地址,从内存中获取待编码报文以及冗余报文,在获取的待编码报文以及冗余报文上添加FEC报文头,生成FEC报文;FEC软件接口向流量管理(traffic management,TM)引擎发送FEC报文,形成编码后的编码流(也即是数据流);TM引擎依据CPU或者其他硬件引擎的需求,对编码流进行管理,例如服务质量(quality of service,QOS)调度、流量整形、流量统计等,TM引擎将管理后的编码流发送至PPE;PPE向GE/GXE网络端口转发管理后的编码流,GE/GXE网络端口输出管理后的编码流。需要说明是,在一些可能的实现中,计算设备未包括NP引擎、PPE以及TM引擎,而NP引擎、PPE以及TM引擎的工作可以均由一个处理器来完成或者CPU来完成。再或者NP引擎、PPE、TM引擎以及CPU的工作可以由一个处理器来完成。
以上是对计算设备编码过程的描述,对于计算设备的解码过程描述如下:当计算设备在内存中存储的报文为FEC报文时,若报文头相同的一组FEC报文中的原始报文有丢失时,CPU通过FEC软件接口向目标硬件引擎下达解码任务;目标硬件引擎根据解码任务中携带的一组FEC报文的存储地址,从内存中获取一组FEC报文,根据一组FEC报文,恢复丢失的原始报文,将恢复的原始报文存储在内存,当存储完成之后,目标硬件引擎向CPU中的FEC软件接口报告解码任务完成信息;FEC软件接口根据解码任务完成信息中携带的一组FEC报文中未丢失的原始报文的存储地址以及恢复的原始报文的存储地址,从内存中获取一组FEC报文中未丢失的原始报文以及恢复的原始报文,并将获取的原始报文组成数据流输出。其中,CPU输出数据流和输出编码流的方式同理,在此,本申请实施例对CPU输出数据流的方式不做赘述。
在一些可能的实现中,协议栈、UDP代理以及FEC软件接口可以不部署在CPU中,而是部署在NP引擎中,此时在编解码过程中,则需要NP引擎、目标硬件引擎以及内存三者之间进行交互,而无需CPU与目标硬件引擎以及内存进行交互。在一些可能的实现中,目标硬件引擎通过编解码获取到编码矩阵或者待编码矩阵后,可以直接将编码矩阵中的原始报文和冗余报文封装成FEC报文,并输出网络设备,或者是直接从待编码矩阵中获取原始报文,并输出网络设备。在一些可能的实现中,目标硬件引擎还可以直接将编码矩阵或者待编码矩阵发送至FEC软件接口,由FEC软件接口将编码矩阵中的原始报文和冗余报文封装成FEC报文,并输出网络设备,或由FEC软件接口从待编码矩阵中获取原始报文,并输出网络设备。
综上所述,对网络设备的编码过程进行如下总结:网络设备在获取到任一数据流以后,可以将该任一数据流存储在内存,若该任一数据流中的报文为待编码报文,则网络设备内的处理器可以生成用于指示对多个待编码报文进行编码的编码任务,处理器可以将该编码任务下发至内存;由网络设备内的目标硬件引擎读取内存中的编码任务,并根据编码任务对内存中存储的多个待编码报文进行FEC编码,得到多个待编码报文的冗余报文,目标硬件引擎再将冗余报文存储至内存;然后,处理器可以从内存中获取待多个待编码报文以及多个待编码报文的冗余报文,并将获取的报文封装为FEC报文。为了进一步说明该处理过程,参见如图8所示的本申请实施例提供的一种报文处理方法的流程图,其中,该第一网络设备可以包括处理器以及目标硬件引擎,该方法的流程可以包括下述步骤801-812:
801、第一网络设备获取待处理的第一数据流中的M个原始报文。
第一网络设备可以获取多个数据流。该第一数据流为该多个数据流中的任一数据流,该第一数据流可能包括多个报文。数据流可以是视频数据流、音频数据流或文本数据流等,本申请实施例对第一数据流的类型不做具体限定。
该M个原始报文为该第一数据流中任意M个连续的原始报文,第一网络设备可以每次对M个原始报文进行编码,当一次编码完成后,再对第一数据流中另外M个原始报文进行编码,在一些可能的实现方式中,本步骤801可以通过步骤8011-8012所示的过程来实现。
步骤8011、第一网络设备将接收到的第一数据流中的原始报文存入第一网络设备的内存中。
第一网络设备的GE/GXE网络端口每接收到该第一数据流中的一个原始报文后,将该原始报文发送至PPE,每当PPE接收到该原始报文后,将该原始报文存储在内存,并记录下该原始报文的存储地址。
步骤8012,若内存中第一数据流的未编码的原始报文的报文量等于或大于M,处理器从第一数据流的未编码的原始报文中获取M个原始报文。
该处理器可以包括第一网络设备内的CPU以及NP引擎中至少一个,由于第一网络设备每进行一次编码后,就会对下一组M个的未编码的原始报文进行编码,因此,对于该第一数据流中的原始报文,当第一网络设备的内存中每新缓存了M个原始报文时,就可以将新缓存的M个原始报文作为第一数据流中下一次待编码的M个原始报文。
在一些可能的实现方式中,该第一网络设备还可以设置预设时长,对于该第一数据流中的原始报文,第一网络设备每经过一个预设时长,将内存在该预设时长内新存储的原始报文作为该下一次待编码的原始报文。在一些可能的实现方式中,每次编码时M的大小可能会发生变化,例如,第一网络设备经过一个预设时长,获取到5个原始报文,则此时M等于5,再经过下一个预设时长,第一网络设备新获取到4个原始报文,则此时M等于4。本申请实施例对该预设时长不做具体限定。
当PPE将一个原始报文存储在内存后,PPE将该原始报文对应的存储完成消息发送至NP引擎,该存储完成消息可以携带该第一数据流的流标识以及该原始报文的存储地址,流标识可以是该第一数据流的名称或编号,用于指示该原始报文所属的数据流。在一些可能的实现方式中,第一网络设备根据业务需求,对每个接收的数据流设置对应的优先级,第一网络设备可以优先处理优先级高的数据流,相应地,该存储完成消息还可以携带该第一数据流对应的优先级,以便第一网络设备内的各个模块可以根据优先级处理对应的数据流中的原始报文。用户可以在该第一网络设备上配置优先级信息表,该优先级信息表中包括从高到低的多个优先级,每个优先级对应一种业务类型,当第一网络设备接收到第一数据流时,可以根据该第一数据流中的原始报文携带的数据,确定该第一数据流的业务类型,并从该优先级信息表中确定该第一数据流的业务类型所对应的优先级,从而第一网络设备可以为该第一数据流设置对应的优先级。
当NP引擎接收到该存储完成消息后,可以将该存储完成消息发送至协议栈,因此,UDP代理可以从协议栈中收集各个存储完成消息,每当UPD代理新收集的存储完成消息的数目为M时,则新收集的M个存储完成消息可以指示内存中新存储了M个待编码报文,因此,UDP代理可以将该M个存储完成消息所对应的M个原始报文作为待编码的M个原始报文。
802、处理器根据待处理的第一数据流中的M个原始报文,生成第一编码任务,M为正整数,第一编码任务用于指示对M个原始报文进行编码。
本步骤802可以由第一网络设备的处理器中的FEC软件接口来执行,每当UDP代理收集到M个存储完成消息,则UDP代理可以将该收集到的M个存储完成消息发送至处理器中的FEC软件接口,当FEC软件接口接收到M个存储完成消息后,可以执行本步骤802。
FEC软件接口可以从M个存储完成消息中,获取到M个原始报文的存储地址,其中,M个原始报文的存储地址包括M个原始报文中每个报文的存储地址;该FEC软件接口可以根据该M个原始报文的存储地址以及编码参数,生成该编码任务,该编码任务可以包括该M个原始报文的存储地址以及编码参数,以便目标硬件引擎可以根据存储地址从内存中获取M个原始报文,并根据编码参数对获取的M个原始报文进行编码。在一些可能的实现中,该第一编码任务可以不包括该M个原始报文的存储地址,而是包括M个原始报文,以便目标硬件引擎可以直接从第一编码任务中获取该M个原始报文;当该第一数据流具有优先级时,第一编码任务还可以包括该第一数据流的优先级,该编码任务还可以携带编码标识,用于指示对该每个报文进行编码,本申请实施例对该编码标识的表示方式不做具体限定。
该编码参数可以是第一网络设备预设的编码参数,该第一网络设备可以每进行一次编码均使用该编码参数,当然,第一网络设备也可以随着报文传输情况对该编码参数进行适当的调整。当第一网络设备每一次编码都按照相同的编码参数来进行时,该第一报文量可以是该编码参数中的原始报文量M,该第一网络设备还可以根据目前CPU的开销或目标硬件引擎当前的计算能力,动态修改编码参数中的原始报文量M,例如,当CPU开销较小或目标硬件引擎当前仍有足够的计算能力时,该第一网络设备可以适当提高原始报文量,也即是增加进行一次编码的报文,反之,可以适当降低原始报文量,也即是减少进行一次编码的报文。
第一网络设备还可以根据当前的网络丢包率,动态调整模型参数中的冗余报文量R,例如,当网络丢包率较高时,可以适当提高冗余报文量R,也即是增加一次编码过程所生成的冗余报文的报文量,以便后续可以恢复丢失的所有报文,当网络丢包率较低时,可以适当降低冗余报文量R,也即是减少一次编码过程所生成的冗余报文的报文量,以提高编码效率。
由于第一网络设备可以对编码参数进行上述的动态调整,从而可以通过调整编码参数,来提高第一网络设备的编码效率。
803、处理器将第一编码任务存储在第一目标发送队列,第一目标发送队列用于存储第一网络设备的待处理数据流的编码任务,第一网络设备的待处理数据流包括第一数据流。
本步骤803可以由该处理器中FEC软件接口来执行。该第一网络设备可以预设多个发送队列,每个发送队列用于存储第一网络设备的待处理数据流的编码任务,该第一目标发送队列可以是该多个发送队列中的任一队列。该多个发送队列可以位于第一网络设备的内存、处理器以及目标硬件引擎中的任一个。
在一些可能的实现中,该第一网络设备可以为每个发送队列设置一个优先级,每个发送队列用于存储相同优先级的数据流的编码任务。例如,图9所示的本申请实施例提供的一种网络设备内部交互流程的示意图,图9中的内存中有1优先级为A的发送队列A和优先级为B的发送队列B,其中,优先级A高于优先级B,此时,发送队列A中存储有编码任务3、5和6,发送队列B中存储有编码任务1、2和4,其中,编码任务3、5和6分别为一个优先级为A的编码任务,编码任务1、2和4分别为一个优先级为B的编码任务。
在一些可能的实现方式中,本步骤803可以包括:处理器根据第一数据流的优先级,将第一编码任务添加在第一目标发送队列中,第一目标发送队列的优先级与第一数据流的优先级相等。具体地,当FEC软件接口生成一个第一编码任务后,该FEC软件接口可以根据第一数据流的优先级,确定内存中与该第一数据流优先级对应的第一目标发送队列,当该第一目标发送队列中编码任务的个数小于第一目标个数时,FEC软件接口将该第一编码任务添加在该第一目标发送队列中,其中,第一目标个数为该第一目标发送队列可以存储的最多编码任务的个数。当该第一目标发送队列中编码任务的个数等于第一目标个数时,FEC软件接口每间隔第一预设时长,查询该第一目标发送队列中的编码任务的个数是否小于第一目标个数,一旦小于第一目标个数,则将该第一编码任务添加在该第一目标发送队列中。本申请实施例对该第一预设时长不做具体限定。该目标硬件引擎可以每当该编解码单元空闲就可以查询该第一目标发送队列。
804、目标硬件引擎从第一目标发送队列中读取第一编码任务。
目标硬件引擎可以先按照优先级的高低轮询该内存中的每个发送队列,以便确定目标硬件引擎是否要从该第一目标发送队列,在一些可能的实现方式中,目标硬件引擎根据各个发送队列的优先级的高低顺序,依次查询各个发送队列中是否有编码任务,各个发送队列中的每一个队列对应一个优先级;在各个发送队列中,当比第一目标发送队列的优先级高的队列内没有编码任务时,目标硬件引擎从第一目标发送队列中读取第一编码任务。
该目标硬件引擎轮询各个发送队列的过程可以是:该目标硬件引擎查询该各个发送队列中的优先级最高的第一发送队列,当第一发送队列中有编码任务时,该目标硬件引擎从该第一发送队列的队头中获取一个编码任务,并根据编码任务执行下述步骤805;每隔第二预设时长,该目标硬件引擎再次查询该第一发送队列,当第一发送队列中仍有编码任务时,则再次从该第一发送队列的队头中获取一个新的编码任务;直至该第一发送队列中未存储编码任务时,该目标硬件引擎查询该多个发送队列中第二个优先级对应的第二发送队列是否有编码任务,当有编码任务时,则从第二发送队列获取编码任务,并执行下述步骤805,其中第二优先级为仅次于最高优先级的优先级;当第二发送队列中没有编码任务时,依次类推按照优先级查询仅次于该第二个优先级的发送队列。
当一个发送队列队头的编码任务被目标硬件引擎获取后,该发送队列中下一个编码任务成为该发送队列的队头,这样目标硬件引擎下次就可以从该发送队列的队头获取到该下一个编码任务。
805、目标硬件引擎根据该第一编码任务中的M个原始报文的存储地址,从内存中获取该M个原始报文。
当该目标硬件引擎中的控制器获取到该第一编码任务后,可以从第一编码任务中获取到该M个原始报文的存储地址,该目标硬件引擎可以向内存发送第一报文获取请求,该第一报文获取请求携带该M个原始报文的存储地址,当内存接收到该第一报文获取请求后,向目标硬件引擎发送该存储地址内存储的M个原始报文,当接收到该M个原始报文后,目标硬件引擎将该M个第一报文缓存在缓存单元,以便数据处理单元对M个原始报文进行处理。当然,若该第一编码任务中直接携带该M个原始报文,该目标硬件引擎可以直接从第一编码任务中,获取该M个原始报文,而无需从内存中获取该M个原始报文。
806、目标硬件引擎根据第一编码任务,对M个原始报文进行前向纠错FEC编码,得到R个冗余报文,R为正整数。
当该目标硬件引擎获取到该M个原始报文后,可以根据该第一编码任务中的编码参数,对该M个原始报文进行前向纠错FEC编码。在一种可能的方式中,该目标硬件引擎内的数据处理单元,可以根据编码参数中的原始报文量M,对该M个原始报文进行填充处理,得到M个等长报文;数据处理单元将该M个等长报文,组成待编码矩阵,其中,待编码矩阵的一行为一个等长报文;数据处理单元将待编码矩阵发送至编解码单元;由编解码矩阵单元将对应的生成矩阵与待编码矩阵进行乘法计算,得到R个冗余报文,以实现本步骤806。在图1中介绍了生成矩阵与该待编码矩阵进行乘法计算的过程,在此本申请实施例对该过程不做赘述。
其中,生成矩阵可以由目标硬件引擎中的矩阵生成器生成,并发送至编解码单元。矩阵生成器生成对应的生成矩阵的过程为:目标硬件引擎内的控制器可以从第一编码任务中获取冗余报文量R以及原始报文量M,并将获取的冗余报文量R以及原始报文量M发送至矩阵生成器,矩阵生成器根据冗余报文量R以及原始报文量M,生成(M+R)*M的生成矩阵,并将第(M+R)*M的生成矩阵发送至编解码单元。
807、目标硬件引擎将该R个冗余报文存储在内存。
当该目标硬件引擎中的编解码单元生成该R个冗余报文后,将该R个冗余报文缓存在缓存单元,缓存单元向内存发送第一报文存储请求,该第一报文存储请求携带该R个冗余报文的存储地址以及该R个冗余报文,其中,该R个冗余报文的存储地址包括每个冗余报文的存储地址,当内存接收到该第一报文存储请求后,内存在该R个冗余报文的存储地址内存储该R个冗余报文。
808、当该R个冗余报文存储完成后,目标硬件引擎在第一编码任务中添加该R个冗余报文的存储地址,得到该M个原始报文的第一编码完成信息,第一编码完成信息用于指示该M个原始报文编码完成。
目标硬件引擎还可以将该第一编码任务中的编码标识替换为编码完成标识,编码完成标识用于原始报文编码完成,本申请实施例对该编码完成标识的表示方式不做具体限定。由于第一编码任务包括M个第一报文的存储地址以及编码参数,因此,该第一编码完成信息可以包括R个冗余报文的存储地址、M个原始报文的存储地址以及编码参数。当该第一编码任务中携带第一数据流的优先级时,该第一编码完成信息还包括第一数据流的优先级。
809、目标硬件引擎将第一编码完成信息存储在第一目标接收队列,第一目标接收队列用于存储第一网络设备的待处理数据流的编码完成信息任务。
该第一网络设备可以预设多个接收队列,每个接收队列用于存储第一网络设备的待处理数据流的编码完成信息,该第一目标接收队列可以是该多个接收队列中的任一队列。该多个接收队列可以位于第一网络设备的内存、处理器以及目标硬件引擎中的任一个。
在一些可能的实现中,该第一网络设备可以为每个接收队列设置一个优先级,每个接收队列用于存储相同优先级的数据流的编码完成信息。仍以图9为例,图9中的内存中有1优先级为A的接收队列A和优先级为B的接收队列B,其中,优先级A高于优先级B,此时,接收队列A中存储有任务完成信息3、5和6(在图9中简称“完成信息3、5和6”),接收队列B中存储有任务完成信息1、2和4,其中,任务完成信息3、5和6分别为一个优先级为A的编码完成信息,任务完成信息1、2和4(在图9中简称“完成信息3、5和6”)分别为一个优先级为B的编码完成信息。
在一些可能的实现方式中,目标硬件引擎根据第一数据流的优先级,将第一编码完成信息添加在内存中的第一目标接收队列,第一目标接收队列的优先级等于第一数据流的优先级。具体地,目标硬件引擎可以根据第一数据流的优先级,确定内存中与该第一数据流的优先级对应的第一目标接收队列,当该第一目标接收队列中编码完成信息的个数小于第二目标个数时,目标硬件引擎将该第一编码完成信息添加在该第一目标接收队列中,其中,第二目标个数为该第一目标接收队列可以存储的最多编码完成信息的个数。当该第一目标接收队列中编码完成信息的个数等于第二目标个数时,FEC软件接口每间隔第二预设时长,查询该第一目标接收队列中的编码完成信息的个数是否小于目第二标个数,一旦小于第二目标个数,则将该第一编码完成信息添加在该第一目标接收队列中。本申请实施例对该第二预设时长不做具体限定。
810、处理器从第一目标接收队列中读取第一编码完成信息。
本步骤810可以由该处理器的FEC软件接口来执行。FEC软件接口可以按照优先级的高低轮询各个接收队列。FEC软件接口可以先通过轮询的方式,确定是否可以在该第一目标接收队列中,获取该编码完成信息,在一些可能的实现方式中,FEC软件接口根据优先级的高低顺序,依次查询各个接收队列中是否有其他编码完成信息,各个接收队列中的每一个队列对应一个优先级;在各个第一接收队列中,当比第一目标接收队列的优先级高的队列内没有其他编码完成信息时,从第一目标接收队列中,获取第一编码完成信息。
FEC软件接口轮询各个接收队列的过程可以是:FEC软件接口查询该各个接收队列中的优先级最高的第一接收队列,当第一接收队列中有编码完成信息时,FEC软件接口从该第一接收队列的队头中获取一个编码完成信息,并根据编码完成信息执行下述步骤811;每隔第三预设时长,该FEC软件接口再次查询该第一接收队列,当第一接收队列中仍存储有编码完成信息时,则再次从该第一接收队列的队头中获取一个新的编码完成信息,直至该第一发送队列中未存储编码任务时,FEC软件接口查询该多个第一接收队列中下一个优先级对应的第二接收队列是否有编码完成信息,当存储有编码完成信息时,则从第二接收队列获取编码完成信息,并执行下述步骤811,当第二接收队列中未存储有编码完成信息时,依次类推按照优先级查询仅次于该第二优先级的第三接收队列。
当一个第一接收队列中的编完成码信息被FEC软件接口获取后,该第一接收队列中下一个编码完成信息成为该第一接收队列的队头,以便FEC软件接口下次从该第一接收队列的队头获取到该下一个编码完成信息。
811、处理器根据第一编码完成信息,从内存中获取M个原始报文以及R个冗余报文。
本步骤811可以由该处理器内的FEC软件接口来执行。FEC软件接口可以从第一编码完成信息中,获取R个冗余报文的存储地址、M个原始报文的存储地址以及编码参数;FEC软件接口向内存发送第二报文获取请求,该第二报文获取请求携带R个冗余报文的存储地址以及M个原始报文的存储地址,当内存接收到该第二报文获取请求时,根据第二报文获取请求中的R个冗余报文的存储地址以及M个原始报文的存储地址,向FEC软件接口返回R个冗余报文以及M个原始报文。
812、处理器向第二网络设备发送M个原始报文以及R个冗余报文。
本步骤812可以由该处理器内的FEC软件接口来执行。当FEC软件接口获取到内存返回的R个冗余报文以及M个原始报文后;FEC软件接口根据第一编码完成信息中的编码参数;R个冗余报文以及M个原始报文分别封装为一个FEC报文。在一些可能的实现方式中,本步骤812可以由下述步骤8121-8123所示的过程来实现。
步骤8121、FEC软件接口根据编码参数中的目标大小,对M个原始报文中大小小于目标大小的报文进行填充处理,得到M个等长报文,每个等长报文的大小为目标大小。
步骤8122、FEC软件接口在每个等长报文上均添加FEC报文头,得到M个原始FEC报文,并在每个冗余报文中均添加FEC报文头,得到R个冗余FEC报文,FEC报文头携带M个原始报文的编码参数。
例如,图10所示的本申请实施例提供的一种FEC报文的示意图中FEC报文,当图10中的FEC报文的负载报文为第一数据流中的原始报文形成的等长报文时,该FEC报文为一个原始FEC报文,当该FEC报文的负载报文为冗余报文时,该FEC报文为一个冗余FEC报文。
FEC报文头用于指示该M个原始报文的编码情况。FEC报文头携带M个原始的编码参数,例如图10中的FEC报文头携带原始报文量M=4、冗余报文量R=2、目标大小L=30MB。FEC报文头还可以携带该M个原始报文的目标标识,该目标标识用于指示对该第一数据流中的原始报文进行的编码的次数,例如,图10中的FEC报文头中的目标标识为1.2,则表明第一网络设备对第一数据流1中的报文进行的第二次编码,则该M个原始报文为第二次编码时用到的第一数据流中的原始报文。
FEC报文头还可以携带优先级标识、算法标识、该M个原始报文中每个报文在第一数据流中的序列号、每个等长报文在待编码矩阵中的序列号以及每个冗余报文在编码矩阵中的序列号,其中,优先级标识用于指示该第一数据流的优先级,算法标识用于指示第一网络设备在编码过程中所使用到的算法,每个等长报文在待编码矩阵中的序列号为每个等长报文在待编码矩阵中的行号,每个冗余报文在编码矩阵中的序列号为每个冗余报文在编码矩阵中的行号。例如在图10中的FEC头中,原始报文A0-A3在第一数据流中的序列号分别为10、11、12和13;等长报文M0-M3的序列号分别为0、1、2和3;冗余报文R0-R1的序列号分别为4和5。图10中FEC报文头的举例是以图1所示的编码计算过程为基础的。
步骤8123、处理器发送M个原始FEC报文以及R个冗余FEC报文。
由于M个原始FEC报文以及R个冗余FEC报文的报文头均相同,因此,M个原始FEC报文以及R个冗余FEC报文可以视为一组FEC报文。对于该M个原始FEC报文以及R个冗余FEC报文中的任一FEC报文,FEC软件接口每获取到一个任一FEC报文后,向第一网络设备内的TM引擎输该任一FEC报文,由于FEC软件接口可以持续不断的向TM引擎输出FEC报文,因此,TM引擎处可以形成该与第一数据流的编码流,TM引擎对该编码流进行管理后,向PPE输出管理后的编码流,PPE向GE/GXE网络端口转发管理后的编码流,GE/GXE网络端口向第二网络设备输出该管理后的编码流,以便第二网络设备可以从编码流中获取到该编码流。
为了进一步说明在编码过程中第一网络设备内的处理器、目标硬件引擎以及内存之间的交互情况,参见图11所示的本申请实施例提供的一种FEC编码的流程图,该流程具体包括步骤1101-11106。
步骤1101、UDP代理向FEC软件接口发送存储完成消息。
步骤1102、当FEC软件接口接收的存储完成消息的个数等于M时,生成第一编码任务,并将第一编码任务发送到内存的任务缓存中,
其中,该任务缓存包括多个发送队列和多个接收队列,FEC软件接口可以将第一编码任务发送到优先级对应的第一目标发送队列。
步骤1103、目标硬件引擎从任务缓存的第一目标发送队列中获取到第一编码任务,并根据第一编码任务中存储地址,从内存中读取M个原始报文。
步骤1104、目标硬件引擎对读取到的M个原始报文进行FEC编码,得到R个冗余报文,目标硬件引擎将R个冗余报文存储在内存中,并将第一编码完成信息发送在任务缓存内的第一目标接收队列中。
步骤1105、FEC软件接口从任务缓存内的第一目标接收队列中读取第一编码完成信息,并根据第一完成信息,读取内存中的M个原始报文和R个冗余报文,并在M个原始报文和R个冗余报文分别封装FEC报文头,得到FEC报文。
步骤1106、FEC软件接口发送FEC报文。
上述步骤807-812所示的过程为以目标处理引擎、内存以及处理器协同将M个原始报文以及R个冗余报文向第二网络设备发送的过程。在一些可能的实现中,目标处理引擎还可以直接将M个原始报文以及R个冗余报文发送至处理器,由处理器执行8122-8123所示的过程,从而以实现M个原始报文以及R个冗余报文的传输。在一些可能的实现中,目标处理引擎还可以自己执行8122-8123所示的过程,从而以实现M个原始报文以及R个冗余报文的传输。
本申请实施例提供的方法,通过直接在第一网络设备的目标硬件引擎中对第一数据流中的M个原始报文进行FEC编码,而无需在处理器中进行FEC编码,因此,可以降低对CPU的开销,提高第一网络设备的编码效率,进而可以使得第一网络设备在传输报文过程中容易满足大吞吐量的要求。并且,第一网络设备可以对编码参数进行上述的动态调整,从而可以通过调整编码参数,来提高第一网络设备的编码效率。
当第二网络设备获取到编码流后,若编码流中的原始FEC报文有丢失,则第二网络设备可以通过对未丢失的FEC报文进行解码,以恢复丢失的FEC报文。该处理过程可以是:第二网络设备在获取到任一编码流以后,可以将该任一编码流存储在内存;若该任一编码流中任一组FEC报文中的原始FEC报文的个数小于编码时的原始报文量M时,说明该任一组FEC报文在传输过程中存在丢包情况,则第二网络设备内的处理器可以生成用于指示对任一组FEC报文进行解码的解码任务,处理器可以将该解码任务下发至内存;由第二网络设备内的目标硬件引擎读取内存中的解码任务,并根据编码任务对内存中存储的任一组FEC报文进行FEC编码,恢复任一组FEC报文中丢失的原始报文,目标硬件引擎再将恢复的原始报文存储至内存;然后,处理器可以从内存中获取任一组FEC报文中未丢失的原始FEC报文和恢复出的原始报文,并将除去未丢失的原始FEC报文的FEC报文头,得到未丢失的原始报文。为了进一步说明该处理过程,参见图12所示本申请实施例提供的一种报文处理方法的流程图,其中,该第二网络设备可以包括处理器以及目标硬件引擎,该方法的流程包括步骤1201-1213。
1201、处理器从接收到的第一数据流中获取第一组FEC报文,该第一组FEC报文中所有FEC报文具有相同的FEC报文头,该FEC报文头中包括FEC编码的原始报文量M。
该第二网络设备可以获取多个编码流,该第一数据流可以是该对个编码流中任一编码流,该第一数据流可以由多组FEC报文组成,第一组FEC报文为该多组FEC报文中的任一组FEC报文,该第一组FEC报文包括第一网络终端进行一次编码所输出的M个原始FEC报文以及R个冗余FEC报文。
当该第二网络设备开始接收该第一数据流时,该第二网络设备每接收到该第一数据流中的一个FEC报文,将该一FEC报文存储在该第二网络设备的内存中,在一些可能的实现方式中,第二网络设备的GE/GXE网络端口接收该FEC报文,并将该FEC报文发送至该第二网络设备内的PPE,PPE将该FEC报文存储在内存中,并记录下该FEC报文的存储地址,向该第二网络终端的NP引擎发送存储完成消息,该储完成消息携带该FEC报文的存储地址。当NP引擎接收到该存储完成消息后,可以将该存储完成消息发送至该第二网络设备的CPU中的协议栈,因此,UDP代理可以从协议栈中收集各个存储完成消息,并将收集的存储完成消息发送至第二网络设备的FEC软件接口,该FEC软件接口每经过第三预设时长,获取到各个存储完成消息,FEC软件接口根据各个存储消息携带的存储地址,读取内存对应的存储地址处的FEC报文的报文头,得到多个报文头,并对多个报文头进行比较,得到相同的报文头,并将具有相同报文头的FEC报文确定为一组FEC报文,也即是,对于该第一数据流中的FEC报文,第二网络设备每经过一个第三预设时长,将内存在该第三预设时长内新存储的FEC报文中具有相同FEC报文头的报文作为第一组FEC报文,本申请实施例对该第三预设时长不做具体限定。由于FEC报文头中携带目标标识,目标标识用于指示编码的次数,在一些可能的实现中,当多个FEC报文的报文头中目标标识相同时,也可以说明这多个FEC报文为同一次编码后得到的报文,也即是一组FEC报文。
1202、当该第一组FEC报文中原始报文的个数小于原始报文量M时,该处理器根据该第一组FEC报文,生成第一解码任务,该第一解码任务用于指示对该第一组FEC报文进行解码。
本步骤1202可以由处理器中的FEC软件接口来执行,当FEC软件接口确定完该第一组FEC报文后,该第二网络设备可以从该第一组FEC报文中的一个报文的报文头中获取到编码参数,该编码参数中的原始报文量M,也即是第一组FEC报文初始包括的原始FEC报文的报文量。由于每个原始FEC报文对应一个编码时的一个原始报文,因此当该第一组FEC报文中中原始FEC报文的报文量小于原始报文量M时,也即是该第一组FEC报文中原始报文的个数小于原始报文量M,说明第一组FEC报文中的至少一个原始FEC报文丢失,也即是在由第一网络设备将该第一组FEC报文传输至第二网络设备的过程中,丢失了部分原始FEC报文,也即是丢失编码时的原始报文。为了恢复编码前的第一数据流,FEC软件接口可以生成第一解码任务,以便目标硬件引擎根据第一解码任务,对第一组FEC报文中未丢失的FEC报文进行解码,以恢复丢失的原始FEC报文。
该第一解码任务包括该第一组FEC报文的存储地址或该第一组FEC报文,以便目标硬件引擎可以根据该第一组FEC报文的存储地址,从内存中获取该第一组FEC报文,或者,以便目标硬件引擎可以直接从第一解码任务中获取该第一组FEC报文。当该第一数据流具有优先级时,所述第一解码任务还可以包括该第一数据流的优先级。
当多个FEC报文中的原始FEC报文的报文量等于编码参数中的原始报文量M时,说明第一组FEC报文中的原始FEC报文没有丢失,则第二网络设备可以执行下述步骤1211。
1203、处理器将第一解码任务存储在第二目标发送队列,第二目标发送队列用于存储第二网络设备的待处理数据流的解码任务,网络设备的待处理数据流包括第一数据流。
本步骤1203可以由该处理器中FEC软件接口来执行。在本步骤1203中的待处理数据流也即是待处理的编码流。该第二网络设备可以预设多个发送队列,每个发送队列用于存储述第二网络设备的待处理数据流的解码任务,该第二目标发送队列可以是该多个发送队列中的任一队列。该多个发送队列可以位于第二网络设备的内存、处理器以及目标硬件引擎中的任一个。
在一些可能的实现中,该第二网络设备可以为每个发送队列设置一个优先级,每个发送队列用于存储相同优先级的数据流的解码任务。在一些可能的实现方式中,本步骤1203可以包括:根据第一数据流的优先级,处理器将第一解码任务添加在第二目标发送队列中,第二目标发送队列的优先级与第一数据流的优先级相等。处理器将第一解码任务添加在第二目标发送队列的过程与步骤803中处理器将第一编码任务添加在第一目标发送队列的过程同理,在此,本申请实施例对将第一解码任务添加在第二目标发送队列的具体过程不做赘述。
1204、目标硬件引擎从第二目标发送队列中读取第一解码任务。
目标硬件引擎可以先按照优先级的高低轮询该内存中的每个第二发送队列,以便确定目标硬件引擎是否要从该第二目标发送队列,在一些可能的实现方式中,目标硬件引擎根据各个发送队列的优先级的高低,依次查询各个发送队列中是否有解码任务,各个发送队列中的每一个队列对应一个优先级;在各个发送队列中,当比第二目标发送队列的优先级高的队列内没有其他解码任务时,目标硬件引擎从第二目标发送队列中读取第一解码任务。
该目标硬件引擎通过轮询各个发送队列获取第一解码任务的过程与步骤804中目标硬件引擎通过轮询各个发送队列获取第一编码任务的过程同理,在此,本申请实施例对通过轮询各个发送队列获取第一解码任务的过程不做赘述。
1205、目标硬件引擎根据该第一解码任务中的第一组FEC报文的存储地址,从内存中获取该第一组FEC报文。
本步骤1205所示的过程与步骤805所示的过程同理,在此,本申请实施例对本步骤1205不做赘述。在一些可能的实现中,当该第一解码任任务中携带该第一组FEC报文时,该目标硬件引擎可以直接从该第一解码任务中获取该第一组FEC报文,而无需从内存中获取。其中,目标硬件引擎获取的第一组FEC报文,也即是第一组FEC报文中未丢失的FC报文,包括未丢失的原始FEC报文和未丢失的冗余FEC报文。
1206、目标硬件引擎对对该第一组FEC报文中的原始报文以及该原始报文的冗余报文进行FEC解码,得到该第一组FEC报文中丢失的原始报文。
当该目标硬件引擎获取到第一组FEC报文时,该目标硬件引擎内的数据处理单元,可以去除第一组FEC报文中的原始FEC报文的报文头以及冗余FEC报文的报文头,得到多个等长报文报文和至少一个冗余报文,每个等长报文也即是第一组FEC报文中丢失的一个原始报文;该数据处理单元可以将多个等长报文和至少一个冗余报文组成恢复矩阵后,并将恢复矩阵发送至编解码单元,矩阵生成器构建对应的目标校验矩阵,将对应的目标校验矩阵发送至编解码单元;由编解码单元将对应的目标校验矩阵的逆矩阵与该恢复矩阵进行乘法计算,得到待编码矩阵;再根据FEC报文头中各个等长报文的序列号以及冗余报文的序列号,可以确定哪些等长报文丢失,哪些冗余报文丢失,也即是哪些原始FEC报文丢失或哪些冗余FEC报文丢失,从而可以从待编码矩阵中获取丢失的等长报文,从而得到丢失的原始报文,以实现本步骤1206。在图2中介绍了目标检验矩阵的逆矩阵与该恢复矩阵进行乘法计算的过程,在此本申请实施例对该过程不做赘述。
其中,矩阵生成器构建对应的目标检验矩阵的过程为:目标硬件引擎内的控制器根据报文头中的编码参数中的冗余报文量R,确定丢失的冗余FEC报文的报文量,丢失的冗余FEC报文的报文量为冗余报文量R与多个FEC报文中冗余FEC报文的报文量的差值;控制器根据FEC报文头中的编码参数中的原始报文量M以及多个FEC报文中原始FEC报文的报文量,确定丢失的原始FEC报文的报文量,丢失的原始FEC报文的报文量为原始报文量M与多个FEC报文中原始FEC报文的报文量的差值;控制器将丢失的冗余FEC报文的报文量和丢失的原始FEC报文的报文量发送至矩阵生成器,矩阵生成器根据丢失的冗余FEC报文的报文量和丢失的原始FEC报文的报文量,构建对应的目标校验矩阵,并将对应的目标校验矩阵发送至编解码单元。
步骤1205-1206所示的过程也即是根据该第一解码任务,对该第一组FEC报文中的原始报文以及该原始报文的冗余报文进行FEC解码,得到该第一组FEC报文中丢失的原始报文的过程。
1207、目标硬件引擎将该第一组FEC报文中丢失的原始报文存储在内存。
本步骤1207与步骤807所示的过程同理,在此,本申请实施例对本步骤1207不做赘述。
1208、当该丢失的原始报文存储完成后,目标硬件引擎在第一解码任务中添加丢失的原始报文的存储地址,得到第一解码完成信息,第一编码完成信息用于指示第一组FEC报文解码完成。
第一解码完成信息携带丢失的原始报文的存储地址以及第一组FEC报文中的原始FEC报文,当第一数据流具有优先级时,第一解码完成信息还携带第一数据流的优先级。本步骤1208所示的过程与步骤808生成第一编码完成信息的过程同理,在此,本申请实施例对本步骤1208不做赘述。
1209、目标硬件引擎在第二目标接收队列添加第一解码完成信息,第二目标接收队列用于存储第二网络设备的待处理编码流的解码完成信息。
该第二网络设备可以预设多个接收队列,每个接收队列用于存储第二网络设备的待处理编码流的解码完成信息,该第二目标接收队列可以是该多个接收队列中的任一队列。该多个接收队列可以位于第二网络设备的内存、处理器以及目标硬件引擎中的任一个。
在一些可能的实现中,该第二网络设备可以为每个接收队列设置一个优先级,在一些可能的实现方式中,根据编码流的优先级,将第一解码完成信息添加在内存中的第二目标接收队列,第二目标接收队列的优先级等于编码流的优先级。具体地添加过程与步骤809中在第一目标接收队列添加第一编码完成信息的过程同理。
1210、处理器从第二目标接收队列中读取第一解码完成信息。
本步骤1210可以由该处理器内的FEC软件接口来执行。FEC软件接口可以按照优先级的高低轮询各个第二接收队列。FEC软件接口可以先通过轮询的方式,确定是否可以在该第二目标接收队列中,获取该第一解码完成信息,在一些可能的实现方式中,根据优先级的高低顺序,依次查询的各个第二接收队列中是否有其他解码完成信息,各个第二接收队列中的每一个队列对应一个优先级;在各个第二接收队列中,当比第二目标接收队列的优先级高的队列内没有其他解码完成信息时,从第二目标接收队列中,获取解码完成信息。本步骤1210的FEC软件接口轮询各个接收队列的过程与步骤810中FEC软件接口轮询各个接收队列的过程同理。
1211、处理器根据第一解码完成信息,从内存中获取第一组FEC报文中的原始FEC报文以及丢失的原始报文。
本步骤1211所示的过程与步骤811中获取M个原始报文以及R个冗余报文的过程同理,在此,本申请实施例对本步骤1211不做赘述。
1212、处理器根据第一组FEC报文中的原始FEC报文以及丢失的原始报文,恢复与第一数据流编码前的数据流。
本步骤1212可以由该处理器内的FEC软件接口来执行。FEC软件接口可以先去除第一组FEC报文中未丢失的原始FEC报文的报文头,等到多个等长报文,再基于多个等长报文以及丢失的原始报文恢复第一数据流编码前的数据流,在一些可能的实现方式中,本步骤1212可以由下述步骤12A-12C所示的过程来实现。
步骤12A、对于第一组FEC报文中的原始FEC报文,FEC软件接口去除每个原始FEC报文的FEC报文头,得到多个等长报文。
步骤12B、FEC软件接口去除多个等长报文以及丢失的原始报文中填充的数据,得到第一数据流编码前的数据流中的M个原始报文。
步骤12C、FEC软件接口根据FEC报文头中携带的各个原始报文的序列号,按照序列号的大小,对M个原始报文进行排序,得到第一数据流编码前的数据流。
1213、处理器向第二终端发送该数据流。
本步骤1213与步骤8123同理,在此,本申请实施例对本步骤1213不做赘述。
为了进一步说明在解码过程中第二网络设备内的处理器、目标硬件引擎以及内存之间的交互情况,参见图13所示的本申请实施例提供的一种FEC解码的流程图,该流程具体包括步骤1301-1306。
步骤1301、UDP代理向FEC软件接口发送每个FEC报文的存储完成消息。
步骤1302、当FEC软件接口根据接收到一组FEC报文的存储完成消息后,若一组FEC报文中有原始FEC报文丢失,则根据接收到的一组FEC报文,生成第一解码任务,并将第一解码任务发送到内存的任务缓存中。
其中,该任务缓存包括多个发送队列和多个接收队列,FEC软件接口可以将第一解码任务发送到优先级对应的第二目标发送队列。
步骤1303、目标硬件引擎从任务缓存的第二目标发送队列中获取到第一解码任务,并根据第一解码任务中存储地址,从内存中读取一组FEC报文。
步骤1304、目标硬件引擎对读取到的一组FEC报文进行解码,得到丢失的原始报文,并将丢失的原始报文存储在内存中,并在内存的第二目标接收队列中添加第一解码完成信息。
步骤1305、FEC软件接口从任务缓存内的第二目标接收队列中读取第一解码完成信息,并根据第一解码完成信息,读取内存中的一组FEC报文以及丢失的原始报文,并去除一组FEC报文的报文头,得到等长报文。
步骤1306、FEC软件接口对等长报文进行处理,得到数据流,并输出数据流。
上述步骤1207-1213所示的过程为以目标处理引擎、内存以及处理器协同向第二终端发送的数据流过程。在一些可能的实现中,目标处理引擎还可以直接将第一组FEC报文以及丢失的原始报文发送至处理器,由处理器执行1212-1213所示的过程。在一些可能的实现中,目标处理引擎还可以自己执行1212-1213所示的过程。
本申请实施例提供的方法,通过直接在第二网络设备的目标硬件引擎中对第一组FEC报文中未丢失的FEC报文进行FEC解码,而无需在CPU中进行FEC解码,因此,可以降低对CPU的开销,提高第二网络设备的解码效率,进而可以使得第二网络设备在传输报文过程中容易满足大吞吐量的要求。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
本申请实施例提供的报文处理装置设备在对报文进行处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的报文处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (20)
1.一种报文处理方法,其特征在于,应用于包括处理器以及目标硬件引擎的网络设备,所述方法包括:
所述处理器根据待处理的第一数据流中的M个原始报文,生成第一编码任务,M为正整数,所述第一编码任务用于指示对所述M个原始报文进行编码;
所述目标硬件引擎根据所述第一编码任务,对所述M个原始报文进行前向纠错FEC编码,得到R个冗余报文,R为正整数。
2.根据权利要求1所述的方法,其特征在于,所述处理器根据待处理的第一数据流中的M个原始报文,生成第一编码任务之后,所述方法还包括:
所述处理器将所述第一编码任务存储在第一目标发送队列,所述第一目标发送队列用于存储所述网络设备的待处理数据流的编码任务,所述网络设备的待处理数据流包括所述第一数据流;
所述目标硬件引擎从所述第一目标发送队列中读取所述第一编码任务。
3.根据权利要求2所述的方法,其特征在于,所述处理器将所述第一编码任务存储在第一目标发送队列包括:
所述处理器根据所述第一数据流的优先级,将所述第一编码任务添加在所述第一目标发送队列中,所述第一目标发送队列的优先级与所述第一数据流的优先级相等。
4.根据权利要求2所述的方法,其特征在于,所述目标硬件引擎从所述第一目标发送队列中读取所述第一编码任务包括:
所述目标硬件引擎根据各个发送队列的优先级的高低顺序,依次查询各个发送队列中是否有编码任务,所述各个发送队列中的每一个队列对应一个优先级;
在所述各个发送队列中,当比所述第一目标发送队列的优先级高的队列内没有编码任务时,所述目标硬件引擎从所述第一目标发送队列中读取所述第一编码任务。
5.根据权利要求1所述的方法,其特征在于,所述处理器根据存储的待处理的第一数据流中的M个原始报文,生成第一编码任务之前,所述方法还包括:
所述网络设备将接收到的所述第一数据流中的原始报文存入所述网络设备的内存中;
若所述网络设备的内存中所述第一数据流的未编码的原始报文的报文量等于或大于M,所述处理器从所述第一数据流的未编码的原始报文中获取所述M个原始报文。
6.根据权利要求1至5任一所述的方法,其特征在于,所述第一编码任务包括所述M个原始报文的存储地址,或,所述第一编码任务包括M个原始报文的存储地址以及所述第一数据流的优先级,或,所述第一编码任务包括所述M个原始报文,或,所述第一编码任务包括所述M个原始报文以及所述第一数据流的优先级。
7.一种报文处理方法,其特征在于,应用于包括处理器以及目标硬件引擎的网络设备,所述方法包括:
所述处理器从接收到的第一数据流中获取第一组FEC报文,所述第一组FEC报文中所有FEC报文具有相同的FEC报文头,所述FEC报文头中包括FEC编码的原始报文量M;
当所述第一组FEC报文中原始报文的个数小于所述原始报文量M时,所述处理器根据所述第一组FEC报文,生成第一解码任务,所述第一解码任务用于指示对所述第一组FEC报文进行解码;
所述目标硬件引擎根据所述第一解码任务,对所述第一组FEC报文中的原始报文以及所述原始报文的冗余报文进行FEC解码,得到所述第一组FEC报文中丢失的原始报文。
8.根据权利要求7所述的方法,其特征在于,所述处理器根据所述第一组FEC报文,生成第一解码任务之后,所述方法还包括:
所述处理器将所述第一解码任务存储在第二目标发送队列,所述第二目标发送队列用于存储所述网络设备的待处理数据流的解码任务,所述网络设备的待处理数据流包括所述第一数据流;
所述目标硬件引擎从所述第二目标发送队列中读取所述第一解码任务。
9.根据权利要求8所述的方法,其特征在于,所述处理器将所述第一解码任务存储在第二目标发送队列包括:
根据所述第一数据流的优先级,所述处理器将所述第一解码任务添加在所述第二目标发送队列中,所述第二目标发送队列的优先级与所述第一数据流的优先级相等。
10.根据权利要求8所述的方法,其特征在于,所述目标硬件引擎从所述第二目标发送队列中读取所述第一解码任务包括:
所述目标硬件引擎根据各个发送队列的优先级的高低,依次查询所述各个发送队列中是否有解码任务,所述各个发送队列中的每一个队列对应一个优先级;
在所述各个发送队列中,当比所述第二目标发送队列的优先级高的队列内没有其他解码任务时,所述目标硬件引擎从所述第二目标发送队列中读取所述第一解码任务。
11.一种报文处理装置,其特征在于,所述装置包括:
处理器,用于根据待处理的第一数据流中的M个原始报文,生成第一编码任务,M为正整数,所述第一编码任务用于指示对所述M个原始报文进行编码;
目标硬件引擎,用于根据所述第一编码任务,对所述M个原始报文进行前向纠错FEC编码,得到R个冗余报文,R为正整数。
12.根据权利要求11所述的装置,其特征在于,所述处理器,还用于将所述第一编码任务存储在第一目标发送队列,所述第一目标发送队列用于存储所述装置的待处理数据流的编码任务,所述装置的待处理数据流包括所述第一数据流;
所述目标硬件引擎,还用于从所述第一目标发送队列中读取所述第一编码任务。
13.根据权利要求12所述的装置,其特征在于,所述处理器,用于根据所述第一数据流的优先级,将所述第一编码任务添加在所述第一目标发送队列中,所述第一目标发送队列的优先级与所述第一数据流的优先级相等。
14.根据权利要求13所述的装置,其特征在于,所述目标硬件引擎用于:
所述目标硬件引擎根据各个发送队列的优先级的高低顺序,依次查询所述各个发送队列中是否有编码任务,所述各个发送队列中的每一个队列对应一个优先级;
在所述各个发送队列中,当比所述第一目标发送队列的优先级高的队列内没有编码任务时,从所述第一目标发送队列中读取所述第一编码任务。
15.一种报文处理装置,其特征在于,所述装置包括处理器和目标硬件引擎;
所述处理器,用于从接收到的第一数据流中获取第一组FEC报文,所述第一组FEC报文中所有FEC报文均有相同的FEC报文头,所述FEC报文头中包括FEC编码的原始报文量M;
当所述第一组FEC报文中原始报文的个数小于所述原始报文量M时,根据所述第一组FEC报文,生成第一解码任务,所述第一解码任务用于指示对所述第一组FEC报文进行解码;
所述目标硬件引擎,用于根据所述第一解码任务,对所述第一组FEC报文中的原始报文以及所述原始报文的冗余报文进行FEC解码,得到所述第一组FEC报文中丢失的原始报文。
16.根据权利要求15所述的装置,其特征在于,所述处理器,还用于将所述第一解码任务存储在第二目标发送队列,所述第二目标发送队列用于存储所述装置的待处理数据流的解码任务,所述装置的待处理数据流包括所述第一数据流;
所述目标硬件引擎,还用于从所述第二目标发送队列中读取所述第一解码任务。
17.根据权利要求16所述的装置,其特征在于,所述处理器,用于根据所述第一数据流的优先级,所述处理器将所述第一解码任务添加在所述第二目标发送队列中,所述第二目标发送队列的优先级与所述第一数据流的优先级相等。
18.根据权利要求16所述的装置,其特征在于,所述目标硬件引擎用于:
根据各个发送队列的优先级的高低,依次查询所述各个发送队列中是否有解码任务,所述各个发送队列中的每一个队列对应一个优先级;
在所述各个发送队列中,当比所述第二目标发送队列的优先级高的队列内没有其他解码任务时,从所述第二目标发送队列中读取所述第一解码任。
19.一种芯片,其特征在于,包括处理器和目标硬件引擎,所述处理器用于实现如权利要求1-6任一所述的方法中的处理器,所述目标硬件引擎用于实现如权利要求1-6任一所述的方法中的目标硬件引擎。
20.一种芯片,其特征在于,包括处理器和目标硬件引擎,所述处理器用于实现如权利要求7-10任一所述的方法中的处理器,所述目标硬件引擎用于实现如权利要求7-10任一所述的方法中的目标硬件引擎。
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022513649A JP2022546102A (ja) | 2019-09-10 | 2020-09-10 | パケット処理方法および装置、ならびにチップ |
KR1020227005436A KR20220033055A (ko) | 2019-09-10 | 2020-09-10 | 패킷 처리 방법 및 장치 그리고 칩 |
MX2022002813A MX2022002813A (es) | 2019-09-10 | 2020-09-10 | Metodo y aparato de procesamiento de paquetes y chip. |
PCT/CN2020/114586 WO2021047606A1 (zh) | 2019-09-10 | 2020-09-10 | 报文处理方法、装置以及芯片 |
EP20862858.6A EP3996302B1 (en) | 2019-09-10 | 2020-09-10 | Message processing method and apparatus, and chip |
US17/684,729 US11695502B2 (en) | 2019-09-10 | 2022-03-02 | Packet processing method and apparatus, and chip |
US18/320,860 US20230299878A1 (en) | 2019-09-10 | 2023-05-19 | Packet Processing Method and Apparatus, and Chip |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2019108543672 | 2019-09-10 | ||
CN201910854367 | 2019-09-10 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112564855A true CN112564855A (zh) | 2021-03-26 |
Family
ID=75030255
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911205835.XA Pending CN112564855A (zh) | 2019-09-10 | 2019-11-29 | 报文处理方法、装置以及芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112564855A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115344522A (zh) * | 2022-10-14 | 2022-11-15 | 井芯微电子技术(天津)有限公司 | 消息转换通道、消息转换装置、电子设备和交换设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102111233A (zh) * | 2009-12-28 | 2011-06-29 | 华为软件技术有限公司 | 一种fec数据的处理方法、装置及系统 |
US20110219279A1 (en) * | 2010-03-05 | 2011-09-08 | Samsung Electronics Co., Ltd. | APPLICATION LAYER FEC FRAMEWORK FOR WiGig |
CN102356585A (zh) * | 2011-08-19 | 2012-02-15 | 华为技术有限公司 | 一种光传输模块和光信号传输装置 |
CN102595252A (zh) * | 2011-01-11 | 2012-07-18 | 中兴通讯股份有限公司 | 流媒体前向纠错实现方法及系统 |
US20150254129A1 (en) * | 2014-03-05 | 2015-09-10 | International Business Machines Corporation | Error Checking and Correction for NAND Flash Devices |
US20160294508A1 (en) * | 2013-11-15 | 2016-10-06 | Hitachi, Ltd. | Communication Device, System and Method |
-
2019
- 2019-11-29 CN CN201911205835.XA patent/CN112564855A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102111233A (zh) * | 2009-12-28 | 2011-06-29 | 华为软件技术有限公司 | 一种fec数据的处理方法、装置及系统 |
US20110219279A1 (en) * | 2010-03-05 | 2011-09-08 | Samsung Electronics Co., Ltd. | APPLICATION LAYER FEC FRAMEWORK FOR WiGig |
CN102595252A (zh) * | 2011-01-11 | 2012-07-18 | 中兴通讯股份有限公司 | 流媒体前向纠错实现方法及系统 |
CN102356585A (zh) * | 2011-08-19 | 2012-02-15 | 华为技术有限公司 | 一种光传输模块和光信号传输装置 |
US20160294508A1 (en) * | 2013-11-15 | 2016-10-06 | Hitachi, Ltd. | Communication Device, System and Method |
US20150254129A1 (en) * | 2014-03-05 | 2015-09-10 | International Business Machines Corporation | Error Checking and Correction for NAND Flash Devices |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115344522A (zh) * | 2022-10-14 | 2022-11-15 | 井芯微电子技术(天津)有限公司 | 消息转换通道、消息转换装置、电子设备和交换设备 |
CN115344522B (zh) * | 2022-10-14 | 2023-01-03 | 井芯微电子技术(天津)有限公司 | 消息转换通道、消息转换装置、电子设备和交换设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108667739B (zh) | 拥塞控制方法、装置及系统 | |
US6320520B1 (en) | Information additive group code generator and decoder for communications systems | |
US7233264B2 (en) | Information additive code generator and decoder for communication systems | |
WO2017161999A1 (zh) | 一种报文处理的方法及相关设备 | |
US9100180B2 (en) | Method, device and communication system for retransmission based on forward error correction | |
JP4211282B2 (ja) | データ蓄積方法及びデータ蓄積システム、並びに、データ記録制御装置、データ記録指令装置、データ受信装置及び情報処理端末 | |
US8195821B2 (en) | Autonomous information processing apparatus and method in a network of information processing apparatuses | |
WO2020210779A2 (en) | Coded data chunks for network qualitative services | |
JP2004180092A (ja) | 情報処理装置および情報処理方法、並びにコンピュータ・プログラム | |
CN112564855A (zh) | 报文处理方法、装置以及芯片 | |
WO2009087774A1 (ja) | ネットワークカードおよび情報処理装置 | |
WO2021047606A1 (zh) | 报文处理方法、装置以及芯片 | |
Shokrollahi | Theory and applications of Raptor codes | |
CN112564856A (zh) | 报文处理方法、装置以及计算机可读存储介质 | |
JP7483867B2 (ja) | パケット処理方法及び装置、及びコンピュータ記憶媒体 | |
WO2012116564A1 (zh) | 编码包转发方法、编码包接收处理方法和转发节点 | |
Jing et al. | A packet loss protection scheme joint deterministic network coding and random linear network coding for H. 264/AVC | |
Saxena et al. | Dare: Dof-aided random encoding for network coding over lossy line networks | |
Saxena et al. | Network coded multicast and multi-unicast over satellite | |
Chong et al. | Stepping-random code: a rateless erasure code for short-length messages | |
Cabrera-Medina et al. | Video transmission in multicast networks using network coding | |
Fiandrotti et al. | Band codes: Controlled complexity network coding for Peer-to-Peer video streaming | |
Wang et al. | An Efficient Transmission Scheme for Media Content Distribution Platform | |
Zheng et al. | Joint Sender/Receiver Optimization Algorithm for Multi-Path Video Streaming Using High Rate Erasure Resilient Code |
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 |