`
m635674608
  • 浏览: 5027803 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

tcpcopy简介

 
阅读更多

本文内容是整理自 王斌的博客(http://blog.csdn.net/wangbin579)和郑钧的博客(http://www.cnblogs.com/zhengyun_ustc),以便让自己可以有个宏观的认识。

Tcpcopy是一个分布式在线压力测试工具,可以将线上流量拷贝到测试机器,实时的模拟线上环境,达到在程序不上线的情况下实时承担线上流量的效果,尽早发现bug,增加上线信心。

Tcpcopy是由网易技术部王斌(http://weibo.com/tcpcopy)在王波的工作基础上开发的,2011年9月开源的项目(https://github.com/session-replay-tools/tcpcopy https://github.com/wangbin579/tcpcopy ),目前最新版本 1.0.0 ,后续相关内容都是基于 1.0.0 的。

 

tcpcopy的工作原理

TCPCopy 是一种请求复制(复制基于 TCP 的 packets)工具 ,通过复制在线数据包,修改 TCP/IP 头部信息,发送给测试服务器,达到欺骗测试服务器的TCP 程序的目的,从而为欺骗上层应用打下坚实基础。

 

tcpcopy 不是基于应用层的复制,而是基于底层数据包的请求复制,这么做的好处是:可以做到无需穿透整个协议栈,路程最短的,可以从数据链路层抓请求包,从数据链路层发包,路程一般的,可以在IP层抓请求包,从IP层发出去,不管怎么走,只要不走TCP,对在线的影响就会小得多。

七层网络模型如下图:

image

tcpcopy 经历了三次架构调整,参考:http://blog.csdn.net/wangbin579/article/details/8949315 

这三次架构的基本原理都一样,本质是利用在线数据包信息,模拟tcp客户端协议栈,欺骗测试服务器的上层应用服务。由于tcp交互是相互的,一般情况下需要知道测试服务器的响应数据包信息,才能利用在线请求数据包,构造出适合测试服务器的请求数据包,因此只要基于数据包的方式,无论怎么实现(除非是tcp协议改的面目全非),都需要返回响应包的相关信息。 
三种架构的差别就在于在什么地方截获响应包。

具体这三种架构的差别请看上面文章,简单差别如下:

  • 方案一:tcpcopy是从数据链路层(pcap接口)抓请求数据包,发包是从IP层发出去
  • 方案二:tcpcopy默认从IP层抓包,从IP层发包
  • 方案三:跟方案一一样,不过引入了独立的 intercept(assistant server)

后面的内容我们以第三套方案来展开。

 

tcpcopy 架构

tcpcopy运行需要intercept的支持,tcpcopy负责抓包和发包工作,而intercept负责截获应答包

它的数据流转和部署架构如下图:

image

 

tcpcopy代码下载地址:

git clone http://github.com/session-replay-tools/tcpcopy 
configure: 
./configure (默认raw socket方式抓包) 
或者 
./configure --pcap-capture  (pcap方式抓包,在某些场景下,丢包率会高于raw socket方式抓包,这时候需要类似pf_ring的支持)

 

对于intercept: 
代码下载地址: 
git clone http://github.com/session-replay-tools/intercept 
configure方式: 
./configure 

参考: http://blog.csdn.net/wangbin579/article/details/8950282 

 

具体的生产环境和镜像环境数据传递流程图如下:

image

  • TCPcopy 从数据链路层 copy 端口请求,然后更改目的 ip 和目的端口。
  • 将修改过的数据包传送给数据链路层,并且保持 tcp 连接请求。
  • 通过数据链路层从 online server 发送到 test server。
  • 在数据链路层解封装后到达 nginx 响应的服务端口。
  • 等用户请求的数据返回结果后,回包走数据链路层。
  • 通过数据链路层将返回的结果从 test server 发送到 assistant server。注:test server 只有一条默认路由指向 assistant server。
  • 数据到达 assistant server 后被 intercept 进程截获。
  • 过滤相关信息将请求状态发送给 online server 的 tcpcopy,关闭 tcp 连接。

 

最新的1.0版本如何使用离线模式 
https://github.com/session-replay-tools/tcpcopy/issues/215

对于tcpcopy,configure的时候加上--offline 
--offline replay TCP streams from the pcap file 
执行的时候,加上-i参数,用来指定pcap文件地址 
对于intercept,不用变化

 

参考资料:

真刀真枪压测:基于TCPCopy的仿真压测方案 
http://www.cnblogs.com/zhengyun_ustc/p/tcpcopy.html

如何利用pcap接口从数据链路层发包? 
http://blog.csdn.net/wangbin579/article/details/10148247

利用tcpcopy引流做模拟在线测试 
http://www.searchtb.com/2012/05/using-tcpcopy-to-simulate-traffic.html

 

http://www.cnblogs.com/ghj1976/p/5049270.html

分享到:
评论

相关推荐

    大数据分析培训-TCPCopy的功能简介-光环大数据培训.pdf

    大数据分析培训-TCPCopy的功能简介-光环大数据培训.pdf

    TCP/IP详解 (卷2:实现)

     2.9 m_copy和簇引用计数  2.10 其他选择  2.11 小结 第3章 接口层 3.1 引言 3.2 代码介绍  3.2.1 全局变量  3.2.2 SNMP变量 3.3 ifnet结构 3.4 ifaddr结构 3.5 sockaddr结构 3.6 ifnet与ifaddr的...

    TCP-IP详解卷二 实现(高清书签版).part2.rar

     2.9 m_copy和簇引用计数  2.10 其他选择  2.11 小结 第3章 接口层 3.1 引言 3.2 代码介绍  3.2.1 全局变量  3.2.2 SNMP变量 3.3 ifnet结构 3.4 ifaddr结构 3.5 sockaddr结构 3.6 ifnet与ifaddr的...

    TCP_IP详解卷1

    简介: 《TCP/IP详解,卷1:协议》是一本完整而详细的TCP/IP协议指南。描述了属于每一层的各个协议以及它们如何在不同操作系统中运行。作者用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现...

    TCP/IP详解part_2

    简介: 《TCP/IP详解,卷1:协议》是一本完整而详细的TCP/IP协议指南。描述了属于每一层的各个协议以及它们如何在不同操作系统中运行。作者用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现...

    windowsnt 技术内幕

    Windows NT备份应用程序(Backup)简介 Windows NT的标准备份(Normal Backup) Windows NT的增量备份(Incremental Backup) Windows NT的拷贝备份(Copy Backup) Windows NT的差异备份(Differential Backup) Windows NT的...

    TCP-IP详解卷二 实现(高清书签版).part1.rar

     2.9 m_copy和簇引用计数  2.10 其他选择  2.11 小结 第3章 接口层 3.1 引言 3.2 代码介绍  3.2.1 全局变量  3.2.2 SNMP变量 3.3 ifnet结构 3.4 ifaddr结构 3.5 sockaddr结构 3.6 ifnet与ifaddr的...

    TCP-IP详解卷二 实现(高清书签版).part3.rar

     2.9 m_copy和簇引用计数  2.10 其他选择  2.11 小结 第3章 接口层 3.1 引言 3.2 代码介绍  3.2.1 全局变量  3.2.2 SNMP变量 3.3 ifnet结构 3.4 ifaddr结构 3.5 sockaddr结构 3.6 ifnet与ifaddr的...

    FFMPEG命令入门到提高课程简介.mp4

    关注送资料内容包括:C/C++,Linux,Nginx,golang,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,ffmpeg,流媒体, 音视频,CDN,P2P,K8S,Docker,Golang,TCP/IP,协程,嵌入式,ARM,DPDK等等。。。

    DOS常用命令大全

    - **命令简介**:用于显示活动TCP/IP连接及相关信息。 - **常见用法**: - `netstat -a`:显示所有活动的TCP连接。 - `netstat -an`:显示所有活动的TCP连接及端口信息。 - `netstat -p [protocol]`:显示特定...

    spring boot + mina 项目中copy出来的

    Spring Boot简化了Spring应用程序的配置和启动过程,而Apache Mina则是一个高效的网络通信框架,它提供了多种网络协议的支持,如TCP、UDP等。 在Spring Boot项目中集成Mina,可以创建出高效、灵活的服务器端应用,...

    TCPIP协议详解卷2:实现

    2.9 m_copy和簇引用计数 43 2.10 其他选择 47 2.11 小结 47 第3章 接口层 49 3.1 引言 49 3.2 代码介绍 49 3.2.1 全局变量 49 3.2.2 SNMP变量 50 3.3 ifnet结构 51 3.4 ifaddr结构 57 3.5 sockaddr结构 58 3.6 ifnet...

    DOS命令大全

    - `netstat -p tcp`:显示 TCP 协议的活动连接。 #### ping **命令格式:** - `ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS] [-r count] [-s count] [-j computer-list | -k computer-list] [-w...

    dos命令简介

    **DOS命令简介** DOS(Disk Operating System)是一种早期的操作系统,虽然现代计算机主要使用Windows或Linux等更先进的系统,但了解DOS命令对于理解计算机底层操作和进行某些特定任务仍然有价值。以下是一些基本的...

    DNS压力测试工具安装使用.docx

    5. 其他工具:除了queryperf,还有其他开源测试工具,如tcpcopy,它可以复制网络流量,模拟DDoS攻击,帮助评估服务器的抗压能力。 通过上述步骤和策略,DNS管理员可以有效地利用queryperf来优化服务器性能,确保在...

    linux系统管理白皮书

    **1.2.1 TCP/IP网络简介** TCP/IP(Transmission Control Protocol/Internet Protocol)是一组用于实现计算机网络互连的标准协议,由TCP和IP两部分组成。TCP负责数据传输的可靠性和顺序性,而IP则负责数据包在网络...

    DOS常用命令详解

    - **功能简介**:`copy` 命令用于复制文件。 - `copy <source> <destination>`:将源文件复制到目标位置。 - **示例用法**: - `copy c:\temp\file.txt d:\backup\`:将C盘temp目录下的file.txt复制到D盘backup...

    QT_EasyServer.zip

    1.简介    工作上遇到好多需求都是给带网口的硬件设备写上位机程序,由于设备有限,往往单一条链接就够了,由于不涉及到高并发什么的,所以没必要用引入第三方 网络库,Qt自带的网络模块处理这类需求很...

Global site tag (gtag.js) - Google Analytics