网络处理器以及监控网络处理器的方法

文档序号:7626610阅读:116来源:国知局
专利名称:网络处理器以及监控网络处理器的方法
技术领域
本发明涉及一种网络处理器以及监控网络处理器的方法,特别涉及一种能够方便地找出网络处理器所出现的问题的网络处理器以及监控网络处理器的方法。
背景技术
可靠性和可用性是对高端通信设备的一个基本要求。一般设备的可靠性和可用性都使用一定时间内(比如一年)业务中断时间来衡量。设备一般由软件和硬件组成,作为硬件部分,在成熟以后,可以设计的非常耐用;但是软件部分,由于代码量巨大——比如,一般的高端路由器的代码量有几百万行,所以不可避免的有Bug;另外技术的发展日新月异,新的特性在不断的出现,所以版本出现问题不可避免。如何实现NP(网络处理器)出现问题后,保留现场以快速解决问题成为非常重要的要求。
对于控制平面,由于C语言的方便及只是处理少量的控制报文,可以通过保存堆栈信息,插入专门的异常函数等比较容易实现;但是对于数据平面,由于海量的数据都在这里处理,NP的多CPU同时处理所有报文,当NP出现死机问题时,如何抓住引起问题的关键信息非常重要;而且对于转发平面性能最为重要,不能保存过多的无用信息,否则会极大影响性能。
数据平面也称业务平面,是通信设备处理业务的平面。比如我们上网的包,都走数据平面转发。
控制平面类似通信设备的大脑,用于处理通信设备之间的协议包,同时对设备进行管理、配置、监控。
随着Internet从科研向商业应用的转变,网络用户迅猛增加,各种类型的应用共存在一个物理网络上,网络节点的处理能力、QoS保障和网络带宽逐渐成为Internet继续发展的主要障碍。随着光传输技术的发展,传输带宽不再成为网络的瓶颈,而网络交换节点的处理能力显得尤为重要。为了满足IP网络新变化,G比特路由器(GSR)和T比特路由器(TSR)应运而生,这些高端路由器采用大容量交换结构和硬件高速转发技术,大大提高了报文转发速度;作为这些设备交换核心的网络处理器(Network Processor)技术也得到了迅猛的发展和应用。
根据国际网络处理器会议(Network Processors Conference)的定义网络处理器是一种可编程器件,它特定的应用于通信领域的各种任务,比如包处理、协议分析、路由查找、声音/数据的汇聚、防火墙、QOS。网络处理器的使用者是研制路由器、交换机、HUB、服务器、网络接口卡、VPN和网桥设备的通信设备制造商。
目前生产网络处理器的公司有很多。网络处理器目前的应用主要集中在数据通信网络的中高端设备上,和以前的软件转发、FPGA实现转发、ASIC实现转发相比,它有以下特点或优点1.性能高。很多算法都用硬件实现,内部一般都集成了几个甚至几十个转发微引擎(CPU)和硬件协处理器、硬件加速器,在实现复杂的拥塞管理、队列调度、流分类和QOS功能的前提下,还可以达到很高的查找、转发性能,实现所谓的“硬转发”。
2.可以进行灵活的功能扩展。由于可以进行编程,一旦有新的技术或者需求出现,可以很方便的通过软件编程进行实现,系统的功能可以通过软件模块方便的添加删除。所以对于特殊的用户需求,可以进行定制开发,即可以在短时间内通过模块删减开发能满足不同用户需求的产品。而以前用硬件逻辑实现的情况下,需要修改管脚功能,重新调试升级,而且大多情况下其它硬件设计也要改动,为系统可靠性带来很大隐患。用ASIC实现的情况下,无法对新的功能进行添加,只能重新设计,更新芯片。
3.可靠性高。由于大部分功能都使用一个或者两个芯片实现,芯片转产前都经过了严格的测试和各种抗干扰和破坏性试验,从而使使用NP的系统的可靠性大大提高。所以NP特别适合用于开发电信级数据通信产品。
4.管理、开发方便。NP都提供了和上层CPU标准的接口或者内置管理CPU,可以和其它CPU实现高速通讯。
NP一般都提供了大量硬件计数器,可以方便的实现各种MIB(管理信息库)统计功能,为网管提供支持。NP一般都提供了编译系统和软件样例,而且目前主流的NP都提供软件仿真开发平台,可以进行离线开发和验证,甚至可以用仿真平台将软件的效率仿真到Cycle(时钟周期)级;在在线调试时有单步跟踪、设置断点等手段,可以使设备开发商在较短时间内开发出适合产品需要的软件。
5.可以实现灵活组态。NP作为一个器件,都提供了灵活的配置功能,可以通过NP的不同形式组合或者和其它CPU的组合,实现系统的灵活配置,满足不同设备的需求,方便了系统设计,加快了设备的开发进度。
目前称使用网络处理器的路由器为“第五代路由器”。网络处理器也正成为数据平面进行转发的一个主流技术。
图1显示了依照现有技术的网络处理器的结构框图。该网络处理器1具有两个微引擎(ME)簇12和一个嵌入式CPU(下面称为XScale)11。每个ME簇12皆包括8个ME 121,每个ME 121是一个32位RISC(简单指令集计算机)CPU(中央处理单元),每个ME 121包含8个线程,每个线程都有自己物理上独立的一套存储器和PC(程序计数器)指针以及相关的堆栈。ME 121用于转发数据,XScale 11用于NP的管理以及和上层管理平面的CPU进行通信等。此外,该网络处理还具有SRAM控制器,DRAM控制器,PCI控制器等。
当NP数据平面出现死机问题时,如何实现网络处理器上的数据平面的黑匣子成为高端路由器的可维护性及可用性的关键。
现有的方法是当NP数据平面出现死机问题时,通过修改编译开关,增加许多保存调试信息的代码,重新编译,重新下载可执行代码,再通过复现问题,保存大量的信息,然后进行筛选信息进行定位。
这种方法是,为了保证性能,尽量减少I/O操作,把所有的相关调试代码都去掉了,但出现问题时,无法定位问题。
这种方法的缺点重新编译,下载新代码,需要大量时间。这对骨干网的数据设备是不可接受的;出现问题,可能是由某一个怪包引起的;那么很可能也一时不会复现问题,造成一时定位不了问题,而这时有大量的I/O操作调试代码会引起性能急剧降低,造成网络的可用性大大降低;需要花大量时间进行信息筛选。

