tcpcopy架构
tcpCopy 1.0 的最新架构分为三个角色:
- Online Server(OS):上面要部署 TCPCopy,从数据链路层(pcap 接口)抓请求数据包,发包是从IP层发出去;
- Test Server(TS):最新的架构调整把 intercept 的工作从 TS 中 offload 出来。TS 设置路由信息,把 被测应用 的需要被捕获的响应数据包信息路由到 AS;
- Assistant Server(AS):这是一台独立的辅助服务器,原则上一定要用同网段的一台闲置服务器来充当辅助服务器。AS 在数据链路层截获到响应包,从中抽取出有用的信息,再返回给相应的 OS 上的 tcpcopy 进程。
如上图所示,假设我们需要导入Apache的80端口流量, 部署图如上。
具体部署方法请参考: 浅谈压测之一Tcpcopy流量导入 http://jixing.blog.51cto.com/821242/1674329
tcpcopy从线上服务器的IP层抓取在线请求的数据包,修改相关属性,利用raw socket output技术(packet injection 技术之一)将其发送给测试服务器进行测试。
发送到测试服务器的数据包会在TCP/IP协议栈被识别,其中带有payload(tcp data)的数据包最终进入到测试服务器的上层应用(如nginx),上层应用在处理完请求之后,将响应传递给测试服务器的TCP/IP协议栈。
在测试服务器上启用ip_queue模块,并使用iptables在IP层将响应结果数据包发往QUEUE(ip_queue)。
测试服务器上运行在用户空间的拦截程序(intercept进程),通过打开netlink的socket接受内核通过ip_queue所传递来的网络数据包(即上层应用的响应内容)进行裁定,将结果返回内核,进行出队列的操作。intercept进程默认会丢弃上层应用的响应内容,返回ip header,以释放tcp连接。
intercept进程也可以通过-x(passlist)参数,不drop指定ip lists发出请求的响应内容。默认drop是为了:
1 减少出口带宽占用,节约成本
2 不影响客户端(线上服务)的`TCP/IP`协议栈
3 不会在互联网上产生ghost数据包
参考资料:
TCPCOPY 1.0 使用案例
http://blog.51web.net/9
真刀真枪压测:基于TCPCopy的仿真压测方案
http://www.cnblogs.com/zhengyun_ustc/p/tcpcopy.html
最新文章
- xss篇-本着就了解安全本质的想法,尽可能的用通俗易懂的语言去解释安全漏洞问题
- php查询文件扩展名
- lecture16-联合模型、分层坐标系、超参数优化及本课未来的探讨
- nginx实现http反向代理+负载均衡
- ORACLE清除某一字段重复的数据(选取重复数据中另一个字段时期最大值)
- Xtreme Toolkit Pro 免费下载地址
- insertAdjacentHTML
- MongoDB 的分组操作 In C#
- 当winform窗体的Bordestyle设置为None时,鼠标可以拖动窗体的办法
- javascript的框架演化
- Android 使用 RemoteViews 发送自定义通知 ,遇到 Couldn't expand RemoteViews问题总结
- Android : Activity 和 TabActivity 共用一个OptionMenu
- perl 改变对象属性
- 促销R语言应用性能
- Certificates does not conform to algorithm constraints
- Luogu P4643 【模板】动态dp
- XV Open Cup named after E.V. Pankratiev. GP of Central Europe (AMPPZ-2014)--J.Cave
- 【repost】Python正则表达式
- JavaScript基础二
- CICD 基础
热门文章
- python+pcap+dpkt 抓包小实例
- IDEA批量修改变量名操作
- oh-my-zsh 安装及使用
- JVM中的对象生命周期
- Java零基础教程(一)环境搭建
- php7 改为从栈上分配内在的思路
- 【学习笔记】linux bash script
- CAS优缺点
- (转)Python标准库:内置函数print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
- (转) centos7下创建mysql5.6多实例