Tcpreplay

home

How To...

概要/Overview

このセクションは、あなたがすぐに簡単に実行できるよう、 様々なシナリオを順を追って提供することにしています。

以下の使い方に関する例は、 サンプルキャプチャ/sample captures で提供されているファイルの 1つを使用しています。 i7 プロセッサで複数の Intel 82599 10GigE ポートを持つ 2台の物理マシンを使用します。 10GbE の NIC は、LAN ケーブルで直接接続されています。 SSH での LAN 接続は (10GbE でなく) 1GbE の NIC を使用します。 1GbE の NIC は eth0 ~ eth5 で、10GbE の NIC は eth6 ~ eth7 です。

2台のマシンとも、3.1.10 カーネルの Ubuntu 10.04 が動いてます。

このセクションに関連する動画のスクリーンショットがあります。 動画のリストは ここ/here にあり、また、 このページにも全てリストアップされています。 詳細な情報が必要であれば、動画のスクリーンショットはスキップし、 次のセクションに進んでください。

IP Flow アプライアンスのパフォーマンス試験の方法

IP Flow/NetFlow の統計情報をキャプチャしたりレポートしたりするデバイスにおいて パフォーマンスの試験を実施するのであれば、このサンプルを使ってください。 この例では、nProbe を使って DUT(Device Under Test)にパケットを送信しています。 nprobe のログイング機能を使って、 1秒あたりのパケットやバイトやフローを測定しています。

ワイヤーレートでのトラフィック送信能力や、 とてもたくさんの毎秒あたりのフローの生成は、 Tcpreplay v4.0.0 の新機能です。物理的なセットアップはとてもシンプルです。 我々の経験上では、Tcpreplay (の送信性能)は受信装置の性能よりも優れています。 従って、送信したトラフィックの合計の送信数や受信数を追跡することは重要で、 データの(パケットの)欠落数を決定します。

# nprobe -T "%IPV4_SRC_ADDR %IPV4_DST_ADDR %IPV4_NEXT_HOP %INPUT_SNMP \
%OUTPUT_SNMP %IN_PKTS %IN_BYTES %FIRST_SWITCHED %LAST_SWITCHED %L4_SRC_PORT \
%L4_DST_PORT %TCP_FLAGS %PROTOCOL %SRC_TOS %SRC_AS %DST_AS %IPV4_SRC_MASK \
%IPV4_DST_MASK" -i eth7
03/Jan/2014 20:50:24 [nprobe.c:2822] Welcome to nprobe v.6.7.3 for x86_64
03/Jan/2014 20:50:24 [plugin.c:143] No plugins found in ./plugins
03/Jan/2014 20:50:24 [plugin.c:143] No plugins found in /usr/local/lib/nprobe/plugins
03/Jan/2014 20:50:24 [nprobe.c:4004] Welcome to nprobe v.6.7.3 for x86_64
03/Jan/2014 20:50:24 [plugin.c:665] 0 plugin(s) enabled
03/Jan/2014 20:50:24 [nprobe.c:3145] Using packet capture length 128
03/Jan/2014 20:50:24 [nprobe.c:4222] Flows ASs will not be computed 
03/Jan/2014 20:50:24 [nprobe.c:4298] Capturing packets from interface eth7
03/Jan/2014 20:50:24 [util.c:3262] nProbe changed user to 'nobody'
tcpreplay -i eth7 -tK --loop 50 --unique-ip bigFlows.pcap  
File Cache is enabled
Actual: 39580750 packets (17770889200 bytes) sent in 20.02 seconds.
Rated: 876866137.5 Bps, 7014.92 Mbps, 1953026.60 pps
Flows: 2034300 flows, 100378.13 fps, 39558950 flow packets, 21800 non-flow
Statistics for network device: eth7
    Attempted packets:         39580750
    Successful packets:        39580750
    Failed packets:            0
    Truncated packets:         0
    Retried packets (ENOBUFS): 0
    Retried packets (EAGAIN):  0
