测试工具以及目的
IxChariot 是 NetIQ 公司推出的一款网络测试软件, 可以针对各种网络环境、各种操作系统进行测试,通过模仿各种应用程序所发出的网络数据交换,IxChariot 可以帮助网络设计或者网络管理人员对各种网络进行评估。通过IxChariot 附带的各种测试脚本,用户可以测试网络的数据流量、响应时间以及数据吞吐量,也可以根据网络中所采用的应用程序的需要,选择相应的测试脚本。
Chariot 由两部分组成:控制端 Console 和远端 Endpoint,两者都可安装在普通 PC 或者服务器上,控制端安装在 Windows 操作系统上, Endpoint 支持各种主流的操作系统。控制端为该产品的核心部分, 控制界面(也可采用命令行方式) 、测试设计界面、脚本选择及编制、 结果显示、 报告生成以及 API 接口等都由控制端提供。
Endpoint 可根据实际测试的需要安装在单个或者多个终端处,负责从控制端接收指令、完成测试并将测试数据上报到控制端。Chariot 通过内置的脚本,由控制端控制远端相互主动发包,对设备进行功能、压力和性能等测试,测试结果包括吞吐量、时延、抖动、丢包、错包等等,它能够得到定量的数据并提供详尽的测试报告,从而使得用户可以主动地把握 设备的性能状况,并及时地发现问题并采取措施。Chariot 通过各种机制可以仿真任意的应用。 首先,通过内置的脚本, Chariot 发送不同的数据流,可以模拟现在常见的125 种应用,而且这种数据流是双向的,真正与协议栈进行交互。 Chariot 对各种应用的支持是基于在 Endpoint 之间发送的多种数据流,数据流的传送可基于多种协议,包括 TCP、UDP、RTP、SPX、IPX 和 SNA ,目前也已经支持 IPv6。
Chariot 还支持 Multicast 、QoS 等多种先进技术, 而且将一直保持同步。 另外,在出现新的或者特殊的应用的时候, 通过工具套件 Application Scanner 能够生成可以供 Chariot 使用的脚本。 Chariot 允许对脚本进行定制,改变数据流的各种参数,比如起始的启动间隔、发送窗口、接受窗口的大小,发送文件的大小,发送的速率、发送的比特流类型、使用端口等等,而且这些参数不但可以是一个由用户指定的典型数值,而且还能选用在最大、最小值之间符合平均分布、正态分布、泊松分布或者指数分布的随机值,从而真正地仿真网络中各种特定的数据流,全面地测试网络或者网络设备在复杂的网络环境下的性能。现代网络的一个特点是呈分布式发展,在对网络性能测试的过程中,可能 要涉及到很多的节点。
采用 Chariot 软件,则可以直接在中央控制端轻点几下鼠标就完成对全网的测试。 Chariot 的远端可以直接在 NetIQ 公司网站上下载或者通过中央控制端远程安装到所需要的节点机器上去, Chariot 最多可支持 10000个远端的协同测试,而远端软件则可任意按照需要安装,在测试的时候即可被唤醒。
本次测试的目的仅仅是对比在相同环境下,相同的二层网络,不同类型的三层网络的性能以及延迟对比。
ZStack平台测试主机介绍
ZStack是下一代开源的云计算IaaS(基础架构即服务)软件。它主要面向的是未来的智能数据中心,通过提供的API来管理包括计算、存储和网络在内的数据中心的各种资源。跟OpenStack相比,ZStack具有易用、稳定、灵活、超高性能等特点。本次测试的所有云主机都是运行在zstack平台的私有云中。
windows主机为测试console主机,剩下的主机系统为centos6.9,配置为4c8g,vrouter的配置为2c4g。其中IxChariot-106-101 endpoint为主要的打流测试主机。网卡类型都是千兆。
本次测试物理环境为千兆网络,使用三种网络类型。
IxChariot-109-101为vpc网络,通过EIP的方式提供服务,EIP配置在vrouter中,转发由vyos中iptables实现。
IxChariot-108-102为扁平网络,通过EIP的方式提供服务,EIP配置在宿主机的namespace中,转发由namespace中iptables实现。
IxChariot-107-101为扁平网络,不通过EIP方式,直接通过三层交换机转发。
(图片可点击放大)
环境准备
本文不针对IxChariot Console安装进行介绍,只介绍Linux版本的endpoint安装。
详细安装如下脚本,通过netstat命令,确认tcp10115端口已经打开。
yum install -y wget
wget http://downloads.ixiacom.com/products/ixchariot/endpoint_library/8.00/pelinux_amd64_80.tar.gz
tar -zxvf pelinux_amd64_80.tar.gz
chmod +x endpoint.install
./endpoint.install
cp /usr/local/Ixia/rc2exec.lnx /etc/rc.d/init.d/endpoint
service endpoint start
测试
测试说明:
添加pair,填写两个endpoint的云主机地址,选择测试脚本,编辑脚本,将file_size调整为999999999byte(1G),否则数据量比较小,测试时间太短,无法完全展现出结果。由于网络损耗的原因,千兆无法跑满,但是所有的测试机在相同的环境中。
Throughtput
案例一(IxChariot-106-101与IxChariot-107-101)
添加测试脚本 Throughput.scr,填写IxChariot-106-101与IxChariot-107-101的endpoint地址,file_size调整到最大999999999(1G),点击run,开始测试。
网络非常稳定,无较大的抖动,平均带宽在927M左右,上下抖动较小。Response Time也很稳定。
案例二(IxChariot-106-101与IxChariot-109-101 VPC)
添加测试脚本 Throughput.scr,填写IxChariot-106-101与IxChariot-109-101的endpoint地址,file_size调整到最大999999999(1G),点击run,开始测试。
网络相对稳定,抖动范围在30M以内,对应的Response Time也对应抖动
案例三(IxChariot-106-101与IxChariot-108-102)
添加测试脚本 Throughput.scr,填写IxChariot-106-101与IxChariot-108-102的endpoint地址,file_size调整到最大999999999(1G),点击run,开始测试。
有些抖动,但是不影响其稳定性。
总结
三种测试方案针对相同类型的二层网络,不同类型的三层网络。
虚拟机直接提供服务,不使用任何EIP转发,这种方式是最直接的,虚拟机通过宿主机上的bridge直接转发,无需额外的三层转发。不论是性能还是损耗都已经达到最优。一般私有云都推荐使用这种方式。
VPC网络使用EIP方式,其原理是通过平台自动生成以vyos为base镜像的,优化过的虚拟机作为转发路由器,性能比直接访问会有些损耗。
扁平网络使用EIP方式,其原理是通过宿主机上namespace中的iptables转发,使用ebtables去解决mac地址冲突从而实现网络的分布式。该网路转发非常稳定,性能损耗非常少。与虚拟机不经转发结果相似。
vpc类型的网络由于经过虚拟路由器的一次转发,其性能相对其他两种方式必然会要多损耗些。虽然损耗了些性能,但是同时也带来了更加灵活的网络配置,安全可靠的隔离,丰富的网络场景以及更低的管理成本。
比如负载均衡,端口映射,IPSec VPN,SDN-WAN等功能都离开不了vpc类型的网络。vpc top直观的展示了整个网络top的结构。
如今,硬件快速发展,这些软件上造成的性能损耗其影响越来越少,本次测试可能比较片面,仅作为参考,希望读者以及用户也能通过其他方式进行相应的测试。
作者:祝祥 新钛云服运维架构师
十年运维经验,曾任刻通云运维工程师、微烛云和某互联网金融平台首席运维架构师。拥有OpenStack、CCIE、阿里云、ZStack等技术认证。有上万台云主机,PB级别分布式存储运维经验。熟悉各种虚拟化技术,软硬件,网络,容器编排等技术,拥有python开发经验。热爱各种开源技术。
ZStack正在举办锦鲤活动——只要点击下列文章,评论区参与答题,就有机会领走程序员专属超级豪华大大大礼包!
1024程序员节:寻找一位云计算圈的锦鲤
附上锦鲤礼包清单: