3,601 瀏覽數

Pktgen 壓力測試

這一篇是利用 Pktgen 來對網路裝置產生壓力測試,如果你完全不知道什麼是 Pktgen 可以先從這一篇來了解 Pktgen 簡介 – http://benjr.tw/93300 以及 Pktgen 封包的傳送與接收 – http://benjr.tw/93394

一般的 pktgen 封包的傳送與接收架構圖如下:
pktgen01
System A (mac 00:0c:29:06:a1:f9)

root@ubuntu:~# echo "count 0" > /proc/net/pktgen/eth0
root@ubuntu:~# echo "min_pkt_size 46" > /proc/net/pktgen/eth0
root@ubuntu:~# echo "max_pkt_size 1500" > /proc/net/pktgen/eth0
root@ubuntu:~# echo "dst_mac 00:0c:29:77:5A:56" > /proc/net/pktgen/eth0

System B (mac 00:0c:29:77:5A:56)

root@ubuntu:~# echo "count 0" > /proc/net/pktgen/eth0
root@ubuntu:~# echo "min_pkt_size 46" > /proc/net/pktgen/eth0
root@ubuntu:~# echo "max_pkt_size 1500" > /proc/net/pktgen/eth0
root@ubuntu:~# echo "dst_mac 00:0c:29:06:a1:f9" > /proc/net/pktgen/eth0
  • Count 設成 0 ,可以讓系統不斷送出封包,直到按下 Ctrl+C 手動終止程式,如果是在背景執行就用 kill , killall 來終止.
  • 因為是壓力測試我會從一般 Frame Data 大小的 46bytes ~ 1500bytes, 如果你的系統有支援 Jumbo frame 則可以設大一點,關於 Jumbo frame 請參考 http://benjr.tw/16066

System A (mac 00:0c:29:06:a1:f9)

root@ubuntu:~# cat /proc/net/pktgen/eth0
Params: count 0  min_pkt_size: 46  max_pkt_size: 1500
     frags: 0  delay: 0  clone_skb: 0  ifname: eth0
     flows: 0 flowlen: 0
     queue_map_min: 0  queue_map_max: 0
     dst_min:   dst_max:
        src_min:   src_max:
     src_mac: 00:0c:29:06:a1:f9 dst_mac: 00:0c:29:77:5A:56
     udp_src_min: 9  udp_src_max: 9  udp_dst_min: 9  udp_dst_max: 9
     src_mac_count: 0  dst_mac_count: 0
     Flags:
Current:
     pkts-sofar: 50000000  errors: 0
     started: 20016487035us  stopped: 20148440232us idle: 1391322us
     seq_num: 50000001  cur_dst_mac_offset: 0  cur_src_mac_offset: 0
     cur_saddr: 0x0  cur_daddr: 0x0
     cur_udp_dst: 9  cur_udp_src: 9
     cur_queue_map: 0
     flows: 0
Result: OK: dstmac

System B (mac 00:0c:29:77:5A:56)

root@ubuntu:~# cat /proc/net/pktgen/eth0
Params: count 0  min_pkt_size: 46  max_pkt_size: 1500
     frags: 0  delay: 0  clone_skb: 0  ifname: eth1
     flows: 0 flowlen: 0
     queue_map_min: 0  queue_map_max: 0
     dst_min:   dst_max:
        src_min:   src_max:
     src_mac: 00:0c:29:77:5A:56 dst_mac: 00:0c:29:06:a1:f9
     udp_src_min: 9  udp_src_max: 9  udp_dst_min: 9  udp_dst_max: 9
     src_mac_count: 0  dst_mac_count: 0
     Flags:
Current:
     pkts-sofar: 4243957  errors: 0
     started: 25726473025us  stopped: 25757134202us idle: 215389us
     seq_num: 4243958  cur_dst_mac_offset: 0  cur_src_mac_offset: 0
     cur_saddr: 0xb14e200a  cur_daddr: 0x0
     cur_udp_dst: 9  cur_udp_src: 9
     cur_queue_map: 0
     flows: 0
Result: OK: dstmac

同時在 System A (mac 00:0c:29:06:a1:f9) 與 System B (mac 00:0c:29:77:5A:56) 執行下面指令.

root@ubuntu:~# echo "start" > /proc/net/pktgen/pgctrl

你可以透過一些效能檢測的工具 (GUI : ksysguard , gkrellm ; TEXT : sar -n dev 1 1000) 看網路的負載狀況.

2 個網友的想法 “Pktgen 壓力測試

  1. 自動參照通知: pktgen 簡介 | Benjr.tw

  2. 自動參照通知: pktgen 封包的傳送與接收 | Benjr.tw

發表迴響