CN102891809A - 多核网络设备报文按接口保序方法及系统 - Google Patents
多核网络设备报文按接口保序方法及系统 Download PDFInfo
- Publication number
- CN102891809A CN102891809A CN2012103614237A CN201210361423A CN102891809A CN 102891809 A CN102891809 A CN 102891809A CN 2012103614237 A CN2012103614237 A CN 2012103614237A CN 201210361423 A CN201210361423 A CN 201210361423A CN 102891809 A CN102891809 A CN 102891809A
- Authority
- CN
- China
- Prior art keywords
- message
- incoming interface
- current
- interface
- 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.)
- Granted
Links
Images
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 (7)
1.一种多核网络设备报文按接口保序方法,其特征在于,包括以下步骤:
S1:多核CPU的各个CPU接收当前报文后,获取所述当前报文的入接口信息,对所述当前报文进行入接口判断并按报文的入接口分组;
S2:当前报文对应的线程对所述当前报文在对应入接口组内进行排序,处理所述当前报文;
S3:在当前报文被处理后,判断同一入接口的前一个报文是否已经被转发,若是,则将所述处理后的当前报文进行转发,否则等待所述前一个报文被转发后,再将所述处理后的当前报文进行转发。
2.如权利要求1所述的方法,其特征在于,在所述步骤S1之前还包括创建与每个入接口对应的入接口循环链表的步骤。
3.如权利要求2所述的方法,其特征在于,所述步骤S1中对所述当前报文进行入接口判断并按报文的入接口分组的步骤具体为:根据当前报文的入接口信息对当前报文所属的入接口进行判断,并找到与所述入接口对应的入接口循环链表。
4.如权利要求3所述的方法,其特征在于,所述步骤S2中对所述当前报文在对应入接口组内进行排序的步骤具体为:在所述找到的入接口循环链表上获取当前节点,将当前报文记录到所述当前节点中,并将所述当前节点信息记录到当前报文中,然后将该入接口循环链表的当前节点从新赋值为当前节点的下一个节点。
5.如权利要求4所述的方法,其特征在于,所述步骤S3具体为:在当前报文被处理后,查找此报文在对应入接口循环链表中对应的节点,查看该节点的上一个节点中记录的报文是否为空:
若为空,则直接将当前报文进行转发,并将对应的节点信息清空;
若不为空,则将当前报文的发送信息存入此节点中,退出此报文处理流程,等待上一个节点中记录的报文为空后再发送。
6.如权利要求4或5所述的方法,其特征在于,所述入接口循环链表中每个节点均具有状态标志位,所述状态标志位用于反映节点所对应的报文是否已经被转发的状态;
所述步骤S3中,通过所述状态标志位来判断所述入接口循环链表中的前一个报文对应的报文是否已经被转发。
7.一种多核网络设备报文按接口保序系统,其特征在于,所述系统包括:
报文按接口分组模块,用于在多核CPU的各个CPU接收报文后,获取报文的入接口信息,对报文进行入接口判断并按报文的入接口分组;
报文处理模块,用于通过对应的线程对同一入接口的报文进行排序,处理所述报文;
转发模块,用于在当前报文被处理后,判断同一入接口的前一个报文是否已经被转发,若是,则将所述处理后的当前报文进行转发,否则等待所述前一个报文被转发后,再将所述处理后的当前报文进行转发。
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 true CN102891809A (zh) | 2013-01-23 |
CN102891809B 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) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105743679A (zh) * | 2014-12-11 | 2016-07-06 | 中兴通讯股份有限公司 | 一种多核网络设备中cpu保护方法和装置 |
CN105827535A (zh) * | 2015-01-06 | 2016-08-03 | 普天信息技术有限公司 | 硬线程多核中央处理器的报文转发方法及装置 |
CN107979535A (zh) * | 2017-10-31 | 2018-05-01 | 新华三技术有限公司 | 报文转发方法及装置 |
CN109286539A (zh) * | 2018-10-31 | 2019-01-29 | 迈普通信技术股份有限公司 | 检测发送异常的方法、装置、通信设备及可读存储介质 |
CN109327405A (zh) * | 2017-07-31 | 2019-02-12 | 迈普通信技术股份有限公司 | 报文保序方法及网络设备 |
WO2019196239A1 (zh) * | 2018-04-09 | 2019-10-17 | 平安科技(深圳)有限公司 | 一种线程接口的管理方法、终端设备及计算机可读存储介质 |
CN113630376A (zh) * | 2021-06-16 | 2021-11-09 | 新华三信息安全技术有限公司 | 一种网络安全设备及其处理报文的方法 |
CN114731334A (zh) * | 2020-02-14 | 2022-07-08 | 华为技术有限公司 | 报文保序方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030110230A1 (en) * | 2001-12-12 | 2003-06-12 | International Business Machines Corporation | Method and system for preserving message order when parallel processing messages |
CN101175033A (zh) * | 2007-11-27 | 2008-05-07 | 中兴通讯股份有限公司 | 报文保序方法及其装置 |
CN101291194A (zh) * | 2008-05-20 | 2008-10-22 | 华为技术有限公司 | 报文保序的方法和系统 |
CN101304389A (zh) * | 2008-06-20 | 2008-11-12 | 华为技术有限公司 | 报文处理方法、装置和系统 |
-
2012
- 2012-09-25 CN CN201210361423.7A patent/CN102891809B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030110230A1 (en) * | 2001-12-12 | 2003-06-12 | International Business Machines Corporation | Method and system for preserving message order when parallel processing messages |
CN101175033A (zh) * | 2007-11-27 | 2008-05-07 | 中兴通讯股份有限公司 | 报文保序方法及其装置 |
CN101291194A (zh) * | 2008-05-20 | 2008-10-22 | 华为技术有限公司 | 报文保序的方法和系统 |
CN101304389A (zh) * | 2008-06-20 | 2008-11-12 | 华为技术有限公司 | 报文处理方法、装置和系统 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105743679A (zh) * | 2014-12-11 | 2016-07-06 | 中兴通讯股份有限公司 | 一种多核网络设备中cpu保护方法和装置 |
CN105743679B (zh) * | 2014-12-11 | 2020-06-26 | 中兴通讯股份有限公司 | 一种多核网络设备中cpu保护方法和装置 |
CN105827535A (zh) * | 2015-01-06 | 2016-08-03 | 普天信息技术有限公司 | 硬线程多核中央处理器的报文转发方法及装置 |
CN109327405A (zh) * | 2017-07-31 | 2019-02-12 | 迈普通信技术股份有限公司 | 报文保序方法及网络设备 |
CN107979535A (zh) * | 2017-10-31 | 2018-05-01 | 新华三技术有限公司 | 报文转发方法及装置 |
CN107979535B (zh) * | 2017-10-31 | 2021-03-02 | 新华三技术有限公司 | 报文转发方法及装置 |
WO2019196239A1 (zh) * | 2018-04-09 | 2019-10-17 | 平安科技(深圳)有限公司 | 一种线程接口的管理方法、终端设备及计算机可读存储介质 |
CN109286539A (zh) * | 2018-10-31 | 2019-01-29 | 迈普通信技术股份有限公司 | 检测发送异常的方法、装置、通信设备及可读存储介质 |
CN114731334A (zh) * | 2020-02-14 | 2022-07-08 | 华为技术有限公司 | 报文保序方法和装置 |
CN114731334B (zh) * | 2020-02-14 | 2023-10-20 | 华为技术有限公司 | 报文保序方法和装置 |
CN113630376A (zh) * | 2021-06-16 | 2021-11-09 | 新华三信息安全技术有限公司 | 一种网络安全设备及其处理报文的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102891809B (zh) | 2015-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102891809B (zh) | 多核网络设备报文按接口保序方法及系统 | |
CN1097913C (zh) | Atm流量调节 | |
CN102868635A (zh) | 多核多线程的报文保序方法及系统 | |
CN105577567B (zh) | 基于Intel DPDK的网络数据包并行处理方法 | |
WO2017177835A1 (zh) | 虚拟物品的分配方法、系统及服务器 | |
EP3091699B1 (en) | Queue scheduling method and device, and computer program | |
CN102546424B (zh) | 报文保序方法及装置 | |
CN101789908B (zh) | 分片报文接收处理方法及装置 | |
CN106412861B (zh) | 一种短信分发方法及系统 | |
CN103200128A (zh) | 一种网络包处理的方法、装置和系统 | |
CN102694847B (zh) | 抓取第三方开放平台中用户动态的方法和装置 | |
CN102868636A (zh) | 多核网络设备报文按流保序方法及系统 | |
CN102811176B (zh) | 一种数据流量控制方法和装置 | |
CN101051936A (zh) | 一种业务流量监管方法和系统 | |
CN105656808A (zh) | 报文处理方法及其系统 | |
WO2016019554A1 (zh) | 一种队列管理的方法和装置 | |
CN102497297A (zh) | 基于多核多线程的深度报文检测技术的实现系统和方法 | |
WO2010072122A1 (zh) | 一种传输报文的方法、端口和系统 | |
CN102916902A (zh) | 数据存储方法及装置 | |
CN1741504A (zh) | 基于应用的流量控制方法及进行应用流量控制的网络设备 | |
CN101039234A (zh) | 一种分布式dhcp中继的实现方法 | |
CN103685062A (zh) | 缓存管理方法及装置 | |
WO2021238259A1 (zh) | 一种数据传输方法、装置、设备及计算机可读存储介质 | |
CN114363269A (zh) | 一种消息传输方法、系统、设备以及介质 | |
CN102143053A (zh) | 传输数据的方法、装置和系统 |
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 |