首页> 中国专利> 一种网络处理器中维护IP分组出入顺序的方法

一种网络处理器中维护IP分组出入顺序的方法

摘要

本发明涉及数据通信技术领域,一种维护IP分组进、出网络处理器的顺序的方法。该方法使用分组处理调度模块和分组顺序校验模块,在IP分组进入网络处理器后,提交给网络处理器中某一线程进行处理前,由分组处理调度模块为该IP分组产生相应流标识,并将此标识和该IP分组所分配的线程编号传递给分组顺序校验模块;当线程完成对分组的处理后,将分组交由分组顺序校验模块检验分组次序。最后将该分组发送至网络处理器发送模块。

著录项

  • 公开/公告号CN1964312A

    专利类型发明专利

  • 公开/公告日2007-05-16

    原文格式PDF

  • 申请/专利权人 中国科学院计算技术研究所;

    申请/专利号CN200510086842.4

  • 发明设计人 徐宇锋;李华伟;

    申请日2005-11-10

  • 分类号H04L12/56(20060101);

  • 代理机构11021 中科专利商标代理有限责任公司;

  • 代理人段成云

  • 地址 100080 北京市海淀区中关村科学院南路6号

  • 入库时间 2023-12-17 18:37:50

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2009-02-04

    授权

    授权

  • 2007-07-11

    实质审查的生效

    实质审查的生效

  • 2007-05-16

    公开

    公开

说明书

技术领域

本发明涉及数据通信技术领域。特别是网络处理器中维护IP分组接收、发送次序的出入顺序的方法。

背景技术

随着因特网的普及,各种网络应用层出不穷,如IP语音(VoIP)、视频点播(VoD)、点对点传输(P2P)等。此外,用户对网络服务质量(QoS)及安全性的要求也不断提高。网络应用的多样化要求网络设备具备很高的灵活性。

另一方面,用户对网络带宽的需求也在不断增长。根据统计,因特网的数据流量每六至九个月就会增加一倍。这就要求网络设备必须具备更高性能的处理能力。

网络处理器是针对网络应用领域所设计的应用专用指令集处理器(ASIP)。与专用集成电路芯片(ASIC)和通用处理器(GPP)相比,网络处理器可以相对均衡地提供高灵活性和高处理性能。

网络处理器中由可编程分组处理引擎(PE)来完成对分组的处理任务。典型的网络处理器中具备多个分组处理引擎,并行地对多个分组进行处理。一般地,一个分组处理引擎可同时运行数条线程分别地对不同的分组进行处理。

对于大部分网络应用,IP分组发送流和接收流中的分组次序直接影响应用系统的行为和性能。因此,对于可同时并行处理多个IP分组的网络处理器,应具备一定的能力,来维护IP分组出入顺序,保证同一流中的分组发送次序与接收顺序一致。

发明内容

本发明的目的是提供一种应用于网络处理器中,用以维护同一IP流中分组接收次序与发送顺序相一致的方法。该方法在网络处理器中实现时,简单可行,仅占用较少的硬件资源,所增加的分组额外处理开销小,并具备处理高速数据流的能力。

本发明的方法具体是这样实现的:一种应用于网络处理器中,用以维护网络处理器所接收和发送的各个数据流中IP分组次序的方法。该方法的特征在于:通过分组处理调度模块,在将IP分组提交给分组处理引擎处理前,为该分组分配一个分组处理引擎的空闲线程。同时,根据分组头部信息,为每一个分组产生一个流标识,并在将此标识字段与该分组所欲提交处理的分组处理引擎编号、分组处理引擎内部线程编号一并成功提交给分组顺序校验模块后,再将此分组交由相应线程进行处理。在分组顺序校验模块中,维护一个全局共用计数器,并为每个分组处理引擎中的每一条线程维护一条信息,记录该线程所处理的分组流标识,以及从分组处理调度模块中接收到流标识符时的全局计数器数值。当分组顺序校验模块从分组处理调度模块接收到一条包含分组流标识、分组引擎编号和线程编号的完整信息后,在该线程对应记录中写入流标识和当前计数器数值。全局计数器的数值每从分组处理调度模块接收到一条完整信息后执行一次加1操作。当分组处理线程执行完对当前IP分组的处理任务后,向分组顺序校验模块提交释放请求。分组顺序校验模块接收到线程释放请求后,检查所维护线程任务记录,判断记录中线程启动计数值为所维护记录集中具有相同流标识的记录集中最小数值。若是,则允许该线程提交处理完成的分组并释放当前任务;若否,则禁止该线程提交已完成所处理的分组,挂起该线程,直至记录集中具有相同流标识且计数值小于此线程对应记录中计数值的所有线程依次提交并完成释放。

