0


网络测试工具nsit-包长变量、异常流量、大会话测试、长稳测试

一、介绍

网络测试工具nsit(Network System Integerity Test tool),实现语言C。

旨在解决目前网络数据面测试的一些痛点,如开源工具不便于遍历基础流量、异常流量、小规格机器难以创建大量会话、不易长稳测试等问题,使用此工具可以一键执行解决上述问题,提升质量和测试效率。

目前支持的功能:

1、不同包长流量遍历,验证基本通信能力,支持ICMP、TCP、UDP协议

2、会话测试,支持会话数量的压测和会话cps性能测试,支持TCP、UDP协议

3、针对常用网络协议头部、支持构造异常流量测试,支持Ethernet头、IP头、ICMP头、TCP头、UDP头、VXLAN头

4、组合流量模型测试,可做长稳测试,保持存量+毫秒级不断新建会话,支持ICMP、TCP、UDP协议

5、网络探测,支持ICMP、TCP、UDP协议

二、获取和执行方式

推荐系统:64位CentOS 7.x 、Ubuntu

1、最新版本:

version 2024.07.20

md5值 9457e3bb02a87cdc640449c32c9a6b1a

查看版本信息命令:nsit -v

查看帮助信息命令:nsit -h

2、获取最新可执行文件nsit:

3、使用方式

Linux中授予权限后即可使用,不用安装依赖:

chmod +x nsit
cp nsit /usr/local/sbin
nsit -v

三、支持的功能

命令格式借鉴于iperf

  1. 通用功能介绍

  • 指定为服务端,支持多个客户端接入 -s
  • 指定为客户端 -c,需要配置为服务端的IP,测试Ethernet异常流量时可配置为rand、gw、指定目的mac
  • 指定端口号 -p,服务端为本地监听端口(支持端口范围如1000-1010),客户端为目的端口
  • 支持绑定本端端口 -P,客户端绑定源端口
  • 支持绑定本端地址 -S,客户端是绑定源IP、服务端是绑定监听IP
  • 支持绑定网卡 -D,客户端是指定发出网卡、服务端是指定接收网卡
  • 支持IPv6 -6,默认是IPv4
  • 支持打印详细日志 -J,打印报文来回耗时、会话建立信息、报文详细信息等等
  • 支持关键信息记录到系统日志

1、包长遍历

功能介绍

一键遍历ICMP、TCP、UDP各种包长,覆盖不同的分片情况

为保证测试不因限速导致丢包,尽量保证200M带宽。带宽小时会自动降速、并每个包长重试3次,3次都失败判定为次包长测试失败。

推荐命令

服务端(注意安全组规则放通此端口的ICMP、TCP、UDP)
nsit -s -p 80
客户端 
nsit -c 服务端地址 -p 80

参数介绍

  • 支持指定开始测试的载荷长度值 -B
  • 支持指定结束测试的载荷长度值 -E
  • 支持指定发送间隔时间,单位微秒usec -I,默认100 usec
  • 支持指定协议 -T,默认all,会依次测试ICMP、TCP、UDP,可指定某个或几个协议
  • 支持持续发包 -L
  • 支持UDP报文每次发包使用随机源端口 -M
  • 支持每报文3次重试,每次重试等待1s
  • 支持报文长度、载荷校验

使用举例

  • 服务端- IPv4: nsit -s -p80- IPv6: nsit -s -p80 -6- IPv6指定监听地址和入接口: nsit -s -p80 -6 -S2406:d440::2 -D eth0
  • 客户端- IPv4全部流量测试: nsit -c 1.1.1.2 -p80- IPv4 UDP流量测试: nsit -c 1.1.1.2 -p80 -T udp- IPv4 TCP和UDP流量测试: nsit -c 1.1.1.2 -p80 -T tcp -T udp- IPv4全部流量测试,打印详细日志: nsit -c 1.1.1.2 -p80 -J- IPv4全部流量测试并指定源端口、源地址和出接口: nsit -c 1.1.1.2 -p80 -S1.1.1.1 -P8000 -D eth0- IPv4 UDP流量并指定载荷长度范围: nsit -c 1.1.1.2 -p80 -T udp -B1400 -E1500- IPv6全部流量测试: nsit -c 2406:d440::2 -p80

