我的编程空间,编程开发者的网络收藏夹
学习永远不晚

TCPCopy线上流量复制工具怎么用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

TCPCopy线上流量复制工具怎么用

这期内容当中小编将会给大家带来有关TCPCopy线上流量复制工具怎么用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

TCPCopy是一种重放TCP流的工具,使用真实环境来测试互联网服务器上的应用程序。

一、描述:

虽然真实的实时流量对于Internet服务器应用程序的测试很重要,但是由于生产环境中的情况很负责,测试环境很难完全模拟线上环境。为了能够更真实的测试,我们开发了一款线上流量复制工具-TCPCopy,它可以使用线上真实的流量来对测试环境中的服务器进行测试。目前,TcpCopy技术已经在中国很多公司大量使用。

二、使用场景:

1)分布式压力测试

使用tcpcopy复制真实的数据来进行服务器的压力测试。有些bug只有在高并发的情况下才能够被发现。

2)仿真实验:

被证明是稳定的新系统,其bug只能在真正使用的时候才能被发现

3)回归测试

4)性能对比

三、框架:

TCPCopy线上流量复制工具怎么用

        如Figure1中所示,tcpcopy包括两部分:tcpcopy(client)和intercept(server)(后文中统一将tcpcopy-client称为tcpcopy,将tcpcopy-server称为intercept),当tcpcopy运行在生产服务器并从生产服务器抓取请求时,inteceptor运行在辅助服务器上进行一些辅助工作,例如,响应tcpcopy。切记,测试应用程序应该运行在测试服务器上。

tcpcopy默认情况下使用socket输入技术在网络层抓取线上的数据包,做一些基本处理(包括:模拟TCP交互,网络控制,以及模拟传输层和应用层),使用socket输出技术发送数据包到测试服务器(如粉色箭头所示)

tcpcopy的测试服务器需要做的唯一操作是:设置适当的参数使响应信息发送到辅助服务器中(装intercept的服务器)(如绿色箭头所示)

intercept(默认)将响应信息传送给tcpcopy。通过抓取响应包,intercept提取响应头信息,并使用一个特殊的通道将响应头信息发送给tcpcopy(如紫色箭头所示)。当tcpcopy接受到响应头信息,它利用头信息修改在线打包器的属性并继续发送另一个包。应当注意,来自测试服务器的响应被路由到应该充当黑洞的辅助服务器。

四、快速开始

获取intercept的两种方式:

    1)Download the latest intercept release.

    2)clone git://github.com/session-replay-tools/intercept.git

    2、获取tcpcopy的两种方式

    1)Download the latest tcpcopy release.

    2)clone git://github.com/session-replay-tools/tcpcopy.git

五、获取安装在辅助服务器上的intercept

    1)cd intercept
    2)./configure
    3)选择适当的配置参数
    4)make
    5)make install

六、intercept的配置参数

    --single            intercept运行在单机情况下
    --with-pfring=PATH  将路径设置为PF_RING库源
    --with-debug        以debug模式编译intercept(保存在日志文件中)

七、获取安装在生产服务器上的tcpcopy

    1)cd tcpcopy
    2)./configure
    3)选择适当的配置参数
    4)make
    5)make install

八、tcpcopy的配置参数

    --offline 从pcap文件重放TCP流
    --pcap-capture 在数据链路层抓包(默认在网络层)
    --pcap-send 在数据链路层发包(默认在网络层)
    --with-pfring=PATH 将路径设置为PF_RING库源
    --set-protocol-module=PATH 设置tcpcopy为外部协议模块工作
    --single 如果intercept和tcpcopy都设置为单机模式,只有一个tcpcopy和一个intercept一起工作,将会获得更好的性能
    --with-debug 以debug模式编译tcpcopy(保存在日志文件中)

九、运行tcpcopy

    确保tcpcopy和intercept都配置为“./configure”

    1)在运行应用程序的测试服务器上,正确设置路由命令以将响应数据包发送到辅助服务器上

    例如:

    假设61.135.233.161是辅助服务器的IP地址。 我们设置以下route命令将所有对62.135.200.x的的响应路由到辅助服务器。

    route add -net 62.135.200.0 netmask 255.255.255.0 gw 61.135.233.161

    2)在运行intercept的辅助服务器上(需要root权限或者能使用socket通信的权限)

    ./intercept -F <filter> -i <device,>

    请注意,过滤器格式与pcap过滤器相同。
    例如:./intercept -i eth0 -F 'tcp and class="lazy" data-src port 8080' -d

    intercept将捕获基于TCP应用的响应,该应用监听在设备的8080端口上

    3)生产服务器中(需要root权限或者能使用socket通信的权限)

    ./tcpcopy -x localServerPort-targetServerIP:targetServerPort -s <intercept server,> 

    [-c <ip range,>]

    例如(假设61.135.233.160是目标服务器的IP地址):

    ./tcpcopy -x 80-61.135.233.160:8080 -s 61.135.233.161 -c 62.135.200.x

    tcpcopy将抓取当前服务器上80端口的数据包,修改客户端IP地址为62.135.200.x,将这些数据包发送到ip地址为61.135.233.160,端口为8080的测试服务器,并且连接61.135.233.161,告诉intercept将响应数据包发送给它(tcpcopy)
    虽然“-c”参数是可选的,但在此设置以便简化路由命令。

