CN116032861A - 一种报文处理方法及装置 - Google Patents
一种报文处理方法及装置 Download PDFInfo
- Publication number
- CN116032861A CN116032861A CN202310028982.4A CN202310028982A CN116032861A CN 116032861 A CN116032861 A CN 116032861A CN 202310028982 A CN202310028982 A CN 202310028982A CN 116032861 A CN116032861 A CN 116032861A
- Authority
- CN
- China
- Prior art keywords
- packet
- information
- memory
- descriptor
- sending
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 36
- 238000000034 method Methods 0.000 claims abstract description 39
- 230000008569 process Effects 0.000 claims abstract description 17
- 238000012545 processing Methods 0.000 claims description 42
- 238000010586 diagram Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000010921 in-depth analysis Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提出一种报文处理方法及装置,包括:在信息收发模块接收到报文包时,若收包队列处于非拥挤状态,信息收发模块将报文包的报文头写入第一目标地址段,将报文包的报文主体写入第二目标地址段;信息收发模块将第一地址信息和第二地址信息写入第一目标收包描述符;信息收发模块将第一目标收包描述符标记为占用状态;处理器在按照预设顺序对处于占用状态的收包描述符所对应的报文头进行处理后,基于收包描述符对应的第一地址信息和第二地址信息更新发包队列,以完成报文转发。处理器访问第一存储器的时延小于处理器访问第二存储器的时延。可以降低处理器的访存时延,进而提升整体的转发效率。
Description
技术领域
本申请涉及通信技术领域,具体而言,涉及一种报文处理方法及装置。
背景技术
随着科学技术的进步,尤其是通信技术的进步,对数据报文的接收、处理和转发越来越受到关注。例如,目前通信技术发展迅速,人们对于通信速率的要求越来越高,需要其具备高速率的特点。极快的网速可以给用户提供高速上传和下载的体验。并且通信网络也将承载越来越多的丰富的业务,在此基础上,必然产生大量的数据流量,对网络转发处理性能提出更高的要求和挑战。
因此,如何提升网络转发处理性能,成为了本领域技术人员所关注的难题。
发明内容
本申请的目的在于提供一种报文处理方法及装置,以至少部分改善上述问题。
为了实现上述目的,本申请实施例采用的技术方案如下:
第一方面,本申请实施例提供一种报文处理方法,应用于报文处理装置,所述报文处理装置包括信息收发模块、处理器、第一存储器以及第二存储器,所述第二存储器中设置有收包队列,所述收包队列包括预先配置的收包描述符,所述方法包括:
在所述信息收发模块接收到报文包时,若所述收包队列处于非拥挤状态,所述信息收发模块将所述报文包的报文头写入第一目标地址段,将所述报文包的报文主体写入第二目标地址段,其中,所述第一目标地址段属于第一存储器,所述第二目标地址段属于第二存储器;
所述信息收发模块将第一地址信息和第二地址信息写入第一目标收包描述符,其中,所述第一目标收包描述符为收包队列中当前处于空闲状态的任意一个收包描述符,所述第一地址信息为所述报文头的写入地址的标识信息,所述第二地址信息为所述报文主体的写入地址的标识信息;
所述信息收发模块将所述第一目标收包描述符标记为占用状态;
所述处理器在按照预设顺序对处于占用状态的收包描述符所对应的报文头进行处理后,基于所述收包描述符对应的第一地址信息和第二地址信息更新发包队列,以完成报文转发。
第二方面,本申请实施例提供一种报文处理方法,应用于报文处理装置,所述报文处理装置包括信息收发模块、处理器、第一存储器以及第二存储器,所述第二存储器中设置有发包队列,所述发包队列包括预先配置的发包描述符,所述方法包括:
所述处理器对处于占用状态的收包描述符的报文头进行处理后,将所述收包描述符对应的第一地址信息和第二地址信息写入第一目标发包描述符;
其中,初始写入所述第一目标发包描述符中的第一地址信息属于所述第一存储器,所述第一地址信息为所述收包描述符对应的报文头的写入地址的标识信息,所述第二地址信息为所述收包描述符对应的报文主体的写入地址的标识信息,所述第一目标发包描述符为发包队列中当前处于空闲状态的任意一个发包描述符;
所述处理器将所述第一目标发包描述符调整为占用状态;
所述信息收发模块在所述发包队列处于拥挤状态时,将差额数量的第二目标发包描述符对应的报文头搬移至所述第二存储器,其中,所述第二目标发包描述符为处于占用状态且排序靠后的发包描述符;
所述信息收发模块对所述第二目标发包描述符中的第一地址信息进行更新,更新后的第二目标发包描述符中的第一地址信息属于所述第二存储器;
所述信息收发模块基于预设顺序对所述发包队列中处于占用状态的发包描述符进行报文转发。
第三方面,本申请实施例提供一种装置,该装置包括:信息收发模块、处理器、第一存储器以及第二存储器,所述装置可以执行上述的报文处理方法。
相对于现有技术,本申请实施例所提供的一种报文处理方法及装置,包括:在信息收发模块接收到报文包时,若收包队列处于非拥挤状态,信息收发模块将报文包的报文头写入第一目标地址段,将报文包的报文主体写入第二目标地址段,其中,第一目标地址段属于第一存储器,第二目标地址段属于第二存储器;信息收发模块将第一地址信息和第二地址信息写入第一目标收包描述符,其中,第一目标收包描述符为收包队列中当前处于空闲状态的任意一个收包描述符,第一地址信息为报文头的写入地址的标识信息,第二地址信息为报文主体的写入地址的标识信息;信息收发模块将第一目标收包描述符标记为占用状态;处理器在按照预设顺序对处于占用状态的收包描述符所对应的报文头进行处理后,基于收包描述符对应的第一地址信息和第二地址信息更新发包队列,以完成报文转发。处理器访问第一存储器的时延小于处理器访问第二存储器的时延。可以降低处理器的访存时延,进而提升整体的转发效率。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它相关的附图。
图1为本申请实施例提供的报文处理装置的结构示意图;
图2为本申请实施例提供的报文处理方法的流程示意图之一;
图3为本申请实施例提供的报文处理方法的流程示意图之二;
图4为本申请实施例提供的报文处理方法的流程示意图之三;
图5为本申请实施例提供的报文处理方法的流程示意图之四;
图6为本申请实施例提供的报文处理方法的流程示意图之五;
图7为本申请实施例提供的报文处理方法的流程示意图之六。
图中:10-信息收发模块;20-处理器;30-第一存储器;40-第二存储器。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
在本申请的描述中,需要说明的是,术语“上”、“下”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该申请产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。
在本申请的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
本申请实施例提供了一种报文处理装置,例如路由器设备或智能网卡设备。请参照图1,报文处理装置的结构示意图。报文处理装置包括信息收发模块10、处理器20、第一存储器30以及第二存储器40,处理器20分别与信息收发模块10、第一存储器30以及第二存储器40通信连接,信息收发模块10分别与第一存储器30、第二存储器40通信连接。可选地,信息收发模块10、处理器20、第一存储器30以及第二存储器40通过总线连接。第一存储器30例如为静态随机存储器(简称,SRAM),第二存储器40例如为动态随机存取存储器(又称为内存或DRAM),第二存储器40具体可以选择DDR。处理器20访问第一存储器30的时延小于处理器20访问第二存储器40的时延。
处理器20可以是中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
信息收发模块10可以是一种硬件设备,例如现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或网卡。应理解,信息收发模块10可以直接访问第一存储器30和第二存储器40。
在一种可选的场景下,本申请实施例提供的报文处理装置的工作流程如下。
第一步,信息收发模块10完成线路侧报文接收和上送;
第二步,信息收发模块10将报文存入DDR;
第三步,处理器20通过软件感知报文接收;
第四步,处理器20通过软件解析报文;
第五步,处理器20通过软件进行业务查表;
第六步,处理器20通过软件进行业务处理(例如流学习、统计、深度解析、安全策略以及加解密等);
第七步,处理器20通过软件进行转发决策(例如确定转发的网口);
第八步,处理器20通过软件进行报文编辑(例如对报文头进行编辑);
第九步,处理器20通过软件下发处理后的报文,通过信息收发模块10完成报文发送。
在上述流程中,由于报文接收之后需要基于报文头信息进行识别,再进行软件查表转发。报文头通常在存储器件,比如DDR中,DDR为DRAM中的一种。处理器20(CPU)访问DRAM存在时延,如果需要处理的报文速率较高,比如达到Mpps级别,CPU访存时延是影响转发性能的关键点。
在一种可选的场景下,为了提升转发效率,可以将将部分关键业务卸载到硬件(信息收发模块10)中执行,信息收发模块10完成解析查表报文编辑等事项。
但是,路由器业务规格较大,硬件表项通常存放在SRAM,导致硬件代价较高。并且该方式只能卸载一部分业务,比如接入路由器硬件表项通常在MB(million byte)级别以下,大量的业务表项还是在DDR上,DDR上的表项条目可以轻易达到M/甚至是G级别,大部分业务还是只能上送CPU处理,导致整体的转发效率仍然较低。
为了克服以上问题,本申请实施例提供了一种报文处理方法,其基于前后级第一存储器30和第二存储器40的报文转发架构,配合收包专用的CPU Core进行收包或发包任务分发,可有效提升软转发的整体性能。
在本申请实施例中,第二存储器40中设置有收包队列和发包队列,收包队列包括预先配置的收包描述符,发包队列包括预先配置的发包描述符。
可选地,在第一存储器30设置有队列空间,可以是循环队列(Ring Buffer),用于存储一部分报文包的报文头(header)。
应当理解的是,图1所示的结构仅为报文处理装置的部分的结构示意图,报文处理装置还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。
本申请实施例提供的一种报文处理方法,可以但不限于应用于图1所示的报文处理装置,具体的流程,请参考图2,报文处理方法包括:S115、S117、S118以及S211,具体阐述如下。
S115,在信息收发模块接收到报文包时,若收包队列处于非拥挤状态,信息收发模块将报文包的报文头写入第一目标地址段,将报文包的报文主体写入第二目标地址段。
其中,第一目标地址段属于第一存储器,第二目标地址段属于第二存储器。
需要说明的是,在处理器20进行业务处理时,仅需要对报文包中的报文头进行编辑。信息收发模块10将报文包的报文头写入第一存储器30中的第一目标地址段,将报文包的报文主体写入第二存储器40中的第二目标地址段。处理器20在进行处理时,可以直接访问第一存储器30,不需要访问第二存储器40,因为处理器20访问第一存储器30的时延小于处理器20访问第二存储器40的时延。所以通过S115可以降低处理器20的访存时延,进而提升整体的转发效率。
在一种可能的场景下,当报文包较短时,可能进行需要存储对应的报文头,不需要存储报文主体,则可以将第二目标地址段配置为空。
S117,信息收发模块将第一地址信息和第二地址信息写入第一目标收包描述符。
其中,第一目标收包描述符为收包队列中当前处于空闲状态的任意一个收包描述符,第一地址信息为报文头的写入地址的标识信息,第二地址信息为报文主体的写入地址的标识信息。
可选地,在收包队列中预先配置一定数量的收包描述符,每一个收包描述符均设置有第一字段和第二字段,第一字段用于填写第一地址信息,第二字段用于填写第二地址信息。以使处理器20在进行业务处理时,可以通过第一地址信息获取到收包描述符对应的报文头。第二地址信息用于在转发时获取报文主体(body)。
可选的,第一地址信息可以是用于存储报文头的存储地址段的起始地址,第二地址信息可以是用于存储报文主体的存储地址段的起始地址。在收包队列处于非拥挤状态的情况下,写入的第一地址信息属于第一存储器30,在收包队列处于拥挤状态的情况下,写入的第一地址信息可能属于第二存储器40,具体请见下文。因为在业务处理的过程中,处理器20并不需要使用报文主体,所以无论收包队列处于什么状态,写入的第二地址信息均属于第二存储器40。
可选的,信息收发模块10可以访问收包队列,进而知晓收包队列中各个收包描述符的当前状态。可选地,信息收发模块10在确定收包队列中最近一个切换为占用状态的收包描述符后,将排列在其后面的第一个处于空闲状态的收包描述符确定为第一目标收包描述符。
可选的,每一个收包描述符均设置有第三字段,第三字段用于存储偏移量,报文头的实际写入地址与存储报文头的存储地址段的起始地址的偏移量。应理解,处理器20在对报文头进行编辑时,报文头的长度可能会发生变化,例如变长或变短,所以需要在存储报文头的存储地址段预留一定的空间,即该偏移量。
通过将偏移量写入第一目标收包描述符,便于CPU处理时快速确定报文头开始部分。
可选地,第一偏移量表征报文头的实际写入地址与第一起始地址的偏移量;第二偏移量表征处理后的报文头的实际写入地址与第一起始地址的偏移量。
S118,信息收发模块将第一目标收包描述符标记为占用状态。
可选地,将第一目标收包描述符标记为占用状态的目的是,便于告知处理器20:第一目标收包描述符中地址段所存储的信息需要进行收包处理。
S211,处理器在按照预设顺序对处于占用状态的收包描述符所对应的报文头进行处理后,基于收包描述符对应的第一地址信息和第二地址信息更新发包队列,以完成报文转发。
可选地,信息收发模块10在更新完一批收包描述符的状态后,可以向处理器20发送第一类触发指令。处理器20(CPU)可以在收到第一类触发指令时或按照一个周期去确定收包队列中是否有占用状态的收包描述符,若有,则进行处理。
应理解,处理器20在进行处理时,可以直接访问第一存储器30,不需要访问第二存储器40,因为处理器20访问第一存储器30的时延小于处理器20访问第二存储器40的时延。可以降低处理器20的访存时延,进而提升整体的转发效率。
可选的,基于收包描述符对应的第一地址信息、第二地址信息以及第二偏移量更新发包队列,以完成报文转发。
综上所述,本申请实施例提供了一种报文处理方法,包括:在信息收发模块接收到报文包时,若收包队列处于非拥挤状态,信息收发模块将报文包的报文头写入第一目标地址段,将报文包的报文主体写入第二目标地址段,其中,第一目标地址段属于第一存储器,第二目标地址段属于第二存储器;信息收发模块将第一地址信息和第二地址信息写入第一目标收包描述符,其中,第一目标收包描述符为收包队列中当前处于空闲状态的任意一个收包描述符,第一地址信息为报文头的写入地址的标识信息,第二地址信息为报文主体的写入地址的标识信息;信息收发模块将第一目标收包描述符标记为占用状态;处理器在按照预设顺序对处于占用状态的收包描述符所对应的报文头进行处理后,基于收包描述符对应的第一地址信息和第二地址信息更新发包队列,以完成报文转发。处理器访问第一存储器的时延小于处理器访问第二存储器的时延。可以降低处理器的访存时延,进而提升整体的转发效率。
可选地,关于在接收到报文时,如何完成报文信息的写入,本申请实施例还提供了一种可选的实施方式,请参考图3,报文处理方法还包括:S111、S112、S113、S114以及S116,具体阐述如下。
S111,在信息收发模块接收到报文包时,信息收发模块确定收包队列是否处于拥挤状态。若是,则执行S113;若否,则执行S112。
可选地,在收包队列上可以设置一个状态标识位,用于表征收包队列是否处于拥挤状态,信息收发模块10可以通过读取状态标识位确定其是否处于拥挤状态,不需要重复计算门限比较。
若其处于拥挤状态,表示第一存储器30(SRAM)中存储的报文头信息较多,为了避免过分占用第一存储器30的资源,需要将报文头存储至第二存储器40(内存,DRAM)中,所以执行S113。若处于非拥挤状态,为了节省处理器20在进行业务处理时的访存时延,可以直接将将报文头存储至第一存储器30,即执行S112。
S112,信息收发模块将第一存储器中的第一目标地址段确定为报文头的写入地址。
可选地,报文处理装置中还设置有地址管理器,地址管理器可以查询收包队列和发包队列,基于其中的收包描述符和发包描述符的状态,确定是否已归还其占用的地址,进而可以确定出第一存储器30中的空闲地址段,将其作为第一目标地址。
S113,信息收发模块将第二存储器中的第三目标地址段确定为报文头的写入地址。
可选地,地址管理器可以查询收包队列和发包队列,基于其中的收包描述符和发包描述符的状态,确定是否已归还其占用的地址,进而可以确定出第二存储器40中的空闲地址段,将其作为第三目标地址。
S114,信息收发模块将第二存储器中的第二目标地址段确定为报文主体的写入地址。
可选地,地址管理器在接收到信息收发模块10对应的地址分发请求时,可以向其发送对应的第一目标地址段、第二目标地址段以及第三目标地址段。
需要说明的是S114可以在接收到报文时直接执行,也可以在S112或S113之前执行,也可以与其同步执行,在此并不限定其执行顺序。在执行S112和S114之后,执行S115;在执行S113和S114之后,执行S116。
S116,信息收发模块将报文包的报文头写入第三目标地址段,将报文包的报文主体写入第二目标地址段。
应理解,在处于拥挤状态时,信息收发模块10将报文包的报文头写入第三目标地址段,将报文包的报文主体写入第二目标地址段,以避免过多占用第一存储器30中的空间。
在收包队列处于拥挤状态下,关于如何进一步降低时延,本申请实施例还提供了一种可选的实施方式,请参考图4,在收包队列处于拥挤状态的情况下,报文处理方法还包括:S121和S122,具体阐述如下。
S121,若处理器将处于占用状态的收包描述符更新为空闲状态,则信息收发模块将第二目标收包描述符所对应的报文头从第二存储器搬移至第一存储器。
其中,第二目标收包描述符为所对应的报文头存储与第二存储器的描述符。
可选地,处理器20将处于占用状态的收包描述符更新为空闲状态,即处理器20在收包队列处于拥挤状态时归还了任意一个收包描述符,此时可以将第二目标收包描述符所对应的报文头从第二存储器40搬移至第一存储器30。具体地搬移目标地址可以是信息收发模块10向地址管理器请求获取的。
应理解,在搬移后,第二目标收包描述符所对应的报文头在第二存5储器40中的原占用地址就被释放归还了,处于空闲状态。
S122,信息收发模块对第二目标收包描述符中的第一地址信息进行更新。
可选地,将第二目标收包描述符中的第一地址信息由原占用地址的标识信息变更为搬移目标地址的标识信息。
0应理解,随着处理器20将处于占用状态的收包描述符更新为空闲状态,信息收发模块10会将所有的第二目标收包描述符所对应的报文头从第二存储器40搬移至第一存储器30。所以在处理器20进行业务处理时,始终访问的是第一存储器30,进而可以缩减时延,提升整体转发效率。
5应理解,在初始时刻,收包队列处于非拥挤状态,关于收包队列如何切换,本申请实施例还提供了一种可能的实现方式,请参考图5,报文处理方法还包括:S131和S132,具体阐述如下。
S131,在收包队列处于非拥挤状态的情况下,信息收发模块在监测量大于预设的第一阈值时,将收包队列标记为拥挤状态。
0其中,监测量为收包队列中处于占用状态的收包描述符的数量,或者为第一存储器中存储的报文头的数量,或者为报文包所占用的存储单元的数量。第一阈值可以是全局配置或per队列配置。
应理解,在收包队列处于非拥挤状态的情况下,报文头均写入第一存储器30中。
S132,在收包队列处于拥挤状态的情况下,信息收发模块在第二存储器中未存储收包描述符对应的报文头时,将收包队列标记为非拥挤状态。
可选地,在收包队列处于拥挤状态的情况下,新接收到的报文头均写入第二存储器40中,在经过S121的逐次搬移后,当第二存储器40中未存储收包描述符对应的报文头时,将收包队列标记为非拥挤状态。
需要说明的是,本申请实施例中报文主体可以存入第二存储器40上的一段连续空间,或者多段空间(地址的link-list)。当存储在多段空间时,收包描述符对应的第二地址信息可以包括多个子信息,每一个子信息分别表示一段空间的标识信息。
可选地,在第一存储器30和第二存储器40中按照收包队列设置有对应的RingBuffer用于存放报文头。Ring Buffer可以被划分为预设数量的子段,第一存储器30中的空闲的子段可以作为第一目标地址段,第二存储器40中的空闲的子段可以作为第三目标地址段。本申请实施例中的报文头和报文主体分开存储。每一个子段均设置有一个预留空间(Headroom),即偏移量,在收包写入报文头时,报文头从headroom后开始写入。
可选地,本申请实施例还提供了报文处理方法,请参考图6,报文处理方法还包括:S221、S222、S143、S144以及S146,具体阐述如下。
S221,处理器对处于占用状态的收包描述符的报文头进行处理后,将收包描述符对应的第一地址信息和第二地址信息写入第一目标发包描述符。
其中,初始写入第一目标发包描述符中的第一地址信息属于第一存储器,第二地址信息属于第二存储器,第一地址信息为收包描述符对应的报文头的写入地址的标识信息,第二地址信息为收包描述符对应的报文主体的写入地址的标识信息,第一目标发包描述符为发包队列中当前处于空闲状态的任意一个发包描述符。
可选的,处理器20可以访问发包队列,进而知晓发包队列中各个发包描述符的当前状态。可选地,处理器20在确定发包队列中最近一个切换为占用状态的发包描述符后,将排列在其后面的第一个处于空闲状态的发包描述符确定为第一目标发包描述符。
可选地,发包描述符也设置有第一字段、第二字段以及第三字段,其作用与上述收包描述符中的第一字段、第二字段以及第三字段相同。
应理解,处理器20最初写入第一目标发包描述符的第一字段中的第一地址信息属于第一存储器。即初始的报文头均存储与第一存储器30中。
在一种可能的实现方式中,处理器20还会将第二偏移量写入第一目标发包描述符的第三字段。
可选地,处理器20还会将转发决策(转发网口)写入第一目标发包描述符的第四字段。
S222,处理器将第一目标发包描述符调整为占用状态。
可选地,将第一目标发包描述符调整为占用状态的目的是,便于告知信息收发模块10:第一目标发包描述符中地址段所存储的信息需要进行发包处理。
应理解,信息收发模块10会按照发包队列中的排列顺序对处于占用状态的发包描述符进行发包处理。但是信息收发模块10的发包速度可能小于处理器20的收包速度,从可能导致发包队列处于拥挤状态。如果忽略该状态,可能会导致第一存储器30中的空间被过度占用,导致无法将新接收到的报文写入第一存储器30中,使得处理器20无法处理后续的报文。为了克服该问题,需要执行S143。
S143,信息收发模块在发包队列处于拥挤状态时,将差额数量的第二目标发包描述符对应的报文头搬移至第二存储器。
应理解,通过将差额数量的第二目标发包描述符对应的报文头从第一存储器30搬移至第二存储器40。可以释放第一存储器30的空间,用于接收新的报文信息,使得处理器20可以继续处理后续的报文。
可选地,信息收发模块10在什么情况下,会判断发包队列处于拥挤状态,本申请实施例还提供了一种可能的实现方。信息收发模块10可以按照预定周期对发包队列进行查询,通过轮询的凡是确定其状态。
应理解,不停的轮询会占用信息收发模块10的硬件资源,为了避免占用硬件资源,本申请实施例还提供了一种可能的实现方式,可以是处理器20在执行S222,更新发包描述符后,向信息收发模块10发送第二类触发指令,以使信息收发模块10判断发包队列是否处于拥挤状态。
在一种可能的场景下,第二类触发指令还包括当前更新的发包描述符的数量;进而信息收发模块10可以基于当前更新数量和原本剩余未发送的发包描述符的数量,确定出差额数量,将排序靠后的差额数量的搬移至第二存储器40。
应理解,搬移的目的地址可以是信息收发模块10向地址管理器发出请求,由地址管理器分配的差额数量的目的地址。
S144,信息收发模块对第二目标发包描述符中的第一地址信息进行更新,更新后的第二目标发包描述符中的第一地址信息属于第二存储器。
其中,第二目标发包描述符为处于占用状态且排序靠后的发包描述符。
应理解,为了保障发包内容的正确性,需要对第二目标发包描述符中的第一地址信息进行更新,具体地,将用新分配的目的地址替换其中第一字段中原始的第一地址信息,更新后的第二目标发包描述符中的第一地址信息属于第二存储器。
可选地,在完成更新后,可以释放第一存储器30的空间,原占用的地址空间就变为空闲可用状态,地址管理器可以再次对其进行分配。例如用于接收新的报文信息,使得处理器20可以继续处理后续的报文。
S146,信息收发模块基于预设顺序对发包队列中处于占用状态的发包描述符进行报文转发。
可选地,在完成报文转发后,可以归还对应的第一存储器30或第二存储器40中的占用空间,原占用的地址空间就变为空闲可用状态,地址管理器可以再次对其进行分配。
在图6的基础上,本申请实施例还提供了一种可选的实施方式,请参考图7,报文处理方法还包括:S141、S142以及S145,具体阐述如下。
S141,信息收发模块确定发包队列中第三目标发包描述符的数量是否大于预设的第二阈值。若是,则执行S142;若否,则执行S145。
其中,第三目标发包描述符为处于占用状态且对应的报文头存储于第一存储器的发包描述符。第二阈值可以是全局配置或per队列配置,当然地,也可以是固定值。
可选地,S141并不一定在S222之后执行,可以是在信息收发模块10接收到第二类触发指令时,执行S141。
S142,确定发包队列处于拥挤状态。
S145,确定发包队列处于非拥挤状态。
在S142之后,执行S143,在S145之后,可以直接执行S146。
可选地,S146和前述步骤之间是独立的,不论是否搬移,信息收发模块10都会基于预设顺序对发包队列中处于占用状态的发包描述符进行报文转发。
应理解,本申请提供的报文处理方法,通过专用集成电路硬件(ApplicationSpecific Integrated Circuit,ASIC)辅助,处理器20(CPU)在感知到报文接收的时候,报文头已经在第一存储器30(SRAM)中,CPU在完成发包DMA TX描述符填写后,硬件自动释放报文头所在SRAM空间。可以有效减少CPU处理报文时的访存时延,减少CPU等待时间,从而大大提高软转发效率,提高整体转发带宽。
下面提供一种报文处理装置,例如路由器设备或智能网卡设备。该报文处理装置如图1所示,可以实现上述的报文处理方法;具体的,该报文处理装置包括:信息收发模块10、处理器20、第一存储器30以及第二存储器40。处理器20可以是CPU。报文处理装置可以执行上述实施例的报文处理方法。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其它的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
Claims (10)
1.一种报文处理方法,其特征在于,应用于报文处理装置,所述报文处理装置包括信息收发模块、处理器、第一存储器以及第二存储器,所述第二存储器中设置有收包队列,所述收包队列包括预先配置的收包描述符,所述方法包括:
在所述信息收发模块接收到报文包时,若所述收包队列处于非拥挤状态,所述信息收发模块将所述报文包的报文头写入第一目标地址段,将所述报文包的报文主体写入第二目标地址段,其中,所述第一目标地址段属于第一存储器,所述第二目标地址段属于第二存储器;
所述信息收发模块将第一地址信息和第二地址信息写入第一目标收包描述符,其中,所述第一目标收包描述符为收包队列中当前处于空闲状态的任意一个收包描述符,所述第一地址信息为所述报文头的写入地址的标识信息,所述第二地址信息为所述报文主体的写入地址的标识信息;
所述信息收发模块将所述第一目标收包描述符标记为占用状态;
所述处理器在按照预设顺序对处于占用状态的收包描述符所对应的报文头进行处理后,基于所述收包描述符对应的第一地址信息和第二地址信息更新发包队列,以完成报文转发。
2.如权利要求1所述的报文处理方法,其特征在于,所述方法还包括:
在所述信息收发模块接收到报文包时,所述信息收发模块确定所述收包队列是否处于拥挤状态;
若收包队列处于非拥挤状态,则所述信息收发模块将所述第一存储器中的第一目标地址段确定为所述报文头的写入地址;
所述信息收发模块将所述第二存储器中的第二目标地址段确定为所述报文主体的写入地址。
3.如权利要求2所述的报文处理方法,其特征在于,所述方法还包括:
若收包队列处于拥挤状态,则所述信息收发模块将所述第二存储器中的第三目标地址段确定为所述报文头的写入地址;
所述信息收发模块将所述第二存储器中的第二目标地址段确定为所述报文主体的写入地址;
所述信息收发模块将所述报文包的报文头写入第三目标地址段,将所述报文包的报文主体写入第二目标地址段。
4.如权利要求3所述的报文处理方法,其特征在于,在所述收包队列处于拥挤状态的情况下,所述方法还包括:
若所述处理器将处于占用状态的收包描述符更新为空闲状态,则所述信息收发模块将第二目标收包描述符所对应的报文头从所述第二存储器搬移至所述第一存储器;
所述信息收发模块对所述第二目标收包描述符中的第一地址信息进行更新。
5.如权利要求1所述的报文处理方法,其特征在于,在所述收包队列处于非拥挤状态的情况下,所述方法还包括:
所述信息收发模块在监测量大于预设的第一阈值时,将所述收包队列标记为拥挤状态,其中,所述监测量为所述收包队列中处于占用状态的收包描述符的数量,或者为所述第一存储器中存储的报文头的数量,或者为报文包所占用的存储单元的数量。
6.如权利要求5所述的报文处理方法,其特征在于,在所述收包队列处于拥挤状态的情况下,所述方法还包括:
所述信息收发模块在所述第二存储器中未存储收包描述符对应的报文头时,将所述收包队列标记为非拥挤状态。
7.一种报文处理方法,其特征在于,应用于报文处理装置,所述报文处理装置包括信息收发模块、处理器、第一存储器以及第二存储器,所述第二存储器中设置有发包队列,所述发包队列包括预先配置的发包描述符,所述方法包括:
所述处理器对处于占用状态的收包描述符的报文头进行处理后,将所述收包描述符对应的第一地址信息和第二地址信息写入第一目标发包描述符;
其中,初始写入所述第一目标发包描述符中的第一地址信息属于所述第一存储器,所述第一地址信息为所述收包描述符对应的报文头的写入地址的标识信息,所述第二地址信息为所述收包描述符对应的报文主体的写入地址的标识信息,所述第一目标发包描述符为发包队列中当前处于空闲状态的任意一个发包描述符;
所述处理器将所述第一目标发包描述符调整为占用状态;
所述信息收发模块在所述发包队列处于拥挤状态时,将差额数量的第二目标发包描述符对应的报文头搬移至所述第二存储器,其中,所述第二目标发包描述符为处于占用状态且排序靠后的发包描述符;
所述信息收发模块对所述第二目标发包描述符中的第一地址信息进行更新,更新后的第二目标发包描述符中的第一地址信息属于所述第二存储器;
所述信息收发模块基于预设顺序对所述发包队列中处于占用状态的发包描述符进行报文转发。
8.如权利要求7所述的报文处理方法,其特征在于,在所述将差额数量的第二目标发包描述符对应的报文头搬移至所述第二存储器之前,所述方法还包括:
所述信息收发模块在所述发包队列中第三目标发包描述符的数量大于预设的第二阈值时,确定所述发包队列处于拥挤状态;
其中,所述第三目标发包描述符为处于占用状态且对应的报文头存储于所述第一存储器的发包描述符。
9.如权利要求8所述的报文处理方法,其特征在于,所述方法还包括:
在所述信息收发模块在所述发包队列处于非拥挤状态时,所述信息收发模块直接基于预设顺序对所述发包队列中处于占用状态的发包描述符进行报文转发。
10.一种报文处理装置,其特征在于,包括:信息收发模块、处理器、第一存储器以及第二存储器,所述报文处理用于执行权利要求1-9中任意一项所述的报文处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310028982.4A CN116032861B (zh) | 2023-01-09 | 2023-01-09 | 一种报文处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310028982.4A CN116032861B (zh) | 2023-01-09 | 2023-01-09 | 一种报文处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116032861A true CN116032861A (zh) | 2023-04-28 |
CN116032861B CN116032861B (zh) | 2025-03-07 |
Family
ID=86070984
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310028982.4A Active CN116032861B (zh) | 2023-01-09 | 2023-01-09 | 一种报文处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116032861B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076353A (zh) * | 2023-10-16 | 2023-11-17 | 苏州元脑智能科技有限公司 | 描述符的配置方法和描述符的配置装置 |
CN117193669A (zh) * | 2023-11-06 | 2023-12-08 | 格创通信(浙江)有限公司 | 一种报文描述符离散存储方法、装置、设备及存储介质 |
CN118138547A (zh) * | 2024-05-07 | 2024-06-04 | 珠海星云智联科技有限公司 | 用于发包描述符获取的方法、计算机设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4755986A (en) * | 1985-09-13 | 1988-07-05 | Nec Corporation | Packet switching system |
CN107547417A (zh) * | 2016-06-29 | 2018-01-05 | 中兴通讯股份有限公司 | 一种报文处理方法、装置及基站 |
CN108055202A (zh) * | 2017-12-07 | 2018-05-18 | 锐捷网络股份有限公司 | 一种报文处理设备和方法 |
US20200259766A1 (en) * | 2017-07-31 | 2020-08-13 | New H3C Technologies Co., Ltd. | Packet processing |
-
2023
- 2023-01-09 CN CN202310028982.4A patent/CN116032861B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4755986A (en) * | 1985-09-13 | 1988-07-05 | Nec Corporation | Packet switching system |
CN107547417A (zh) * | 2016-06-29 | 2018-01-05 | 中兴通讯股份有限公司 | 一种报文处理方法、装置及基站 |
US20200259766A1 (en) * | 2017-07-31 | 2020-08-13 | New H3C Technologies Co., Ltd. | Packet processing |
CN108055202A (zh) * | 2017-12-07 | 2018-05-18 | 锐捷网络股份有限公司 | 一种报文处理设备和方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076353A (zh) * | 2023-10-16 | 2023-11-17 | 苏州元脑智能科技有限公司 | 描述符的配置方法和描述符的配置装置 |
CN117076353B (zh) * | 2023-10-16 | 2024-02-02 | 苏州元脑智能科技有限公司 | 描述符的配置方法和描述符的配置装置 |
CN117193669A (zh) * | 2023-11-06 | 2023-12-08 | 格创通信(浙江)有限公司 | 一种报文描述符离散存储方法、装置、设备及存储介质 |
CN117193669B (zh) * | 2023-11-06 | 2024-02-06 | 格创通信(浙江)有限公司 | 一种报文描述符离散存储方法、装置、设备及存储介质 |
CN118138547A (zh) * | 2024-05-07 | 2024-06-04 | 珠海星云智联科技有限公司 | 用于发包描述符获取的方法、计算机设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116032861B (zh) | 2025-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116032861A (zh) | 一种报文处理方法及装置 | |
WO2021254330A1 (zh) | 内存管理方法、系统、客户端、服务器及存储介质 | |
CN111352889B (zh) | 一种基于mctp协议的设备管理方法、设备、装置和介质 | |
CN110851371B (zh) | 报文处理方法及相关设备 | |
CN108667739A (zh) | 拥塞控制方法、装置及系统 | |
EP3883210B1 (en) | Method and apparatus for determining forwarding port in information centeric network | |
US20150172413A1 (en) | Data relay apparatus and method, server apparatus, and data sending method | |
CN109729022B (zh) | 一种基于软件定义网络的数据发送方法、装置及系统 | |
CN114885045B (zh) | 一种在高速智能网卡/dpu内节约dma通道资源方法和装置 | |
CN112118167B (zh) | 一种跨网隧道数据快速传输方法 | |
CN108270687A (zh) | 一种负载均衡处理方法及装置 | |
CN107071015A (zh) | 一种应用于车载自组网的文件传输方法及装置 | |
CN108206787A (zh) | 一种拥塞避免方法和装置 | |
WO2023098050A1 (zh) | 远程数据访问方法及装置 | |
WO2023125380A1 (zh) | 一种数据管理的方法及相应装置 | |
CN110312283A (zh) | 一种信息处理方法及装置 | |
CN114244752A (zh) | 流量统计方法、装置和设备 | |
CN115967687A (zh) | 快转发报文方法、网络设备、存储介质及计算机程序产品 | |
WO2022017454A1 (zh) | 一种报文处理方法、网络设备以及相关设备 | |
WO2019033891A1 (zh) | 一种基于rdma的网络流量确定方法及装置 | |
WO2024021801A1 (zh) | 报文转发装置及方法、通信芯片及网络设备 | |
CN112003796A (zh) | 一种广播报文处理方法、系统、设备及计算机存储介质 | |
CN109726144B (zh) | 一种数据报文的处理方法和装置 | |
CN112995053A (zh) | 发送报文的方法及装置 | |
CN116074250B (zh) | 流表处理方法、系统、设备和存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |