Udp
eth0 上的 tcpreplay 吞吐量遠低於(iperf 確認)最大值
我正在嘗試以數百 Mbps 的速率重播擷取的 UDP 多播數據包,但最大速度約為86 Mbps。(出於某種奇怪的原因,在白天的其他時間,它始終以該速率的十分之一達到最大值,大約8.8 Mbps)
eth0 上的 tcpreplay
僅產生約 86Mbps:
> tcpreplay -ieth0 --topspeed x.pcap sending out eth0 processing file: x.pcap Actual: 459424 packets (137973257 bytes) sent in 12.23 seconds. Rated: 11281542.0 bps, 86.07 Mbps, 37565.33 pps
eth0 上的 iperf
另一方面,iperf 高達約800Mbps。請注意,即使在 tcpreplay 僅產生大約 8.x Mbps 的時候也是如此)
iperf -c 192.168.20.55 -u -T 1 -t 5 -i 1 -b10000M ------------------------------------------------------------ Client connecting to 192.168.20.55, UDP port 5001 Sending 1470 byte datagrams UDP buffer size: 208 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.20.55 port 50238 connected with 192.168.20.55 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0- 1.0 sec 96.9 MBytes 813 Mbits/sec [ 3] 1.0- 2.0 sec 96.9 MBytes 813 Mbits/sec [ 3] 2.0- 3.0 sec 97.8 MBytes 820 Mbits/sec [ 3] 3.0- 4.0 sec 96.4 MBytes 809 Mbits/sec [ 3] 4.0- 5.0 sec 96.4 MBytes 809 Mbits/sec [ 3] 0.0- 5.0 sec 484 MBytes 812 Mbits/sec [ 3] Sent 345538 datagrams [ 3] Server Report: [ 3] 0.0- 5.0 sec 400 MBytes 671 Mbits/sec 0.071 ms 60212/345537 (17%) [ 3] 0.0- 5.0 sec 1 datagrams received out-of-order
tcpreplay on lo
只是為了確保 tcpreplay 不在我的磁碟上等待:
> tcpreplay -ilo --topspeed x.pcap Warning in sendpacket.c:sendpacket_open_pf() line 669: Unsupported physical layer type 0x0304 on lo. Maybe it works, maybe it wont. See tickets #123/318 sending out lo processing file: x.pcap Actual: 459424 packets (137973257 bytes) sent in 0.56 seconds. Rated: 246380816.0 bps, 1879.74 Mbps, 820400.00 pps
是什麼解釋了 tcpreplay 在 eth0 上的速度很慢,有沒有辦法改進呢?
這個問題似乎既不是由我的盒子引起的,也不是由 tcpreplay 引起的。使用以下設置在另一台機器上進行測試
+-----------+ | L3 switch | +-+----+----+ | | +----------+ | | | +-----+-----+ | | L2 switch | | +-----+-----+ | | Cable 1 | Cable 2 +------------------------+ | NIC 1 NIC 2 | | | | My PC | | | +------------------------+
我得到這些數字
Cable Mbs pps -------------------------- 1 8.35 6174.75 2 601.07 444444.44
我還切換了電纜以確保它不是慢的 NIC,事實並非如此。我的猜測:這是 L2 交換機的問題。
什麼版本的tcpreplay?新版本比舊版本更快。您真的想執行支持通過 NETMAP 進行注入的最新 4.x。
另外,您確定您使用的是 1Gbps 或更好的介面嗎?您是否連接到 100Mbps 交換機埠或出於某種原因協商 100Mbps?查看 /var/log/messages 或 dmesg 以查看您的介面如何協商。