一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

网络设备的测试方法、装置及电子设备与流程

2022-11-30 09:42:56 来源:中国专利 TAG:


1.本发明涉及测试技术领域,具体而言,涉及一种网络设备的测试方法、装置及电子设备。


背景技术:

2.网络损伤测试是指在实验室中对网络设备或应用程序在各种网络状况下的性能测试,通常是模拟不稳定的网络环境,例如,数据包丢失、延迟、重复、错误、限速等情况,在这些情况下,可以准确可靠地测试出待测设备在真实网络环境中的性能。
3.目前,通常采用两种方式对网络设备进行网络损伤测试。第一,使用商业网络损伤测试仪,然而商业网络损伤测试仪价格昂贵,使得测试成本增加,存在测试成本高的问题。第二,使用免费的网络损伤模拟软件,例如,在安装有网络损伤模拟软件的计算机设备上构造流量,再将损伤流量转发到待测设备上,这种方式的测试环境的部署、流量构造、网络损伤配置等均由测试人员手动完成,并且通过手动触发方式实现流量发送,存在自动化程度低,重复性工作多的问题。此外,还存在缺乏对不同协议流量的灵活定制、缺乏流量统计和传输结果汇总的问题,不利于测试分析。
4.针对上述的问题,目前尚未提出有效的解决方案。


技术实现要素:

