最近在测试ipv6网络设备,发现支持ipv6测试工具还有点少,于是各种折腾。

备注:对于ipv6组网及ipv6网站架设这里就不累赘了,大家可以网上搜索,现已知的IIS6.0及以上支持IPv6,apache 2.0(Linux版)以上支持,nginx支持。windows 2003的DNS不支持ipv6,2008中的dns支持ipv6。

1、前置条件

(1)本地环境的要求

本地环境

[root@dr101 curl-loader-0.56]# cat /etc/redhat-release

CentOS release 6.2 (Final)

[root@dr101 curl-loader-0.56]#

(2)要求安装SSL相关包,gcc、make等工具才行

在CentOS下安装直接使用yum工具来安装即可,保证你的机器可以上外网

yum install gcc make openssl

官方说明查看地址:

http://curl-loader.sourceforge.net/doc/fast.html

Build it using general C development environment with bash, gcc compiler (3 or 4 series), make, etc on a linux machine.

Building pre-requirements are:

a. openssl binaries;

b. openssl development package with include files (on debian package libssl-dev);

curl-loader介绍

curl-loader(也被称为“omes-NIK”和“davilka”)是一个开源的C语言编写的工具,模拟应用负载和成千上万的几十万人的HTTP / HTTPS和FTP/ FTPS的客户端应用程序的行为,每个有其自己的源IP地址。相反,其他curl-loader使用真正的C编写的客户端协议栈,即libcurl和TLS/ openssl的SSL的HTTP和FTP协议栈,支持登录和验证口味和模拟用户行为的工具。

(3)ipv6地址配置

此处以我测试的系统为例

[root@dr101 curl-loader-0.56]# cat /etc/sysconfig/network-scripts/ifcfg-Auto_eth2

HWADDR=00:0C:29:09:F6:42

TYPE=Ethernet

BOOTPROTO=none

IPADDR=192.168.202.101

PREFIX=24

GATEWAY=192.168.202.1

DNS1=202.102.192.68#如果你有ipv6的DNS,可以将ipv6的DNS也加上,这样后面可以使用域名进行压力测试

DEFROUTE=yes

IPV4_FAILURE_FATAL=yes

IPV6INIT=yes #修改为yes

IPVADDR=fc00:0:0:202::101 #添加ipv6地址,注意IPVADDR不是IPV6ADDR,有点怪异

IPV6_DEFAULTGW=fc00:0:0:202::1#添加默认IPv6网关

NAME="Auto eth2"

UUID=4d4bee9e-f139-4ab0-95e0-57fc7c11cc37

ONBOOT=yes

IPV6_AUTOCONF=no#关闭IPv6自动配置

IPV6ADDR=fc00:0:0:202::101/64#再次设置ipv6地址

IPV6_DEFROUTE=yes#开启ipv6默认路由

IPV6_FAILURE_FATAL=no

GATEWAY=fc00:0:0:202::1#再次设置IPv6网关

[root@dr101 curl-loader-0.56]# ifconfig

eth2      Link encap:Ethernet  HWaddr 00:0C:29:09:F6:42

inet addr:192.168.202.101  Bcast:192.168.202.255  Mask:255.255.255.0

inet6 addr: fc00:0:0:202::101/64 Scope:Global

inet6 addr: fe80::20c:29ff:fe09:f642/64 Scope:Link

UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

RX packets:5652 errors:0 dropped:0 overruns:0 frame:0

TX packets:5263 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:604459 (590.2 KiB)  TX bytes:1015130 (991.3 KiB)

lo        Link encap:Local Loopback

inet addr:127.0.0.1  Mask:255.0.0.0

inet6 addr: ::1/128 Scope:Host

UP LOOPBACK RUNNING  MTU:16436  Metric:1

RX packets:76 errors:0 dropped:0 overruns:0 frame:0

TX packets:76 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:5280 (5.1 KiB)  TX bytes:5280 (5.1 KiB)

[root@dr101 curl-loader-0.56]#

2、下载地址

官方下载地址:http://sourceforge.net/projects/curl-loader/files/curl-loader/

[root@dr101 mysoft]# wget http://ncu.dl.sourceforge.net/project/curl-loader/curl-loader-stable/curl-loader-0.56/curl-loader-0.56.tar.bz2

[root@dr101 mysoft]# tar jvxf curl-loader-0.56.tar.bz2

3、安装

(1)注意,如要是curl-load支持ipv6必须在安装即make之前修改Makefile文件中的如下内容

修改Makefile

将--disable-ipv6改为--enable-ipv6

[root@dr101 curl-loader-0.56]# vi Makefile

# To enable IPv6 change --disable-ipv6 to --enable-ipv6

$(LIBCURL):

cd ./packages; tar jxfv curl-$(CURL_VER).tar.bz2; ln -sf curl-$(CURL_VER) curl; \

patch -d curl -p1 < ../patches/curl-trace-info-error.patch

mkdir -p $(CURL_BUILD);

cd $(CURL_BUILD); ../../packages/curl/configure --prefix=$(CURL_BUILD) \

--without-libidn \

--without-libssh2 \

--disable-ldap \

# To enable IPv6 change --disable-ipv6 to --enable-ipv6#这里提示如果要使curl-load支持ipv6需要开启--enable-ipv6

$(LIBCURL):

cd ./packages; tar jxfv curl-$(CURL_VER).tar.bz2; ln -sf curl-$(CURL_VER) curl; \

patch -d curl -p1 < ../patches/curl-trace-info-error.patch

mkdir -p $(CURL_BUILD);

cd $(CURL_BUILD); ../../packages/curl/configure --prefix=$(CURL_BUILD) \

--without-libidn \

--without-libssh2 \

--disable-ldap \

--enable-ipv6 \#这里默认是--disable-ipv6,需要修改为--enable-ipv6

--enable-thread \

--with-random=/dev/urandom \

--with-ssl=/usr/include/openssl \

--enable-shared=no \

--enable-ares=$(CARES_MAKE_DIR) \

如果不理解,可以看官方文档,即查看解压后文档中的README,并搜索到ipv6:(E文还是要好好学的)

[root@202 curl-loader-0.56]# vi README

NETMASK - netmask for the loading clients IP-addresses (from IP_ADDR_MIN to

IP_ADDR_MAX). For IPv4 you can use either quad-dotted netmask string or CIDR

number from 0-32. For IPv6 only CIDR values from 0 to 128 are supported.

To enable IPv6 change --disable-ipv6 to --enable-ipv6 in Makefile

(2)make and make install

[root@dr101 curl-loader-0.56]# make

[root@dr101 curl-loader-0.56]# make install

mkdir -p /usr/bin

mkdir -p /usr/share/man/man1

mkdir -p /usr/share/man/man5

mkdir -p /usr/share/doc/curl-loader/

cp -f curl-loader /usr/bin

cp -f doc/curl-loader.1 /usr/share/man/man1/

cp -f doc/curl-loader-config.5 /usr/share/man/man5/

cp -f doc/* /usr/share/doc/curl-loader/

cp -rf conf-examples /usr/share/doc/curl-loader/

4、使用curl-load进行测试

由于curl-load没用进行configure步骤,即没有指定安装目录,默认就是当前解压目录,比如我这里的/home/mysoft/curl-load-0.56

(1)配置文件存放路径

[root@dr101 conf-examples]# pwd

/home/mysoft/curl-loader-0.56/conf-examples

[root@dr101 conf-examples]# ls

10K.conf                          https.conf

60K.conf                          ipv6.conf

bax.conf                          log-hdr-body.conf

bax-login-logoff-noncycling.conf  login-uas-cycling.conf

bax-logs.conf                     login-uas-logoff-cycling.conf

big-load.conf                     multipart-formdata-post.conf

bulk.conf                         post-form-tokens-fr-file.conf

bulk-dual-url.conf                post-xml.conf

credentials.cred                  put.conf

custom-hdrs.conf                  random_file_records.conf

delete.conf                       rate-limit.conf

fetch-probability.conf            resp-errors.conf

fetch-probability-once.conf       some.xml

ftp.conf                          timers-random-range.conf

ftp-http.conf                     url-randomize.conf

ftp-upload.conf                   url-template-file.txt

get-forms.conf                    url-template-fr-file.conf

get-post-login.conf               url-template-resp-dynamic.conf

get-post-login-cycling.conf

[root@dr101 conf-examples]#

(2)修改ipv6配置文件

本次主要是使用curl-load进行ipv6 web服务器的测试工作,于是修改ipv6.conf文件

[root@dr101 conf-examples]# vi ipv6.conf

########### GENERAL SECTION ################################

BATCH_NAME= ipv6

CLIENTS_NUM_MAX = 20 #10000

INTERFACE   =eth2 #需要修改为你进行ipv6通信的接口,不知道了,用ifconfig查看

NETMASK=64

IP_ADDR_MIN=  fc00:0:0:202::111 #2001:db8:fff5:6::101,IP_ADDR_MIN &MAX是用来指定ipv6地址范围的,必须和物理接口的ipv6地址在一个网段,同时没有被其他主机使用

IP_ADDR_MAX= fc00:0:0:202::130 #2001:db8:fff5:6::103 #2001:db8:fff5:ffff::1

IP_SHARED_NUM=20 #上面写了地址范围,但是不是每个地址都会用上的,这里就是指明使用上面ipv6地址范围中多少个地址用来进行测试,curl-load会在本地网卡上绑定一批ipv6的地址

CYCLES_NUM= -1

URLS_NUM     = 1

########### URL SECTION ####################################

URL= http://[fc00:0:0:216::11]/hunlian.htm #http://ip6-localhost/apache2-default/index.html 填写要测试的URL,当然URL也可以是一个文件中的多个url,注意ipv6webURL的写法,如果你使用了域名,可以直接用域名进行测试

REQUEST_TYPE=GET

TIMER_URL_COMPLETION = 0  # In msec. When positive, Now it is enforced by cancelling url fetch on timeout

TIMER_AFTER_URL_SLEEP =300 #默认为1000

(3)下面进行简单测试

[root@dr101 curl-loader-0.56]# ./curl-loader -f conf-examples/ipv6.conf

会先绑定一下ipv6地址到eth2上

这下err的错误少了,有了2XX即成功的请求了

Interval stats (latest:3 sec, clients:20, CAPS-curr:159):

H/F   Req:480,1xx:0,2xx:480,3xx:0,4xx:0,5xx:0,Err:0,T-Err:0,D:2ms,D-2xx:2ms,Ti:134400B/s,To:21120B/s

H/F/S Req:0,1xx:0,2xx:0,3xx:0,4xx:0,5xx:0,Err:0,T-Err:0,D:0ms,D-2xx:0ms,Ti:0B/s,To:0B/s

--------------------------------------------------------------------------------

Summary stats (runs:24 secs, CAPS-average:172):

H/F   Req:3778,1xx:0,2xx:3778,3xx:0,4xx:0,5xx:0,Err:353,T-Err:0,D:1ms,D-2xx:1ms,Ti:132230B/s,To:20779B/s

H/F/S Req:0,1xx:0,2xx:0,3xx:0,4xx:0,5xx:0,Err:0,T-Err:0,D:0ms,D-2xx:0ms,Ti:0B/s,To:0B/s

=================================================================================

Manual: clients:max[20],curr[20]. Inc num: [+|*].

=================================================================================

ctrl+c来结束测试

此时再开窗口,可以看到接口上绑定了很多ipv6的地址就可以了

[root@dr101 ~]# ifconfig

eth2      Link encap:Ethernet  HWaddr 00:0C:29:09:F6:42

inet addr:192.168.202.101  Bcast:192.168.202.255  Mask:255.255.255.0

inet6 addr: fc00:0:0:202::123/64 Scope:Global

---------------------------------------------华丽的分割线----------------------------------

当然还有个网站可以直接做IPv6 连接测试

IPv6 测试 (test-ipv6.com)

ipv6测试工具-支持ipv6的web压力测试工具curl-load相关推荐

  1. python的web压力测试工具-pylot安装使用

    pylot是python编写的一款web压力测试工具.使用比较简单.而且测试结果相对稳定. 这里不得不鄙视一下apache 的ab测试,那结果真是让人蛋疼,同样的url,测试结果飘忽不定,看得人心惊肉 ...

  2. asp.net core系列 67 Web压力测试工具WCAT

    asp.net core系列 67 Web压力测试工具WCAT 原文:asp.net core系列 67 Web压力测试工具WCAT 一.介绍 最近搭建了一套CQRS框架,需要在投入开发前,进行必要的 ...

  3. jmetter持续时间_【转】Jmeter做web压力测试时设置持续时间注意点

    头一回使用jmeter做web的压力测试,遇到个很莫名其妙的问题,不管我的线程组怎么设置,它就是执行一次就结束了. 设置循环次数为300,不使用调度器--〉执行一次就结束了,循环次数未生效 设置循环次 ...

  4. (转)用mysql自带工具mysqlslap对数据库进行压力测试

    http://aolens.blog.51cto.com/7021142/1901557-------用mysql自带工具mysqlslap对数据库进行压力测试 mysqlslap是mysql自带的工 ...

  5. 压力测试时软件崩溃怎么办,完善压力测试 避免系统崩溃恶果

    压力测试对系统的重要作用 我们对应用程序进行压力测试时经常会出现这种情况,就是测试到了最后却发现不明白测试结果有什么意义?实际上,当我们都不明白压力测试的意义时,我们就不能设计出各种极限测试用例. 压 ...

  6. AIDA64压力测试教程,AIDA64压力测试多长时间,AIDA64压力测试结果怎么看

    硬件管理工具AIDA64功能全面专业,操作简便易学,使用AIDA64进行系统稳定性测试逐渐成为更多用户的选择.可能有很多用户对如何使用AIDA64进行系统稳定性测试不太了解,系统稳定性测试也称为压力测 ...

  7. 网站开启 IPv6 访问,测试是否支持 IPV6

    一.分配 IPv6 地址 如果你的服务器支持 IPv6 ,但是在创建的时候没有添加 IPv6 地址,请先添加后再操作. 不同服务器厂商添加方法可能不一样,可咨询客服. 根据IPv6 规范,必须要有两个 ...

  8. 十个免费的WEB压力测试工具

    两天,jnj在本站发布了<如何在低速率网络中测试 Web 应用>,那是测试网络不好的情况.而下面是十个免费的可以用来进行Web的负载/压力测试的工具,这样,你就可以知道你的服务器以及你的W ...

  9. Siege(开源Web压力测试工具)——多线程编程最佳实例

    在英语中,"Siege"意为围攻.包围.同时Siege也是一款使用纯C语言编写的开源WEB压测工具,适合在GNU/Linux上运行,并且具有较强的可移植性.之所以说它是多线程编程的 ...

  10. 十大Web压力测试工具

    下面是十个免费的可以用来进行Web的负载/压力测试的工具,这样,你就可以知道你的服务器以及你的WEB应用能够顶得住多少的并发量,以及你的网站的性能. Grinder – Grinder是一个开源的JV ...

最新文章

  1. 山东华为服务器安装系统,山东云服务器平台安装
  2. java019异常、File类
  3. 计算机网络于20世纪60年代萌芽,计算机网络的发展经过哪几个阶段?
  4. 大数据数据科学家常用面试题_进行数据科学工作面试
  5. 程序员curd编程是什么_为什么许多程序员讨厌结对编程?
  6. python生成api文档_sphinx生成python文档
  7. 花书+吴恩达深度学习(十一)卷积神经网络 CNN 之池化层
  8. PHP不仅仅是PHP
  9. 国产开源数据可视化套件Cboard使用
  10. max-min 不等式(minimax inequality)
  11. win7系统下使用虚拟机安装专利电子申请客户端(CPC软件)以及专利文件生成过程
  12. Sublime Text自定制代码片段之 快速生成html结构
  13. 【每日一题】 480. 滑动窗口中位数
  14. 计蒜客: 德克萨斯长角牛 (最短路)
  15. fuz--2128(最长子串)
  16. 5G室内定位来了,化工厂人员定位,电厂室内定位都有用它!-新导智能
  17. Python教程: ‘==‘ 与‘is‘ 以及它们背后的小秘密
  18. 全能IDE VsCode
  19. jsp的内置对象有哪些,四大作用域有哪些??
  20. html文字注释,css如何注释?

热门文章

  1. JavaScript 中的 Symbols 怎么用
  2. SF Symbols
  3. 配置华为防火墙接口IP地址和区域
  4. 频域处理:傅里叶变换及小波变换
  5. excel中插入图表改变横纵坐标问题
  6. python_计算一张纸对折多少次超过珠峰
  7. Thinkphp 5.1安装
  8. 网站URL被劫持怎么办?
  9. 燕山大学软件测试,工程技术研究期刊版面费_软件测试期刊_燕山大学学报版面费...
  10. Typo: In word ‘worklist‘