玩转tcpcopy在线压力测试--原理、使用(上)
tcpcopy 是一个分布式在线压力测试工具,可以将线上流量拷贝到测试机器,实时的模拟线上环境,达到在程序不上线的情况下实时承担线上流量的效果,尽早发现 bug,增加上线信心。
tcpcopy 的优势在于其实时性及真实性,除了少量的丢包,完全拷贝线上流量到测试机器,真实的模拟线上流量的变化规律。
1、实验
我们在docker环境实验TCPCopy:
首先编译intercept。
./configure --prefix=/etc/softs/intercept make && make install
然后编译tcpcopy(采用离线回放)。
./configure --prefix=/etc/softs/tcpcopy make && make install
这样相关程序都编译完成。
进入运行阶段:
先运行intercept,如下图,其中-F参数设置了对响应包的过滤条件。
接着在测试服务器设置路由,其中host是客户端的IP地址。
61.135.255.86是从下面抓包文件里面提取的,第一个数据包显示了客户端61.135.255.86访问xxx.xxx.176.161的18081服务。
这里我们利用pcap文件作为离线回放的数据源。
下图展示了tcpcopy是如何运行的。
运行tcpcopy以后,从测试服务器端应用层日志来看,已经有请求过来。
更加实用的方式是通过抓包来确定是否有流量过来,例如下图:
在测试服务器,利用netstat命令可以看到8080服务已经有ESTABLISHED连接,客户端IP地址都是61.135.255.86。
tcpcopy所在的客户端,却没有相应连接存在,这是因为tcpcopy发送数据包(包括请求)默认是从IP层发送,避开了内核TCP层。
2、TCPCopy概述
TCPCopy是基于底层的请求复制工具。通过底层抓包(或者从pcap文件获取数据包),模拟上层应用交互,复制TCP流量到测试系统,从而达到在线流量测试的目的。
TCPCopy的精华在于如何从TCP数据流中模拟出客户端的交互行为和如何成功把应用请求复制给测试系统。
TCPCopy技术主要涉及到TCP、服务器领域知识、伪造技术和如何模拟上层应用交互行为。
3、TCPCopy原理图
下图是传统的TCP三次握手交互图。
下图是TCPCopy模拟的TCP三次握手交互图。
对于Server端,三次握手数据包没有差别,所不同的是第二次握手数据包会路由给另外一台机器(intercept所在机器),而不是直接返回到tcpcopy机器。
这样做的原因如下:
- tcpcopy发送的数据包中的客户端IP地址,并不一定是tcpcopy机器所在的IP地址
- 减轻tcpcopy处理压力,tcpcopy只需处理客户端方向的流量
- 减轻tcpcopy机器压力,降低响应包对在线的影响
- 响应数据包路由给intercept所在的机器,可以提升捕获响应包的能力
- intercept可以合并响应包中的有用信息,例如只提取TCP/IP header信息,一起发送给tcpcopy,这样提升了信息传递的效率
- 这种分离给分布式tcpcopy提供了可能,m个tcpcopy,n个intercept组合完成超大并发流量复制。
tcpcopy,主要功能是监听某一个应用的数据包,利用intercept返回的数据包信息(第一次握手数据包不需要intercept返回信息),修改源数据包内容,发送给Server机器。
3.1 在线回放
TCPCopy复制在线流量的三次握手交互过程具体参考下图:
图中tcpcopy捕获到在线的第一次握手数据包,修改目的地址,直接从IP层发送第一次握手数据包。由于没有经过tcpcopy机器所在的TCP层,所以并不占用宝贵的TCP资源。TCPCopy一般会要求在测试服务器端设置相应的路由,目的是让响应包路由给辅助服务器。测试服务器端接收到第一次握手数据包,检测合法,并发送第二次握手数据包。
第二次握手数据包到达辅助服务器端的数据链路层,这时intercept进程会去捕获第二次握手数据包,并通过专用的通道(类似IP tunnel)发送给tcpcopy。辅助服务器需要具备流量黑洞功能(即不能具备路由功能),所以第二次握手数据包会在辅助服务器的IP层结束自己的旅程。
tcpcopy接收到intercept返回的第二次握手数据包信息,提取出有用的信息,并等待在线第三次握手数据包的到来。
下图tcpcopy捕获到了在线第三次握手数据包,修改第三次握手数据包的ack sequence序列号和目的地址,再次通过IP层发包接口发送出去。第三次握手数据包到达测试服务器后,相应的连接就建立成功。
3.2 离线回放
离线回放和在线回放的差别在于tcpcopy抓包接口,离线回放是从pcap获取数据包,而在线回放是通过IP层提供的raw socket抓包接口。
由于离线回放并不需要在线服务,因此intercept和tcpcopy可以运行在同一台服务器。
下面展示了离线回放的情况。图中tcpcopy从pcap文件获取第一次握手数据包,并发送给IP层。第一次握手数据包到达测试服务器后,测试服务器的TCP回复第二次握手数据包,并路由给测试机器。
intercept截获到第二次握手数据包后,发送给tcpcopy。
tcpcopy从pcap文件获取第三次握手数据包,并利用第二次握手数据包中的sequence序列号来修改第三次握手数据包中的内容,通过IP层发包接口发送给测试服务器。
第三次握手数据包到达测试服务器后,相应的连接就建立成功。
版权声明:
作者: FreeClashNode
链接: https://www.freeclashnode.com/news/article-2375.htm
来源: www.freeclashnode.com
文章版权归作者所有,未经允许请勿转载。
热门文章
- 10月1日免费节点分享|18M/S,Clash节点/V2ray节点/Singbox节点/SSR节点|免费上网梯子每天更新
- 10月2日免费节点分享|22.8M/S,Singbox节点/Shadowrocket节点/Clash节点/V2ray节点|免费上网梯子每天更新
- 10月3日免费节点分享|20.1M/S,SSR节点/Singbox节点/V2ray节点/Clash节点|免费上网梯子每天更新
- 9月30日免费节点分享|19.1M/S,Clash节点/V2ray节点/SSR节点/Singbox节点|免费上网梯子每天更新
- 10月6日免费节点分享|19.2M/S,V2ray节点/Singbox节点/Shadowrocket节点/Clash节点|免费上网梯子每天更新
- 10月8日免费节点分享|22.5M/S,V2ray节点/Singbox节点/Clash节点/Shadowrocket节点|免费上网梯子每天更新
- 10月11日免费节点分享|18.6M/S,V2ray节点/Clash节点/SSR节点/Singbox节点|免费上网梯子每天更新
- 10月5日免费节点分享|19.9M/S,Singbox节点/Clash节点/V2ray节点/SSR节点|免费上网梯子每天更新
- 10月14日免费节点分享|22.5M/S,Clash节点/V2ray节点/Singbox节点/SSR节点|免费上网梯子每天更新
- 10月13日免费节点分享|22.1M/S,V2ray节点/Clash节点/Singbox节点/Shadowrocket节点|免费上网梯子每天更新
最新文章
- 数字世界的破壁之旅:科学上网全指南与实用工具深度解析
- 10月26日免费节点分享|21.5M/S,V2ray节点/SSR节点/Singbox节点/Clash节点|免费上网梯子每天更新
- 跨越知识边界:浙大学子的全球学术网络探索指南
- 10月25日免费节点分享|18.1M/S,SSR节点/V2ray节点/Singbox节点/Clash节点|免费上网梯子每天更新
- 10月24日免费节点分享|20.5M/S,V2ray节点/Clash节点/Singbox节点/Shadowrocket节点|免费上网梯子每天更新
- 刘大猫科学上网全攻略:解锁全球网络的终极指南
- 10月23日免费节点分享|22.2M/S,Shadowrocket节点/Clash节点/Singbox节点/V2ray节点|免费上网梯子每天更新
- 全面解析Quantumult安卓版:功能、安装与配置教程
- 双重防护,畅享无界:AdGuard联手V2RayNG,打造极致安全的上网体验
- 10月22日免费节点分享|18.8M/S,V2ray节点/SSR节点/Singbox节点/Clash节点|免费上网梯子每天更新
- 掌握Clash白名单设置:精准控制代理流量的艺术
- 10月21日免费节点分享|22M/S,Clash节点/Singbox节点/V2ray节点/SSR节点|免费上网梯子每天更新
- 突破网络边界:技术科学上网的终极安全指南
- 10月20日免费节点分享|22.9M/S,SSR节点/V2ray节点/Clash节点/Singbox节点|免费上网梯子每天更新
- Shadowrocket 选购指南:从入门到精通,找到你的专属代理神器
- 10月19日免费节点分享|19.3M/S,Singbox节点/V2ray节点/Clash节点/Shadowrocket节点|免费上网梯子每天更新
- 深入解读:V2Ray为何比SSR更安全?一场网络隐私的全方位较量
- 10月18日免费节点分享|20.6M/S,V2ray节点/Clash节点/SSR节点/Singbox节点|免费上网梯子每天更新
- 深度指南:Shadowrocket从入门到精通——iOS用户的网络自由密钥
- 10月17日免费节点分享|18M/S,Clash节点/SSR节点/V2ray节点/Singbox节点|免费上网梯子每天更新
- 深入解析科学上网套:全方位使用指南与常见问题解答
- 10月16日免费节点分享|22M/S,Shadowrocket节点/V2ray节点/Singbox节点/Clash节点|免费上网梯子每天更新
- 10月15日免费节点分享|21.2M/S,Clash节点/SSR节点/V2ray节点/Singbox节点|免费上网梯子每天更新
- 全局掌控:安卓设备上 Clash 全局模式完整设置指南与深度解析
- 解锁全球游戏体验:育碧平台科学上网全攻略与深度解析
- 10月14日免费节点分享|22.5M/S,Clash节点/V2ray节点/Singbox节点/SSR节点|免费上网梯子每天更新
- 华为Mate 10科学上网全攻略:突破限制,畅游全球网络
- 10月13日免费节点分享|22.1M/S,V2ray节点/Clash节点/Singbox节点/Shadowrocket节点|免费上网梯子每天更新
- 10月12日免费节点分享|22.7M/S,Shadowrocket节点/V2ray节点/Singbox节点/Clash节点|免费上网梯子每天更新
- 量子ULT全方位指南:从下载配置到高阶玩法一网打尽
- 10月11日免费节点分享|18.6M/S,V2ray节点/Clash节点/SSR节点/Singbox节点|免费上网梯子每天更新
- 极路由V2ray插件完全指南:打造家庭网络的安全屏障
- 10月10日免费节点分享|18.3M/S,V2ray节点/Singbox节点/Clash节点/SSR节点|免费上网梯子每天更新
- 极速狂飙与正义追击:《警车 Clash》深度解析与高阶攻略
- 10月9日免费节点分享|22.3M/S,Singbox节点/Clash节点/Shadowrocket节点/V2ray节点|免费上网梯子每天更新
- 用hosts文件科学上网:一份从入门到实战的详细指南
- 10月8日免费节点分享|22.5M/S,V2ray节点/Singbox节点/Clash节点/Shadowrocket节点|免费上网梯子每天更新
- iOS设备上SSR科学上网全教程:从入门到精通
- 10月7日免费节点分享|23M/S,Singbox节点/Clash节点/Shadowrocket节点/V2ray节点|免费上网梯子每天更新
- 深度剖析V2Ray订阅机制:从零搭建高效、安全的科学上网环境
- 10月6日免费节点分享|19.2M/S,V2ray节点/Singbox节点/Shadowrocket节点/Clash节点|免费上网梯子每天更新
- 全面解析蚕蛹生态冲突及其多元价值
- 10月5日免费节点分享|19.9M/S,Singbox节点/Clash节点/V2ray节点/SSR节点|免费上网梯子每天更新
- 从零开始:手把手教你刷梅林固件实现安全科学上网
- 10月4日免费节点分享|20M/S,SSR节点/V2ray节点/Clash节点/Singbox节点|免费上网梯子每天更新
- 跨越边界,自由探索:一加科学上网全面指南与深度解析
- 10月3日免费节点分享|20.1M/S,SSR节点/Singbox节点/V2ray节点/Clash节点|免费上网梯子每天更新
- 10月2日免费节点分享|22.8M/S,Singbox节点/Shadowrocket节点/Clash节点/V2ray节点|免费上网梯子每天更新
- 斐讯K2路由器刷机全攻略:解锁科学上网新境界
- 解锁网络自由:B站d手机科学上网全攻略
归档
- 2026-10 51
- 2026-09 58
- 2026-08 63
- 2026-07 61
- 2026-06 55
- 2026-05 56
- 2026-04 51
- 2026-03 60
- 2026-02 52
- 2026-01 56
- 2025-12 59
- 2025-11 55
- 2025-10 56
- 2025-09 55
- 2025-08 49
- 2025-07 31
- 2025-06 30
- 2025-05 31
- 2025-04 30
- 2025-03 388
- 2025-02 360
- 2025-01 403
- 2024-12 403
- 2024-11 390
- 2024-10 403
- 2024-09 388
- 2024-08 402
- 2024-07 427
- 2024-06 442
- 2024-05 181
- 2024-04 33
- 2024-03 31
- 2024-02 29
- 2024-01 51
- 2023-12 52
- 2023-11 32
- 2023-10 32
- 2023-09 3