一种网络处理器转发故障的诊断方法

文档序号:7562340阅读:183来源:国知局
专利名称:一种网络处理器转发故障的诊断方法
技术领域
本发明涉及网络处理器技术,特别是涉及一种网络处理器转发故障的诊断方法。
背景技术
网络处理器是网络设备中高速处理报文的一个部件,其内部一般包含多个片内处理器,这些片内处理器又称为转发引擎。每个转发引擎又可以包含多个线程,线程是对报文进行转发处理的功能单元。为了加快报文的处理速度,多个线程可以并行处理数据,这是网络处理器的一个显著的设计特点。通常在网络设备中还存在一个通用处理器,该处理器的作用是管理网络处理器,通过网络协议、计算、生成并下发转发表项到网络处理器中,同时也通过该处理器提供一个和用户交互的界面。通过该通用处理器和网络处理器的协同工作,完成网络设备的数据报文转发功能。
采用多线程并发设计的网络处理器的工作原理如图1所示,一般为以下三个步骤(1)根据报文的头部字节对报文进行简单分类,并从报文分类入口表中读取入口地址;(2)调度一个空闲的线程对该报文进行处理,同时将入口地址传给该线程;(3)线程从入口地址开始运行,对报文进行转发处理,处理过程中需要查询一系列表项,包括端口属性表、VLAN属性表、路由表、复杂流分类表等。
网络处理器是网络设备中的重要部件,在网络设备运行过程中,如果出现转发故障,可能导致网络设备的部分或全部功能失效,由于网络处理器的原理非常复杂,普通用户对转发故障的定位比较困难,而且在很多情况下都需要中断业务来对故障进行诊断,这对正常的网络业务造成很大的影响。
目前最常应用的定位网络处理器转发故障的方法有两种(1)关键路径打点计数关键路径指转发流程中的判断节点,这些节点对经过的报文的属性进行判断,在转发判断节点,若报文通过判断,则对指定的计数器进行加一操作,诊断时,通过观察一系列计数器值来定位具有某种属性的报文的转发故障。(2)单步诊断在转发流程中设置断点,然后通过命令进行单步调试,观察转发流程中转发报文的线程的转发信息,来对转发故障进行定位。
上述第一种打点计数方法在报文类型比较单一的情况下是非常有效的,但对于在网运行的网络设备,对于转发流量非常大、转发的报文类型很多、各个关键路径计数器的计数都在不断增加的情况,仅通过观察计数无法有效地对故障进行定位。上述第二种单步诊断方法在代码调试阶段是一种重要的故障诊断方法,但对于运行中的网络设备,使用单步诊断存在两个明显缺点首先,如果只是部分在网运行的设备出现故障,而不是整个在网运行的设备出现故障的话,一般不允许中断业务,因此这种情况下不允许在转发路径上设置断点;其次,这种方法无法根据报文特征来设置断点,在报文转发流量很大时,几乎无法捕捉到故障报文来进行单步诊断。

发明内容
本发明的主要目的在于提供一种网络处理器转发故障的诊断方法,该方法不仅简化了网络处理器故障的诊断,而且使设备维护人员在不中断网络业务的前提下,通过设置网络处理器使其完成对转发故障的自动诊断,以便根据诊断结果对设备进行维护。
本发明的目的是通过如下的技术方案实现的一种网络处理器转发故障的诊断方法,该方法至少包括如下步骤A、将处理待诊断的数据报文的线程作为被诊断线程,并构造诊断报文,该诊断报文的内容至少包括被诊断线程的线程号,将诊断报文写入报文接收队列,设置该被诊断线程为单步运行模式,等待接收单步运行指令;B、调用一空闲线程作为诊断线程处理诊断报文;
C、由诊断线程读取诊断报文中的被诊断线程的线程号,向被诊断线程发送单步运行指令,并在被诊断线程单步运行过程中记录被诊断线程的转发信息;D、被诊断线程运行完成后,读取所记录的被诊断线程的转发信息,并根据该转发信息诊断故障。
所述步骤A之前进一步包括,判断待诊断的数据报文是否符合用户输入的诊断条件,如果符合,则执行步骤A,否则转入正常的转发流程。
所述诊断条件包括诊断的使能/去使能命令,以及对报文五元组或报文头部字节进行匹配。
所述步骤D进一步包括,丢弃诊断报文,并释放被诊断线程,发送一个消息通知用户诊断完成,然后释放诊断线程本身。
步骤C和步骤D中所述转发信息包括诊断是否成功、被诊断线程的程序指针轨迹和相应的内部寄存器值变化情况。
通过以上的技术方案可以看出,网络处理器转发故障的诊断方法无需在转发路径上设置断点,从而无需中断业务。同时,该方法允许设备维护人员通过远程设置网络处理器来实现对转发故障的自动诊断,以便根据诊断结果对设备进行维护,而无需通过出差解决故障。该方法已经在网络设备上得到应用,在产品的维护过程中起到了很好的效果,不仅提高了网络处理器转发故障的解决速度,而且节省了大量的出差费用。