发明内容
有鉴于此,本发明的目的在于提供一种网络处理器,其能够在实现网络处理器数据平面在基本不影响性能的情况下,自动找到出现问题的某个转发的微引擎,抓住引起问题的最关键信息,实现黑匣子功能。
本发明的另一目的在于提供一种监控网络处理器的方法,其能够方便地找出网络处理器所出现的问题。
依照本发明的网络处理器包括多个微引擎;一寄存器,用于控制微引擎运行时的关键信息的存储;一处理器,用于检查微引擎的各个线程是否死机;一存储器,用于存储所述的关键信息;当确定某个线程死机时,调用存储在存储器中的相应的关键信息,分析死机的原因。
依照本发明的监控网络处理器的方法包括a).利用一寄存器,控制存储器需存储的、网络处理器的微引擎运行时的关键信息;b).利用一处理器,检查微引擎的各个线程是否死机;当在步骤b)确定某个线程死机时,调用存储在存储器中的相应的关键信息,分析死机的原因。
依照本发明,通过在网络处理器的运行过程中将微引擎各线程的关键信息保存在存储器中,且利用处理器检查微引擎的线程是否死机,当确定某一个线程死机时,利用保存在存储器中与该线程相对应的关键信息,可以很容易地找出引起死机的原因。而且,关键信息的保存以及线程是否死机的检查对网络处理器数据平面的性能基本上没有影响。


