使用 Iperf 测试软路由性能
生活随笔
收集整理的這篇文章主要介紹了
使用 Iperf 测试软路由性能
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 目標
- Iperf
- 官網
- 版本
- 軟件安裝
- 命令行幫助信息
- 測試方案
- 拓撲
- 打開ulimit
- 服務器端命令
- 客戶端命令
- 裸機包轉發速率測試
- 限制網絡速度/IP 效果測試
- 限制 連接數/IP 效果測試
目標
有 openwrt、pfsense、ikuai、routeros 等4個軟路由,希望通過iperf工具對他們的純包轉發速率、帶寬限制/IP、連接數限制/IP 效果進行比對。
Iperf
Iperf 是網絡測速工具。官網地址: https://github.com/esnet/iperf
官網
https://github.com/esnet/iperf
版本
有iperf 和iperf3 兩個版本,因為iperf3 限制客戶端最大連接數128,所以這里選擇使用iperf。
軟件安裝
sudo apt install iperf命令行幫助信息
Usage: iperf [-s|-c host] [options]iperf [-h|--help] [-v|--version]Client/Server:-b, --bandwidth #[kmgKMG | pps] bandwidth to send at in bits/sec or packets per second-e, --enhancedreports use enhanced reporting giving more tcp/udp and traffic information-f, --format [kmgKMG] format to report: Kbits, Mbits, KBytes, MBytes-i, --interval # seconds between periodic bandwidth reports-l, --len #[kmKM] length of buffer in bytes to read or write (Defaults: TCP=128K, v4 UDP=1470, v6 UDP=1450)-m, --print_mss print TCP maximum segment size (MTU - TCP/IP header)-o, --output <filename> output the report or error message to this specified file-p, --port # server port to listen on/connect to-u, --udp use UDP rather than TCP--udp-counters-64bit use 64 bit sequence numbers with UDP-w, --window #[KM] TCP window size (socket buffer size)-z, --realtime request realtime scheduler-B, --bind <host>[:<port>][%<dev>] bind to <host>, ip addr (including multicast address) and optional port and device-C, --compatibility for use with older versions does not sent extra msgs-M, --mss # set TCP maximum segment size (MTU - 40 bytes)-N, --nodelay set TCP no delay, disabling Nagle's Algorithm-S, --tos # set the socket's IP_TOS (byte) fieldServer specific:-s, --server run in server mode-t, --time # time in seconds to listen for new connections as well as to receive traffic (default not set)--udp-histogram #,# enable UDP latency histogram(s) with bin width and count, e.g. 1,1000=1(ms),1000(bins)-B, --bind <ip>[%<dev>] bind to multicast address and optional device-H, --ssm-host <ip> set the SSM source, use with -B for (S,G) -U, --single_udp run in single threaded UDP mode-D, --daemon run the server as a daemon-V, --ipv6_domain Enable IPv6 reception by setting the domain and socket to AF_INET6 (Can receive on both IPv4 and IPv6)Client specific:-c, --client <host> run in client mode, connecting to <host>-d, --dualtest Do a bidirectional test simultaneously--ipg set the the interpacket gap (milliseconds) for packets within an isochronous frame--isochronous <frames-per-second>:<mean>,<stddev> send traffic in bursts (frames - emulate video traffic)-n, --num #[kmgKMG] number of bytes to transmit (instead of -t)-r, --tradeoff Do a bidirectional test individually-t, --time # time in seconds to transmit for (default 10 secs)-B, --bind [<ip> | <ip:port>] bind ip (and optional port) from which to source traffic-F, --fileinput <name> input the data to be transmitted from a file-I, --stdin input the data to be transmitted from stdin-L, --listenport # port to receive bidirectional tests back on-P, --parallel # number of parallel client threads to run-R, --reverse reverse the test (client receives, server sends)-T, --ttl # time-to-live, for multicast (default 1)-V, --ipv6_domain Set the domain to IPv6 (send packets over IPv6)-X, --peer-detect perform server version detection and version exchange-Z, --linux-congestion <algo> set TCP congestion control algorithm (Linux only)Miscellaneous:-x, --reportexclude [CDMSV] exclude C(connection) D(data) M(multicast) S(settings) V(server) reports-y, --reportstyle C report as a Comma-Separated Values-h, --help print this message and quit-v, --version print version information and quit[kmgKMG] Indicates options that support a k,m,g,K,M or G suffix Lowercase format characters are 10^3 based and uppercase are 2^n based (e.g. 1k = 1000, 1K = 1024, 1m = 1,000,000 and 1M = 1,048,576)The TCP window size option can be set by the environment variable TCP_WINDOW_SIZE. Most other options can be set by an environment variable IPERF_<long option name>, such as IPERF_BANDWIDTH.Source at <http://sourceforge.net/projects/iperf2/> Report bugs to <iperf-users@lists.sourceforge.net>測試方案
因為我們的目標是比較各軟路由的性能,所以只需要關注端口、連接數、數據發送的大小、數據發送的時間等參數即可,TCP\UDP的其他參數,Linux內核的參數等均不在此次測試的范圍內。
拓撲
為排除其他干擾,在單獨的交換機上搭建以下服務。
Ubuntu-server(iperf 服務端) --WAN–軟路由–LAN-- Ubuntu-server(iperf 客戶端)
打開ulimit
對于linux來講,打開連接就是打開文件,此時需要將測試用戶(root)的文件打開數限制打開,服務器和客戶端都要打開。
ulimit -n 10000服務器端命令
iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 128 KByte (default) ------------------------------------------------------------客戶端命令
# 單連接連續測試120秒 iperf -c x.x.x.x -t 120 # 100 連接連續測試120秒 iperf -c x.x.x.x -t 120 -P 100 # 1000 連接連續測試120秒 iperf -c x.x.x.x -t 120 -P 1000 # 2000 連接連續測試120秒 iperf -c x.x.x.x -t 120 -P 2000 # 根據服務器性能將連接數最高加到1W裸機包轉發速率測試
以上軟路由主要依賴內核的包過濾功能進行數據轉發,網絡策略越復雜,對性能的影響越大。我們首先清空4種路由器的網絡策略,使用空白的策略進行包轉發測試。
限制網絡速度/IP 效果測試
限制 連接數/IP 效果測試
總結
以上是生活随笔為你收集整理的使用 Iperf 测试软路由性能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DIV Scroll属性
- 下一篇: 配置快捷键让Total Commande