zoukankan      html  css  js  c++  java
  • tcpcopy架构

    tcpCopy 1.0 的最新架构分为三个角色:

    • Online Server(OS):上面要部署 TCPCopy,从数据链路层(pcap 接口)抓请求数据包,发包是从IP层发出去;
    • Test Server(TS):最新的架构调整把 intercept 的工作从 TS 中 offload 出来。TS 设置路由信息,把 被测应用 的需要被捕获的响应数据包信息路由到 AS;
    • Assistant Server(AS):这是一台独立的辅助服务器,原则上一定要用同网段的一台闲置服务器来充当辅助服务器。AS 在数据链路层截获到响应包,从中抽取出有用的信息,再返回给相应的 OS 上的 tcpcopy 进程。

     

    image

    如上图所示,假设我们需要导入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数据包

    image

     

    参考资料:

    TCPCOPY 1.0 使用案例
    http://blog.51web.net/9

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

  • 相关阅读:
    shell脚本大小写转换
    python写xml及几个问题
    Java集合系列导读
    Java集合系列之Collection接口
    并发编程之锁机制
    Java中的堆内存和栈内存
    Java与ElasticSearch的交互操作
    ElasticSearch基础概念
    Java的对象和类
    Spring Validator参数校验
  • 原文地址:https://www.cnblogs.com/ghj1976/p/5062782.html
Copyright © 2011-2022 走看看