一种维护IP分组进、出网络处理器的顺序的方法,使用分组处理调度模块和分组顺序校验模块,在IP分组进入网络处理器、提交给网络处理器中某一线程进行处理前,由分组处理调度模块为该IP分组产生相应流标识,并将此标识和该IP分组所分配的线程编号传递给分组顺序校验模块;分组顺序校验模块记录分组计数值并将分组顺序信息存入任务信息记录表;线程完成对分组的处理后,将分组交由分组顺序校验模块检验分组次序;分组顺序校验模块接收到线程释放请求后,判断记录中线程启动计数值为所维护记录集中具有相同流标识的记录集中最小数值,若是则允许该线程提交处理完成的分组并释放当前任务,若否则挂起该线程,直至记录集中具有相同流标识且计数值小于此线程对应记录中计数值的所有线程依次提交并完成释放。

所述的维护IP分组进、出网络处理器的顺序的方法,维护网络处理器同一数据流发送序与接收序相一致的功能是以网络处理器中的分组处理调度模块和分组顺序校验模块之间的分组信息传递为基础。

所述的维护IP分组进、出网络处理器的顺序的方法,分组处理调度模块和分组顺序校验模块间的分组信息,分组信息是由分组所属数据流标识号、处理该分组的分组处理引擎编号以及引擎内部处理该分组的线程编号三部分组成。

所述的维护IP分组进、出网络处理器的顺序的方法,分组顺序校验模块通过从分组处理调度模块接收到的分组信息来标识分组所归属的数据流,并为该分组分配一个全局统一计数值来标识分组在接收数据流中的次序;并通过允许线程提交已处理分组并释放当前任务或挂起线程的不同方式来保持发送数据流中分组序与接收数据流中分组序一致。

所述的维护IP分组进、出网络处理器的顺序的方法,分组顺序校验模块在其内部维护一个全局共用计数器用以标识分组顺序,并为每一条线程维护一条线程任务信息记录用以标识线程当前处理分组所属数据流。

所述的维护IP分组进、出网络处理器的顺序的方法,线程任务信息记录由用以标识线程所处理分组所属数据流的流标识字段和用以标识线程所处理分组接收序的计数数值组成。

附图说明

图1为本发明实施时分组的处理流程图。

图2为本发明网络处理器中维护IP分组出入顺序的方法实施的模块框图。

图3为本发明方法中分组处理调度模块向分组顺序校验模块提交分组信息数据结构示意图。

图4为本发明方法中分组顺序校验模块所维护的线程任务信息记录数据结构图。

具体实施方式

如图1所示,该方法的实现分为以下具体步骤:

1)当系统加电或接收到复位信号后,系统执行复位操作,分组处理调度模块完成初始化工作,准备接收分组并进行IP分组的流标签产生任务;分组顺序校验模块在芯片加电或复位时完成初始化工作:全局计数器归零、线程任务记录集初始化,将所有线程所对应记录中流标识字段置为全0、计数值置为全0,处理模块复位后,清除所有线程当前任务并将线程状态标识为空闲;

2)分组处理调度模块从网络处理器入口模块处串行接收IP分组,为每一个分组根据其头部信息产生一个流标识,并为分组寻找合适的分组处理引擎中的处于空闲状态的线程,记录此分组处理引擎编号和线程编号;

3)组处理调度模块将当前分组所对应的流标识字段、所欲提交的分组处理引擎编号、线程编号提交分组顺序校验模块;

4)分组顺序校验模块接收到分组处理调度模块所提交信息后,将流标识和计数器数值分别写入线程任务信息记录表中对应线程相应记录字段;

5)分组处理调度模块将分组提交给相应分组处理引擎中的正确线程处理;

6)线程在完成对分组处理后,向分组顺序校验模块提交完成请求,请求提交已完成处理的分组、释放当前任务并标记为空闲;