2、会话测试

功能介绍

小规格机器一键建立指定数量的TCP或UDP会话并保持指定时间,保持过程中持续检查存活会话数量,支持两种创建模式:

(1)大量会话模式,--mode large,用于压测会话总数,TCP最多支持4百万、UDP最多支持2百万。大量会话模式测试前必须在客户端、服务端执行调优命令,放开最大会话数量限制。不可以指定会话创建间隔时间。

(2)突发会话模式,支持2种

  1. --mode burst,TCP、UDP最多支持2.5万会话,间隔时间最小100usec即1W cps,用于测试cps。可指定会话创建间隔时间控制创建的cps,但实际cps受机器规格、操作系统、环境时延等影响,存在一定误差。
  2. --mode cps,TCP、UDP最多支持50万会话,无间隔时间创建会话,用于尽量量压cps,不能保证时间精度,实测g2i.large能达到25万cps。

会话测试前在客户端、服务端上需要配置调优参数:

echo 'net.ipv4.ip_local_port_range=1024 65535'>>/etc/sysctl.conf 
echo 'net.ipv4.tcp_tw_reuse=1'>>/etc/sysctl.conf 
echo 'fs.file-max=4096000'>>/etc/sysctl.conf 
echo 'fs.nr_open=4096000'>>/etc/sysctl.conf 
echo 'net.core.somaxconn=65535'>>/etc/sysctl.conf 
sysctl -p
echo 'ulimit -u unlimited -n 4096000' >> /etc/profile 
source /etc/profile

推荐命令

 服务端(注意安全组规则放通此端口的ICMP、TCP、UDP)
nsit -s -p 80-81
客户端 
nsit -c 服务端地址 -p 80-81 -C 100000 -T tcp

参数介绍

  • 指明是会话测试,并指定会话数 -C,如1百万会话为 -C 1000000
  • 支持多个端口 -p,如60000-60100
  • 支持TCP、UDP -T,默认TCP,支持配置TCP、UDP
  • 支持指定会话模式large或burst --mode,默认为large,--mode burst指定为突发会话模式
  • burst模式下指定会话创建间隔时间 -I ,默认10000 usec,即每秒创建100个会话
  • 支持指定会话完全建立后保持时间 -K,默认一直保持,单位秒
  • 支持打印每会话详细信息 -J,会话多时不建议开启

使用举例

  • 服务端- IPv4监听多个端口: nsit -s -p60000-60100- IPv6监听多个端口: nsit -s -p60000-60100 -6
  • 客户端- IPv4创建1百万TCP,大量会话模式: nsit -c 1.1.1.2 -C1000000 -p60000-60020- IPv4创建1百万UDP,大量会话模式: nsit -c 1.1.1.2 -C1000000 -T UDP -p60000-60020- IPv4创建1百万TCP,大量会话模式,会话全部建立完成后保持100秒: nsit -c 1.1.1.2 -C1000000 -T TCP -p60000-60020 -K 100- IPv4创建1万TCP,突发会话模式: nsit -c 1.1.1.2 -C10000 -p60000-60020 --mode burst- IPv4创建20万TCP,cps会话模式: nsit -c 1.1.1.2 -C10000 -p60000-60020 --mode cps- IPv6创建1百万TCP,大量会话模式: nsit -c 2406:d440::2 -C1000000 -p60000-60020

3、异常流量测试

功能介绍

支持Ethernet、IP、ICMP、TCP、UDP、VXLAN头的重要字段填充随机值,测试各种异常情况,seed值不变的情况下每次发送的同序号报文内容一致,暂不支持IPv6。

推荐命令

 服务端(注意安全组规则放通此端口的ICMP、TCP、UDP)
nsit -s -p 80
客户端 
nsit -A -c 服务端地址 -p 80 -T tcp

