中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

TCPCopy線上流量復制工具怎么用

發布時間:2021-12-04 15:42:35 來源:億速云 閱讀:319 作者:柒染 欄目:服務器

這期內容當中小編將會給大家帶來有關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接受到響應頭信息,它利用頭信息修改在線打包器的屬性并繼續發送另一個包。應當注意,來自測試服務器的響應被路由到應該充當黑洞的輔助服務器。

四、快速開始

1、獲取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 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線上流量復制工具怎么用了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平遥县| 高清| 汝阳县| 诸暨市| 内乡县| 修文县| 红河县| 会泽县| 贵港市| 福州市| 乌兰察布市| 资溪县| 宁武县| 内江市| 体育| 襄城县| 永吉县| 安化县| 涿鹿县| 商城县| 涪陵区| 南和县| 苏尼特左旗| 金昌市| 广昌县| 峡江县| 启东市| 漠河县| 临颍县| 梨树县| 贡山| 贺兰县| 礼泉县| 内江市| 连云港市| 黑河市| 西城区| 阿克陶县| 水城县| 遂昌县| 大英县|