CN100459575C - 一种网络处理器中维护ip分组出入顺序的方法 - Google Patents
一种网络处理器中维护ip分组出入顺序的方法 Download PDFInfo
- Publication number
- CN100459575C CN100459575C CNB2005100868424A CN200510086842A CN100459575C CN 100459575 C CN100459575 C CN 100459575C CN B2005100868424 A CNB2005100868424 A CN B2005100868424A CN 200510086842 A CN200510086842 A CN 200510086842A CN 100459575 C CN100459575 C CN 100459575C
- Authority
- CN
- China
- Prior art keywords
- thread
- grouping
- order
- packets
- packet
- 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.)
- Active
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及数据通信技术领域,一种维护IP分组进、出网络处理器的顺序的方法。该方法使用分组处理调度模块和分组顺序校验模块,在IP分组进入网络处理器后,提交给网络处理器中某一线程进行处理前,由分组处理调度模块为该IP分组产生相应流标识,并将此标识和该IP分组所分配的线程编号传递给分组顺序校验模块;当线程完成对分组的处理后,将分组交由分组顺序校验模块检验分组次序。最后将该分组发送至网络处理器发送模块。
Description
技术领域
本发明涉及数据通信技术领域。特别是网络处理器中维护IP分组接收、发送次序的出入顺序的方法。
背景技术
随着因特网的普及,各种网络应用层出不穷,如IP语音(VoIP)、视频点播(VoD)、点对点传输(P2P)等。此外,用户对网络服务质量(QoS)及安全性的要求也不断提高。网络应用的多样化要求网络设备具备很高的灵活性。
另一方面,用户对网络带宽的需求也在不断增长。根据统计,因特网的数据流量每六至九个月就会增加一倍。这就要求网络设备必须具备更高性能的处理能力。
网络处理器是针对网络应用领域所设计的应用专用指令集处理器(ASIP)。与专用集成电路芯片(ASIC)和通用处理器(GPP)相比,网络处理器可以相对均衡地提供高灵活性和高处理性能。
网络处理器中由可编程分组处理引擎(PE)来完成对分组的处理任务。典型的网络处理器中具备多个分组处理引擎,并行地对多个分组进行处理。一般地,一个分组处理引擎可同时运行数条线程分别地对不同的分组进行处理。
对于大部分网络应用,IP分组发送流和接收流中的分组次序直接影响应用系统的行为和性能。因此,对于可同时并行处理多个IP分组的网络处理器,应具备一定的能力,来维护IP分组出入顺序,保证同一流中的分组发送次序与接收顺序一致。
发明内容
本发明的目的是提供一种应用于网络处理器中,用以维护同一IP流中分组接收次序与发送顺序相一致的方法。该方法在网络处理器中实现时,简单可行,仅占用较少的硬件资源,所增加的分组额外处理开销小,并具备处理高速数据流的能力。
本发明的方法具体是这样实现的:一种应用于网络处理器中,用以维护网络处理器所接收和发送的各个数据流中IP分组次序的方法。该方法的特征在于:通过分组处理调度模块,在将IP分组提交给分组处理引擎处理前,为该分组分配一个分组处理引擎的空闲线程。同时,根据分组头部信息,为每一个分组产生一个数据流标识号,并在将此数据流标识号与该分组所欲提交处理的分组处理引擎编号和分组处理引擎内部线程编号一起构成分组顺序信息提交给分组顺序校验模块后,再将此分组交由相应线程进行处理。在分组顺序校验模块中,维护一个全局计数器,并为每个分组处理引擎中的每一条线程维护一条线程记录,记录该线程所处理的分组数据流标识号,以及从分组处理调度模块中接收到数据流标识号时的全局计数器数值。当分组顺序校验模块从分组处理调度模块接收到一条包含分组数据流标识号、分组引擎编号和线程编号的完整信息后,在该线程对应记录中写入数据流标识号和当前全局计数器数值。全局计数器的数值每从分组处理调度模块接收到一条完整信息后执行一次加1操作。当分组处理线程执行完对当前IP分组的处理任务后,向分组顺序校验模块提交完成请求。分组顺序校验模块接收到线程完成请求后,检查所维护线程记录,判断线程记录中对应的线程记录中的全局统一计数值,是否为所维护线程任务信息记录表中具有相同数据流标识号的所有线程记录的全局统一计数值中的最小数值。若是,则允许该线程提交处理完成的分组并释放当前任务;若否,则禁止该线程提交已完成所处理的分组,挂起该线程,直至线程任务信息记录表中具有相同数据流标识号且较小的全局统一计数值的线程记录所对应的所有线程依次提交并完成释放。
一种维护IP分组进、出网络处理器的顺序的方法,使用分组处理调度模块和分组顺序校验模块,在IP分组进入网络处理器、提交给网络处理器中某一线程进行处理前,由分组处理调度模块为该IP分组产生相应的分组所属数据流标识号,并将此数据流标识号、处理该分组的分组处理引擎编号和引擎内部处理该分组的线程编号一起构成分组顺序信息传递给分组顺序校验模块;分组顺序校验模块产生该分组的全局统一计数值,该全局统一计数值与该分组的分组顺序信息一起构成一个线程记录,存入线程任务信息记录表;线程完成对分组的处理后,向分组顺序校验模块提出线程完成请求,将分组交由分组顺序校验模块检验分组次序;分组顺序校验模块接收到线程完成请求后,判断对应的线程记录中的全局统一计数值,是否为所维护线程任务信息记录表中具有相同数据流标识号的所有线程记录的全局统一计数值中的最小数值,若是则允许该线程提交处理完成的分组并释放当前任务,若否则挂起该线程,直至线程任务信息记录表中具有相同数据流标识号且较小的全局统一计数值的线程记录所对应的所有线程依次提交并完成释放。
所述的维护IP分组进、出网络处理器的顺序的方法,维护网络处理器同一数据流发送序与接收序相一致的功能是以网络处理器中的分组处理调度模块和分组顺序校验模块之间的分组顺序信息传递为基础。
所述的维护IP分组进、出网络处理器的顺序的方法,分组顺序校验模块通过从分组处理调度模块接收到的分组顺序信息来标识分组所归属的数据流,并为该分组分配一个全局统一计数值来标识分组在接收数据流中的次序;并通过允许线程提交已处理分组并释放当前任务或挂起线程的不同方式来保持发送数据流中分组序与接收数据流中分组序一致。
所述的维护IP分组进、出网络处理器的顺序的方法,分组顺序校验模块在其内部维护一个全局计数器来为分组分配全局统一计数值,并为每一条线程维护一条线程记录,用以标识线程当前处理分组的所属数据流标识号和全局统一计数值。
附图说明
图1为本发明实施时分组的处理流程图。
图2为本发明网络处理器中维护IP分组出入顺序的方法实施的模块框图。
图3为本发明方法中分组处理调度模块向分组顺序校验模块提交分组顺序信息数据结构示意图。
图4为本发明方法中分组顺序校验模块所维护的线程记录数据结构图。
具体实施方式
如图1所示,该方法的实现分为以下具体步骤:
1)当系统加电或接收到复位信号后,系统执行复位操作,分组处理调度模块完成初始化工作,准备接收分组并产生分组所属数据流标识号;分组顺序校验模块在芯片加电或复位时完成初始化工作:全局计数器归零、线程任务线程任务信息记录表初始化,将所有线程所对应线程记录中分组所属数据流标识号置为全0、全局统一计数值置为全0,处理模块复位后,清除所有线程当前任务并将线程状态标识为空闲;
2)分组处理调度模块从网络处理器入口模块处串行接收IP分组,为每一个分组根据其头部信息产生一个分组所属数据流标识号,并为分组寻找合适的分组处理引擎中的处于空闲状态的线程,记录此分组处理引擎编号和线程编号;
3)分组处理调度模块将当前分组所对应的分组所属数据流标识号、所欲提交的分组处理引擎编号和线程编号提交分组顺序校验模块;
4)分组顺序校验模块接收到分组处理调度模块所提交信息后,将分组所属数据流标识号和全局统一计数值分别写入线程任务信息记录表中对应线程相应记录字段;
5)分组处理调度模块将分组提交给相应分组处理引擎中的正确线程处理;
6)线程在完成对分组处理后,向分组顺序校验模块提交完成请求,请求提交已完成处理的分组、释放当前任务并将线程状态标记为空闲;
7)分组顺序校验模块接收到线程提交的完成请求后,检查线程任务信息记录表合中是否存在与此线程具有相同的分组所属数据流标识号、且全局统一计数值小于当前线程记录中全局统一计数值的线程,若不存在,则转到步骤10);
8)分组顺序校验模块拒绝当前线程的提交请求,挂起该线程;
9)线程被挂起,保存当前分组处理任务信息;并以固定间隔向分组顺序校验模块提交完成请求,继续转步骤7)处理;
10)分组顺序校验模块允许线程提交已处理完成分组,接收该分组并提交给网络处理器发送模块。
图2中本发明实施模块框图中各模块功能说明:
线程任务调度模块的功能为:完成从网络处理器网络接口、交换接口或其他部件接收待处理分组;为每一个待处理分组寻找一条合适的线程并为待处理分组分配一个数据流标识号;将欲提交线程处理分组所对应的处理引擎号、引擎内部线程编号,以及分组数据流标识号提交至分组顺序校验模块;将待处理分组提交至相应线程以进行处理。
处理模块由多个分组处理微引擎组成,每一个分组处理微引擎可包含一条或多条独立的分组处理线程,每条线程在微引擎内部拥有唯一的编号。处理模块用以完成对分组的正常处理操作,如二层交换、三层转发、过滤等操作。微引擎中的线程处于空闲态时,独立地从线程任务调度模块接收待处分组;当线程完成对分组的处理操作后,向分组顺序校验模块请求提交已处理分组、释放当前任务请求;当线程处于挂起态时,线程以固定时间间隔向分组顺序校验模块请求提交已处理分组、释放当前任务的请求。
分组数据流标识号的产生应尽可能的将分组分散至不同数据流,即产生不同的数据流标识号,以减少同一数据流中因处理速度不同,造成同一数据流中分组处理完成次序与接收次序不同,导致大量线程频繁被挂起,浪费处理器处理能力的情况。
分组数据流标识号的产生应满足以下条件:
1)同一源及目标地址的相同应用所对应分组,其数据流标识号应相同。
2)同一源及目标地址的不同应用所对应分组,其数据流标识号可以相同,也可不同。
3)不同源及目标地址的对应分组,其数据流标识号可以相同,也可以不同。
分组顺序校验模块从线程任务调度模块接收由分组数据流标识号、分组所分配至处理引擎号、引擎内部线程编号组成的分组顺序信息,并为标识该分组顺序全局统一计数值为当前全局统一计数值。分组顺序校验模块在内部为每一条线程维护一条线程记录,用以记录该线程当前处理分组的数据流标识号、分组顺序计数数值。分组顺序校验模块在接收到某一线程所发送的提交已处理分组请求后,通过对模块内部所维护线程任务信息记录表的检索,判断线程记录中线程启动全局统一计数值为所维护线程任务信息记录表中具有相同数据流标识号的线程任务信息记录表中最小数值,若是则允许该线程提交处理完成的分组并释放当前任务,若否则挂起该线程,直至线程任务信息记录表中具有相同数据流标识号且全局统一计数值小于此线程对应记录中全局统一计数值的所有线程依次提交并完成释放。
顺序校验模块在初始化时,将全局计数器置为初值0。处于正常工作状态时,每从分组处理调度模块接收到一条完整分组数据流标识号、欲分配分组处理引擎号、引擎内部线程编号信息后,全局计数器执行一次加1操作,并将此数值写入线程任务信息记录表中对应线程相应记录字段中。
图3中分组顺序信息数据结构由分组处理引擎号、引擎内部线程编号、以及分组所属数据流标识号三部分构成。处理引擎号与引擎内部线程编号可以区分该分组被分配至哪一条线进行处理;数据流标识号说明该分组属于哪一个数据流。
图4分组顺序校验模块中线程任务信息记录表为每一线程维护一条由分组数据流标识号和分组全局统一计数值构成的线程记录。分组数据流标识号用以标识此线程当前处理分组所属数据流,分组全局统一计数值用以记录该分组在所属数据流中到达网络处理器的顺序。
具体实施本方法时,根据带宽、流量及其他实际应用情况选定分组数据流标识号的位宽。对于高带宽、大流量或复杂应用环境,应选用较大位宽,以提供更多数据流标识号数值容量,区分各类不同应用或不同用户数据流。
分组顺序校验模块中全局计数器的位宽可设为32比特或更高,以减少因全局计数器溢出引起计数数值返零,从计数数值判定分组接收次序错误的情况。
分组顺序校验模块中线程任务记录的数据流标识号位宽应与分组处理调度模块选定的数据流标识号位宽相同。
Claims (5)
1、一种维护IP分组进、出网络处理器的顺序的方法,其特征在于:使用分组处理调度模块和分组顺序校验模块,在IP分组进入网络处理器、提交给网络处理器中某一线程进行处理前,由分组处理调度模块为该IP分组产生相应的分组所属数据流标识号,并将此数据流标识号、处理该分组的分组处理引擎编号和引擎内部处理该分组的线程编号一起构成分组顺序信息传递给分组顺序校验模块;分组顺序校验模块产生该分组的全局统一计数值,该全局统一计数值与该分组的分组顺序信息一起构成一个线程记录,存入线程任务信息记录表;线程完成对分组的处理后,向分组顺序校验模块提出线程完成请求,将分组交由分组顺序校验模块检验分组次序;分组顺序校验模块接收到线程完成请求后,根据该线程的线程编号判断对应的线程记录中的全局统一计数值,是否为所维护线程任务信息记录表中具有相同数据流标识号的所有线程记录的全局统一计数值中的最小数值,若是则允许该线程提交处理完成的分组并释放当前任务,若否则挂起该线程,直至线程任务信息记录表中具有相同数据流标识号且较小的全局统一计数值的线程记录所对应的所有线程依次提交并完成释放。
2、根据权利要求1所述的维护IP分组进、出网络处理器的顺序的方法,其特征在于:维护网络处理器同一数据流发送序与接收序相一致的功能是以网络处理器中的分组处理调度模块和分组顺序校验模块之间的分组顺序信息传递为基础。
3、根据权利要求1所述的维护IP分组进、出网络处理器的顺序的方法,其特征在于:分组顺序校验模块通过从分组处理调度模块接收到的分组顺序信息来标识分组所归属的数据流,并为该分组分配一个全局统一计数值来标识分组在接收数据流中的次序;并通过允许线程提交已处理分组并释放当前任务或挂起线程的不同方式来保持发送数据流中分组序与接收数据流中分组序一致。
4、根据权利要求3所述的维护IP分组进、出网络处理器的顺序的方法,其特征在于,分组顺序校验模块在其内部维护一个全局计数器来为分组分配全局统一计数值,并为每一条线程维护一条线程记录,用以标识线程当前处理分组的所属数据流标识号和全局统一计数值。
5、根据权利要求1所述的维护IP分组进、出网络处理器的顺序的方法,其具体步骤如下:
1)当系统加电或接收到复位信号后,系统执行复位操作,分组处理调度模块完成初始化工作,准备接收分组并产生分组所属数据流标识号;分组顺序校验模块在芯片加电或复位时完成初始化工作:全局计数器归零、线程任务信息记录表初始化,将所有线程所对应线程记录中分组所属数据流标识号置为全0、全局统一计数值置为全0,处理模块复位后,清除所有线程当前任务并将线程状态标识为空闲;
2)分组处理调度模块从网络处理器入口模块处串行接收IP分组,为每一个分组根据其头部信息产生一个分组所属数据流标识号,并为分组寻找合适的分组处理引擎中的处于空闲状态的线程,记录此分组处理引擎编号和线程编号;
3)分组处理调度模块将当前分组所对应的分组所属数据流标识号、所欲提交的分组处理引擎编号和线程编号提交分组顺序校验模块;
4)分组顺序校验模块接收到分组处理调度模块所提交信息后,将分组所属数据流标识号和全局统一计数值分别写入线程任务信息记录表中对应线程相应记录字段;
5)分组处理调度模块将分组提交给相应分组处理引擎中的正确线程处理;
6)线程在完成对分组处理后,向分组顺序校验模块提交完成请求,请求提交已完成处理的分组、释放当前任务并将线程状态标记为空闲;
7)分组顺序校验模块接收到线程提交的完成请求后,检查线程任务信息记录表中是否存在与此线程具有相同的分组所属数据流标识号、且全局统一计数值小于当前线程记录中全局统一计数值的线程,若不存在,则转到步骤10;
8)分组顺序校验模块拒绝当前线程的提交请求,挂起该线程;
9)线程被挂起,保存当前分组处理任务信息;并以固定间隔向分组顺序校验模块提交完成请求,继续转步骤7处理;
10)分组顺序校验模块允许线程提交已处理完成分组,接收该分组并提交给网络处理器发送模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100868424A CN100459575C (zh) | 2005-11-10 | 2005-11-10 | 一种网络处理器中维护ip分组出入顺序的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100868424A CN100459575C (zh) | 2005-11-10 | 2005-11-10 | 一种网络处理器中维护ip分组出入顺序的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1964312A CN1964312A (zh) | 2007-05-16 |
CN100459575C true CN100459575C (zh) | 2009-02-04 |
Family
ID=38083210
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100868424A Active CN100459575C (zh) | 2005-11-10 | 2005-11-10 | 一种网络处理器中维护ip分组出入顺序的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100459575C (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106484503B (zh) * | 2015-08-27 | 2019-10-18 | 深圳市中兴微电子技术有限公司 | 一种校验和的计算方法及网络处理器 |
CN114827054A (zh) * | 2021-01-29 | 2022-07-29 | 阿里巴巴集团控股有限公司 | 加速单元、相关装置和路径选择方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030118023A1 (en) * | 2001-12-21 | 2003-06-26 | Brown David Allen | Processor with packet processing order maintenance based on packet flow identifiers |
CN1437816A (zh) * | 1999-12-29 | 2003-08-20 | 英特尔公司 | 用于多线程数据包处理的千兆位数据包分配的方法和设备 |
WO2004107684A1 (en) * | 2003-05-28 | 2004-12-09 | Intel Corporation | Method and system for maintenance of packet order using caching |
CN1579075A (zh) * | 2002-03-05 | 2005-02-09 | 国际商业机器公司 | 将分组流有序动态分布到网络处理机上的方法和系统 |
-
2005
- 2005-11-10 CN CNB2005100868424A patent/CN100459575C/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1437816A (zh) * | 1999-12-29 | 2003-08-20 | 英特尔公司 | 用于多线程数据包处理的千兆位数据包分配的方法和设备 |
US20030118023A1 (en) * | 2001-12-21 | 2003-06-26 | Brown David Allen | Processor with packet processing order maintenance based on packet flow identifiers |
CN1579075A (zh) * | 2002-03-05 | 2005-02-09 | 国际商业机器公司 | 将分组流有序动态分布到网络处理机上的方法和系统 |
WO2004107684A1 (en) * | 2003-05-28 | 2004-12-09 | Intel Corporation | Method and system for maintenance of packet order using caching |
Also Published As
Publication number | Publication date |
---|---|
CN1964312A (zh) | 2007-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9584430B2 (en) | Traffic scheduling device | |
CN100365589C (zh) | 帮助多端口主机适配器的端口测试的装置、系统和方法 | |
CN100392602C (zh) | 用于在网络处理器中动态排序的系统和方法 | |
US7689996B2 (en) | Method to distribute programs using remote Java objects | |
US7349399B1 (en) | Method and apparatus for out-of-order processing of packets using linked lists | |
CN1801775B (zh) | 流分配 | |
Arvind et al. | A local area network architecture for communication in distributed real-time systems | |
CN104317650A (zh) | 一种面向Map/Reduce型海量数据处理平台的作业调度方法 | |
US20090070773A1 (en) | Method for efficient thread usage for hierarchically structured tasks | |
CN101512482A (zh) | 多线程分组处理体系结构 | |
CN100531129C (zh) | 用于在网络处理器中记帐的装置和方法 | |
KR20120085798A (ko) | 효율적인 다중 패킷 필터 통계 생성 | |
CN1996857A (zh) | 网络设备、用于网络设备的可编程网络元件及其实现方法 | |
Shin et al. | Design and evaluation of real-time communication for fieldbus-based manufacturing systems | |
CN100459575C (zh) | 一种网络处理器中维护ip分组出入顺序的方法 | |
CN108737455B (zh) | 网络业务识别装置及方法 | |
US7460544B2 (en) | Flexible mesh structure for hierarchical scheduling | |
CN107220114A (zh) | 基于资源统一调度的分布式资源调度方法 | |
CN100361084C (zh) | 用于利用门管理器维护实体顺序的方法和装置 | |
JP4489958B2 (ja) | イベントベースシステムの同時処理 | |
Jiang et al. | Adia: Achieving high link utilization with coflow-aware scheduling in data center networks | |
CN100499564C (zh) | 分组处理引擎 | |
CN103827836A (zh) | 存储数据的方法和装置 | |
JP4232109B2 (ja) | リアルタイム処理システム、処理装置、リアルタイム処理方法、及びプログラム | |
CN1996856B (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 |