参数介绍

  • 指定为异常流量测试 -A,即abnormal
  • 支持指定协议 -T,默认IP,可配置值ETH、IP、ICMP、TCP、UDP、VXLAN
  • 指明目的地址 -c,Ethernet头时支持gw、rand、和指定mac地址,其他协议时需要配置正确IP地址
  • 支持指定发送最大速率 --max_speed,默认100Mbps
  • 支持指定seed值 --seed,默认值888888
  • 支持发送指定序号的报文 --number,单个值100或范围1-100000
  • 支持指定IP头部tos值 --tos,默认值0
  • 支持指定IP头部ttl值 --ttl,默认值188
  • 部分字段支持指定错误百分比 --err_percent,默认值0.1
  • VXLAN协议支持指定内层源IP --inner_src,内层源IP地址,默认192.168.0.66
  • VXLAN协议支持指定内层目的IP --inner_dst,内层目的IP地址,默认192.168.0.88

使用举例

无需服务端,仅在客户端执行命令:

  • IP头部异常流量测试:nsit -c 1.1.1.2 -A -T IP 或 nsit -c 1.1.1.2 -A
  • IP头部异常流量测试,指定最大速率:nsit -c 1.1.1.2 -A -T IP --max_speed 500
  • IP头部异常流量测试,指定发送第1-100000个报文:nsit -c 1.1.1.2 -A -T IP --number 1-100000
  • IP头部异常流量测试,指定tos值为46:nsit -c 1.1.1.2 -A -T IP --tos 46
  • IP头部异常流量测试,指定ttl值为200:nsit -c 1.1.1.2 -A -T IP --ttl 200
  • IP头部异常流量测试,指定IP Version、IP Header Length、Packet Length错误比例为0.3:

nsit -c 1.1.1.2 -A -T IP --err_percent 0.3

  • IP头部异常流量测试,指定发送第100个报文并打印报文详情:

nsit -c 1.1.1.2 -A -T IP --number 100 -J

  • Ethernet头部异常流量测试,目的mac随机,-T ETH 时必须指定出接口:nsit -c rand -A -T ETH -D eth0
  • Ethernet头部异常流量测试,使用网关mac ee:ff:ff:ff:ff:ff:nsit -c gw -A -T ETH -D eth0
  • Ethernet头部异常流量测试,指定目的mac:nsit -c 88:88:88:88:88:88 -A -T ETH -D eth0
  • ICMP头部异常流量测试: nsit -c 1.1.1.2 -A -T ICMP
  • TCP头部异常流量测试: nsit -c 1.1.1.2 -p80 -A -T TCP
  • UDP头部异常流量测试: nsit -c 1.1.1.2 -p80 -A -T UDP
  • VxLAN头部异常流量测试:nsit -c 1.1.1.2 -A -T VXLAN --inner_src 192.168.0.66 --inner_dst 192.168.0.88

4、组合流量模型长稳测试

功能介绍

1、可用于升级、配置变更、故障切换等情况下,虚拟机内测试数据面存量、新建会话的功能是否正常

2、可用于机器内流量长稳测试

通过--keep_ct保持指定数量的存量会话,通过-I指定间隔时间不断突发、通过--burst_ct指定每次突发的TCP新建会话数量。ICMP、UDP目前每次突发新建会话数为1不可修改,是为避免虚拟机内再次新建时OVS、CLB等网络节点对应ct实际还没有老化。每秒的新建会话数=每秒突发次数*每次突发的会话数

会根据报文发送、接收情况判断会话检查会话,新建会话、存量会话默认每隔10ms发一个包、载荷长度1字节,服务端会将报文返回,客户端检查包长度,超时时间500ms,如果报文发收出现异常会打印红色日志,测试过程中主要看是否出现大量红色日志。

默认参数配置下客户端:CPU消耗 5%左右,内存消耗3M左右,包转2.6Kpps,带宽1.2Mbps。

最高参数配置下客户端:CPU消耗80%左右,内存消耗3M左右,包转60Kpps, 带宽26Mbps。

UDP是不可靠传输,根据实际测试情况来看会偶现丢包,重点关注突然出现的大量丢包。

推荐命令

 服务端(注意安全组规则放通此端口的ICMP、TCP、UDP)