5.本发明实施例提供了一种网络设备的测试方法、装置及电子设备,以至少解决现有技术中人工部署网络损伤测试环境导致测试效率低的技术问题。
6.根据本发明实施例的一个方面,提供了一种网络设备的测试方法,包括:从拓扑文件中获取容器地址信息,并确定与容器地址信息相对应的多个容器,其中,拓扑文件用于记录待测网络设备的设备信息,容器是对待测网络设备的测试环境进行容器化配置得到的;通过多个容器向待测网络设备发送目标流量数据包,生成流量传输信息,其中,目标流量数据包至少包括异常数据信息,异常数据信息用于对待测网络设备的容错能力进行测试;根据流量传输信息,生成测试报告,其中,测试报告中至少包括待分析数据,待分析数据表征对待测网络设备进行性能测试的测试结果。
7.进一步地,网络设备的测试方法还包括:获取第一脚本文件,其中,第一脚本文件至少包括第一应用程序和第二应用程序的安装指令,第一应用程序用于构造第一流量数据包,第一流量数据包为不包含异常数据信息的数据包,第二应用程序用于对第一流量数据包进行损伤模拟处理;基于第一脚本文件构建多个容器镜像,并基于安装指令,在多个容器镜像中安装第一应用程序和第二应用程序,其中,容器镜像用于启动与容器镜像对应的容器;将容器镜像上传至镜像仓库,其中,镜像仓库用于管理容器镜像。
8.进一步地,网络设备的测试方法还包括:获取待测网络设备的设备信息;确定与设备信息相对应的容器地址信息和损伤参数,其中,容器地址信息至少包括容器的起始地址和地址范围,损伤参数至少包括异常数据信息;基于设备信息、容器地址信息以及损伤参
数,生成拓扑文件。
9.进一步地,网络设备的测试方法还包括:基于损伤参数,对第一流量数据包进行异常处理,得到目标流量数据包;基于目标流量数据包,确定流量发送方式,并对流量发送方式进行格式转换,得到转换后的流量发送方式;基于转换后的流量发送方式,向待测网络设备发送目标流量数据包。
10.进一步地,网络设备的测试方法还包括:从多个容器中获取与容器地址信息相对应的流量传输信息,得到与每个容器相对应的流量传输信息;基于每个容器相对应的流量传输信息,生成与每个容器相对应的传输记录文件,其中,传输记录文件用于存储容器的流量传输结果。
11.进一步地,网络设备的测试方法还包括:显示流量传输信息,以使目标对象基于显示信息,对流量传输信息进行分析。
12.进一步地,网络设备的测试方法还包括:执行对待测网络设备进行测试的测试程序脚本,得到解析后的拓扑文件,其中,测试程序脚本至少包括拓扑文件的文件名称。
13.根据本发明实施例的另一方面,还提供了一种网络设备的测试装置,包括:获取模块,用于从拓扑文件中获取容器地址信息,并确定与容器地址信息相对应的多个容器,其中,拓扑文件用于记录待测网络设备的设备信息,容器是对待测网络设备的测试环境进行容器化配置得到的;发送模块,用于通过多个容器向待测网络设备发送目标流量数据包,生成流量传输信息,其中,目标流量数据包至少包括异常数据信息,异常数据信息用于对待测网络设备的容错能力进行测试;汇总模块,用于根据流量传输信息,生成测试报告,其中,测试报告中至少包括待分析数据,待分析数据表征对待测网络设备进行性能测试的测试结果。
14.根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述的网络设备的测试方法。
15.根据本发明实施例的另一方面,还提供了一种电子设备,该电子设备包括一个或多个处理器;存储器,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现用于运行程序,其中,程序被设置为运行时执行上述的网络设备的测试方法。
16.在本发明实施例中,采用通过容器技术部署流量损伤测试环境,并自动化发送损伤流量的方式,首先从拓扑文件中获取容器地址信息,并确定与容器地址信息相对应的多个容器,然后通过多个容器向待测网络设备发送目标流量数据包,生成流量传输信息,再根据流量传输信息,生成测试报告,其中,测试报告中至少包括待分析数据,待分析数据表征对待测网络设备进行性能测试的测试结果,拓扑文件用于记录待测网络设备的设备信息,容器是对待测网络设备的测试环境进行容器化配置得到的,目标流量数据包至少包括异常数据信息,异常数据信息用于对待测网络设备的容错能力进行测试。
17.在上述过程中,通过对待测网络设备的测试环境进行容器化配置,实现了对测试所需的应用软件的自动部署过程,节省了测试环境的部署时间,并且测试结束后能够自动销毁容器,释放资源,解决了环境部署繁琐、消耗计算机资源的问题;通过在拓扑文件中定义网络损伤配置和容器地址,实现了在容器中根据配置参数自动下发网络损伤配置的过
程,减少了人工重复性工作,提高了测试效率;通过确定与容器地址信息相对应的多个容器,并通过多个容器向待测网络设备发送目标流量数据包,能够模拟不同地址进行流量传输的过程,更加贴合现实的网络环境,提升了流量仿真度;在测试过程中,根据流量传输信息,生成测试报告,对流量传输结果进行记录,方便测试人员提取流量传输结果详情并对待测设备的性能测试结果进行分析。
18.由此可见,通过本发明的技术方案,达到了降低测试成本、灵活部署测试环境以及定制化自动发送流量并统计流量传输结果的目的,从而实现了提高测试效率的技术效果,进而解决了现有技术中人工部署网络损伤测试环境导致测试效率低的技术问题。
附图说明
19.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
20.图1是根据本发明实施例的一种可选的网络设备的测试方法的流程图;
21.图2是一种现有的网络设备的测试环境的示意图;
22.图3是根据本发明实施例的一种可选的网络设备的测试环境的示意图;
23.图4是根据本发明实施例的一种可选的网络设备的测试系统的操作流程图;
24.图5是根据本发明实施例的一种可选的流量发送的流程图;
25.图6是根据本发明实施例的一种可选的网络设备的测试装置的示意图。
具体实施方式
26.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
27.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
28.需要说明的是,本发明所涉及的相关信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。例如,本系统和相关用户或机构间设置有接口,在获取相关信息之前,需要通过接口向前述的用户或机构发送获取请求,并在接收到前述的用户或机构反馈的同意信息后,获取相关信息。
29.实施例1
30.根据本发明实施例,提供了一种网络设备的测试方法的方法实施例,需要说明的
是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
31.图1是根据本发明实施例的一种可选的网络设备的测试方法的流程图,如图1所示,该方法包括如下步骤:
32.步骤s101,从拓扑文件中获取容器地址信息,并确定与容器地址信息相对应的多个容器,其中,拓扑文件用于记录待测网络设备的设备信息,容器是对待测网络设备的测试环境进行容器化配置得到的。
33.在上述步骤中,可以通过应用系统、处理器、电子设备等装置从拓扑文件中获取容器地址信息。可选的,容器地址信息可以是容器可配置的ip数量和起始ip地址信息,拓扑文件用于记录测试中用到的网络设备和设备之间的连接关系,拓扑文件采用yaml格式。
34.可选的,图2是一种现有的网络设备的测试环境的示意图,在现有技术中,需要手工搭建如图2所示的网络损伤测试环境,如图2所示,对网络设备进行网络损伤测试的环境搭建需要具备:待测设备(如防火墙)、流量触发装置、网络损伤模拟器,其中,流量触发装置是通过测试人员在计算机(pc)上预先安装发包工具或应用软件来实现的,网络损伤模拟器是测试人员预先在计算机上安装网络损伤模拟器tc工具实现的(tc工具是linux系统中的一个工具,全名为traffic control,它的增强工具netem可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带宽、传输延迟、丢包等情况),然后,测试人员根据测试要求预先对tc工具进行配置,以使测试过程中触发的流量经tc工具处理后产生损伤效果。其中,流量触发装置和待测设备通过交换互连网元(如交换机)联通,流量触发装置发送流量,再经网络损伤模拟器将数据包处理成损伤数据包,转发到待测设备,从而实现对待测设备的网络损伤测试。
35.在上述现有技术中,存在以下缺陷:在测试环境部署方面,测试环境的部署、流量构造、网络损伤配置均是手工完成,自动化程度低,重复性工作多;在流量仿真方面存在局限性,当模拟应用层协议的流量时,需要为不同的应用层协议搭建不同的客户端和服务端软件,环境搭建繁琐,并且需要消耗更多的计算机资源,增加了测试成本;在流量记录方面,使用应用软件发送的流量,缺乏流量统计和传输结果的汇总,不利于测试分析。
36.可选的,图3是根据本发明实施例的一种可选的网络设备的测试环境的示意图,如图3所示,将多个容器组成的组件安装在一台linux操作系统的主机上,用于自动化启动容器和发送网络损伤流量,并且,将一台linux操作系统的主机通过交换机和待测设备(如防火墙)联通,其中,linux主机至少安装两张网卡,网卡用于在容器启动后,将容器添加到相应网络环境中。可选的,本发明适用于对网络设备(如防火墙)进行网络损伤测试,尤其是在测试资源有限、环境部署繁琐、需要模拟贴近现实网络环境流量、制造出复杂应用层流量的情况下,本发明中的自动化方案可以较好的解决这些问题。
37.需要说明的是,在上述过程中,通过对待测网络设备的测试环境进行容器化配置,实现了对测试所需的应用软件的自动部署过程,节省了测试环境的部署时间,并且测试结束后能够自动销毁容器,释放资源,解决了环境部署繁琐、消耗计算机资源的问题。
38.步骤s102,通过多个容器向待测网络设备发送目标流量数据包,生成流量传输信息,其中,目标流量数据包至少包括异常数据信息,异常数据信息用于对待测网络设备的容
错能力进行测试。
39.在上述步骤中,目标流量数据包可以是经过损伤处理后的数据包,异常数据信息可以是数据丢失、数据重复、数据乱序等信息。可选的,在将各种应用软件和网络损伤模拟软件打包并部署到不同的容器之后,可以通过启动多个容器,实现自动向待测网络设备发送目标流量数据包的过程。
40.需要说明的是,通过多个容器向待测网络设备发送目标流量数据包,能够模拟不同地址进行流量传输的过程,更加贴合现实的网络环境,提升了流量仿真度。
41.步骤s103,根据流量传输信息,生成测试报告,其中,测试报告中至少包括待分析数据,待分析数据表征对待测网络设备进行性能测试的测试结果。
42.在上述步骤中,流量传输信息可以是流量持续时间、应用名称、文件传输次数、传输失败次数、失败详情以及传输速率等信息。可选的,在生成流量传输信息之后,测试程序脚本会提取出所有流量传输结果,并把传输结果打印到测试报告中,方便测试人员分析传输失败原因。
43.需要说明的是,通过对流量传输结果进行记录,方便测试人员提取流量传输结果详情并对待测设备的性能测试结果进行分析。
44.基于上述步骤s101至步骤s103所限定的方案,可以获知,在本发明实施例中,采用通过容器技术部署流量损伤测试环境,并自动化发送损伤流量的方式,首先从拓扑文件中获取容器地址信息,并确定与容器地址信息相对应的多个容器,然后通过多个容器向待测网络设备发送目标流量数据包,生成流量传输信息,再根据流量传输信息,生成测试报告,其中,测试报告中至少包括待分析数据,待分析数据表征对待测网络设备进行性能测试的测试结果,拓扑文件用于记录待测网络设备的设备信息,容器是对待测网络设备的测试环境进行容器化配置得到的,目标流量数据包至少包括异常数据信息,异常数据信息用于对待测网络设备的容错能力进行测试。
45.容易注意到的是,在上述过程中,通过对待测网络设备的测试环境进行容器化配置,实现了对测试所需的应用软件的自动部署过程,节省了测试环境的部署时间,并且测试结束后能够自动销毁容器,释放资源,解决了环境部署繁琐、消耗计算机资源的问题;通过在拓扑文件中定义网络损伤配置和容器地址,实现了在容器中根据配置参数自动下发网络损伤配置的过程,减少了人工重复性工作,提高了测试效率;通过确定与容器地址信息相对应的多个容器,并通过多个容器向待测网络设备发送目标流量数据包,能够模拟不同地址进行流量传输的过程,更加贴合现实的网络环境,提升了流量仿真度;在测试过程中,根据流量传输信息,生成测试报告,对流量传输结果进行记录,方便测试人员提取流量传输结果详情并对待测设备的性能测试结果进行分析。
46.由此可见,通过本发明的技术方案,达到了降低测试成本、灵活部署测试环境以及定制化自动发送流量并统计流量传输结果的目的,从而实现了提高测试效率的技术效果,进而解决了现有技术中人工部署网络损伤测试环境导致测试效率低的技术问题。
47.在一种可选的实施例中,在从拓扑文件中获取容器地址信息之前,首先获取第一脚本文件,然后基于第一脚本文件构建多个容器镜像,并基于安装指令,在多个容器镜像中安装第一应用程序和第二应用程序,并将容器镜像上传至镜像仓库。其中,第一脚本文件至少包括第一应用程序和第二应用程序的安装指令,第一应用程序用于构造第一流量数据
包,第一流量数据包为不包含异常数据信息的数据包,第二应用程序用于对第一流量数据包进行损伤模拟处理,容器镜像用于启动与容器镜像对应的容器,镜像仓库用于管理容器镜像。
48.可选的,在本发明实施例中,使用docker容器部署流量触发装置,从而通过启动容器来模拟流量发送情况。其中,容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。docker是一种开源的应用容器引擎,实现将应用程序以及依赖包打包到一个可移植的镜像中,无需任何修改就能够在linux或windows操作系统的主机上运行,开发人员只需为应用创建一次运行环境,然后打包成容器便可在任何主机上运行,使得应用部署变得更高效、一致和可重复。
49.可选的,第一脚本文件可以是用来定制容器镜像的dockerfile文件(dockerfile是构建镜像的一个文本文件,包含了一条条构建镜像的指令和说明),dockerfile文件中至少包括应用程序的安装指令,可选的,安装指令可以是用于构造第一流量数据包的应用程序即第一应用程序的安装指令,例如,客户端程序的安装指令、服务端程序的安装指令等;安装指令还可以是用于对第一流量数据包进行损伤模拟处理的应用程序即第二应用程序的安装指令,例如网络损伤模拟软件tc的安装指令。
50.进一步地,对dockerfile文件进行编译处理,从而生成多个容器镜像,实现将流量构造所需的各种应用软件打包到不同的docker镜像的过程,然后将容器镜像上传到镜像仓库中,后续使用时从镜像仓库获取镜像并保存到本地,之后要启动容器只需调用本地保存好的镜像即可。其中,生成的docker镜像至少包括:客户端镜像,用于启动客户端容器,例如,可充当http、ftp、tftp、dns、smtp、pop3、imap4等应用的客户端,客户端容器通过docker volume(docker数据卷)外挂流量发送脚本,实现不同应用层协议的流量传输,其中docker数据卷可以将宿主机上的文件或者目录直接映射进容器中;http服务端镜像,用于提供web服务,支持http和https服务;ftp服务端镜像,用于提供ftp服务;tftp服务端镜像,用于提供tftp服务;mail服务端镜像,用于提供邮件相关服务,支持smtp、pop3、imap4等协议;sip镜像,用于提供sip软件功能,进行sip流量仿真;yate镜像,用于提供电话通讯服务;rtsp客户端和服务端镜像,用于进行rtsp多媒体流量仿真。
51.可选的,将网络损伤模拟软件tc即第二应用程序打包到上述的docker镜像中,由于docker容器是通过docker镜像启动的,容器是运行在linux操作系统的宿主机上的,因此,只需一台宿主机,就可以启动各种docker容器来模拟不同应用层协议的流量发送,节省了计算机设备资源。另外,各种应用所用到的传输文件均是通过docker volume的方式实现将宿主机上的文件目录映射到容器中,能够更方便灵活的指定和维护要传输的文件。
52.需要说明的是,在上述过程中,实现了将各种应用软件打包进docker容器中的过程。在对待测设备进行测试时,只需占用一台主机资源,自动化启动容器即可快速完成环境搭建,降低了测试成本,节省了测试的时间,提高了测试的效率。
53.在一种可选的实施例中,在将容器镜像上传至镜像仓库之后,首先获取待测网络设备的设备信息,然后确定与设备信息相对应的容器地址信息和损伤参数,再基于设备信息、容器地址信息以及损伤参数,生成拓扑文件。其中,容器地址信息至少包括容器的起始地址和地址范围,损伤参数至少包括异常数据信息。
54.可选的,在对待测设备进行流量损伤测试前,测试人员需要对发送损伤流量的网
络损伤模拟软件tc容器设置上网络损伤参数,例如,丢包率、延迟时间、损坏率等,数值可根据测试需求进行调整,由于拓扑文件中记录了测试中需要启动的docker容器,并且网络损伤模拟软件tc已打包到docker镜像中,因此,在本发明中使用拓扑文件来记录网络损伤模拟软件tc的关键配置项即损伤参数,具体的,关键配置项即损伤参数至少包括:延迟时间、延迟抖动、丢包率、包重复率、包损坏率、立即发送的数据包比率(乱序)、发包速率等。具体的,以ftp容器为例,可以对ftp客户端容器和ftp服务端容器进行配置,例如,对ftp客户端容器,将延迟时间配置为100ms,将延迟抖动配置为10ms,将丢包率配置为1%,将包重复率配置为1%,将包损坏率配置为0.2%,将立即发送的数据包比率配置为25%,将发包速率配置为100kbit;对ftp服务端容器,将延迟时间配置为200ms,将延迟抖动配置为20ms,将丢包率配置为2%,将包重复率配置为0.5%,将包损坏率配置为0.2%,将立即发送的数据包比率配置为30%。
55.可选的,为了使测试过程更加贴近现实网络流量,在本发明中通过在拓扑文件中增加容器可配置的ip数量和起始ip地址,即在拓扑文件中定义容器可配置的多个ip地址,实现模拟大量不同ip发送流量的过程。例如,在对ftp客户端容器的定义中,设置multi_ip命令来指定容器可配置的ip数量,并在schema结构中定义容器ip的起始地址,具体的,可以将docker_ftpclient容器中的multi_ip命令设置为multi_ip:100,在schema结构中的conn_sw_ftpclient连接上,设置起始ip地址为docker_ftpclient:11.3.0.2,表示docker_ftpclient容器在conn_sw_ftpclient连接上的网卡需要配置101个ip地址,地址范围是11.3.0.2-11.3.0.102。
56.需要说明的是,基于设备信息、容器地址信息以及损伤参数,生成拓扑文件,实现了在拓扑文件中定义网络损伤配置和容器的多ip地址的过程,通过对客户端和服务端进行配置,在流量发送时可以指定源ip,从而实现大量不同ip发送流量的效果,提升了流量仿真度。
57.在一种可选的实施例中,在通过多个容器向待测网络设备发送目标流量数据包的过程中,首先基于损伤参数,对第一流量数据包进行异常处理,得到目标流量数据包,然后基于目标流量数据包,确定流量发送方式,并对流量发送方式进行格式转换,得到转换后的流量发送方式,再基于转换后的流量发送方式,向待测网络设备发送目标流量数据包。
58.可选的,对不同应用的流量发送方式进行自动封装即格式转换处理,客户端容器使用流量发送脚本实现不同应用层协议流量的传输。具体的,在本发明中将不同应用的流量发送方式都进行了封装,使用命令行参数方式来触发指定协议的流量,以ftp为例,在ftp客户端容器中执行如下命令发送流量:python ftp