十、注意

    1)只能在linux上测试(kernal 2.6 or above)
    2)tcpcopy可能丢包,因此丢失请求
    3)root权限或socket权限是必须的(例如 setcap CAP_NET_RAW = ep tcpcopy)
    4)TCPCopy现在只支持客户端启动的连接
    5)TCPCopy不支持使用SSL / TLS的服务器应用程序的重放
    6)对于MySQL会话重放,请参考 https://github.com/session-replay-tools
    7)不应该在辅助服务器上设置ip转发
    8)请执行“./tcpcopy -h”或“./intercept -h”以获取更多详细信息

十一、影响因素

    有几个因素可能影响TCPCopy,将在以下部分中详细介绍:

    1)抓包接口

    tcpcopy默认使用套接字输入接口在网络层抓取生产服务器的数据包。在系统忙时,系统内核可能会丢包。

    如果你配置tcpcopy的参数“--pcap-capture”,tcpcopy将在数据链路层抓包,也可以过滤内核中的数据包。在PF_RING资源中,当使用pcap捕获时,tcpcopy将丢失更少的数据包。

    或许抓请求包的最好方式是通过交换机镜像入口的数据包,然后通过负载均衡器将巨大的流量划分到几台机器

    2)发送接口

    tcpcopy默认使用套接字输出接口在网络层发送数据包到测试服务器。如果你想避免IP连接跟踪问题或者获得更好的性能表现,配置tcpcopy的参数“--pcap-send”,设置适当的参数,tcpcopy可以在数据链路层发送数据包到测试服务器。

    3)数据包在通往测试服务器的路上

    当一个数据包被tcpcopy发送时,它可能在到达测试服务器前遭到很多挑战。由于数据包中的源IP地址依然是终端用户的IP地址(默认情况下)而不是生产服务器的IP地址,一些安全设备可能将该包削弱或当做伪造的包丢弃它。这种情况下,你在测试服务器使用tcp抓包工具,可能抓取不到期望的终端用户的数据包。要确定你是否正处于这种情况下,你可以使用同一网段下的测试服务器做个小测试。如果数据包能被成功的发送到同一网段的测试服务器,而不能发送到不同网段的测试服务器,那么证明你的数据包在半路被丢弃了。

    为了解决这个问题,我们建议将tcpcopy、测试服务器、intercept部署在同一个网段内。在同一网段中有一个代理的帮助下还有另一个解决方案,tcpcopy可以向代理发送数据包,然后代理会将相应的请求发送到另一个网段中的测试服务器。

    注意,在同一网段中的一个虚拟机上部署目标服务器应用程序可能面临上述问题

    4)测试服务器的路由

    测试服务器可能设置了反向过滤技术,可以检查包中源IP地址是否是被伪造的。如果是,则该包在网络层被丢弃。

    如果在测试服务器中能用tcp抓包工具抓到包,但是测试服务器上的应用程序接收不到任何请求,你应该检查你是否有类似反向过滤技术的设置。如果设置了,你不得不移除相关的设置来让数据包通过网络层。

    也有些其他原因可能导致tcpcopy不能正常工作,例如防火墙设置问题。

    5)测试服务器上的应用程序

    测试服务器上的应用程序可能不能及时处理所有的请求。一方面,应用中的bug导致请求很长时间得不到响应;另一方面,一些TCP层以上的协议只处理socket缓冲中的第一个请求,将剩下的请求留在socket缓冲中不处理。

    6)辅助服务器的路由

    你不应该设置ip转发为true或者辅助服务器不能作为一个黑洞工作。

十二、历史版本

    2014.09 v1.0 TCPCopy released

十三、错误和功能请求

    有错误或功能请求?请打开一个新问题。 在打开任何问题之前,请搜索现有问题。

十四、版权和许可

    版权所有2016根据BSD许可。

上述就是小编为大家分享的TCPCopy线上流量复制工具怎么用了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

TCPCopy线上流量复制工具怎么用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

TCPCopy线上流量复制工具怎么用

这期内容当中小编将会给大家带来有关TCPCopy线上流量复制工具怎么用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。TCPCopy是一种重放TCP流的工具,使用真实环境来测试互联网服务器上的应用程序。一、
2023-06-04

Linux流量监控工具怎么用

这篇文章主要为大家展示了“Linux流量监控工具怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux流量监控工具怎么用”这篇文章吧。一、iftop是什么?iftop是类似于top的实时
2023-06-13

DVD管理复制工具DVDFab for Mac怎么用

这篇文章主要介绍DVD管理复制工具DVDFab for Mac怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!DVDFab for Mac是Mac平台上一款简单易用的DVD管理复制工具。DVDFab Mac特别版
2023-06-06

怎么用Python+Tkinter制作在线个性签名工具

今天小编给大家分享一下怎么用Python+Tkinter制作在线个性签名工具的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。思
2023-06-29

怎么用DreamWeaver模板工具批量制作网页

这篇文章主要讲解了“怎么用DreamWeaver模板工具批量制作网页”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用DreamWeaver模板工具批量制作网页”吧!一、建立模板1、创建模
2023-06-08

Java的对象复制工具类有哪些及怎么使用

今天小编给大家分享一下Java的对象复制工具类有哪些及怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。工具类特性在介绍
2023-06-27

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录