03/Jan/2014 20:52:30 [nprobe.c:1557] ---------------------------------
03/Jan/2014 20:52:30 [nprobe.c:1558] Average traffic: [1.870 M pps][6 Gb/sec]
03/Jan/2014 20:52:30 [nprobe.c:1563] Current traffic: [569.089 K pps][2 Gb/sec]
03/Jan/2014 20:52:30 [nprobe.c:1568] Current flow export rate: [0.0 flows/sec]
03/Jan/2014 20:52:30 [nprobe.c:1571] Flow drops: [export queue too long=0]
[too many flows=0]
03/Jan/2014 20:52:30 [nprobe.c:1575] Export Queue: 0/512000 [0.0 %]
03/Jan/2014 20:52:30 [nprobe.c:1582] Flow Buckets: [active=749448][allocated=749448]
[toBeExported=0][frags=0]
03/Jan/2014 20:52:30 [nprobe.c:1465] Processed packets: 13089188 (max bucket search: 162)
03/Jan/2014 20:52:30 [nprobe.c:1468] Flow export stats: [0 bytes][0 pkts][0 flows]
03/Jan/2014 20:52:30 [nprobe.c:1477] Flow drop stats:   [0 bytes][0 pkts][0 flows]
03/Jan/2014 20:52:30 [nprobe.c:1482] Total flow stats:  [0 bytes][0 pkts][0 flows]
03/Jan/2014 20:52:30 [nprobe.c:235] Packet stats (pcap): 13100072/234355 pkts 
rcvd/dropped [1.8%] [Last 13334427/234355 pkts rcvd/dropped]
03/Jan/2014 20:53:00 [nprobe.c:1557] ---------------------------------
03/Jan/2014 20:53:00 [nprobe.c:1558] Average traffic: [626.567 K pps][2 Gb/sec]
03/Jan/2014 20:53:00 [nprobe.c:1563] Current traffic: [336.465 K pps][1 Gb/sec]
03/Jan/2014 20:53:00 [nprobe.c:1568] Current flow export rate: [0.0 flows/sec]
03/Jan/2014 20:53:00 [nprobe.c:1571] Flow drops: [export queue too long=0]
[too many flows=0]
03/Jan/2014 20:53:00 [nprobe.c:1575] Export Queue: 0/512000 [0.0 %]
03/Jan/2014 20:53:00 [nprobe.c:1582] Flow Buckets: [active=1542197][allocated=1542197]
[toBeExported=0][frags=0]
03/Jan/2014 20:53:00 [nprobe.c:1465] Processed packets: 23183007 (max bucket search: 336)
03/Jan/2014 20:53:00 [nprobe.c:1468] Flow export stats: [0 bytes][0 pkts][0 flows]
03/Jan/2014 20:53:00 [nprobe.c:1477] Flow drop stats:   [0 bytes][0 pkts][0 flows]
03/Jan/2014 20:53:00 [nprobe.c:1482] Total flow stats:  [0 bytes][0 pkts][0 flows]
03/Jan/2014 20:53:00 [nprobe.c:235] Packet stats (pcap): 23183007/11039913 pkts 
rcvd/dropped [32.3%] [Last 20888493/10805558 pkts rcvd/dropped]

Flows Per Second を減らす

フローのレートを 50Kfps に減らすには --mbps オプションで調整します ...

tcpreplay -i eth7 -K --mbps 3500 --loop 50 --unique-ip bigFlows.pcap 
File Cache is enabled
Actual: 39580750 packets (17770889200 bytes) sent in 40.06 seconds.
Rated: 437499777.1 Bps, 3499.99 Mbps, 974434.59 pps
Flows: 2034300 flows, 50082.23 fps, 39558950 flow packets, 21800 non-flow
Statistics for network device: eth7
    Attempted packets:         39580750
    Successful packets:        39580750
    Failed packets:            0
    Truncated packets:         0
    Retried packets (ENOBUFS): 0
    Retried packets (EAGAIN):  0

Netmap で Flows Per Second を増やす

最大の送信速度が 7 Gbps 以上であることはすでに示しました。 キャプチャファイルの最大フローレートを増やすためには、 Tcpreplay が NIC の送信バッファーに直接パケットを書き込めるように netmap をインストールする必要があります。

