Udp

eth0 上的 tcpreplay 吞吐量遠低於(iperf 確認)最大值

  • September 25, 2014

我正在嘗試以數百 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 以查看您的介面如何協商。

引用自:https://serverfault.com/questions/607446