图1为依照现有技术的网路处理器的结构框图;图2为依照本发明一实施方式的网络处理器的结构框图。
具体实施例方式
如图2所示,依照本发明一实施方式的网络处理器2包含两个微引擎(ME)簇12,一个嵌入式CPU(下面称为XScale)11和一全局寄存器13。每个ME簇12皆包括8个ME 121,每个ME 121是一个32位RISC(简单指令集计算机)CPU(中央处理单元),每个ME 121包含8个线程,每个线程都有自己物理上独立的一套存储器和PC(程序计数器)指针以及相关的堆栈。ME 121用于转发数据,XScale 11用于网络处理器2的管理以及和上层管理平面的CPU进行通信等。此外,该网络处理还具有SRAM控制器,DRAM控制器,PCI控制器等,这些部件的结构和功能皆和现有技术相同,在此不对其进行详细的描述。
每个ME 121的指令空间是独立的,即每个ME 121的指令可以不同。ME 121上的编程语言为一种特殊的汇编语言,叫“微码”。影响网络处理器2数据转发平面的性能主要是对外设的操作(I/O操作)。而所有的记录到内存操作都是I/O操作。
全局寄存器13用于控制需存储的ME 121执行微码时的关键信息。即,该全局寄存器13控制哪些关键信息需要保存下来。所述的关键信息可以保存至现有的SRAM,DRAM等存储器中。
通常,一个ME 121在执行微码时,能够实现多个功能,执行微码所实现的功能和各种应用相对应。XScale 11可以控制将ME 121执行部分功能时的关键信息保存,也可以控制将ME 121执行所有功能时的关键信息保存。例如,假设ME 121可以处理Ipv4,Ipv6的报文,则XScale 11可以控制将微码处理Ipv4报文时的关键信息保存,也可以将微码处理Ipv6报文时的关键信息保存,也可以将微码处理Ipv4和Ipv6报文时的关键信息保存。
所述的关键信息包括ME 121所处理的报文的句柄,偏移和长度,微码的PC值,可能的等待死机的信号,ME 121的线程号等。在这些关键信息中,报文的句柄,偏移和长度决定了ME 121所处理的报文,微码的PC值决定了ME 121所执行的微码,ME 121的线程号表示所记录的关键信息是关于ME121的哪个线程的,可能等待死机的信号表示ME 121和内存执行I/O操作时的信号值。
由于ME 121为32位RISC处理器,因此可以将关键信息分为32级。全局寄存器13控制记录关键信息的级别,该记录级别由XScale 11动态配置。XScale 11可以对全局寄存器13进行配置,使得全局寄存器13控制保存所有级别的关键信息;也可以对全局寄存器13进行配置,使得全局寄存器13控制仅保存部分或特定级别的关键信息。所保存的关键信息的级别可以根据实际情况进行调整。
此外,如果问题比较方便复现,通过动态添加记录级别,可以实现更精准的定位。也就是说,如果网络处理器2出现死机时全局寄存器13的配置为仅使一些级别的关键信息保存,则其可以在下次开机时改变全局寄存器13的配置为将所有级别或更多级别的关键信息存储,从而能够更精确地定位。
为了防止覆盖,ME 121所执行的微码的关键信息按照ME 121的线程记录在存储器的不同存储位置上。譬如,某8个ME 121最复杂,最可能死机,则我们共有64个线程需要记录其关键信息到不同地方。当出现死机时,根据死机的线程,就可以在存储器的与该线程相应的存储区域中找到相应的关键信息。
XScale 11检查每个ME 121和每个线程是否死机,也就是说,检查每个ME 121的每个线程的PC是否移动。该检查过程可以通过由XScale 11连续采样多次读取这个线程PC值来实现。例如,当某个线程在XScale 11连续采样100次读这个线程PC值完全一样的时候,我们可以认为这个线程已经死机。
当XScale 11检查到某个ME 121的某个线程死机时,通过存储在存储器中与该线程相应的关键信息,可以很容易地找到引起问题的原因。例如,根据报文的句柄,偏移,长度,可以找到引起问题的报文的位置以及长度等。根据存储的处理该报文所执行的过程,可以清楚地知道出现问题时该报文的处理情况。从而,根据找到的报文以及ME 121处理该报文的过程,就可以很容易找出问题之所在。
依照本发明的网络处理器,通过动态下发记录关键信息级别,取得性能与保存信息的平衡,免除了重新编译代码查找问题。此外,由于记录微码的关键信息按线程记录到不同的地方,首先可以防止覆盖,而且得到死机线程后,可以直接映射到保存的引起问题等待关键信息,从而免除大量的信息筛选。此外,通过XScale 11采样线程的PC指针值N次,如果N次值都相等,就可以认为这个线程出现问题,从而动态地由通用XScale 11进行对引起问题的关键信息进行查找与保存。
以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
权利要求
1.一种网络处理器,其包括多个微引擎;一寄存器,用于控制微引擎运行时的关键信息的存储;一处理器,用于检查微引擎的各个线程是否死机;一存储器,用于存储所述的关键信息;当确定某个线程死机时,调用存储在存储器中的相应的关键信息,分析死机的原因。
2.如权利要求1所述的网络处理器,其中,所述的关键信息包括微引擎的线程号、微引擎所处理的报文的句柄,偏移和长度、所执行微码的PC值、以及可能的等待死机的信号。
3.如权利要求1或2所述的网络处理器,其中,所述处理器控制存储器存储微引擎执行所有功能或部分功能时的关键信息。
4.如权利要求1或2所述的网络处理器,其中,所述的关键信息分为多个级别,所述处理器配置寄存器,使得寄存器控制存储器保存所有级别的关键信息或部分级别的关键信息。
5.如权利要求1或2所述的网络处理器,其中,所述的关键信息分为多个级别,所述处理器动态配置寄存器,使得寄存器动态控制存储器需保存的关键信息的级别。
6.如权利要求1所述的网络处理器,其中,所述处理器检查微引擎的各个线程执行微码时的PC值,来判断该线程是否死机。
7.如权利要求6所述的网络处理器,其中,所述处理器检查对微引擎的线程所执行的微码的PC值进行多次采样,当读取的PC完全一样时,确定该线程死机。
8.一种监控网络处理器的方法,其包括a).利用一寄存器,控制存储器需存储的、网络处理器的微引擎运行时的关键信息;b).利用一处理器,检查微引擎的各个线程是否死机;当在步骤b)确定某个线程死机时,调用存储在存储器中的相应的关键信息,分析死机的原因。
9.如权利要求8所述的方法,其中,所述的关键信息包括微引擎的线程号、微引擎所处理的报文的句柄,偏移和长度、所执行微码的PC值、以及可能的等待死机的信号。
10.如权利要求8或9所述的方法,其中,在步骤a)中,利用处理器控制存储器存储微引擎执行所有功能或部分功能时的关键信息。
11.如权利要求8或9所述的方法,其中,所述的关键信息分为多个级别,在步骤a)中,利用处理器对寄存器进行配置,使得寄存器控制存储器保存所有级别的关键信息或部分级别的关键信息。
12.如权利要求8或9所述的方法,其中,所述的关键信息分为多个级别,在步骤a)中,利用处理器对寄存器进行动态配置,使得寄存器动态控制需保存的关键信息的级别。
13.如权利要求8所述的方法,其中,在步骤b)中,处理器检查微引擎的各个线程执行微码时的PC值,来判断该线程是否死机。
14.如权利要求13所述的方法,其中,在步骤b)中,处理器检查对微引擎的线程所执行的微码的PC值进行多次采样,当读取的PC完全一样时,确定该线程死机。
全文摘要
本发明提供一种网络处理器以及监控网络处理器的方法。该网络处理器包括多个微引擎;一寄存器,用于控制微引擎运行时的关键信息的存储;一处理器,用于检查微引擎的各个线程是否死机;一存储器,用于存储所述的关键信息;当确定某个线程死机时,调用存储在存储器中的相应的关键信息,分析死机的原因。
文档编号H04L12/26GK1859229SQ20051011664
公开日2006年11月8日 申请日期2005年10月26日 优先权日2005年10月26日
发明者李贺军 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1