注意: netmap を使うことは(ネットワークスタックへの)侵入です。 実行する前に、カーネルモジュールのコンパイルのような作業が必要です。 また、テストの実行中は、 使用している NIC からネットワークスタックが切り離されることになります。 SSH を使っている場合、テストする NIC からログインしないでください。

./configure

 ...

##########################################################################
             TCPREPLAY Suite Configuration Results (4.0.0)
##########################################################################
libpcap:                    /usr (>= 0.9.6)
libdnet:                    no ()
autogen:                    /usr/local/bin/autogen (5.16.2)
Use libopts tearoff:        yes
64bit counter support:      yes
tcpdump binary path:        /usr/sbin/tcpdump
fragroute support:          no
tcpbridge support:          yes
tcpliveplay support:        yes

Supported Packet Injection Methods (*):
Linux TX_RING:              no
Linux PF_PACKET:            yes
BSD BPF:                    no
libdnet:                    no
pcap_inject:                yes
pcap_sendpacket:            yes **
Linux/BSD netmap:           yes /usr/src/netmap-release
./configure --with-netmap=/home/fklassen/git/netmap/

 ...

##########################################################################
             TCPREPLAY Suite Configuration Results (4.0.0)
##########################################################################
libpcap:                    /usr (>= 0.9.6)
libdnet:                    no ()
autogen:                    /usr/local/bin/autogen (5.16.2)
Use libopts tearoff:        yes
64bit counter support:      yes
tcpdump binary path:        /usr/sbin/tcpdump
fragroute support:          no
tcpbridge support:          yes
tcpliveplay support:        yes

Supported Packet Injection Methods (*):
Linux TX_RING:              no
Linux PF_PACKET:            yes
BSD BPF:                    no
libdnet:                    no
pcap_inject:                yes
pcap_sendpacket:            yes **
Linux/BSD netmap:           yes /home/fklassen/git/netmap/
#!/bin/sh
ifdown eth6
ifdown eth7
rmmod ixgbe
rmmod netmap_lin
insmod ./netmap_lin.ko
mknod /dev/netmap c 10 59
modprobe mdio
insmod ./ixgbe.ko
ifup eth6
ifup eth7
tcpreplay -i eth7 -tK --loop 50 --unique-ip --netmap bigFlows.pcap 
Switching network driver for eth7 to netmap bypass mode... done!
File Cache is enabled
Actual: 39580750 packets (17770889200 bytes) sent in 15.00 seconds.
Rated: 1182219090.4 Bps, 9457.75 Mbps, 2633133.19 pps
Flows: 2034300 flows, 135333.03 fps, 39558950 flow packets, 21800 non-flow
Statistics for network device: eth7
    Attempted packets:         39580750
    Successful packets:        39580750
    Failed packets:            0
    Truncated packets:         0
    Retried packets (ENOBUFS): 0
    Retried packets (EAGAIN):  0
Switching network driver for eth7 to normal mode... done!
tcpreplay -i eth7 -tK --loop 50 --unique-ip --netmap smallFlows.pcap 
Switching network driver for eth7 to netmap bypass mode... done!
File Cache is enabled
Actual: 713050 packets (460826550 bytes) sent in 0.385312 seconds.
Rated: 1195982865.8 Bps, 9567.86 Mbps, 1850578.23 pps
Flows: 60450 flows, 156885.84 fps, 712150 flow packets, 900 non-flow
Statistics for network device: eth7
    Attempted packets:         713050
    Successful packets:        713050
    Failed packets:            0
    Truncated packets:         0
    Retried packets (ENOBUFS): 0
    Retried packets (EAGAIN):  0
Switching network driver for eth7 to normal mode... done!

パケットをキャプチャするデバイスでのパフォーマンス試験の方法

パケットをキャプチャするデバイスや、 tcpdump のようにパケットをキャプチャするアプリケーションをテストする場合、 セットアップは IP Traffic Flow Appliance に記載された手順に似ています。 nprobe を実行する代わりに、パケットキャプチャのアプリケーションを起動してください。