CN102891809B - 多核网络设备报文按接口保序方法及*** - Google Patents

多核网络设备报文按接口保序方法及*** Download PDF

Info

Publication number
CN102891809B
CN102891809B CN201210361423.7A CN201210361423A CN102891809B CN 102891809 B CN102891809 B CN 102891809B CN 201210361423 A CN201210361423 A CN 201210361423A CN 102891809 B CN102891809 B CN 102891809B
Authority
CN
China
Prior art keywords
message
incoming interface
current message
forwarded
node
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.)
Expired - Fee Related
Application number
CN201210361423.7A
Other languages
English (en)
Other versions
CN102891809A (zh
Inventor
陈海滨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Opzoon Technology Co Ltd
Original Assignee
Opzoon Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Opzoon Technology Co Ltd filed Critical Opzoon Technology Co Ltd
Priority to CN201210361423.7A priority Critical patent/CN102891809B/zh
Publication of CN102891809A publication Critical patent/CN102891809A/zh
Application granted granted Critical
Publication of CN102891809B publication Critical patent/CN102891809B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种多核网络设备报文按接口保序方法,包括以下步骤:S1:多核CPU的各个CPU接收当前报文后,获取所述当前报文的入接口信息,对所述当前报文进行入接口判断并按报文的入接口分组;S2:对应的线程对所述当前报文在对应入接口组内进行排序,处理所述当前报文;S3:在当前报文被处理后,判断同一入接口的前一个报文是否已经被转发,若是,则将所述处理后的当前报文进行转发,否则等待所述前一个报文被转发后,再将所述处理后的当前报文进行转发。此外,本发明还公开了一种实现上述按接口保序方法的按接口保序***。本发明通过判断同一入接口的前一个报文是否已经被转发,来实现同一入接口报文的保序,防止了报文发送时所出现的乱序现象。

Description

多核网络设备报文按接口保序方法及***
技术领域
本发明涉及网络通信技术领域,尤其涉及一种多核网络设备报文按接口保序方法及***。
背景技术
在一个程序中,这些独立运行的程序片断叫作“线程”(Thread),利用它编程的概念就叫做“多线程处理”。多线程处理一个常见的例子就是用户界面。利用线程,用户可按下一个按钮,然后程序会立即做出响应,而不是让用户等待程序完成了当前任务以后才开始响应。当前高端网络设备大多采用多核CPU的硬件架构来提高报文的处理和转发性能,对多核CPU分别创建相应的线程与所述多核CPU进行一对一的绑定。
申请号为:201010289667.X,发明名称为:一种基于多核构架的报文转发方法及***的中国专利中,记载了一种将hash队列(即文中的hash表所划分的区域)与线程相绑定的方法,实现了共享资源的免锁设计,但在网络设备出现几条数据流的报文,通过hash计算后均落在了一个hash队列中时,这样就会导致与该hash队列对应的线程很繁忙,与其他hash队列对应的线程均处于闲置状态的情况出现,从而多核CPU的使用效率较低,造成资源的浪费。
为了提高网络设备中多核CPU的使用效率,现有技术中采用RMI芯片将接收到的报文平均分配给各个CPU,由于将报文平均分配给各个CPU,而报文存在大小不同的情况,因此,每个CPU处理报文的速度会有些不同,在报文处理完成后,会产生报文发送时的乱序现象(测试中有千分之三的乱序几率),对于一般的需求已经足够,但对于IPSEC报文和视频报文等,如果出现乱序就会丢包或者视频马赛克,使得网络通信受到较为严重的阻滞。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:提供一种多核网络设备报文按接口保序方法及***,以防止报文发送时出现乱序现象。
(二)技术方案
为解决上述问题,一方面本发明提供了一种多核网络设备报文按接口保序方法,包括以下步骤:
S1:多核CPU的各个CPU接收当前报文后,获取所述当前报文的入接口信息,对所述当前报文进行入接口判断并按报文的入接口分组;
S2:当前报文对应的线程对所述当前报文在对应入接口组内进行排序,处理所述当前报文;
S3:在当前报文被处理后,判断同一入接口的前一个报文是否已经被转发,若是,则将所述处理后的当前报文进行转发,否则等待所述前一个报文被转发后,再将所述处理后的当前报文进行转发。
优选地,在所述步骤S1之前还包括创建与每个入接口对应的入接口循环链表的步骤。
优选地,所述步骤S1中对所述当前报文进行入接口判断并按报文的入接口分组的步骤具体为:根据当前报文的入接口信息对当前报文所属的入接口进行判断,并找到与所述入接口对应的入接口循环链表。
优选地,所述步骤S2中对所述当前报文在对应入接口组内进行排序的步骤具体为:在所述找到的入接口循环链表上获取当前节点,将当前报文记录到所述当前节点中,并将所述当前节点信息记录到当前报文中,然后将该入接口循环链表的当前节点从新赋值为当前节点的下一个节点。
优选地,所述步骤S3具体为:在当前报文被处理后,查找此报文在对应入接口循环链表中对应的节点,查看该节点的上一个节点中记录的报文是否为空:
若为空,则直接将当前报文进行转发,并将对应的节点信息清空;
若不为空,则将当前报文的发送信息存入此节点中,退出此报文处理流程,等待上一个节点中记录的报文为空后再发送。
优选地,所述入接口循环链表中每个节点均具有状态标志位,所述状态标志位用于反映节点所对应的报文是否已经被转发的状态;
所述步骤S3中,通过所述状态标志位来判断所述入接口循环链表中的前一个报文对应的报文是否已经被转发。
另一方面,本发明还提供了一种多核网络设备报文按接口保序***,所述***包括:
报文按接口分组模块,用于在多核CPU的各个CPU接收报文后,获取报文的入接口信息,对报文进行入接口判断并按报文的入接口分组;
报文处理模块,用于通过对应的线程对同一入接口的报文进行排序,处理所述报文;
转发模块,用于在当前报文被处理后,判断同一入接口的前一个报文是否已经被转发,若是,则将所述处理后的当前报文进行转发,否则等待所述前一个报文被转发后,再将所述处理后的当前报文进行转发。
(三)有益效果
本发明通过判断同一入接口接收的前一个报文是否已经被转发,来实现同一入接口报文的保序,防止报文发送时出现乱序现象。
本发明的保序范围精细,由于不对不同入接口间的报文进行保序,所以转发速度相对更快,适用于高端设备。
附图说明
图1是按照本发明一种实施方式报文保序方法的流程图;
图2是按照本发明一种实施方式报文保序***的结构框图。
具体实施方式
下面结合附图及实施例对本发明进行详细说明如下。
实施例一:
如图1所示,本实施例记载了一种多核网络设备报文按接口保序方法,包括以下步骤:
S1:多核CPU的各个CPU接收当前报文后,获取所述当前报文的入接口信息,对所述当前报文进行入接口判断并按报文的入接口分组;
S2:当前报文对应的线程对所述当前报文在对应入接口组内进行排序,处理所述当前报文;
S3:在当前报文被处理后,判断同一入接口的前一个报文是否已经被转发,若是,则将所述处理后的当前报文进行转发,否则等待所述前一个报文被转发后,再将所述处理后的当前报文进行转发。
在本实施例中,步骤S1之前还包括:多核CPU分别对应生成与所述多核CPU数量相同的线程的步骤。
在本实施例中每个CPU轮询处理网卡接收来的报文。
本实施例中,在所述步骤S1之前还包括创建与每个入接口对应的入接口循环链表的步骤。
在本实施例中,所述步骤S1中对所述当前报文进行入接口判断并按报文的入接口分组的步骤具体为:根据当前报文的入接口信息对当前报文所属的入接口进行判断,并找到与所述入接口对应的入接口循环链表。
在本实施例中,所述步骤S2中对所述当前报文在对应入接口组内进行排序的步骤具体为:在所述找到的入接口循环链表上获取当前节点,将当前报文记录到所述当前节点中,并将所述当前节点信息记录到当前报文中,然后将该入接口循环链表的当前节点从新赋值为当前节点的下一个节点。即:假设当前节点为节点n,在当前报文记录到节点n中,并且将节点n的节点信息记录到当前报文之后,再将该保序循环链表的当前节点从新赋值为节点n+1,用于记录该入接口的下一个报文。
在本实施例中,所述步骤S3具体为:在当前报文被处理后,查找此报文在对应入接口循环链表中对应的节点,查看该节点的上一个节点中记录的报文是否为空:
若为空,则直接将当前报文进行转发,并将对应的节点信息清空;然后查看入接口循环链表上的下一个节点,如果下一个节点不为空,而且此下一个节点中的报文需要被转发(下一个节点中有记录的出接口信息),则将所述下一个节点中的报文转发,以此类推,直到获取的链表节点为空或者报文不需要被转发(也就是报文正在被别的cpu处理),则退出此处理流程
若不为空,则将当前报文的发送信息(此时报文已经是一个完整的待发送报文,所述发送信息中主要记录的是报文发送的出接口)存入此节点中,退出此报文处理流程,等待上一个节点中记录的报文为空后再发送。
在本实施例中,所述入接口循环链表中每个节点均具有状态标志位,所述状态标志位用于反映节点所对应的报文是否已经被转发的状态;
所述步骤S3中,通过所述状态标志位来判断所述入接口循环链表中的前一个报文对应的报文是否已经被转发。
实施例二:
如图2所示,本实施例记载了一种多核网络设备报文按接口保序***,所述***包括:
报文按接口分组模块201,用于在多核CPU的各个CPU接收报文后,获取报文的入接口信息,对报文进行入接口判断并按报文的入接口分组;
报文处理模块202,用于通过对应的线程对同一入接口的报文进行排序,处理所述报文;
转发模块203,用于在当前报文被处理后,判断同一入接口的前一个报文是否已经被转发,若是,则将所述处理后的当前报文进行转发,否则等待所述前一个报文被转发后,再将所述处理后的当前报文进行转发。
本发明通过判断同一入接口接收的前一个报文是否已经被转发,来实现同一入接口报文的保序,防止报文发送时出现乱序现象。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。

Claims (5)

1.一种多核网络设备报文按接口保序方法,其特征在于,包括以下步骤:
S1:创建与每个入接口对应的入接口循环链表,多核CPU的各个CPU接收当前报文后,获取所述当前报文的入接口信息,根据当前报文的入接口信息对当前报文所属的入接口进行判断,并找到与所述入接口对应的入接口循环链表;
S2:当前报文对应的线程对所述当前报文在对应入接口组内进行排序,处理所述当前报文;
S3:在当前报文被处理后,判断同一入接口的前一个报文是否已经被转发,若是,则将所述处理后的当前报文进行转发,否则等待所述前一个报文被转发后,再将所述处理后的当前报文进行转发。
2.如权利要求1所述的方法,其特征在于,所述步骤S2中对所述当前报文在对应入接口组内进行排序的步骤具体为:在所述找到的入接口循环链表上获取当前节点,将当前报文记录到所述当前节点中,并将所述当前节点信息记录到当前报文中,然后将该入接口循环链表的当前节点重新赋值为当前节点的下一个节点。
3.如权利要求2所述的方法,其特征在于,所述步骤S3具体为:在当前报文被处理后,查找此报文在对应入接口循环链表中对应的节点,查看该节点的上一个节点中记录的报文是否为空:
若为空,则直接将当前报文进行转发,并将对应的节点信息清空;
若不为空,则将当前报文的发送信息存入此节点中,退出此报文处理流程,等待上一个节点中记录的报文为空后再发送。
4.如权利要求2或3所述的方法,其特征在于,所述入接口循环链表中每个节点均具有状态标志位,所述状态标志位用于反映节点所对应的报文是否已经被转发的状态;
所述步骤S3中,通过所述状态标志位来判断所述入接口循环链表中的前一个报文对应的报文是否已经被转发。
5.一种多核网络设备报文按接口保序***,其特征在于,所述***包括:
报文按接口分组模块,用于创建与每个入接口对应的入接口循环链表,在多核CPU的各个CPU接收当前报文后,获取当前报文的入接口信息,根据当前报文的入接口信息对当前报文所属的入接口进行判断,并找到与所述入接口对应的入接口循环链表;
报文处理模块,用于通过当前报文对应的线程对所述当前报文在对应入接口组内进行排序,处理所述当前报文;
转发模块,用于在当前报文被处理后,判断同一入接口的前一个报文是否已经被转发,若是,则将所述处理后的当前报文进行转发,否则等待所述前一个报文被转发后,再将所述处理后的当前报文进行转发。
CN201210361423.7A 2012-09-25 2012-09-25 多核网络设备报文按接口保序方法及*** Expired - Fee Related CN102891809B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210361423.7A CN102891809B (zh) 2012-09-25 2012-09-25 多核网络设备报文按接口保序方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210361423.7A CN102891809B (zh) 2012-09-25 2012-09-25 多核网络设备报文按接口保序方法及***

Publications (2)

Publication Number Publication Date
CN102891809A CN102891809A (zh) 2013-01-23
CN102891809B true CN102891809B (zh) 2015-09-16

Family

ID=47535180

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210361423.7A Expired - Fee Related CN102891809B (zh) 2012-09-25 2012-09-25 多核网络设备报文按接口保序方法及***

Country Status (1)

Country Link
CN (1) CN102891809B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105743679B (zh) * 2014-12-11 2020-06-26 中兴通讯股份有限公司 一种多核网络设备中cpu保护方法和装置
CN105827535A (zh) * 2015-01-06 2016-08-03 普天信息技术有限公司 硬线程多核中央处理器的报文转发方法及装置
CN109327405B (zh) * 2017-07-31 2022-08-12 迈普通信技术股份有限公司 报文保序方法及网络设备
CN107979535B (zh) * 2017-10-31 2021-03-02 新华三技术有限公司 报文转发方法及装置
CN108762898B (zh) * 2018-04-09 2023-04-25 平安科技(深圳)有限公司 一种线程接口的管理方法、终端设备及计算机可读存储介质
CN109286539B (zh) * 2018-10-31 2020-06-12 迈普通信技术股份有限公司 检测发送异常的方法、装置、通信设备及可读存储介质
WO2021159478A1 (zh) * 2020-02-14 2021-08-19 华为技术有限公司 报文保序方法和装置
CN113630376B (zh) * 2021-06-16 2023-04-07 新华三信息安全技术有限公司 一种网络安全设备及其处理报文的方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101175033A (zh) * 2007-11-27 2008-05-07 中兴通讯股份有限公司 报文保序方法及其装置
CN101291194A (zh) * 2008-05-20 2008-10-22 华为技术有限公司 报文保序的方法和***
CN101304389A (zh) * 2008-06-20 2008-11-12 华为技术有限公司 报文处理方法、装置和***

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0129672D0 (en) * 2001-12-12 2002-01-30 Ibm Method and system for preserving message order when parallel processing messages

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101175033A (zh) * 2007-11-27 2008-05-07 中兴通讯股份有限公司 报文保序方法及其装置
CN101291194A (zh) * 2008-05-20 2008-10-22 华为技术有限公司 报文保序的方法和***
CN101304389A (zh) * 2008-06-20 2008-11-12 华为技术有限公司 报文处理方法、装置和***

Also Published As

Publication number Publication date
CN102891809A (zh) 2013-01-23

Similar Documents

Publication Publication Date Title
CN102891809B (zh) 多核网络设备报文按接口保序方法及***
CN102868635B (zh) 多核多线程的报文保序方法及***
US11799764B2 (en) System and method for facilitating efficient packet injection into an output buffer in a network interface controller (NIC)
US7257633B2 (en) Dynamic allocation of a pool of threads
CN1097913C (zh) Atm流量调节
CN1064500C (zh) 临时存储数据包的方法和设备
CA2575869C (en) Hierarchal scheduler with multiple scheduling lanes
CN107241281B (zh) 一种数据处理方法及其装置
US10169280B2 (en) Data processing apparatus and terminal
CN110677277B (zh) 数据处理方法、装置、服务器和计算机可读存储介质
CN105511954A (zh) 一种报文处理方法及装置
CN102546424B (zh) 报文保序方法及装置
CN101873269B (zh) 数据转发设备和端口缓存的分配方法
CN102970142B (zh) 一种vpn设备在多加密卡环境下并发加解密的方法及***
CN101616083A (zh) 一种报文转发方法和装置
WO2021120374A1 (zh) 报文处理方法、处理单元及虚拟专用网络服务器
WO2016206513A1 (zh) 加速处理数据的方法、分配装置和交换机
CN102301664A (zh) 多核处理器的流分发方法及装置
RU2641250C2 (ru) Устройство и способ управления очередью
CN101651629A (zh) 一种cpu接收报文分级动态调度的方法及设备
CN102868636A (zh) 多核网络设备报文按流保序方法及***
WO2010072122A1 (zh) 一种传输报文的方法、端口和***
CN103685062A (zh) 缓存管理方法及装置
US20090031306A1 (en) Method and apparatus for data processing using queuing
WO2016149945A1 (zh) 一种生命周期事件的处理方法及vnfm

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
PP01 Preservation of patent right

Effective date of registration: 20180823

Granted publication date: 20150916

PP01 Preservation of patent right
PD01 Discharge of preservation of patent

Date of cancellation: 20210823

Granted publication date: 20150916

PD01 Discharge of preservation of patent
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150916

Termination date: 20180925

CF01 Termination of patent right due to non-payment of annual fee