首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

利用tcpcopy引流过程

tcpcopy是一个tcp流量复制工具,当前还支持udp和mysql流量的复制。 目的: 将机器10.24.110.21的5000端口流量引流到机器10.23.25.11的5000端口。 示例:将10.24.110.21:4077引流到10.23.25.11:5000 1) 线上机器:10.24.110.21 tcpcopy -x 4077-10.23.25.11:5000 -s 10.23.25.12 -c 192.168.100.x -n 1 2) 测试机器:10.23.25.11 route add -net 192.168.100.0 netmask 255.255.255.0 gw 10.23.25.12 192.168.100/24为虚拟的IP,tcpcopy使用它来连接测试机。 3) 辅助机器:10.23.25.12 intercept -i eth1 -F tcp and src port 5000 测试机器和辅助机器需要在同一网段,否则添加不了路由。 如何需要将多台线上的机器引渡到同一台测试机上了? 关键点:需要不同的辅助端口 假设引流两台线上机到一台测试机10.23.25.11:5000 在辅助机器上启动两个不同端口的intercept进程(-p参数默认值为36524): intercept -p 36524 -i eth1 -F tcp and src port 5000 intercept -p 36525 -i eth1 -F tcp and src port 5000 同时,测试机上需要添加两条到辅助机的路由: route add -net 192.168.100.0 netmask 255.255.255.0 gw 10.23.25.12 route add -net 192.168.110.0 netmask 255.255.255.0 gw 10.23.25.12 两台线上机上分别启动tcpcopy引流(需要指定不同的协助机端口): tcpcopy -x 4077-10.23.25.11:5000 -c 192.168.100.x -n 1 -s 10.23.25.12 -f 1 -p 36524 tcpcopy -x 4077-10.23.25.11:5000 -c 192.168.110.x -n 1 -s 10.23.25.12 -f 6 -p 36525

01

TCP流量复制工具,另一个tcpcopy

很多年以前,网易推了一个tcp流量复制工具叫tcpcopy。2013年07月我入职新公司,大概10月份接触到tcpcopy,为tcpcopy修了两个bug,一个是由于公司内网的IP tunnel的问题tcpcopy无法正常工作;另一个是一个严重的性能bug。两个bug都用邮件方式向原作者反馈了,尤其第二个bug原作者在博客上发文感谢。在接下来的二次开发中,由于没办法看懂tcpcopy的tcp会话部分的代码,当时建议作者按照tcp的11个状态写成状态机,作者拒绝了。于是,我根据当时的业务情况重写了一个新的TCPCOPY叫TCPGO。技术原理和tcpcopy是一样的,但tcp会话部分写成了标准 的11个tcp状态的状态机(见源代码中的tcpsession类,漂亮的运行在应用空间而不是内核态的精简的tcp状态机)。另部署方式很不一样,要简单很多。为了开发效率,开发语言用了C++,用了boost库还加了lua帮助写业务代码。

07
领券