流量复制-----tcpcopy的使用(1)

前言

TCPCopy是基于网络栈,TCP协议的流量复制,常用的场景是把线上流量复制到测试环境,模拟线上用户操作,让测试机和真实的用户交互,让测试环境在正式灰度前暴露问题,用来排查线下不容易重现的问题,或者对测试环境做压力测试,增加上线信心。
除了占用额外的CPU,内存和带宽外,TCPCopy对生产系统几乎没有影响。此外,在请求多样性,网络延迟和资源占用方面,再现的工作负载与生产工作负载相似。
Github参考地址:https://github.com/session-replay-tools/tcpcopy

原理

tcpcopy 经历了三次架构调整,这三次架构的基本原理都一样,本质是利用在线数据包信息,模拟tcp客户端协议栈,欺骗测试服务器的上层应用服务。由于tcp交互是相互的,一般情况下需要知道测试服务器的响应数据包信息,才能利用在线请求数据包,构造出适合测试服务器的请求数据包,因此只要基于数据包的方式,无论怎么实现(除非是tcp协议改的面目全非),都需要返回响应包的相关信息。 三种架构的差别就在于在什么地方截获响应包。
三种架构的区别:https://blog.csdn.net/wangbin579/article/details/8949315
TCPCopy由两部分组成: tcpcopy和intercept。tcpcopy负责抓包和发包工作,而intercept负责截获应答包

架构描述

在这里插入图片描述
tcpcopy包含三部分:online server(线上服务器)、assistant server(辅助服务器)、target server(目标服务器即测试服务器)
访问流程(官方说明)
1、一个访问请求到达线上内核后端机;
2、socket 包在 IP 层被拷贝了一份传给tcpcopy 进程;
3、tcpcopy 修改包的目的及源地址,发给测试内核后端机;
4、拷贝的包到达测试内核后端机;
5、测试内核后端机的推荐内核处理访问,并返回结果;
6、返回结果在 IP 层被截获、丢弃,由 intercept 拷贝返回结果的 IP header 返回;
7、IP header 被发送给线上内核后端机的 tcpcopy 进程。

通俗解释:

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值