nsit -s -p 80
客户端 
nsit -Z -c 服务端地址 -p 80

参数介绍

  • 指明为组合流量长稳测试 -Z
  • 支持指定协议 -T,不配置-T时默认all会测试ICMP、TCP、UDP,可指定某个或多个协议-T tcp -T udp
  • 每两次突发间的间隔时间 -I, 单位ms,默认10ms、每秒突发100次,最小为5ms
  • 每次突发新建的TCP会话数量 --burst_ct,默认TCP为1支持配置最大20,ICMP UDP为1且不可配置
  • 保持的ICMP TCP UDP会话数量 --keep_ct,默认1,最大10
  • 会话新建完成后保持时间 -K,单位ms,默认1ms,最大10ms
  • 每会话发包间隔时间 -i, 单位ms,默认5ms,最小1ms
  • 指定控制端口control port,需要安全组放通 --cp,默认3389为windows远程端口安全组默认放通
  • 客户端监听端口,服务端测试流量目的端口 --listen,默认为80
  • 服务端指定客户端IP地址+监听端口范围 --client,如 1.1.1.1,80

使用举例

  • 服务端- Pv4单向会话: nsit -s -p80- IPv4双向会话、需指定客户端地址和端口: nsit -s -p80 --client 1.1.1.1,80- IPv4双向会话,并指定控制端口: nsit -s -p80 --client 1.1.1.1,80 --cp 88
  • 客户端- 默认配置组合会话模型测试,带-Z即可: nsit -Z -c 1.1.1.2 -p 80- 配置新建会话的保持时间、间隔时间: nsit -Z -c 1.1.1.2 -p 80 -K 10000 -I 10000- 指定保持的会话数: nsit -Z -c 1.1.1.2 -p 80 --keep_ct 20- 指定新建的TCP会话数: nsit -Z -c 1.1.1.2 -p 80 --burst_ct 10- 指定单个协议: nsit -Z -c 1.1.1.2 -p 80 -T tcp- 指定多个协议: nsit -Z -c 1.1.1.2 -p 80 -T tcp -T udp- 双向会话: nsit -Z -c 1.1.1.2 -p 80 -T tcp --listen 80- 双向会话并指定控制端口: nsit -Z -c 1.1.1.2 -p 80 -T tcp --listen 80 --cp 88

四、注意事项

1、会话测试前必须在客户端、服务端执行以下参数调优命令

如下配置支持4百万连接,配置永久生效:

echo 'net.ipv4.ip_local_port_range=1024 65535'>>/etc/sysctl.conf 
echo 'net.ipv4.tcp_tw_reuse=1'>>/etc/sysctl.conf 
echo 'fs.file-max=4096000'>>/etc/sysctl.conf 
echo 'fs.nr_open=4096000'>>/etc/sysctl.conf 
echo 'net.core.somaxconn=65535'>>/etc/sysctl.conf 
sysctl -p
echo 'ulimit -u unlimited -n 4096000' >> /etc/profile 
source /etc/profile

2、机器有最大会话数量限制,测试大量会话时需要提前放开限制

3、Bad file descriptor

执行下面的命令后再次测试,num的值根据需要决定

num=1024000

echo "ulimit -u unlimited -n $num" >> /etc/profile

source /etc/profile

4、Resource temporarily unavailable

客户端发出报文后,超时时间内没有收到服务端返回的报文,出现丢包或超时。

5、-bash: fork: retry: Resource temporarily unavailable

创建线程数超过系统允许的最大数量,一般可通过echo 'ulimit -u unlimited -n 100000' >> /etc/profile && source /etc/profile解决,如果仍有问题需要根据操作系统查找解决方法。

6、安全组、ACL、iptable等需要放通测试流量

标签: 网络 测试工具

本文转载自: https://blog.csdn.net/changjiangshui1993/article/details/141314003
版权归原作者 changjiangshui1993 所有, 如有侵权,请联系我们删除。

“网络测试工具nsit-包长变量、异常流量、大会话测试、长稳测试”的评论:

还没有评论