CN106209403A - 一种调试方法以及调试装置 - Google Patents
一种调试方法以及调试装置 Download PDFInfo
- Publication number
- CN106209403A CN106209403A CN201510218907.XA CN201510218907A CN106209403A CN 106209403 A CN106209403 A CN 106209403A CN 201510218907 A CN201510218907 A CN 201510218907A CN 106209403 A CN106209403 A CN 106209403A
- Authority
- CN
- China
- Prior art keywords
- eigenvalue
- unit
- instruction
- debugging
- message
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了一种调试方法,所述方法包括:设置待调试报文对应的特征值匹配库;提取接收到的转发报文的特征值,在判断出所述转发报文的特征值与所述特征值匹配库中的条目匹配时,调试所述转发报文。本发明实施例还同时公开了一种调试装置。
Description
技术领域
本发明涉及通信领域中的调试技术,尤其涉及一种调试方法以及调试装置。
背景技术
当前,核心网络中转发设备的单端口接入速度已经达到Tbps级别,网络处理器作为转发设备的核心,必须能够以Tbps级别的线速完成报文转发,因此,业界多使用多核结构,通过多个微引擎在网络处理器内部并行处理来实现报文转发。
随着网络处理器内核数量和处理能力的不断增强,如何在出现故障时,有效定位和分析问题就显得至关重要,而调试技术被广泛地应用于网络处理器的故障定位,因此,有效的调试方式对网络处理器的设计和使用有着极其重要的作用。
断点技术是调试过程中使用最频繁的技术,其基本处理流程是:由上层软件在待执行的程序中设置(或清除)断点,程序执行到对应断点处停止执行,并通知上层软件来控制程序进行单步调试或继续执行等。常用的断点技术包含硬件断点和软件断点两种。
若网络处理器采用硬件断点方案进行调试,则需要使用网络处理器中的硬件寄存器资源来实现,该硬件寄存器用来存放经过网络处理器的报文程序中断点对应指令的地址,在网络处理器执行程序的过程中,不断比较所执行指令的地址和硬件寄存器中断点对应指令的地址,发现两个地址相同时停止程序执行,通知上层软件,由上层软件来控制程序进入单步调试或者继续执行等。硬件断点方案一个显而易见的缺点是:受限于网络处理器的硬件寄存器资源,网络处理器中硬件寄存器的数量一般只有数个,存储的断点对应指令的地址数目会受到限制,远远无法满足调试的需求。对拥有多核的网络处理器而言,其硬件寄存器资源更加紧张,而增加硬件寄存器资源,意味着更大的资源消耗。
若网络处理器采用软件断点方案进行调试,则利用上层软件记录设置断点处对应的实际指令和实际指令的地址,并将网络处理器指令存储器中的断点位置的指令替换成软中断指令,在网络处理器执行程序的过程中,网络处理器不断检测是否执行到软中断指令,一旦执行到软中断指令,网络处理器停止执行,通知上层软件,由上层软件将断点处的软中断指令替换成实际指令,随后由上层软件来控制程序进入单步调试或者继续执行等。软件断点方案摆脱了硬件断点方案断点对应指令的地址数目受限的局限性,在实际应用中更加广泛。
由于不同类型报文执行不同的指令流,多数调试情况下调试人员只需针对某类型的报文进行调试。然而,无论是硬件断点方案或者是软件断点方案,都是将进入网络处理器的每个报文均进行上述断点调试,这就导致网络处理器对不需要进行调试的报文也进行了调试,进而导致调试效率低下。并且,在实际网络环境下,报文是以Tbps级别通过网络处理器的,故应用上述断点方案对每个经过网络处理器的报文进行调试以定位问题是不可能实现的。
发明内容
有鉴于此,本发明实施例期望提供一种调试方法以及调试装置,可以提高调试效率。
为达到上述目的,本发明的技术方案是这样实现的:
本发明实施例提供了一种调试方法,设置待调试报文对应的特征值匹配库;所述方法还包括:
提取接收到的转发报文的特征值,在判断出所述转发报文的特征值与所述特征值匹配库中的条目匹配时,调试所述转发报文。
上述方案中,所述设置待调试报文对应的特征值匹配库,包括:
将待调试报文中的最重要字段设置为所述待调试报文对应的特征值匹配库中的条目;
相应设置所述待调试报文对应的二元参数组;其中,所述二元参数组包括至少一组偏移量和长度,所述偏移量为所述最重要字段的开始字节基于所述待调试报文开始字节的字节偏移数,所述长度为所述重要字段的长度;
相应的,所述提取接收到的转发报文的特征值,包括:
根据所述二元参数组提取接收到的转发报文中的字段为所述转发报文的特征值。
上述方案中,所述特征值匹配库中包括至少一个条目;所述特征值匹配库中任两个条目的区别是条目中部分bit位值不同;
所述判断出所述转发报文的特征值与所述特征值匹配库中的条目匹配,包括:
在所述转发报文的特征值的各bit位值与所述特征值匹配库中的至少一个条目的各bit位值都相同时,判断出所述转发报文的特征值与所述特征值匹配库中的条目匹配;
相应的,在所述转发报文的特征值的各bit位值与所述特征值匹配库中的任意一个条目的各bit位值不相同时,判断出所述转发报文的特征值与所述特征值匹配库中的条目不匹配。
上述方案中,在所述设置待调试报文对应的特征值匹配库之后,所述方法还包括:
通过上层软件开启至少一个微引擎的调试开关;
相应的,所述提取接收到的转发报文的特征值,包括:
接收到转发报文后,将所述转发报文分配给微引擎中的第一微引擎处理;
在判断出的第一微引擎的调试开关开启时,提取所述转发报文的特征值。
上述方案中,所述方法还包括:
在判断出所述第一微引擎的调试开关未开启时,通过所述第一微引擎转发所述转发报文;
所述提取接收到的转发报文的特征值之后,所述方法还包括:
在判断出所述转发报文的特征值与所述特征值匹配库中的条目不匹配时,转发所述转发报文。
上述方案中,所述调试所述转发报文,包括:
所述第一微引擎向上层软件发送报文调试开始消息,所述上层软件接收到所述调试开始消息后在所述第一微引擎的转发指令上设置断点,并将设置断点处的实际指令替换为软中断指令,存储所述设置断点处的实际指令以及实际指令地址;
所述上层软件通知所述第一微引擎执行所述转发报文的转发指令,所述第一微引擎在执行到软中断指令时,停止指令执行,通知上层软件执行到软中断指令的指令地址;
所述上层软件根据存储的所述设置断点处的实际指令以及实际指令地址,用与所述软中断指令的指令地址相同的实际指令地址对应的实际指令,替换所述软中断指令;然后通知所述第一微引擎继续执行所述转发报文的转发指令,直至所述第一微引擎执行到所述转发报文的转发指令的最后一行指令处,向所述上层软件发送报文调试结束消息。
上述方案中,在所述上层软件接收到报文调试结束消息之后,所述方法还包括:
所述上层软件将所述第一微引擎的转发指令上设置断点处的软中断指令替换回实际指令。
本发明实施例还要提供了一种调试装置,包括:
特征库设置单元,用于设置待调试报文对应的特征值匹配库;
特征值提取单元,用于提取接收到的转发报文的特征值;
第一判断单元,用于判断所述特征值提取单元提取的转发报文的特征值与所述特征库设置单元设置的特征值匹配库中的条目是否匹配;
调试单元,用于在所述第一判断单元判断出所述转发报文的特征值与所述特征值匹配库中的条目匹配时,调试所述转发报文。
上述方案中,所述特征库设置单元,具体用于将待调试报文中的最重要字段设置为所述待调试报文对应的特征值匹配库中的条目;相应设置所述待调试报文对应的二元参数组;其中,所述二元参数组包括至少一组偏移量和长度,所述偏移量为所述最重要字段的开始字节基于所述待调试报文开始字节的字节偏移数,所述长度为所述重要字段的长度;
相应的,所述特征值提取单元,具体用于根据所述二元参数组提取接收到的转发报文中的字段为所述转发报文的特征值。
上述方案中,所述特征值匹配库中包括至少一个条目;所述特征值匹配库中任两个条目的区别是条目中部分bit位值不同;则,
所述第一判断单元,具体用于在所述转发报文的特征值的各bit位值与所述特征值匹配库中的至少一个条目的各bit位值都相同时,判断出所述转发报文的特征值与所述特征值匹配库中的条目匹配;在所述转发报文的特征值的各bit位值与所述特征值匹配库中的任意一个条目的各bit位值不相同时,判断出所述转发报文的特征值与所述特征值匹配库中的条目不匹配。
上述方案中,所述调试装置还包括:上层软件单元、报文分配单元、第二判断单元;所述调试单元中包括第一微引擎单元;其中,
所述上层软件单元,用于在所述特征库设置单元设置所述特征值匹配库之后,开启所述调试单元中至少一个微引擎单元的调试开关;
所述报文分配单元,用于将接收到的转发报文分配给第一微引擎单元处理;
所述第一微引擎单元,用于接收所述转发报文;
所述第二判断单元,用于判断所述第一微引擎单元的调试开关是否开启;
相应的,所述特征值提取单元,具体用于在判断出所述第一微引擎单元的调试开关开启时,提取所述转发报文的特征值。
上述方案中,所述第一微引擎单元,还用于在所述第二判断单元判断出所述第一微引擎单元的调试开关未开启时,转发所述转发报文;在所述第一判断单元判断出所述转发报文的特征值与所述特征值匹配库中的条目不匹配时,转发所述转发报文。
上述方案中,所述第一微引擎单元,还用于在所述第一判断单元判断出所述转发报文的特征值与所述特征值匹配库中的条目匹配时,向上层软件单元发送报文调试开始消息;
所述上层软件单元,还用于在接收到所述调试开始消息后在所述第一微引擎单元的转发指令上设置断点,并将设置断点处的实际指令替换为软中断指令,存储所述设置断点处的实际指令以及实际指令地址;然后通知所述第一微引擎单元执行所述转发报文的转发指令;
所述第一微引擎单元,还用于在接收到所述上层软件单元的通知后,执行所述转发报文的转发指令,在执行到软中断指令时,停止指令执行,通知上层软件单元执行到软中断指令的指令地址;
所述上层软件,还用于根据存储的所述设置断点处的实际指令以及实际指令地址,用与所述第一微引擎单元通知的指令地址相同的实际指令地址对应的实际指令,替换所述软中断指令;然后通知所述第一微引擎单元继续执行所述转发报文的转发指令;
所述第一微引擎单元,还用于在执行到所述转发报文的转发指令的最后一行指令处时,向所述上层软件单元发送报文调试结束消息。
上述方案中,所述上层软件单元,还用于在接收到报文调试结束消息之后,将所述第一微引擎单元的转发指令上设置断点处的软中断指令替换回实际指令。
本发明实施例提供了一种调试方法和调试装置,在接收到转发报文后,先提取该转发报文的特征值,再将所述转发报文的特征值与预先设置的待调试报文对应的特征值匹配库中的条目进行匹配,根据匹配结果将转发报文划分为需要调试的报文和不需要调试的报文,对需要调试的报文进行调试,对不需要调试的报文直接转发;如此,能够显著提高调试的效率。
另外,本发明实施例还可以通过上层软件来控制微引擎的调试开关,在需要进行报文调试时,使网络处理器中的部分微引擎进行报文划分,将需要调试的报文送入调试流程;网络处理器中的其它微引擎不进行报文划分,直接将接收到的转发报文转发出去。这样,既不影响网络处理器的转发速度,也可以提高部分微引擎的调试效率;对部分需要调试的转发报文进行调试,能平衡网络处理器的转发功能和调试功能。
附图说明
图1为本发明实施例1提供的一种调试方法流程示意图;
图2为本发明实施例2提供的一种调试方法流程示意图;
图3为本发明实施例3提供的一种调试装置结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本发明实施例提供了一种调试方法,如图1所示,本实施例方法的处理流程包括以下步骤:
步骤101、设置待调试报文对应的特征值匹配库。
由于设置有调试装置的网络处理器是报文敏感的,不同报文执行不同的指令流,多数调试情况下调试人员只针对某类型或具有某种特征的报文进行调试,而忽略其他的报文,这样定位问题更加快速和高效。此时,本实施例中调试装置根据调试的需要预先设置待调试报文对应的特征值匹配库,以备后续进行步骤102-103匹配出需要调试的转发报文,进而只对需要调试的转发报文进行调试,提高调试效率。
在这里,调试装置可以将待调试报文中的最重要字段设置为所述待调试报文对应的特征值匹配库的条目,所述特征值匹配库中包括至少一个条目。这里,所述的最重要字段是能够将所述待调试报文与其他报文区分的字段。由于待调试报文的重要字段中可能有部分bit位值不同,故所述特征值匹配库中包括至少一个条目,所述特征值匹配库中的各条目就包括待调试报文的重要字段中所有可能的内容。
步骤102、提取接收到的转发报文的特征值。
调试装置在接收到转发报文后,可以提取转发报文中的字段作为所述转发报文的特征值,调试装置在设置待调试报文对应的特征值匹配库时,可以同时设置待调试报文对应的二元参数组;其中,所述二元参数组包括至少一组偏移量和长度,所述偏移量为所述最重要字段的开始字节基于所述转发报文开始字节的字节偏移数,所述长度为所述重要字段的长度。这样,调试装置可以根据二元参数组提取出所述转发报文中的相应字段作为转发报文的特征值。
步骤103、判断所述转发报文的特征值与所述特征值匹配库中的条目是否匹配。
提取了转发报文的特征值后,判断转发报文的特征值与所述特征值匹配库中的条目是否匹配,特征值的bit位数与所述特征值匹配库中各条目的bit位数都是相同的,需要判断的是转发报文的特征值的各bit位值是否与所述特征值匹配库中的至少一个条目的各bit位值都相同,若所述转发报文的特征值与所述特征值匹配库中的至少一个条目相同时,则表明所述转发报文的特征值与所述特征值匹配库中的条目匹配;在所述转发报文的特征值的各bit位值与所述特征值匹配库中的任意一个条目的各bit位值不相同时,则表明所述转发报文的特征值与所述特征值匹配库中的条目不匹配。
由于特征值匹配库与二元参数组的设置规则是一样的,都表示的是待调试报文中的最重要字段,则在所述转发报文是待调试的报文时,必然可以判断出所述转发报文的特征值与所述特征值匹配库中的至少一个条目匹配。
在判断出所述转发报文的特征值与所述特征值匹配库中的条目匹配时,表明接收到的转发报文需要进行调试,此时就进行步骤104调试所述转发报文;在判断出所述转发报文的特征值与所述特征值匹配库中的条目不匹配时,表明接收到的转发报文不需要进行调试,此时就结束当前处理流程,直接转发所述转发报文。
步骤104、在所述转发报文的特征值与所述特征值匹配库中的条目匹配时,调试所述转发报文。
现在的网络处理器多使用多核结构,通过多个微引擎并行处理接收到的转发报文,在需要对某一类报文进行调试时,进行步骤101设置待调试报文的特征值匹配库,这样每个微引擎接收到转发报文后都可以进行步骤102、103,在判断出所述转发报文的特征值与所述特征值匹配库中的条目匹配时,每个微引擎都可以像现有技术一样与上层软件交互,按照软件断点方案调试所述转发报文。
在实际的应用中,由于有Tbps级别的转发报文通过网络处理器转发,若网络处理器中的每个微引擎都进行步骤102判断后,再决定是转发该报文还是调试该报文,实现起来比较困难;故调试装置可以通过上层软件开启部分微引擎的调试开关,只有调试开关开启的微引擎才进行匹配过程和调试过程,调试匹配的转发报文,而调试开关未开启的微引擎直接将接收到的转发报文转发,不再进行匹配过程和调试过程。这样,既不影响网络处理器的转发速度,也可以提高调试开关开启的微引擎的调试效率;对部分需要调试的转发报文进行调试,能平衡网络处理器的转发功能和调试功能。
本实施例提供的调试方法,在接收到转发报文后,先提取该转发报文的特征值,再将所述转发报文的特征值与预先设置的待调试报文对应的特征值匹配库中的条目进行匹配,根据匹配结果将转发报文划分为需要调试的报文和不需要调试的报文,对需要进行调试的报文进行调试,对不需要进行调试的报文直接转发,如此,能够显著提高调试的效率。
实施例2
本发明实施例提供了一种调试方法,如图2所示,本实施例方法的处理流程包括以下步骤:
步骤201、在需要进行报文调试时,设置待调试报文对应的特征值匹配库,并相应设置所述待调试报文对应的二元参数组。
在出现故障时,调试人员开始进行报文调试来定位和分析问题,本实施例提供的方法是只调试出现问题的某一类的报文,对于这类待调试报文,调试装置可以将待调试报文中的最重要字段设置为所述待调试报文对应的特征值匹配库中的条目,所述特征值匹配库中包括至少一个条目这里所述的最重要字段是能够将所述待调试报文与其他报文区分的字段。示例的,如待调试报文是QinQ类型报文时,待调试报文中的重要字段:12字节-13字节、16字节-17字节,12字节-13字节和16字节-17字节表示以太报文二层类型,可以将QinQ类型报文与其他类型的报文进行区分。这时就可以将12字节-13字节和16字节-17字节拼接成一个字段设置为所述特征值匹配库中的条目。由于各QinQ类型报文的重要字段中可能有部分bit位值不同,假设这些重要字段拼接后的内容有两种情况是:0000 0010 0100 1100和0000 0010 1100 1100,则所述特征值匹配库中包括两个条目。这两个条目的区别就是9bit位值一个为1,一个为0。
这样后续与转发报文的特征值进行匹配时,转发报文的特征值中其他bit位值与条目中的值相同,9bit位是1或者0都可以与特征匹配库的条目匹配上,扩大了匹配范围,保证匹配时不漏掉需要调试的转发报文。
调试装置在设置待调试报文对应的特征值匹配库时,可以同时设置待调试报文对应的二元参数组;其中,所述二元参数组包括至少一组偏移量和长度,所述偏移量为所述最重要字段的开始字节基于所述转发报文开始字节的字节偏移数,所述长度为所述重要字段的长度。如上述示例所述,待调试报文是QinQ类型报文时,待调试报文中的重要字段为:12字节-13字节、16字节-17字节,此时相应的待调试报文的报文特征对应的二元参数组就是<偏移量为12,长度为2>和<偏移量为16,长度为2>。
步骤202、开启至少一个微引擎的调试开关。
在需要进行报文调试时,设置了特征值匹配库后,上层软件可以开启网络处理器中至少一个微引擎的调试开关,通过该至少一个微引擎来进行转发报文的调试流程。当然,在不需要进行报文调试时,可以关闭所述网络处理器中所有微引擎的调试开关,这时,所述网络处理器对接收到的转发报文不再进行调试,直接通过微引擎将接收到的转发报文转发。
开启调试开关的微引擎的数量可以根据实际情况来设定,转发任务比较重时,就开启少量微引擎的调试开关,转发任务较轻调试任务较重时,就开启多数微引擎的调试开关。
假设网络处理器中共有10个微引擎(记为1号微引擎-10号微引擎),可以开启1号微引擎-4号微引擎的调试开关。
步骤203、接收到转发报文后,将所述转发报文分配给第一微引擎处理;判断第一微引擎的调试开关是否开启。
调试装置接收到转发报文后,会将转发报文分配给各个微引擎处理,报文调试处理不同于报文转发处理,调试开关开启的微引擎必须将转发报文一次一个送入微引擎进行执行,在多微引擎环境下,调试开关开启的微引擎转发能力下降,转发压力由其他调试开关未开启的微引擎承担。
假设当1号微引擎-4号微引擎接收到转发报文后,判断出自身的调试开关是开启的,此时就提取报文的特征值进行步骤204进行特征匹配;当5号微引擎-10号微引擎接收到转发报文后,判断出自身的调试开关是未开启的,此时结束当前处理流程,就进行步骤213,直接将接收到的转发报文转发。
步骤204、提取所述转发报文的特征值。
调试装置接收到转发报文后,可以将所述转发报文分配给第一微引擎处理;然后判断出的第一微引擎的调试开关是否开启,在判断出的第一微引擎的调试开关开启时,提取转发报文中的字段作为所述转发报文的特征值,在这里调试装置可以根据步骤101中设置的二元参数组来提取特征值,如步骤101中的示例所述,在二元参数组为<偏移量为12,长度为2>和<偏移量为16,长度为2>的情况下,调试装置提取所述转发报文中12字节-13字节的字段以及16字节-17字节的字段。将12字节-13字节的字段以及16字节-17字节的字段拼接作为所述转发报文的特征值。
步骤205、判断所述转发报文的特征值与所述特征值匹配库中的条目是否匹配。
所述转发报文的特征值的bit位数与所述特征值匹配库中各条目的bit位数都是相同的,需要判断的是转发报文的特征值的各bit位值是否与所述特征值匹配库中的至少一个条目的各bit位值都相同,若所述转发报文的特征值与所述特征值匹配库中的至少一个条目相同时,则表明所述转发报文的特征值与所述特征值匹配库中的条目匹配;在所述转发报文的特征值的各bit位值与所述特征值匹配库中的任意一个条目的各bit位值不相同时,则表明所述转发报文的特征值与所述特征值匹配库中的条目不匹配。
如上述的示例,假设待调试报文是QinQ类型报文,待调试报文中的重要字段为12字节-13字节和16字节-17字节,拼接为一个字段设置为特征值匹配库中的条目,此时特征值匹配库中有两个条目:0000 0010 0100 1100和00000010 1100 1100;在步骤204可以根据二元参数组为<偏移量为12,长度为2>和<偏移量为16,长度为2>,提取所述转发报文中12字节-13字节的字段以及16字节-17字节的字段,将12字节-13字节的字段以及16字节-17字节的字段拼接作为所述转发报文的特征值。若所述转发报文的特征值为0000 00100100 1100或者0000 0010 1100 1100时,即转发报文的特征值的各bit位值与所述特征值匹配库中的一个条目的各bit位值都相同,此时可以判定所述转发报文的特征值与所述特征值匹配库中的条目匹配;若所述转发报文的特征值不是0000 0010 0100 1100也不是0000 0010 1100 1100时,即转发报文的特征值的各bit位值与所述特征值匹配库中的任意一个条目的各bit位值不相同,此时可以判定所述转发报文的特征值与所述特征值匹配库中的条目不匹配。
由于特征值匹配库与二元参数组的设置规则是一样的,都表示的是待调试报文中的最重要字段。则在所述转发报文是待调试的报文时,必然可以判断出所述转发报文的特征值与所述特征值匹配库中的至少一个条目匹配,此时就进行步骤206,进入调试流程,调试所述转发报文。在判断出所述转发报文的特征值与所述特征值匹配库中的条目不匹配时,进行步骤213转发所述转发报文。
步骤206、上层软件设置断点。
在判断出所述转发报文的特征值与所述特征值匹配库中的条目匹配后,由于所述转发报文时被分配到所述第一微引擎进行处理的,故所述第一微引擎会向上层软件发送报文调试开始消息,所述上层软件接收到所述调试开始消息后在所述第一微引擎的转发指令上设置断点,并将设置断点处的实际指令替换为软中断指令,存储所述设置断点处的实际指令以及实际指令地址,然后通知所述第一微引擎执行所述转发报文的转发指令,
步骤207、第一微引擎执行到软中断指令处,停止执行,通知上层软件替换回实际指令,并由上层软件控制继续往下执行。
所述第一微引擎执行所述转发报文的转发指令,所述第一微引擎在执行到软中断指令时,停止指令执行,通知上层软件执行到软中断指令的指令地址;所述上层软件根据存储的所述设置断点处的实际指令以及实际指令地址,用与所述软中断指令的指令地址相同的实际指令地址对应的实际指令,替换所述软中断指令;然后通知所述第一微引擎继续执行所述转发报文的转发指令。
步骤208、判断所述转发报文的调试是否结束。
判断所述转发报文的调试是否结束就是判断所述第一微引擎是否执行到所述转发报文的转发指令的最后一行指令处。
若未结束,则继续进行步骤207,若结束,则进行步骤209。
步骤209、通过所述第一引擎向所述上层软件发送报文调试结束消息。
步骤210、所述上层软件将所述第一微引擎的转发指令上设置断点处的软中断指令替换回实际指令。
所述转发报文的调试结束之后,下一个转发报文就要接着进入第一微引擎,进行匹配,此时下一个转发报文可能匹配出是不需要调试的转发报文,为了保证所述下一个不需要调试的转发报文执行路径结果的正确,所述上层软件接收到报文调试结束消息之后,需要将所述第一微引擎的转发指令上设置断点处的软中断指令替换回实际指令,防止所述第一引擎在执行下一个不需要调试的转发报文时执行到软中断指令。
步骤211、上层软件选择是否需要进行报文调试。
若是,继续步骤202-210。若否,则进行步骤212。
步骤212、上层软件关闭微引擎的调试开关。
在不需要进行报文调试时,上层软件就会关闭微引擎的调试开关,调试处理器中的微引擎就会进行步骤213直接将接收到的转发报文进行转发处理。
步骤213、通过所述第一微引擎转发所述转发报文。
本实施例提供的方法,通过上层软件来控制微引擎的调试开关,在需要进行报文调试时,使网络处理器中的部分微引擎进行报文划分,将需要调试的报文送入调试流程;网络处理器中的其他微引擎不进行报文划分,直接将接收到的转发报文转发出去。这样即不影响网络处理器的转发速度,也可以提高部分微引擎的调试效率,对部分需要调试的转发报文进行调试,平衡网络处理器的转发功能和调试功能。
实施例3
本发明实施例提供了一种调试装置,如图3所示,所述调试装置包括:特征库设置单元301、特征值提取单元302、第一判断单元303、调试单元304,其中,
特征库设置单元301,用于设置待调试报文对应的特征值匹配库;特征值提取单元302,用于提取接收到的转发报文的特征值;第一判断单元303,用于判断所述特征值提取单元302提取的转发报文的特征值与所述特征库设置单元301设置的特征值匹配库中的条目是否匹配;调试单元304,用于在所述第一判断单元303判断出所述转发报文的特征值与所述特征值匹配库中的条目匹配时,调试所述转发报文。
所述特征库设置单元301,具体用于将待调试报文中的最重要字段设置为所述待调试报文对应的特征值匹配库中的条目;相应设置所述待调试报文对应的二元参数组;其中,所述二元参数组包括至少一组偏移量和长度,所述偏移量为所述最重要字段的开始字节基于所述待调试报文开始字节的字节偏移数,所述长度为所述重要字段的长度;相应的,所述特征值提取单元302,具体用于根据所述特征库设置单元301设置的二元参数组提取接收到的转发报文中的字段为所述转发报文的特征值。
其中,所述特征值匹配库中包括至少一个条目;所述特征值匹配库中任两个条目的区别是条目中部分bit位值不同;所述第一判断单元303,具体用于在所述转发报文的特征值的各bit位值与所述特征值匹配库中的至少一个条目的各bit位值相同时,判断出所述转发报文的特征值与所述特征值匹配库中的条目匹配;在所述转发报文的特征值的各bit位值与所述特征值匹配库中的任意一个条目的各bit位值不相同时,判断出所述转发报文的特征值与所述特征值匹配库中的条目不匹配。
如图3所示,所述调试装置还包括:上层软件单元305、报文分配单元306、第二判断单元307,所述调试单元304中包括第一微引擎单元3041以及其他微引擎单元;其中,
所述上层软件单元305,用于在所述特征库设置单元301设置所述特征值匹配库之后,开启至少一个微引擎单元的调试开关;所述报文分配单元306,用于将接收到的转发报文分配给第一微引擎单元3041处理;所述第一微引擎单元3041,用于接收所述转发报文;所述第二判断单元307,用于判断所述第一微引擎单元3041的调试开关是否开启;相应的,所述特征值提取单元302,具体用于在判断出所述第一微引擎单元3041的调试开关开启时,提取所述转发报文的特征值。
所述第一微引擎单元3041,还用于在所述第二判断单元307判断出所述第一微引擎单元3041的调试开关未开启时,转发所述转发报文;在所述第一判断单元303判断出所述转发报文的特征值与所述特征值匹配库中的条目不匹配时,转发所述转发报文。所述第一微引擎单元3041,还用于在所述第一判断单元303判断出所述转发报文的特征值与所述特征值匹配库中的条目匹配时,向上层软件单元305发送报文调试开始消息;所述上层软件单元305,还用于在接收到所述调试开始消息后在所述第一微引擎单元3041的转发指令上设置断点,并将设置断点处的实际指令替换为软中断指令,存储所述设置断点处的实际指令以及实际指令地址;然后通知所述第一微引擎单元3041执行所述转发报文的转发指令;所述第一微引擎单元3041,还用于在接收到所述上层软件单元305的通知后,执行所述转发报文的转发指令,在执行到软中断指令时,停止指令执行,通知上层软件单元执行到软中断指令的指令地址;所述上层软件305,还用于根据存储的所述设置断点处的实际指令以及实际指令地址,用与所述第一微引擎单元3041通知的指令地址相同的实际指令地址对应的实际指令,替换所述软中断指令;然后通知所述第一微引擎单元3041继续执行所述转发报文的转发指令。
所述第一微引擎单元3041,还用于在执行到所述转发报文的转发指令的最后一行指令处时,向所述上层软件单元305发送报文调试结束消息。所述上层软件单元305,还用于在接收到报文调试结束消息之后,将所述第一微引擎单元3041的转发指令上设置断点处的软中断指令替换回实际指令。
所述上层软件单元305,还用于在不需要进行报文调试时,关闭调试单元304中的微引擎单元的调试开关。
在实际应用中,所述特征库设置单元301、特征值提取单元302、第一判断单元303、上层软件单元305、报文分配单元306、第二判断单元307可由位于网络处理器上的中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)或现场可编程门阵列(FPGA)等器件实现。所述调试单元304可由位于网络处理器上多个微引擎实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (14)
1.一种调试方法,其特征在于,设置待调试报文对应的特征值匹配库;所述方法还包括:
提取接收到的转发报文的特征值,在判断出所述转发报文的特征值与所述特征值匹配库中的条目匹配时,调试所述转发报文。
2.根据权利要求1所述的调试方法,其特征在于,所述设置待调试报文对应的特征值匹配库,包括:
将待调试报文中的最重要字段设置为所述待调试报文对应的特征值匹配库中的条目;
相应设置所述待调试报文对应的二元参数组;其中,所述二元参数组包括至少一组偏移量和长度,所述偏移量为所述最重要字段的开始字节基于所述待调试报文开始字节的字节偏移数,所述长度为所述重要字段的长度;
相应的,所述提取接收到的转发报文的特征值,包括:
根据所述二元参数组提取接收到的转发报文中的字段为所述转发报文的特征值。
3.根据权利要求2所述的调试方法,其特征在于,所述特征值匹配库中包括至少一个条目;所述特征值匹配库中任两个条目的区别是条目中部分bit位值不同;
所述判断出所述转发报文的特征值与所述特征值匹配库中的条目匹配,包括:
在所述转发报文的特征值的各bit位值与所述特征值匹配库中的至少一个条目的各bit位值都相同时,判断出所述转发报文的特征值与所述特征值匹配库中的条目匹配;
相应的,在所述转发报文的特征值的各bit位值与所述特征值匹配库中的任意一个条目的各bit位值不相同时,判断出所述转发报文的特征值与所述特征值匹配库中的条目不匹配。
4.根据权利要求1至3任一项所述的调试方法,其特征在于,在所述设置待调试报文对应的特征值匹配库之后,所述方法还包括:
通过上层软件开启至少一个微引擎的调试开关;
相应的,所述提取接收到的转发报文的特征值,包括:
接收到转发报文后,将所述转发报文分配给微引擎中的第一微引擎处理;
在判断出的第一微引擎的调试开关开启时,提取所述转发报文的特征值。
5.根据权利要求4所述的调试方法,其特征在于,所述方法还包括:
在判断出所述第一微引擎的调试开关未开启时,通过所述第一微引擎转发所述转发报文;
所述提取接收到的转发报文的特征值之后,所述方法还包括:
在判断出所述转发报文的特征值与所述特征值匹配库中的条目不匹配时,转发所述转发报文。
6.根据权利要求4所述的调试方法,其特征在于,所述调试所述转发报文,包括:
所述第一微引擎向上层软件发送报文调试开始消息,所述上层软件接收到所述调试开始消息后在所述第一微引擎的转发指令上设置断点,并将设置断点处的实际指令替换为软中断指令,存储所述设置断点处的实际指令以及实际指令地址;
所述上层软件通知所述第一微引擎执行所述转发报文的转发指令,所述第一微引擎在执行到软中断指令时,停止指令执行,通知上层软件执行到软中断指令的指令地址;
所述上层软件根据存储的所述设置断点处的实际指令以及实际指令地址,用与所述软中断指令的指令地址相同的实际指令地址对应的实际指令,替换所述软中断指令;然后通知所述第一微引擎继续执行所述转发报文的转发指令,直至所述第一微引擎执行到所述转发报文的转发指令的最后一行指令处,向所述上层软件发送报文调试结束消息。
7.根据权利要求6所述的调试方法,其特征在于,在所述上层软件接收到报文调试结束消息之后,所述方法还包括:
所述上层软件将所述第一微引擎的转发指令上设置断点处的软中断指令替换回实际指令。
8.一种调试装置,其特征在于,包括:
特征库设置单元,用于设置待调试报文对应的特征值匹配库;
特征值提取单元,用于提取接收到的转发报文的特征值;
第一判断单元,用于判断所述特征值提取单元提取的转发报文的特征值与所述特征库设置单元设置的特征值匹配库中的条目是否匹配;
调试单元,用于在所述第一判断单元判断出所述转发报文的特征值与所述特征值匹配库中的条目匹配时,调试所述转发报文。
9.根据权利要求8所述的调试装置,其特征在于,
所述特征库设置单元,具体用于将待调试报文中的最重要字段设置为所述待调试报文对应的特征值匹配库中的条目;相应设置所述待调试报文对应的二元参数组;其中,所述二元参数组包括至少一组偏移量和长度,所述偏移量为所述最重要字段的开始字节基于所述待调试报文开始字节的字节偏移数,所述长度为所述重要字段的长度;
相应的,所述特征值提取单元,具体用于根据所述二元参数组提取接收到的转发报文中的字段为所述转发报文的特征值。
10.根据权利要求9所述的调试装置,其特征在于,所述特征值匹配库中包括至少一个条目;所述特征值匹配库中任两个条目的区别是条目中部分bit位值不同;则,
所述第一判断单元,具体用于在所述转发报文的特征值的各bit位值与所述特征值匹配库中的至少一个条目的各bit位值都相同时,判断出所述转发报文的特征值与所述特征值匹配库中的条目匹配;在所述转发报文的特征值的各bit位值与所述特征值匹配库中的任意一个条目的各bit位值不相同时,判断出所述转发报文的特征值与所述特征值匹配库中的条目不匹配。
11.根据权利要求8至10任一项所述的调试装置,其特征在于,所述调试装置还包括:上层软件单元、报文分配单元、第二判断单元;所述调试单元中包括第一微引擎单元;其中,
所述上层软件单元,用于在所述特征库设置单元设置所述特征值匹配库之后,开启所述调试单元中至少一个微引擎单元的调试开关;
所述报文分配单元,用于将接收到的转发报文分配给第一微引擎单元处理;
所述第一微引擎单元,用于接收所述转发报文;
所述第二判断单元,用于判断所述第一微引擎单元的调试开关是否开启;
相应的,所述特征值提取单元,具体用于在判断出所述第一微引擎单元的调试开关开启时,提取所述转发报文的特征值。
12.根据权利要求11所述的调试装置,其特征在于,
所述第一微引擎单元,还用于在所述第二判断单元判断出所述第一微引擎单元的调试开关未开启时,转发所述转发报文;在所述第一判断单元判断出所述转发报文的特征值与所述特征值匹配库中的条目不匹配时,转发所述转发报文。
13.根据权利要求11所述的调试装置,其特征在于,
所述第一微引擎单元,还用于在所述第一判断单元判断出所述转发报文的特征值与所述特征值匹配库中的条目匹配时,向上层软件单元发送报文调试开始消息;
所述上层软件单元,还用于在接收到所述调试开始消息后在所述第一微引擎单元的转发指令上设置断点,并将设置断点处的实际指令替换为软中断指令,存储所述设置断点处的实际指令以及实际指令地址;然后通知所述第一微引擎单元执行所述转发报文的转发指令;
所述第一微引擎单元,还用于在接收到所述上层软件单元的通知后,执行所述转发报文的转发指令,在执行到软中断指令时,停止指令执行,通知上层软件单元执行到软中断指令的指令地址;
所述上层软件,还用于根据存储的所述设置断点处的实际指令以及实际指令地址,用与所述第一微引擎单元通知的指令地址相同的实际指令地址对应的实际指令,替换所述软中断指令;然后通知所述第一微引擎单元继续执行所述转发报文的转发指令;
所述第一微引擎单元,还用于在执行到所述转发报文的转发指令的最后一行指令处时,向所述上层软件单元发送报文调试结束消息。
14.根据权利要求13所述的调试装置,其特征在于,
所述上层软件单元,还用于在接收到报文调试结束消息之后,将所述第一微引擎单元的转发指令上设置断点处的软中断指令替换回实际指令。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510218907.XA CN106209403B (zh) | 2015-04-30 | 2015-04-30 | 一种调试方法以及调试装置 |
PCT/CN2015/097951 WO2016173275A1 (zh) | 2015-04-30 | 2015-12-18 | 一种调试方法、调试装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510218907.XA CN106209403B (zh) | 2015-04-30 | 2015-04-30 | 一种调试方法以及调试装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106209403A true CN106209403A (zh) | 2016-12-07 |
CN106209403B CN106209403B (zh) | 2019-09-13 |
Family
ID=57199682
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510218907.XA Active CN106209403B (zh) | 2015-04-30 | 2015-04-30 | 一种调试方法以及调试装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106209403B (zh) |
WO (1) | WO2016173275A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113760723B (zh) * | 2021-01-13 | 2024-04-16 | 北京京东乾石科技有限公司 | 一种业务流程调试方法和装置 |
CN115118509A (zh) * | 2022-06-29 | 2022-09-27 | 国网河南省电力公司电力科学研究院 | 变电站二次设备调试文件权限检测方法及安全管控装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102427423A (zh) * | 2011-11-07 | 2012-04-25 | 北京星网锐捷网络技术有限公司 | 一种网络流量跟踪及故障定位的方法、装置 |
US8572245B1 (en) * | 2007-02-09 | 2013-10-29 | Juniper Networks, Inc. | Using the TCP window size for identifying packets and debugging |
CN104506463A (zh) * | 2015-01-04 | 2015-04-08 | 盛科网络(苏州)有限公司 | 提供交换机报文芯片在线流程调试信息的方法及装置 |
CN104539561A (zh) * | 2014-12-29 | 2015-04-22 | 盛科网络(苏州)有限公司 | 基于报文处理信息的芯片调试方法及装置 |
-
2015
- 2015-04-30 CN CN201510218907.XA patent/CN106209403B/zh active Active
- 2015-12-18 WO PCT/CN2015/097951 patent/WO2016173275A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8572245B1 (en) * | 2007-02-09 | 2013-10-29 | Juniper Networks, Inc. | Using the TCP window size for identifying packets and debugging |
CN102427423A (zh) * | 2011-11-07 | 2012-04-25 | 北京星网锐捷网络技术有限公司 | 一种网络流量跟踪及故障定位的方法、装置 |
CN104539561A (zh) * | 2014-12-29 | 2015-04-22 | 盛科网络(苏州)有限公司 | 基于报文处理信息的芯片调试方法及装置 |
CN104506463A (zh) * | 2015-01-04 | 2015-04-08 | 盛科网络(苏州)有限公司 | 提供交换机报文芯片在线流程调试信息的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2016173275A1 (zh) | 2016-11-03 |
CN106209403B (zh) | 2019-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
HRP20171470T1 (hr) | Automatizirano raspakiravanje prijenosnih izvršnih datoteka | |
JP2019153305A5 (zh) | ||
CN107220123A (zh) | 一种解决Spark数据倾斜方法及系统 | |
CN107608852A (zh) | 一种进程监控方法及装置 | |
US9256399B2 (en) | Breaking program execution on events | |
CN108139903B (zh) | 依dmb操作用加载/存储操作实施加载撷取/存储释放指令 | |
CN104866284A (zh) | 用于软件定义网络处理引擎中的并行和条件数据操作的方法和装置 | |
JP2017504870A (ja) | 自律的メモリの方法及びシステム | |
CN106209403A (zh) | 一种调试方法以及调试装置 | |
CN103440169B (zh) | 一种进程中断处理的方法及装置 | |
CN102326158B (zh) | 信息处理装置及其操作方法 | |
CN103886258A (zh) | 一种病毒检测方法及装置 | |
CN101510234B (zh) | 一种用于指令级随机验证的指令组合过滤方法及系统 | |
US9910760B2 (en) | Method and apparatus for interception of synchronization objects in graphics application programming interfaces for frame debugging | |
US20090019273A1 (en) | Exception-based error handling in an array-based language | |
CN108446301A (zh) | 业务文件拆分汇总方法、装置及设备 | |
TW201812574A (zh) | 用於產生及處理指示由處理電路系統所進行之指令執行的追蹤流的裝置及方法 | |
CN107395381A (zh) | 一种报文处理方法、装置及系统 | |
JP6540296B2 (ja) | ネットワークプロセッサ、通信装置、パケット転送方法及びパケット転送プログラム | |
CN103530742B (zh) | 提高排程运算速度的方法及装置 | |
US7916146B1 (en) | Halt context switching method and system | |
CN103246496A (zh) | 非阻塞协处理器接口方法和系统 | |
CN105786597A (zh) | uCOS-III操作系统实现任务切换的方法及装置 | |
CN101699417B (zh) | 中断方法 | |
CN111638965B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |