stateful 是一种有状态的发包,虽然基于包模板进行顺序发送,但对于DUT来说是一个有状态的连接,因此它可以用在我们很多的测试场景中
1. NAT 场景测试
- Client 通过 DUT并作NAT后访问 Server,这是一个典型的应用场景
- 对于DUT来说需要做一次源端口的转换,
- 对于TRex来模仿C/S,此时S回给C的包的目的地址不是C的地址而是DUT的地址,
- 随后再由DUT转换目的IP给Client
- 测试用http_browsing模板,模拟客户在LAN端访问WAN端的HTTP Server浏览网页
- yaml 设置
13 cap_ipg : true
14 cap_info :
15 - name: avl/delay_10_http_browsing_0.pcap
16 cps : 2.776
17 ipg : 10000
18 rtt : 10000
19 w : 1
./t-rex-64 -f cap2/http_simple.yaml -d 10 --learn-mode 1
- 1是根据第一个包来确定NAT地址学习,
- 2是根据ip option,
- 3是server-client的identification不会变,增加性能
- capture result
图中可见原本由server发回给client的包应该是 48.0.0.1-->16.0.0.1,而现在变成了 10.10.10.1,这是因为起用--learn-mode
而起的作用,TRex学习第一个包的源地址,从而根据这个源地址进行回送,这就模拟一个在LAN端的用户访问internet的场景
2. IPv6场景测试
随着internet的用户急剧的增加,在ipv4地址将会逐渐的耗尽, IPv6大势所趋,目前已经有很多的场景需要用到IPv6进行测试,虽然现在大多数的地方仍然是ipv4, 6to4,4to6等过渡性应用,但不久的将来,IPv6将会全面覆盖,TRex支持IPv6,但不支持IPv4与IPv6同时运用。
- yaml 设置
13 src_ipv6 : [0x2001,0x0203,0x0000,0x0000,0x0000,0x0000] #ipv6 prefix 2001:203::IPv4/96
14 dst_ipv6 : [0x2001,0x0204,0x0000,0x0000,0x0000,0x0000] #ipv6 prefix 2001:204::IPv4/96
15 cap_info :
16 - name: exp/hlt_ipv6_default.pcap
17 cps : 10.0
18 ipg : 10000
19 rtt : 10000
20 w : 1
- DUT设置
- 配置NDP,由于不会进行NDP的学习,因此需要让被测设备知道网关的MAC
- 配置路由,2001:203::/96与2001:204::/96网段怎么去
- capture result
./t-rex-64 -f cap2/ipv6_box.yaml -d 10 --ipv6
由于模板包是单方向,因此只有X0->X2方向的包,全部通过,地址是96位掩码+IPv4的地址成为IPv6地址
3. VPN场景测试
在公司与分公司之间要穿透internet进行通信,其中运用的最广的是走VPN通道,而VPN场景测试也是我们需要的,TRex是否支持VPN,这一点其实无用质疑,虽然VPN通道间传输数据是加密的,但是通向两个终端的数据还是原始数据,加密解密,GRE, IPSec这些都是DUT做的事,TRex只不过是给两个终端发包而已,唯一不同的是此时TRex把两个DUT看作一个DUT而已
- yaml 设置
1 - duration : 10.0
2 generator :
3 distribution : "seq"
4 clients_start : "16.0.0.1"
5 clients_end : "16.0.1.255"
6 servers_start : "32.0.0.1"
7 servers_end : "32.0.0.255"
8 clients_per_gb : 201
9 min_clients : 101
10 dual_port_mask : "1.0.0.0"
11 tcp_aging : 1
12 udp_aging : 1
13 cap_info :
14 - name: cap2/http_get.pcap
15 cps : 1.0
16 ipg : 10000
17 rtt : 10000
18 w : 1
- DUT设置
- DUT1 与DUT2配置VPN
- DUT1保护网段 16.0.0.0, 远端网络 32.0.0.0
- DUT2保护网段 32.0.0.0, 远端网络 16.0.0.0
./t-rex-64 -f cap2/vpn.yaml --cfg cfg/vpn_cfg.yaml -d 100
- capture result
16.0.0.1->32.0.0.1经过WAN口进行封装,ESP传输给对端,对端32.0.0.1->16.0.0.1直接解密发到TRex端口上
4.HTTPS场景测试
在网络安全受到重视的今天,越来越多的厂家选择https加密通信,因为http是名文的,已经对于现在的互联网世界不再适用,而TRex对于https的流量场景是否能够测试,答案是肯定的,虽然https是加密的,但加密这个动作并不需要TRex去做,TRex需要做的仅仅是把录制的报文发出去而已,因此对于DUT来说是一个完整的HTTPS加密连接。
- yaml配置很简单
13 cap_info :
14 - name: cap2/https.pcap
15 cps : 1.0
16 ipg : 10000
17 rtt : 10000
18 w : 1
- 执行测试
./t-rex-64 -f cap2/https.yaml -d 10
- capture result
5. GAV(Gateway Anti Virus)场景测试
互联网安全一直是当今网络的主题,病毒的入侵无时不在,我们希望TRex能够完成一个基本的病毒入侵测试,首先因为TRex只发包,而不会去考虑发的是什么包,因此首先需要录制一个下载病毒过程的模板,当这个模板录制好后,client首先发TCP与Server进行三次握手,随后client会发出一个get viru的请求,此时server就会把病毒的数据传给client,当数据传给client时经过DUT,检测DUT是否能够检测到该数据是一个病毒,从而产生reset,产生log完成测试。
- yaml 设置
13 cap_info :
14 - name: cap/http_virus.pcap
15 cps : 100.0
16 ipg : 10000
17 rtt : 10000
18 w : 1
- 执行测试
./t-rex-64 -f cap2/http_virus.yaml -d 10
参考
https://trex-tgn.cisco.com/trex/doc/trex_manual.html