source 1.0.0.2

hosts 2.0.0.2 2.0.0.3

u admin

ps admin

a 1.0.0.2

f file1 file2 file3

d 3600

r/home/result

tag 1.0.0.2

stdout。上述命令行参数所达到的效果是:ftp客户端分别从两台ftp服务端下载文件,服务端ip分别是2.0.0.2和2.0.0.3,客户端ip是1.0.0.2,ftp传输模式采用主动模式,客户端依次下载文件file1、file2、file3,文件反复下载,持续时间3600秒,流量统计结果保存在目录/home/result下面。可选的,其他应用也使用类似的命令行参数方式发送流量,其中,根据不同应用的特点,命令行参数的设置会稍有不同,例如tftp可以设置数据包的分块长度,在tftp客户端容器中增加参数blksize设置数据长度。
59.可选的,图5是根据本发明实施例的一种可选的流量发送的流程图,仍然以ftp为
例,在ftp容器中进行流量自动化发送的过程如图5所示,首先从命令行获取服务器地址,并将所有地址保存到队列中,然后从命令行获取传输文件,并将所有文件名保存到队列,然后判断是否在配置的流量时长范围内,当超出流量时长范围时,停止流量发送,并更新传输结果;在流量时长范围内,则从服务器队列中取出一个地址,从文件队列中取出一个文件名,用作本次传输使用,然后将取出的服务器地址和文件放回队列,以达到循环使用的过程,然后从命令行获取文件传输方式,根据传输方式上传或下载文件,然后使用curl构造ftp上传或下载文件的命令,然后根据命令行参数完善流量传输命令,如域名处理、ftp主动、被动模式、超时时间等,然后下发文件传输命令,执行当次文件传输,并获取流量传输结果,然后判断文件传输是否成功,当文件传输成功时,通过命令行的speed参数,周期性记录文件传输速率,然后周期性记录传输结果到yaml格式文件,包括传输时长、传输次数、失败次数、传输详细信息;当文件传输失败时,记录失败信息,包括时间、服务端地址、文件名、失败原因等。
60.需要说明的是,在上述过程中,通过为不同应用的流量发送提供一套相对统一的命令行参数的触发方式,可以实现流量自动化发送,并且可以根据测试需求灵活地对参数进行调整,以达到想要的流量发送效果,能够满足不同应用层协议流量的定制化和自动化发送的需求。
61.在一种可选的实施例中,在生成流量传输信息之后,从多个容器中获取与容器地址信息相对应的流量传输信息,得到与每个容器相对应的流量传输信息,然后基于每个容器相对应的流量传输信息,生成与每个容器相对应的传输记录文件,其中,传输记录文件用于存储容器的流量传输结果。
62.可选的,在生成流量传输信息之后,检测流量传输结果,输出测试报告。具体的,在容器中执行流量发送命令后,流量脚本(命令行参数脚本)会为每个客户端源ip周期性采集流量传输结果,并生成与每个容器相对应的传输记录文件,传输记录文件采用yaml格式,文件以“容器名_tag”命名,流量采集信息至少包括:流量持续时间(duration)、应用名称(proto)、文件传输次数(total)、传输失败次数(fail)、失败详情(fail_detail)以及传输速率(speed_detail)等。然后,通过docker volume的方式将yaml文件所在的容器目录映射到linux主机的文件目录中,从而能够在测试完成且容器销毁后,使流量传输记录文件保留在主机上。
63.另外,在一种可选的实施例中,在从多个容器中获取与容器地址信息相对应的流量传输信息,得到与每个容器相对应的流量传输信息之后,显示流量传输信息,以使目标对象基于显示信息,对流量传输信息进行分析。
64.可选的,流量脚本(命令行参数脚本)周期性采集流量传输结果之后,还会显示流量传输信息,以使目标对象即测试人员基于显示信息,对流量传输信息进行分析。具体的,显示信息可以是传输失败的次数等信息,例如,显示“失败:ftp客户端docker_vpn_ftpclient_v6_2011:7:1::7传输了6次,失败了3次,失败率50%高于预期,请检查!”。
65.需要说明的是,在测试过程中,基于每个容器相对应的流量传输信息,生成与每个容器相对应的传输记录文件,对流量传输结果进行记录,方便测试人员提取流量传输结果详情并对待测设备的性能测试结果进行分析。
66.在一种可选的实施例中,在从拓扑文件中获取容器地址信息之前,执行对待测网络设备进行测试的测试程序脚本,得到解析后的拓扑文件,其中,测试程序脚本至少包括拓
扑文件的文件名称。
67.可选的,在测试开始时下发执行命令,命令中包括测试程序脚本的名称,而测试程序脚本至少包括拓扑文件的文件名称,因此可以得知调用的是哪个拓扑文件,并通过指定拓扑文件来获取设备相关信息,从而让自动化脚本能登录到待测设备进行相关操作。
68.可选的,图4是根据本发明实施例的一种可选的网络设备的测试系统的操作流程图,如图4所示,通过自动化框架和自动化脚本实现自动化启动容器和发送网络损伤流量的过程。具体的,下发执行命令后在linux主机上执行自动化测试脚本,然后解析拓扑文件提取出需要启动的docker容器,然后判断是否遍历完所有待启动容器,然后使用容器镜像启动所有待启动容器,并将容器连接到网络,然后根据容器的multi_ip,为容器网卡配置多ip地址,并根据容器的tc配置,为容器网卡下发网络损伤配置,直至遍历所有待启动容器完成,然后继续遍历客户端容器的multi_ip,并在容器中执行流量触发命令,根据multi_ip指定不同的源ip,直至遍历完全部的客户端容器的multi_ip,并到达指定时间后停止流量,例如,指定时间可以是前述过程中命令行参数中设置的持续时间3600秒,然后销毁所有容器和容器的网络。
69.需要说明的是,通过执行对待测网络设备进行测试的测试程序脚本,可以得到解析后的拓扑文件,为后续提取拓扑文件中记录的需要启动的docker容器提供了准确的数据基础。
70.由此可见,通过本发明的技术方案,达到了降低测试成本、灵活部署测试环境以及定制化自动发送流量并统计流量传输结果的目的,从而实现了提高测试效率的技术效果,进而解决了现有技术中人工部署网络损伤测试环境导致测试效率低的技术问题。
71.实施例2
72.根据本发明实施例,提供了一种网络设备的测试装置的实施例,其中,图6是根据本发明实施例的一种可选的网络设备的测试装置的示意图,如图6所示,该装置包括:获取模块601,用于从拓扑文件中获取容器地址信息,并确定与容器地址信息相对应的多个容器,其中,拓扑文件用于记录待测网络设备的设备信息,容器是对待测网络设备的测试环境进行容器化配置得到的;发送模块602,用于通过多个容器向待测网络设备发送目标流量数据包,生成流量传输信息,其中,目标流量数据包至少包括异常数据信息,异常数据信息用于对待测网络设备的容错能力进行测试;汇总模块603,用于根据流量传输信息,生成测试报告,其中,测试报告中至少包括待分析数据,待分析数据表征对待测网络设备进行性能测试的测试结果。
73.需要说明的是,上述获取模块601、发送模块602以及汇总模块603对应于上述实施例中的步骤s101至步骤s103,三个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。
74.可选的,网络设备的测试装置还包括:第一获取模块,用于获取第一脚本文件,其中,第一脚本文件至少包括第一应用程序和第二应用程序的安装指令,第一应用程序用于构造第一流量数据包,第一流量数据包为不包含异常数据信息的数据包,第二应用程序用于对第一流量数据包进行损伤模拟处理;部署模块,用于基于第一脚本文件构建多个容器镜像,并基于安装指令,在多个容器镜像中安装第一应用程序和第二应用程序,其中,容器镜像用于启动与容器镜像对应的容器;上传模块,用于将容器镜像上传至镜像仓库,其中,
镜像仓库用于管理容器镜像。
75.可选的,在本发明实施例中,使用docker容器部署流量触发装置,从而通过启动容器来模拟流量发送情况。其中,容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。docker是一种开源的应用容器引擎,实现将应用程序以及依赖包打包到一个可移植的镜像中,无需任何修改就能够在linux或windows操作系统的主机上运行,开发人员只需为应用创建一次运行环境,然后打包成容器便可在任何主机上运行,使得应用部署变得更高效、一致和可重复。
76.可选的,第一脚本文件可以是用来定制容器镜像的dockerfile文件(dockerfile是构建镜像的一个文本文件,包含了一条条构建镜像的指令和说明),dockerfile文件中至少包括应用程序的安装指令,可选的,安装指令可以是用于构造第一流量数据包的应用程序即第一应用程序的安装指令,例如,客户端程序的安装指令、服务端程序的安装指令等;安装指令还可以是用于对第一流量数据包进行损伤模拟处理的应用程序即第二应用程序的安装指令,例如网络损伤模拟软件tc的安装指令。
77.进一步地,对dockerfile文件进行编译处理,从而生成多个容器镜像,实现将流量构造所需的各种应用软件打包到不同的docker镜像的过程,然后将容器镜像上传到镜像仓库中,后续使用时从镜像仓库获取镜像并保存到本地,之后要启动容器只需调用本地保存好的镜像即可。其中,生成的docker镜像至少包括:客户端镜像,用于启动客户端容器,例如,可充当http、ftp、tftp、dns、smtp、pop3、imap4等应用的客户端,客户端容器通过docker volume(docker数据卷)外挂流量发送脚本,实现不同应用层协议的流量传输,其中docker数据卷可以将宿主机上的文件或者目录直接映射进容器中;http服务端镜像,用于提供web服务,支持http和https服务;ftp服务端镜像,用于提供ftp服务;tftp服务端镜像,用于提供tftp服务;mail服务端镜像,用于提供邮件相关服务,支持smtp、pop3、imap4等协议;sip镜像,用于提供sip软件功能,进行sip流量仿真;yate镜像,用于提供电话通讯服务;rtsp客户端和服务端镜像,用于进行rtsp多媒体流量仿真。
78.可选的,将网络损伤模拟软件tc即第二应用程序打包到上述的docker镜像中,由于docker容器是通过docker镜像启动的,容器是运行在linux操作系统的宿主机上的,因此,只需一台宿主机,就可以启动各种docker容器来模拟不同应用层协议的流量发送,节省了计算机设备资源。另外,各种应用所用到的传输文件均是通过docker volume的方式实现将宿主机上的文件目录映射到容器中,能够更方便灵活的指定和维护要传输的文件。
79.需要说明的是,在上述过程中,实现了将各种应用软件打包进docker容器中的过程。在对待测设备进行测试时,只需占用一台主机资源,自动化启动容器即可快速完成环境搭建,降低了测试成本,节省了测试的时间,提高了测试的效率。
80.可选的,网络设备的测试装置还包括:第二获取模块,用于获取待测网络设备的设备信息;确定模块,用于确定与设备信息相对应的容器地址信息和损伤参数,其中,容器地址信息至少包括容器的起始地址和地址范围,损伤参数至少包括异常数据信息;生成模块,用于基于设备信息、容器地址信息以及损伤参数,生成拓扑文件。
81.可选的,在对待测设备进行流量损伤测试前,测试人员需要对发送损伤流量的网络损伤模拟软件tc容器设置上网络损伤参数,例如,丢包率、延迟时间、损坏率等,数值可根据测试需求进行调整,由于拓扑文件中记录了测试中需要启动的docker容器,并且网络损
伤模拟软件tc已打包到docker镜像中,因此,在本发明中使用拓扑文件来记录网络损伤模拟软件tc的关键配置项即损伤参数,具体的,关键配置项即损伤参数至少包括:延迟时间、延迟抖动、丢包率、包重复率、包损坏率、立即发送的数据包比率(乱序)、发包速率等。具体的,以ftp容器为例,可以对ftp客户端容器和ftp服务端容器进行配置,例如,对ftp客户端容器,将延迟时间配置为100ms,将延迟抖动配置为10ms,将丢包率配置为1%,将包重复率配置为1%,将包损坏率配置为0.2%,将立即发送的数据包比率配置为25%,将发包速率配置为100kbit;对ftp服务端容器,将延迟时间配置为200ms,将延迟抖动配置为20ms,将丢包率配置为2%,将包重复率配置为0.5%,将包损坏率配置为0.2%,将立即发送的数据包比率配置为30%。
82.可选的,为了使测试过程更加贴近现实网络流量,在本发明中通过在拓扑文件中增加容器可配置的ip数量和起始ip地址,即在拓扑文件中定义容器可配置的多个ip地址,实现模拟大量不同ip发送流量的过程。例如,在对ftp客户端容器的定义中,设置multi_ip命令来指定容器可配置的ip数量,并在schema结构中定义容器ip的起始地址,具体的,可以将docker_ftpclient容器中的multi_ip命令设置为multi_ip:100,在schema结构中的conn_sw_ftpclient连接上,设置起始ip地址为docker_ftpclient:11.3.0.2,表示docker_ftpclient容器在conn_sw_ftpclient连接上的网卡需要配置101个ip地址,地址范围是11.3.0.2-11.3.0.102。
83.需要说明的是,基于设备信息、容器地址信息以及损伤参数,生成拓扑文件,实现了在拓扑文件中定义网络损伤配置和容器的多ip地址的过程,通过对客户端和服务端进行配置,在流量发送时可以指定源ip,从而实现大量不同ip发送流量的效果,提升了流量仿真度。
84.可选的,网络设备的测试装置还包括:数据处理模块,用于基于损伤参数,对第一流量数据包进行异常处理,得到目标流量数据包;转换模块,用于基于目标流量数据包,确定流量发送方式,并对流量发送方式进行格式转换,得到转换后的流量发送方式;第一发送模块,用于基于转换后的流量发送方式,向待测网络设备发送目标流量数据包。
85.可选的,对不同应用的流量发送方式进行自动封装即格式转换处理,客户端容器使用流量发送脚本实现不同应用层协议流量的传输。具体的,在本发明中将不同应用的流量发送方式都进行了封装,使用命令行参数方式来触发指定协议的流量,以ftp为例,在ftp客户端容器中执行如下命令发送流量:python ftp

