CN102868636A - 多核网络设备报文按流保序方法及系统 - Google Patents
多核网络设备报文按流保序方法及系统 Download PDFInfo
- Publication number
- CN102868636A CN102868636A CN2012103340970A CN201210334097A CN102868636A CN 102868636 A CN102868636 A CN 102868636A CN 2012103340970 A CN2012103340970 A CN 2012103340970A CN 201210334097 A CN201210334097 A CN 201210334097A CN 102868636 A CN102868636 A CN 102868636A
- Authority
- CN
- China
- Prior art keywords
- message
- node
- stream
- current
- forwarded
- 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
Images
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之前还包括根据数据流的5元组信息创建对应的快转表和与每个快转表对应的保序循环链表的步骤。
优选地,所述步骤S1中对报文进行流判断并按流分组的步骤具体为:根据报文的5元组信息对报文所属的数据流进行判断,并找到与所述数据流相应的快转表。
优选地,所述步骤S2中对报文进行流内排序的步骤具体为:在所述找到的快转表对应的保序循环链表上获取当前节点,将当前报文记录到所述当前节点中,并将所述当前节点信息记录到当前报文中,然后将该保序循环链表的当前节点从新赋值为当前节点的下一个节点。
优选地,所述步骤S3具体为:在当前报文被处理后,查找此报文在对应保序循环链表中对应的节点,查看该节点的上一个节点中记录的报文是否为空:
若为空,则直接将当前报文进行转发,并将对应的节点信息清空;
若不为空,则将当前报文的发送信息存入此节点中,退出此报文处理流程,等待上一个节点中记录的报文为空后再发送。
优选地,所述保序循环链表中每个节点均具有状态标志位,所述状态标志位用于反映节点所对应的报文是否已经被转发的状态;
所述步骤S3中,通过所述状态标志位来判断所述保序循环链表中的前一个报文对应的报文是否已经被转发。
另一方面,本发明还提供了一种多核网络设备报文按流保序系统,所述系统包括:
报文按流分组模块,用于在多核CPU的各个CPU接收报文后,对报文进行流判断并按流分组;
报文处理模块,用于通过对应的线程对报文进行流内排序后处理所述报文;
转发模块,用于在当前报文被处理后,判断流内前一个报文是否已经被转发,若是,则将所述处理后的当前报文进行转发,否则等待所述前一个报文被转发后,再将所述处理后的当前报文进行转发。
(三)有益效果
本发明通过判断流内前一个报文是否已经被转发,来实现同一数据流报文的保序,防止报文发送时出现乱序现象。
本发明的保序范围精细,由于不对不同流间的报文进行保序,所以转发速度相对更快,适用于高端设备。
附图说明
图1是按照本发明一种实施方式报文保序方法的流程图;
图2是按照本发明一种实施方式报文保序系统的结构框图。
具体实施方式
下面结合附图及实施例对本发明进行详细说明如下。
实施例一:
如图1所示,本实施例记载了一种多核网络设备报文按流保序方法,包括以下步骤:
S1:多核CPU的各个CPU接收当前报文后,对所述当前报文进行流判断并按流分组;
S2:当前报文对应的线程对所述当前报文进行流内排序,处理所述当前报文;
S3:在当前报文被处理后,判断流内前一个报文是否已经被转发,若是,则将所述处理后的当前报文进行转发,否则等待所述前一个报文被转发后,再将所述处理后的当前报文进行转发。
在本实施例中,步骤S1之前还包括:多核CPU分别对应生成与所述多核CPU数量相同的线程的步骤。
在本实施例中每个CPU轮询处理网卡接收来的报文。
在本实施例中,具体的,在所述步骤S1之前还包括根据数据流的5元组信息(包括源IP地址、源端口、目地IP地址、目地端口以及传输层协议号信息)创建对应的快转表和与每个快转表对应的保序循环链表的步骤。
所述步骤S1中对当前报文进行流判断并按流分组的步骤具体为:根据报文的5元组信息对报文所属的数据流进行判断,并找到与所述数据流相应的快转表。
所述步骤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之前还包括根据数据流的5元组信息创建对应的快转表和与每个快转表对应的保序循环链表的步骤。
3.如权利要求2所述的方法,其特征在于,所述步骤S1中对报文进行流判断并按流分组的步骤具体为:根据报文的5元组信息对报文所属的数据流进行判断,并找到与所述数据流相应的快转表。
4.如权利要求3所述的方法,其特征在于,所述步骤S2中对报文进行流内排序的步骤具体为:在所述找到的快转表对应的保序循环链表上获取当前节点,将当前报文记录到所述当前节点中,并将所述当前节点信息记录到当前报文中,然后将该保序循环链表的当前节点从新赋值为当前节点的下一个节点。
5.如权利要求4所述的方法,其特征在于,所述步骤S3具体为:在当前报文被处理后,查找此报文在对应保序循环链表中对应的节点,查看该节点的上一个节点中记录的报文是否为空:
若为空,则直接将当前报文进行转发,并将对应的节点信息清空;
若不为空,则将当前报文的发送信息存入此节点中,退出此报文处理流程,等待上一个节点中记录的报文为空后再发送。
6.如权利要求4或5所述的方法,其特征在于,所述保序循环链表中每个节点均具有状态标志位,所述状态标志位用于反映节点所对应的报文是否已经被转发的状态;
所述步骤S3中,通过所述状态标志位来判断所述保序循环链表中的前一个报文对应的报文是否已经被转发。
7.一种多核网络设备报文按流保序系统,其特征在于,所述系统包括:
报文按流分组模块,用于在多核CPU的各个CPU接收报文后,对报文进行流判断并按流分组;
报文处理模块,用于通过对应的线程对报文进行流内排序后处理所述报文;
转发模块,用于在当前报文被处理后,判断流内前一个报文是否已经被转发,若是,则将所述处理后的当前报文进行转发,否则等待所述前一个报文被转发后,再将所述处理后的当前报文进行转发。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012103340970A CN102868636A (zh) | 2012-09-11 | 2012-09-11 | 多核网络设备报文按流保序方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012103340970A CN102868636A (zh) | 2012-09-11 | 2012-09-11 | 多核网络设备报文按流保序方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102868636A true CN102868636A (zh) | 2013-01-09 |
Family
ID=47447236
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012103340970A Pending CN102868636A (zh) | 2012-09-11 | 2012-09-11 | 多核网络设备报文按流保序方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102868636A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103078811A (zh) * | 2013-01-31 | 2013-05-01 | 北京金和软件股份有限公司 | 一种基于多线程环境网络数据包乱序控制方法 |
WO2017198108A1 (zh) * | 2016-05-19 | 2017-11-23 | 中兴通讯股份有限公司 | 一种处理分片报文的方法及装置 |
CN107979535A (zh) * | 2017-10-31 | 2018-05-01 | 新华三技术有限公司 | 报文转发方法及装置 |
CN109327405A (zh) * | 2017-07-31 | 2019-02-12 | 迈普通信技术股份有限公司 | 报文保序方法及网络设备 |
CN112511449A (zh) * | 2019-09-16 | 2021-03-16 | 华为技术有限公司 | 一种报文流乱序检测方法、报文处理方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1719805A (zh) * | 2005-07-15 | 2006-01-11 | 中国人民解放军国防科学技术大学 | 3D Torus交换网络中报文保序的多路径路由方法 |
CN1996958A (zh) * | 2006-12-30 | 2007-07-11 | 华为技术有限公司 | 保证报文顺序的方法和装置 |
CN101175033A (zh) * | 2007-11-27 | 2008-05-07 | 中兴通讯股份有限公司 | 报文保序方法及其装置 |
CN102075427A (zh) * | 2011-01-18 | 2011-05-25 | 中兴通讯股份有限公司 | 基于安全联盟的IPSec报文处理方法及装置 |
-
2012
- 2012-09-11 CN CN2012103340970A patent/CN102868636A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1719805A (zh) * | 2005-07-15 | 2006-01-11 | 中国人民解放军国防科学技术大学 | 3D Torus交换网络中报文保序的多路径路由方法 |
CN1996958A (zh) * | 2006-12-30 | 2007-07-11 | 华为技术有限公司 | 保证报文顺序的方法和装置 |
CN101175033A (zh) * | 2007-11-27 | 2008-05-07 | 中兴通讯股份有限公司 | 报文保序方法及其装置 |
CN102075427A (zh) * | 2011-01-18 | 2011-05-25 | 中兴通讯股份有限公司 | 基于安全联盟的IPSec报文处理方法及装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103078811A (zh) * | 2013-01-31 | 2013-05-01 | 北京金和软件股份有限公司 | 一种基于多线程环境网络数据包乱序控制方法 |
WO2017198108A1 (zh) * | 2016-05-19 | 2017-11-23 | 中兴通讯股份有限公司 | 一种处理分片报文的方法及装置 |
CN109327405A (zh) * | 2017-07-31 | 2019-02-12 | 迈普通信技术股份有限公司 | 报文保序方法及网络设备 |
CN107979535A (zh) * | 2017-10-31 | 2018-05-01 | 新华三技术有限公司 | 报文转发方法及装置 |
CN107979535B (zh) * | 2017-10-31 | 2021-03-02 | 新华三技术有限公司 | 报文转发方法及装置 |
CN112511449A (zh) * | 2019-09-16 | 2021-03-16 | 华为技术有限公司 | 一种报文流乱序检测方法、报文处理方法及装置 |
CN112511449B (zh) * | 2019-09-16 | 2022-12-30 | 华为技术有限公司 | 一种报文流乱序检测方法、报文处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102891809B (zh) | 多核网络设备报文按接口保序方法及系统 | |
CN102868635B (zh) | 多核多线程的报文保序方法及系统 | |
WO2020236269A1 (en) | System and method for facilitating efficient utilization of an output buffer in a network interface controller (nic) | |
US9356844B2 (en) | Efficient application recognition in network traffic | |
TWI675339B (zh) | 虛擬物品的分配方法、系統及伺服器 | |
US9094219B2 (en) | Network processor having multicasting protocol | |
CN101330472B (zh) | 流媒体数据的缓存处理方法 | |
CN102868636A (zh) | 多核网络设备报文按流保序方法及系统 | |
CN101771627A (zh) | 互联网实时深度包解析和控制节点设备和方法 | |
CN101068229A (zh) | 一种基于网络过滤器的内容过滤网关实现方法 | |
CN102546424B (zh) | 报文保序方法及装置 | |
WO2021120374A1 (zh) | 报文处理方法、处理单元及虚拟专用网络服务器 | |
CN102970142B (zh) | 一种vpn设备在多加密卡环境下并发加解密的方法及系统 | |
US11212590B2 (en) | Multiple core software forwarding | |
US20130179505A1 (en) | Managing message transmission and reception | |
CN103986585A (zh) | 报文预处理方法及其装置 | |
WO2016019554A1 (zh) | 一种队列管理的方法和装置 | |
CN102035738A (zh) | 一种获取路由信息的方法及装置 | |
WO2010072122A1 (zh) | 一种传输报文的方法、端口和系统 | |
US9705698B1 (en) | Apparatus and method for network traffic classification and policy enforcement | |
Wang et al. | Design and analysis of a robust pipelined memory system | |
CN103647666A (zh) | 一种统计呼叫详细记录报文并实时输出结果的方法及装置 | |
CN106713462A (zh) | 一种网络数据包处理方法和装置 | |
CN102355598B (zh) | 一种基于操作系统驱动层的加扰方法和装置 | |
US20070297432A1 (en) | Host-Controlled Network Interface Filtering Based on Active Services, Active Connections and Active Protocols |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20130109 |