图1是采用多线程并发设计的网络处理器转发报文的工作原理示意图。
图2是根据本发明的网络处理器转发故障的诊断方法的流程图。
具体实施例方式
为了使本发明的目的、技术方案和优点更清楚,下面结合附图和具体实施方式
对本发明作进一步描述。
图2是根据本发明的网络处理器转发故障的诊断方法的流程图。从图中可以看出,本发明利用网络处理器的多线程设计特点,根据用户输入的诊断条件触发诊断过程,诊断时由诊断线程调用诊断模块,控制被诊断线程单步运行,并记录被诊断线程在每次单步运行时的转发信息,在诊断线程运行完成后,通过读取该转发信息进行诊断,以下对图2作详细描述。
在发生转发故障之后,首先分析故障报文的属性,确定需要诊断的这类数据报文的特征,以便根据报文的特征确定诊断条件。确定了诊断条件之后,执行以下步骤步骤201、用户输入诊断条件,诊断条件包括诊断使能/去使能命令以及针对报文的五元组或报文头部字节进行精确匹配或范围匹配,同时清除上次诊断设置的信号量;步骤202、在线程处理已经分类的报文前,将数据报文和用户输入的诊断条件相匹配,如果符合诊断条件,转到步骤203,否则将不进行诊断,进入正常的转发流程;步骤203、设置一信号量,作为诊断模块运行的标志,防止重复运行诊断模块,诊断模块是实施诊断的一段程序代码,该信号量在设置新的诊断条件时被清除;步骤204、构造一个诊断报文,并将处理待诊断的数据报文的线程信息写入该诊断报文中,该线程信息包含线程号;步骤205、将诊断报文加入到报文入口队列,等待分类处理;步骤206、处理待诊断的数据报文的线程称为被诊断线程,将被诊断线程设置为单步模式,等待接收单步运行指令;步骤207、诊断报文进行报文分类后,一个空闲线程将被调度处理该报文,处理诊断报文的线程称为诊断线程;步骤208、诊断线程的入口指向预先设定的诊断模块的入口地址;步骤209、诊断线程读取诊断报文的内容,获得被诊断线程的线程号;步骤210、诊断线程读取被诊断线程的当前信息,包括程序指针、内部寄存器等信息,并保存在指定的内存中;步骤211、判断被诊断线程是否完成转发流程,如果完成,则转到步骤213,否则转到步骤212;步骤212、诊断线程命令被诊断线程单步运行一步,再转到步骤210;步骤213、通知上层软件,完成了一次诊断;步骤214、清除被诊断线程的单步运行状态,被诊断线程将自行释放,然后丢弃诊断报文;步骤215、释放诊断线程;步骤216、上层软件读取诊断时记录在内存中的转发信息,诸如诊断是否成功的信息、被诊断报文的转发指令序列以及关键点的寄存器值等信息,根据这些信息对诊断报文的转发故障进行分析和诊断。
上述步骤209到步骤215可以通过在诊断线程上运行诊断模块来实现。
在具体的实施过程中可对根据本发明的方法进行适当的改进,以适应具体情况的具体需要。因此可以理解,根据本发明的具体实施方式
只是起示范作用,并不用以限制本发明的保护范围。
权利要求
1.一种网络处理器转发故障的诊断方法,其特征在于,该方法至少包括如下步骤A、将处理待诊断的数据报文的线程作为被诊断线程,并构造诊断报文,该诊断报文的内容至少包括被诊断线程的线程号,将诊断报文写入报文接收队列,设置该被诊断线程为单步运行模式,等待接收单步运行指令;B、调用一空闲线程作为诊断线程处理诊断报文;C、由诊断线程读取诊断报文中的被诊断线程的线程号,向被诊断线程发送单步运行指令,并在被诊断线程单步运行过程中记录被诊断线程的转发信息;D、被诊断线程运行完成后,读取所记录的被诊断线程的转发信息,并根据该转发信息诊断故障。
2.根据权利要求1所述的网络处理器转发故障的诊断方法,其特征在于,所述步骤A之前进一步包括,判断待诊断的数据报文是否符合用户输入的诊断条件,如果符合,则执行步骤A,否则转入正常的转发流程。
3.根据权利要求2所述的网络处理器转发故障的诊断方法,其特征在于,所述诊断条件包括诊断的使能/去使能命令,以及对报文五元组或报文头部字节进行匹配。
4.根据权利要求1所述的网络处理器转发故障的诊断方法,其特征在于,所述步骤D进一步包括,丢弃诊断报文,并释放被诊断线程,发送一个消息通知用户诊断完成,然后释放诊断线程本身。
5.根据权利要求1所述的网络处理器转发故障的诊断方法,其特征在于,步骤C和步骤D中所述转发信息包括诊断是否成功、被诊断线程的程序指针轨迹和相应的内部寄存器值变化情况。
全文摘要
本发明公开了一种网络处理器转发故障的诊断方法,该方法利用网络处理器的多线程设计特点,根据用户输入的诊断条件触发诊断过程,诊断时由诊断线程控制被诊断线程单步运行,并记录被诊断线程在每次单步运行时的转发信息,通过读取该转发信息进行诊断。该方法无需在转发路径上设置断点,设备维护人员可以通过远程设置网络处理器实现对转发故障的自动诊断。因此,该方法的应用不仅提高了网络处理器转发故障的解决速度,而且节省了大量的出差费用。
文档编号H04L12/04GK1627696SQ200310121350
公开日2005年6月15日 申请日期2003年12月12日 优先权日2003年12月12日
发明者黄河 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1