source 1.0.0.2

hosts 2.0.0.2 2.0.0.3

u admin

ps admin

a 1.0.0.2

f file1 file2 file3

d 3600

r/home/result

tag 1.0.0.2

stdout。上述命令行参数所达到的效果是:ftp客户端分别从两台ftp服务端下载文件,服务端ip分别是2.0.0.2和2.0.0.3,客户端ip是1.0.0.2,ftp传输模式采用主动模式,客户端依次下载文件file1、file2、file3,文件反复下载,持续时间3600秒,流量统计结果保存在目录/home/result下面。可选的,其他应用也使用类似的命令行参数方式发送流量,其中,根据不同应用的特点,命令行参数的设置会稍有不同,例如tftp可以设置数据包的分块长度,在tftp客户端容器中增加参数blksize设置数据长度。
86.可选的,图5是根据本发明实施例的一种可选的流量发送的流程图,仍然以ftp为例,在ftp容器中进行流量自动化发送的过程如图5所示,首先从命令行获取服务器地址,并将所有地址保存到队列中,然后从命令行获取传输文件,并将所有文件名保存到队列,然后
判断是否在配置的流量时长范围内,当超出流量时长范围时,停止流量发送,并更新传输结果;在流量时长范围内,则从服务器队列中取出一个地址,从文件队列中取出一个文件名,用作本次传输使用,然后将取出的服务器地址和文件放回队列,以达到循环使用的过程,然后从命令行获取文件传输方式,根据传输方式上传或下载文件,然后使用curl构造ftp上传或下载文件的命令,然后根据命令行参数完善流量传输命令,如域名处理、ftp主动、被动模式、超时时间等,然后下发文件传输命令,执行当次文件传输,并获取流量传输结果,然后判断文件传输是否成功,当文件传输成功时,通过命令行的speed参数,周期性记录文件传输速率,然后周期性记录传输结果到yaml格式文件,包括传输时长、传输次数、失败次数、传输详细信息;当文件传输失败时,记录失败信息,包括时间、服务端地址、文件名、失败原因等。
87.需要说明的是,在上述过程中,通过为不同应用的流量发送提供一套相对统一的命令行参数的触发方式,可以实现流量自动化发送,并且可以根据测试需求灵活地对参数进行调整,以达到想要的流量发送效果,能够满足不同应用层协议流量的定制化和自动化发送的需求。
88.可选的,网络设备的测试装置还包括:第三获取模块,用于从多个容器中获取与容器地址信息相对应的流量传输信息,得到与每个容器相对应的流量传输信息;记录模块,用于基于每个容器相对应的流量传输信息,生成与每个容器相对应的传输记录文件,其中,传输记录文件用于存储容器的流量传输结果。
89.可选的,在生成流量传输信息之后,检测流量传输结果,输出测试报告。具体的,在容器中执行流量发送命令后,流量脚本(命令行参数脚本)会为每个客户端源ip周期性采集流量传输结果,并生成与每个容器相对应的传输记录文件,传输记录文件采用yaml格式,文件以“容器名_tag”命名,流量采集信息至少包括:流量持续时间(duration)、应用名称(proto)、文件传输次数(total)、传输失败次数(fail)、失败详情(fail_detail)以及传输速率(speed_detail)等。然后,通过docker volume的方式将yaml文件所在的容器目录映射到linux主机的文件目录中,从而能够在测试完成且容器销毁后,使流量传输记录文件保留在主机上。
90.可选的,网络设备的测试装置还包括:显示模块,用于显示流量传输信息,以使目标对象基于显示信息,对流量传输信息进行分析。
91.可选的,流量脚本(命令行参数脚本)周期性采集流量传输结果之后,还会显示流量传输信息,以使目标对象即测试人员基于显示信息,对流量传输信息进行分析。具体的,显示信息可以是传输失败的次数等信息,例如,显示“失败:ftp客户端docker_vpn_ftpclient_v6_2011:7:1::7传输了6次,失败了3次,失败率50%高于预期,请检查!”。
92.需要说明的是,在测试过程中,基于每个容器相对应的流量传输信息,生成与每个容器相对应的传输记录文件,对流量传输结果进行记录,方便测试人员提取流量传输结果详情并对待测设备的性能测试结果进行分析。
93.可选的,网络设备的测试装置还包括:测试模块,用于执行对待测网络设备进行测试的测试程序脚本,得到解析后的拓扑文件,其中,测试程序脚本至少包括拓扑文件的文件名称。
94.可选的,在测试开始时下发执行命令,命令中包括测试程序脚本的名称,而测试程序脚本至少包括拓扑文件的文件名称,因此可以得知调用的是哪个拓扑文件,并通过指定
拓扑文件来获取设备相关信息,从而让自动化脚本能登录到待测设备进行相关操作。
95.可选的,图4是根据本发明实施例的一种可选的网络设备的测试系统的操作流程图,如图4所示,通过自动化框架和自动化脚本实现自动化启动容器和发送网络损伤流量的过程。具体的,下发执行命令后在linux主机上执行自动化测试脚本,然后解析拓扑文件提取出需要启动的docker容器,然后遍历所有待启动容器,然后使用容器镜像启动所有待启动容器,并将容器连接到网络,然后根据容器的multi_ip,为容器网卡配置多ip地址,并根据容器的tc配置,为容器网卡下发网络损伤配置,直至遍历所有待启动容器完成,然后继续遍历客户端容器的multi_ip,并在容器中执行流量触发命令,根据multi_ip指定不同的源ip,直至遍历完全部的客户端容器的multi_ip,并到达指定时间后停止流量,例如,指定时间可以是前述过程中命令行参数中设置的持续时间3600秒,然后销毁所有容器和容器的网络。
96.需要说明的是,通过执行对待测网络设备进行测试的测试程序脚本,可以得到解析后的拓扑文件,为后续提取拓扑文件中记录的需要启动的docker容器提供了准确的数据基础。
97.实施例3
98.根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述的网络设备的测试方法。
99.实施例4
100.根据本发明实施例的另一方面,还提供了一种电子设备,电子设备包括一个或多个处理器;存储器,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现用于运行程序,其中,程序被设置为运行时执行上述的网络设备的测试方法。
101.本文中的设备可以是服务器、pc、pad、手机等。
102.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
103.在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
104.在本技术所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
105.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
106.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
107.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
108.以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献