這一篇是利用 Pktgen 來對網路裝置產生壓力測試,如果你完全不知道什麼是 Pktgen 可以先從這一篇來了解 Pktgen 簡介 – https://benjr.tw/93300 以及 Pktgen 封包的傳送與接收 – https://benjr.tw/93394
一般的 pktgen 封包的傳送與接收架構圖如下:
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 請參考 https://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 thoughts on “Pktgen 壓力測試”