堆叠交换机的协议调试通用方法及系统
技术领域
本发明属于交换机技术领域,涉及一种交换机协议调试方法,特别是涉及一种堆叠交换机的协议调试通用方法及系统。
背景技术
随着社会的发展,人们对网络需求日益增加,堆叠交换机越来越流行。堆叠交换机逻辑上是一台交换机,但堆叠交换机物理上不是一台交换机,一般是由主控卡和线卡组成的堆叠系统。主控卡与线卡通过基于带外网上协议进行交互,如图1所示,主控卡和线卡上都有两个网卡,一个叫带外网卡,另一个叫调试网卡。主控卡和线卡上的带外网卡通过一个二层交换芯片形成带外网,主控卡与线卡之间的交互协议跑在此网络。调试网卡主要用在开发维护阶段使用。
堆叠交换机在开发过程中,经常会遇到许多问题,这就需要对带外网中运行的协议包进行分析,从而定位问题所在。最常用的分析定位方法是修改主控卡或者线卡上的代码,添加打印信息到主控卡或者线卡的串口终端,重新编译生成镜像,通过主控卡或者线卡上的调试网卡更新到主控卡或者线卡上,堆叠交换机系统运行时通过查看串口终端的打印信息,分析定位问题。上述方法简而言之,就是堆叠交换机在开发过程中,经常需要抓取协议包进行分析,一般是通过编写调试特定代码打印感兴趣的协议包到串口终端进行分析,但是,此方法存在以下问题:
1)调试代码不通用。由于堆叠交换机中存在多种协议包,各个协议包格式不一样,每分析一种协议包就需要编写相关代码。
2)如果对特定协议包感兴趣,需要写代码添加判断条件打印特定协议包,每次修改代码都需要重新编译,重新加载代码到目标板卡,使用不方便,效率低。
3)当打印的协议包较多的时候,串口终端会出现大量的打印信息,完全靠肉眼对协议包进行分析非常不方便。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种堆叠交换机的协议调试通用方法及系统,用于解决现有技术中堆叠交换机协议调试方法无法通用,需要针对每种协议都编写一次代码的问题。
为实现上述目的及其他相关目的,本发明提供一种堆叠交换机的协议调试通用方法,所述堆叠交换机包括主控卡和线卡,所述主控卡和线卡均包括带外网卡和调试网卡,所述堆叠交换机的协议调试通用方法包括:在所述带外网卡的驱动中添加协议调试层;利用所述协议调试层将上层软件发送的协议数据包不做任何修改通过调试网卡发送至协议调试编码端,以便所述协议调试编码端通过主控卡镜像直接查看调试网卡的串口输出信息。
可选地,所述协议调试编码端通过主控卡镜像直接查看调试网卡的串口输出信息的一种实现过程包括:所述协议调试编码端启用Wireshark抓包软件随时抓取所述调试网卡发送来的协议数据包;所述协议调试编码端加载主控卡镜像;所述协议调试编码端通过Wireshark抓包软件直接查看主控卡上的调试网卡的串口输出信息。
可选地,所述协议调试编码端通过主控卡镜像直接查看调试网卡的串口输出信息的另一种实现过程包括:通过所述协议调试编码端修改主控卡代码,在主控卡中添加串口打印rpc消息或/和串口打印rlink消息的打印代码;所述协议调试编码端编译代码,生成新的主控卡镜像,重启主控卡加载所述新的主控卡镜像;所述协议调试编码端在主控卡运行过程中查看调试网卡的串口输出信息。
本发明还提供一种堆叠交换机的协议调试通用方法,所述堆叠交换机包括主控卡和线卡,所述主控卡和线卡均包括带外网卡和调试网卡,所述堆叠交换机的协议调试通用方法包括:利用一协议调试编码端接收调试网卡发送的协议数据包;所述协议调试编码端通过主控卡镜像直接查看调试网卡的串口输出信息。
可选地,所述利用一协议调试编码端接收调试网卡发送的协议数据包的一种实现过程包括:在所述带外网卡的驱动中添加协议调试层;利用所述协议调试层将上层软件发送的协议数据包不做任何修改通过调试网卡发送至协议调试编码端。
可选地,所述协议调试编码端通过主控卡镜像直接查看调试网卡的串口输出信息的一种实现过程包括:所述协议调试编码端启用Wireshark抓包软件随时抓取所述调试网卡发送来的协议数据包;所述协议调试编码端加载主控卡镜像;所述协议调试编码端通过Wireshark抓包软件直接查看主控卡上的调试网卡的串口输出信息。
可选地,所述协议调试编码端通过主控卡镜像直接查看调试网卡的串口输出信息的另一种实现过程包括:通过所述协议调试编码端修改主控卡代码,在主控卡中添加串口打印rpc消息或/和串口打印rlink消息的打印代码;所述协议调试编码端编译代码,生成新的主控卡镜像,重启主控卡加载所述新的主控卡镜像;所述协议调试编码端在主控卡运行过程中查看调试网卡的串口输出信息。
本发明提供一种堆叠交换机的协议调试通用系统,所述堆叠交换机包括主控卡和线卡,所述主控卡和线卡均包括带外网卡和调试网卡,所述堆叠交换机的协议调试通用系统包括:协议调试层,添加于所述带外网卡的驱动中,用于将上层软件发送的协议数据包不做任何修改通过调试网卡发送至协议调试编码端,以便所述协议调试编码端通过主控卡镜像直接查看调试网卡的串口输出信息。
可选地,所述协议调试编码端的一种实现结构包括:Wireshark抓包软件模块,与所述主控卡相连,随时抓取所述调试网卡发送来的协议数据包;第一主控卡镜像模块,与所述主控卡相连,加载主控卡镜像;第一串口读取模块,与所述Wireshark抓包软件模块和第一主控卡镜像模块分别相连,通过Wireshark抓包软件直接查看主控卡上的调试网卡的串口输出信息。
可选地,所述协议调试编码端的另一种实现结构包括:代码修改模块,与所述主控卡相连,修改主控卡代码,在主控卡中添加串口打印rpc消息或/和串口打印rlink消息的打印代码;第二主控卡镜像模块,与所述主控卡相连,编译代码,生成新的主控卡镜像,重启主控卡加载所述新的主控卡镜像;第二串口读取模块,与所述第二主控卡镜像模块相连,在主控卡运行过程中查看调试网卡的串口输出信息。
本发明还提供一种堆叠交换机的协议调试通用系统,所述堆叠交换机包括主控卡和线卡,所述主控卡和线卡均包括带外网卡和调试网卡,所述堆叠交换机的协议调试通用系统包括:协议调试编码端,接收调试网卡发送的协议数据包,通过主控卡镜像直接查看调试网卡的串口输出信息。
可选地,所述调试网卡包括一协议调试层;所述协议调试层添加于所述带外网卡的驱动中,用于将上层软件发送的协议数据包不做任何修改通过调试网卡发送至协议调试编码端。
可选地,所述协议调试编码端的一种实现结构包括:Wireshark抓包软件模块,与所述主控卡相连,随时抓取所述调试网卡发送来的协议数据包;第一主控卡镜像模块,与所述主控卡相连,加载主控卡镜像;第一串口读取模块,与所述Wireshark抓包软件模块和第一主控卡镜像模块分别相连,通过Wireshark抓包软件直接查看主控卡上的调试网卡的串口输出信息。
可选地,所述协议调试编码端的另一种实现结构包括:代码修改模块,与所述主控卡相连,修改主控卡代码,在主控卡中添加串口打印rpc消息或/和串口打印rlink消息的打印代码;第二主控卡镜像模块,与所述主控卡相连,编译代码,生成新的主控卡镜像,重启主控卡加载所述新的主控卡镜像;第二串口读取模块,与所述第二主控卡镜像模块相连,在主控卡运行过程中查看调试网卡的串口输出信息。
如上所述,本发明所述的堆叠交换机的协议调试通用方法及系统,具有以下有益效果:
本发明能仅通过一次编码对所有的协议包都有效,无需针对特定协议包进行单独编码,具有通用性,且能灵活抓取分析各种协议包或者特定协议包的各个字段,无需编写额外的代码,不用重新加载代码到目标板卡,还能够使用通用的包分析工具如Wireshark对协议包进行分析,方便直观。
附图说明
图1为本发明所述的堆叠交换机的协议调试通用方法及系统的应用场景示意图。
图2为本发明实施例一所述的堆叠交换机的协议调试通用方法的一种实现流程示意图。
图3为本发明实施例一所述的步骤S202的一种实现流程示意图。
图4为本发明实施例一所述的步骤S202的另一种实现流程示意图。
图5为本发明实施例一所述的堆叠交换机的协议调试通用系统的一种实现结构示意图。
图6为本发明实施例一所述的协议调试编码端的一种实现结构示意图。
图7为本发明实施例一所述的协议调试编码端的另一种实现结构示意图。
图8为本发明实施例二所述的堆叠交换机的协议调试通用方法的一种实现流程示意图。
图9为本发明实施例二所述的步骤S801的一种实现流程示意图。
图10为本发明实施例二所述的步骤S802的一种实现流程示意图。
图11为本发明实施例二所述的步骤S802的另一种实现流程示意图。
图12为本发明实施例二所述的堆叠交换机的协议调试通用系统的一种实现结构示意图。
图13为本发明实施例二所述的调试网卡的一种实现结构示意图。
图14为本发明实施例二所述的协议调试编码端的一种实现结构示意图。
图15为本发明实施例二所述的协议调试编码端的另一种实现结构示意图。
元件标号说明
500,1200 堆叠交换机的协议调试通用系统
510,1310 协议调试层
1300 调试网卡
600,700,1210,1400,1500 协议调试编码端
610,1410 Wireshark抓包软件模块
620,1420 第一主控卡镜像模块
630,1430 第一串口读取模块
710,1510 代码修改模块
720,1520 第二主控卡镜像模块
730,1530 第二串口读取模块
S201~S202 步骤
S301~S303 步骤
S401~S403 步骤
S801~S802 步骤
S901~S902 步骤
S1001~S1003 步骤
S1101~S1103 步骤
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
请参阅附图。需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
下面结合实施例和附图对本发明进行详细说明。
实施例一
本实施例提供一种堆叠交换机的协议调试通用方法及系统,其应用场景如图1所示,所述堆叠交换机包括主控卡和线卡,所述主控卡和线卡均包括带外网卡和调试网卡。
如图2所示,本实施例所述的堆叠交换机的协议调试通用方法包括:
S201,在所述带外网卡的驱动中添加协议调试层。
S202,利用所述协议调试层将上层软件(简称上层)发送的协议数据包不做任何修改通过调试网卡发送至协议调试编码端,以便所述协议调试编码端通过主控卡镜像直接查看调试网卡的串口输出信息。所述协议调试编码端可以是类似PC机的具备调试编码功能的任意类型的终端。参见表1所示,所述协议数据包(即带外网数据包,所有经过带外网数据传送的包都叫带外网数据包)的格式包括以太网第二层头和自定义数据两部分;其中,所述以太网第二层头部分包括目的MAC,源MAC和数据包长度;所述自定义数据部分包括协议标识、协议版本、会话类型、会话标识、头校验、客户标识、客户数据长度、数据字段、以及客户数据校验。本实施例中,协议数据包可以理解为带外网数据包,协议数据包是带外网数据包的子集。
表1:协议数据包的格式
表1中,各个字段的说明如下:
协议标识:0xaa;
协议版本:0;
会话类型:0表示收到此数据包时需要回ack应答包;1表示此数据包为ack应答包;2表示收到此数据包时不需要回ack应答包;
会话标识:唯一标识此次会话;
头校验:自定义协议公共头各个字段CRC校验;
客户标识:指示客户类型,也就是应用层消息类型;1表示Discover类型的消息,Discover包含三类子消息,分别是probe、route、config;2表示rpc消息;3表示tunnel消息;4表示rlink消息;
客户数据长度:指示客户消息长度;
客户数据:客户消息数据体。
客户数据校验:从客户标识到客户数据长度各个字段的CRC校验。
进一步,如图3所示,步骤S202中,所述协议调试编码端通过主控卡镜像直接查看调试网卡的串口输出信息的一种实现过程包括:
S301,所述协议调试编码端启用Wireshark抓包软件随时抓取所述调试网卡发送来的协议数据包。
S302,所述协议调试编码端加载主控卡镜像。
S303,所述协议调试编码端通过Wireshark抓包软件直接查看主控卡上的调试网卡的串口输出信息。如:在Wireshark查看rpc消息和rlink消息。
进一步,如图4所示,步骤S202中,所述协议调试编码端通过主控卡镜像直接查看调试网卡的串口输出信息的另一种实现过程包括:
S401,通过所述协议调试编码端修改主控卡代码,在主控卡中添加串口打印rpc消息或/和串口打印rlink消息的打印代码。例如:修改主控卡代码,添加打印代码的一种实现方式参考如下:
S402,所述协议调试编码端编译代码,生成新的主控卡镜像,重启主控卡加载所述新的主控卡镜像。
S403,所述协议调试编码端在主控卡运行过程中查看调试网卡的串口输出信息。
在实际应用中,rpc消息的内容比较多,图4所述的实现方法中串口终端无法一页显示rpc消息的全部内容,或者存在后面消息覆盖前面消息的情况,图3所述的实现方法则不存在此问题。当只编写了打印rpc和rlink的代码,突然想看tunnel消息代码的时候,图4所述的实现方法需要重新写代码、编译生成镜像,重启主控卡;而图3所述的实现方法则可以直接查看,无需再做工作。故而,在实际应用中,可根据实际情况选择图3所述的实现方法或图4所述的实现方法。
本发明所述的堆叠交换机的协议调试通用方法的保护范围不限于本实施例列举的步骤执行顺序,凡是利用本发明的原理所做的简单步骤增减、顺序调整等替换方案都包括在本发明的保护范围内。
本实施例还提供一种堆叠交换机的协议调试通用系统,该系统可以实现本实施例所述的堆叠交换机的协议调试通用方法,但本实施例所述的堆叠交换机的协议调试通用方法的实现装置包括但不限于本实施例列举的堆叠交换机的协议调试通用系统的结构。
如图5所示,本实施例所述的堆叠交换机的协议调试通用系统500包括:协议调试层510。所述协议调试层510添加于所述带外网卡的驱动中,用于将上层软件发送的协议数据包不做任何修改通过调试网卡发送至协议调试编码端,以便所述协议调试编码端通过主控卡镜像直接查看调试网卡的串口输出信息。
进一步,如图6所示,所述协议调试编码端600的一种实现结构包括:Wireshark抓包软件模块610,第一主控卡镜像模块620,第一串口读取模块630。所述Wireshark抓包软件模块610与所述主控卡相连,随时抓取所述调试网卡发送来的协议数据包。所述第一主控卡镜像模块620与所述主控卡相连,加载主控卡镜像。所述第一串口读取模块630与所述Wireshark抓包软件模块610和第一主控卡镜像模块620分别相连,通过Wireshark抓包软件直接查看主控卡上的调试网卡的串口输出信息。
进一步,如图7所示,所述协议调试编码端700的另一种实现结构包括:代码修改模块710,第二主控卡镜像模块720,第二串口读取模块730。所述代码修改模块710与所述主控卡相连,修改主控卡代码,在主控卡中添加串口打印rpc消息或/和串口打印rlink消息的打印代码。所述第二主控卡镜像模块720与所述主控卡相连,编译代码,生成新的主控卡镜像,重启主控卡加载所述新的主控卡镜像。所述第二串口读取模块730与所述第二主控卡镜像模块720相连,在主控卡运行过程中查看调试网卡的串口输出信息。
实施例二
本实施例也提供一种堆叠交换机的协议调试通用方法及系统,其与实施例一的区别在于,实施例一所述的堆叠交换机的协议调试通用方法及系统是从堆叠交换机的角度进行描述的,而本实施例所述的堆叠交换机的协议调试通用方法及系统是从与堆叠交换机进行通信的对端角度进行描述的。
本实施例的应用场景如图1所示,所述堆叠交换机包括主控卡和线卡,所述主控卡和线卡均包括带外网卡和调试网卡。
如图8所示,本实施例所述的堆叠交换机的协议调试通用方法包括:
S801,利用一协议调试编码端接收调试网卡发送的协议数据包。所述协议调试编码端可以是类似PC机的具备调试编码功能的任意类型的终端。所述协议数据包的格式参见表1所示,包括以太网第二层头和自定义数据两部分;其中,所述以太网第二层头部分包括目的MAC,源MAC和数据包长度;所述自定义数据部分包括协议标识、协议版本、会话类型、会话标识、头校验、客户标识、客户数据长度、数据字段、以及客户数据校验。
进一步,如图9所示,步骤S801所述的利用一协议调试编码端接收调试网卡发送的协议数据包的一种实现过程包括:
S901,在所述带外网卡的驱动中添加协议调试层。
S902,利用所述协议调试层将上层软件发送的协议数据包不做任何修改通过调试网卡发送至协议调试编码端。
S802,所述协议调试编码端通过主控卡镜像直接查看调试网卡的串口输出信息。
进一步,如图10所示,步骤S802所述的协议调试编码端通过主控卡镜像直接查看调试网卡的串口输出信息的一种实现过程包括:
S1001,所述协议调试编码端启用Wireshark抓包软件随时抓取所述调试网卡发送来的协议数据包。
S1002,所述协议调试编码端加载主控卡镜像。
S1003,所述协议调试编码端通过Wireshark抓包软件直接查看主控卡上的调试网卡的串口输出信息。如:在Wireshark查看rpc消息和rlink消息。
进一步,如图11所示,步骤S802所述的协议调试编码端通过主控卡镜像直接查看调试网卡的串口输出信息的另一种实现过程包括:
S1101,通过所述协议调试编码端修改主控卡代码,在主控卡中添加串口打印rpc消息或/和串口打印rlink消息的打印代码。例如:修改主控卡代码,添加打印代码的一种实现方式参考如下:
S1102,所述协议调试编码端编译代码,生成新的主控卡镜像,重启主控卡加载所述新的主控卡镜像。
S1103,所述协议调试编码端在主控卡运行过程中查看调试网卡的串口输出信息。
在实际应用中,rpc消息的内容比较多,图11所述的实现方法中串口终端无法一页显示rpc消息的全部内容,或者存在后面消息覆盖前面消息的情况,图10所述的实现方法则不存在此问题。当只编写了打印rpc和rlink的代码,突然想看tunnel消息代码的时候,图11所述的实现方法需要重新写代码、编译生成镜像,重启主控卡;而图10所述的实现方法则可以直接查看,无需再做工作。故而,在实际应用中,可根据实际情况选择图10所述的实现方法或图11所述的实现方法。
本发明所述的堆叠交换机的协议调试通用方法的保护范围不限于本实施例列举的步骤执行顺序,凡是利用本发明的原理所做的简单步骤增减、顺序调整等替换方案都包括在本发明的保护范围内。
本实施例还提供一种堆叠交换机的协议调试通用系统,该系统可以实现本实施例所述的堆叠交换机的协议调试通用方法,但本实施例所述的堆叠交换机的协议调试通用方法的实现装置包括但不限于本实施例列举的堆叠交换机的协议调试通用系统的结构。
如图12所示,本实施例所述的堆叠交换机的协议调试通用系统1200包括:协议调试编码端1210。所述协议调试编码端1210接收调试网卡发送的协议数据包,通过主控卡镜像直接查看调试网卡的串口输出信息。
进一步,如图13所示,所述调试网卡1300包括一协议调试层1310;所述协议调试层1310添加于所述带外网卡的驱动中,用于将上层软件发送的协议数据包不做任何修改通过调试网卡发送至协议调试编码端。
进一步,如图14所示,所述协议调试编码端1400的一种实现结构包括:Wireshark抓包软件模块1410,第一主控卡镜像模块1420,第一串口读取模块1430。所述Wireshark抓包软件模块1410与所述主控卡相连,随时抓取所述调试网卡发送来的协议数据包。所述第一主控卡镜像模块1420与所述主控卡相连,加载主控卡镜像。所述第一串口读取模块1430与所述Wireshark抓包软件模块1410和第一主控卡镜像模块1420分别相连,通过Wireshark抓包软件直接查看主控卡上的调试网卡的串口输出信息。
进一步,如图15所示,所述协议调试编码端1500的另一种实现结构包括:代码修改模块1510,第二主控卡镜像模块1520,第二串口读取模块1530。所述代码修改模块1510与所述主控卡相连,修改主控卡代码,在主控卡中添加串口打印rpc消息或/和串口打印rlink消息的打印代码。所述第二主控卡镜像模块1520与所述主控卡相连,编译代码,生成新的主控卡镜像,重启主控卡加载所述新的主控卡镜像。所述第二串口读取模块1530与所述第二主控卡镜像模块1520相连,在主控卡运行过程中查看调试网卡的串口输出信息。
本发明通过修改网卡驱动,将经过网卡的所有协议数据包传输到协议调试编码端,协议调试编码端通过抓包工具如Wireshark得到协议数据包,然后编写lum脚本分析相关协议包以及协议包各个字段,最终实现通用的堆叠交换机的协议调试。
本发明能仅通过一次编码对所有的协议包都有效,无需针对特定协议包进行单独编码,具有通用性,且能灵活抓取分析各种协议包或者特定协议包的各个字段,无需编写额外的代码,不用重新加载代码到目标板卡,还能够使用通用的包分析工具如Wireshark对协议包进行分析,方便直观。
综上所述,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。