7)分组顺序校验模块接收到线程提交完成请求后,检查线程任务记录集合中是否存在与此线程具有相同流标识、且计数值小于当前线程记录中计数值的线程,若不存在,则转到10);

8)分组顺序校验模块拒绝当前线程的提交请求,挂起该线程;

9)线程被挂起,保存当前分组处理任务信息;并以固定间隔向分组顺序校验模块提交完成请求,继续转步骤7)处理;

10)分组顺序校验模块允许线程提交已处理完成分组,接收该分组并提交给网络处理器发送模块。

图2中本发明实施模块框图中各模块功能说明:

线程任务调度模块的功能为:完成从网络处理器网络接口、交换接口或其他部件接收待处理分组;为每一个待处理分组寻找一条合适的线程并为待处理分组分配一个流标识;将欲提交线程处理分组所对应的处理引擎号、引擎内部线程编号,以及分组流标识提交至分组顺序校验模块;将待处理分组提交至相应线程以进行处理。

处理模块由多个分组处理微引擎组成,每一个分组处理微引擎可包含一条或多条独立的分组处理线程,每条线程在微引擎内部拥有唯一的编号。处理模块用以完成对分组的正常处理操作,如二层交换、三层转发、过滤等操作。微引擎中的线程处于空闲态时,独立地从线程任务调度模块接收待处分组;当线程完成对分组的处理操作后,向分组顺序校验模块请求提交已处理分组、释放当前任务请求;当线程处于挂起态时,线程以固定时间间隔向分组顺序校验模块请求提交已处理分组、释放当前任务的请求。

分组流标识的产生应尽可能的将分组分散至不同数据流,即产生不同的流标签,以减少同一数据流中因处理速度不同,造成同一数据流中分组处理完成次序与接收次序不同,导致大量线程频繁被挂起,浪费处理器处理能力的情况。

分组流标识的产生应满足以下条件:

1)同一源及目标地址的相同应用所对应分组,其流标识应相同。

2)同一源及目标地址的不同应用所对应分组,其流标识可以相同,也可不同。

3)不同源及目标地址的对应分组,其流标识可以相同,也可以不同。分组顺序校验模块从线程任务调度模块接收由分组流标识、分组所分配至处理引擎号、引擎内部线程编号组成的分组顺序信息,并为标识该分组顺序计数值为当前全局统一计数器计数值。分组顺序校验模块在内部为每一条线程维护一条记录,用以记录该线程当前处理分组的流标识、分组顺序计数数值。分组顺序校验模块在接收到某一线程所发送的提交已处理分组请求后,通过对模块内部所维护线程任务信息记录表的检索,断记录中线程启动计数值为所维护记录集中具有相同流标识的记录集中最小数值,若是则允许该线程提交处理完成的分组并释放当前任务,若否则挂起该线程,直至记录集中具有相同流标识且计数值小于此线程对应记录中计数值的所有线程依次提交并完成释放。

顺序校验模块在初始化时,将计数器置为初值0。处于正常工作状态时,每从分组处理调度模块接收到一条完整分组流标识、欲分配分组处理引擎号、引擎内部线程编号信息后,计数器执行一次加1操作,并将此数值写入线程任务信息记录表中对应线程相应记录字段中。

图3中分组信息数据结构由分组处理引擎号、引擎内部线程编号、以及分组所属数据流标识三部分构成。处理引擎号与引擎内部线程编号可以区分该分组被分配至哪一条线进行处理;流标识说明该分组属于哪一个数据流。

图4分组顺序校验模块中线程任务信息记录表为每一线程维护一条由分组流标识和分组计数值构成的记录。分组流标识用以标识此线程当前处理分组所属数据流,分组计数值用以记录该分组在所属数据流中到达网络处理器的顺序。

具体实施本方法时,根据带宽、流量及其他实际应用情况选定分组流标识字段的位宽。对于高带宽、大流量或复杂应用环境,应选用较大位宽,以提供更多流标识数值容量,区分各类不同应用或不同用户数据流。

分组顺序校验模块中计数器的位宽可设为32比特或更高,以减少因计数器溢出引起计数数值返零,从计数数值判定分组接收次序错误的情况。

分组顺序校验模块中线程任务记录的流标识字段位宽应与分组处理调度模块选定的流标识位宽相同。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号