IPerf เป็นเครื่องมือโอเพนซอร์สที่ออกแบบมาเพื่อทดสอบแบนด์วิดท์เครือข่ายระหว่างสองโหนดเครือข่าย iPerf ช่วยให้สร้างトラฟฟิก/โหลด TCP และ UDP ระหว่างสองโฮสต์ คุณสามารถใช้ iPerf เพื่อวัดแบนด์วิดท์เครือข่ายสูงสุด (throughput) ระหว่างเซิร์ฟเวอร์และไคลเอ็นต์อย่างรวดเร็ว ทดสอบสต레스ช่องสัญญาณ ISP, เราเตอร์, เกตเวย์เครือข่าย (firewall), เครือข่าย Ethernet หรือ Wi-Fi ของคุณ
ในบทความนี้ เราจะแสดงวิธีติดตั้งและใช้เครื่องมือ iPerf เพื่อตรวจสอบ network throughput บน Windows และ Linux CentOS (มีเวอร์ชัน iPerf สำหรับ Android, MacOS, RouterOS จาก MikroTik และแพลตฟอร์มอื่นๆ)
เวอร์ชัน iPerf: iPerf2 vs iPerf3
IPerf เป็นเครื่องมือข้ามแพลตฟอร์มและไม่ต้องติดตั้ง เพียงคัดลอกและรันบนสองอุปกรณ์ที่คุณต้องการทดสอบ network throughput
IPerf ทำงานในโหมด server-client บนอุปกรณ์แรก iPerf เริ่มในโหมดเซิร์ฟเวอร์ (รอトラฟฟิกจาก iPerf client) บนคอมพิวเตอร์ที่สอง iPerf เริ่มในโหมดไคลเอ็นต์ สร้างトラฟฟิก TCP หรือ UDP และวัดอัตราการถ่ายโอนข้อมูลสูงสุด
ปัจจุบันมีสองสาขา iPerf อิสระที่พัฒนาพร้อมกัน: iPerf2 และ iPerf3 ฟังก์ชันของเครื่องมือเหล่านี้ส่วนใหญ่เข้ากันได้ แต่ใช้พอร์ตเครือข่ายที่แตกต่างกันโดยค่าเริ่มต้น ใน iPerf1/2 คือ 5001 ใน iPerf3 คือ 5201
- iPerf2 เหมาะสำหรับเธรดขนาน, การทดสอบสองทิศทาง และเวอร์ชันนี้รองรับ Windows OS อย่างเป็นทางการ;
- iPerf3 มีการนำไปใช้งานการทดสอบ UDP ความเร็วสูงที่ดีกว่า โค้ด iPerf3 มีขนาดเล็กลงมากและปรับปรุงได้ดีกว่า
ความแตกต่างที่เหลือไม่ได้สำคัญนัก จึงไม่จำเป็นต้องใช้เวอร์ชัน iPerf เฉพาะ (แม้พารามิเตอร์ CLI จะเหมือนกัน) ในบทความนี้เราจะใช้ iperf3
iPerf3 ไม่ได้รับการรองรับอย่างเป็นทางการสำหรับแพลตฟอร์ม Windows แต่ทำงานได้ดีมาก ผมไม่พบบั๊กที่ชัดเจน คุณสามารถส่งรายงานบั๊กไปที่ https://github.com/esnet/iperf
วิธีติดตั้ง iPerf บน Windows
คุณสามารถดาวน์โหลด iPerf 3.1.3 สำหรับ Windows จากลิงก์ต่อไปนี้ https://iperf.fr/iperf-download.php หากคุณต้องการใช้ iPerf 2.0 – คุณสามารถดาวน์โหลดได้ที่นี่ คุณไม่ต้องติดตั้งเครื่องมือ เพียงดาวน์โหลดไฟล์เก็บ iPerf และแยกไฟล์ไปยังไดเรกทอรีท้องถิ่นบนไดรฟ์ มีเพียงสองไฟล์ในไฟล์เก็บ: cygwin1.dll และ iperf3.exe

มีการนำ iPerf GUI ไปใช้งานบน Windows หลายตัว ตัวอย่างเช่น Iperf3-Cygwin-GUI หรือ jperf
jperf เขียนด้วย Java (เพื่อรัน jperf ต้องติดตั้ง Java VM บนคอมพิวเตอร์) นอกจากฟอร์มกราฟิกสำหรับ CLI interface แล้ว Jperf ยังสามารถสร้างกราฟแบนด์วิดท์ของช่องสัญญาณแบบเรียลไทม์ได้
เพื่อใช้งาน เพียงระบุที่อยู่ iPerf server และรันการสแกน

มีโมดูล iPerfAutomate แยกต่างหากใน PowerShell Script Gallery ที่สามารถใช้เพื่อรับเมตริกประสิทธิภาพเครือข่ายจากสคริปต์ PowerShell ของคุณ คุณสามารถติดตั้งโมดูลด้วยคำสั่ง: Install-Module -Name iPerfAutomate
การติดตั้ง iPerf บน CentOS Linux
ใน CentOS 8 แพ็กเกจ iperf3 อยู่ใน AppStream base repository (ใน CentOS 7 คุณสามารถหา iperf3 ได้ใน EPEL repo) คุณสามารถติดตั้งด้วยคำสั่ง dnf (yum):
# dnf install iperf3
บน distros Debian/Ubuntu คุณสามารถติดตั้ง iperf3 ด้วยคำสั่ง:
sudo apt install iperf3

หากคุณต้องการใช้ instance Linux ของคุณเป็น iperf3 server คุณต้องเปิดพอร์ต TCP/UDP 5201 ใน firewalld (iptables):
# firewall-cmd --permanent --add-port=5201/udp
# firewall-cmd --permanent --add-port=5201/tcp
# firewall-cmd --reload
ใช้คำสั่ง iPerf วัดความเร็ว/แบนด์วิดท์เครือข่าย
มาดูตัวอย่างการใช้ iPerf เพื่อทดสอบ network throughput ในตัวอย่างนี้ เราจะใช้โฮสต์ Linux CentOS เป็น iPerf server รันเครื่องมือ iPerf3 ในโหมดเซิร์ฟเวอร์:
# iperf3 –s
iPerf server กำลังทำงาน รอการเชื่อมต่อบนพอร์ต TCP 5201
Server listening on 5201.
Hint อาร์กิวเมนต์ของ iPerf คำนึงถึงตัวพิมพ์เล็ก/ใหญ่!

ขึ้นอยู่กับการตั้งค่าไฟร์วอลล์ระหว่างไคลเอ็นต์และเซิร์ฟเวอร์ คุณสามารถเปลี่ยนพอร์ตฟังโดยใช้ argument -p [port_number] คุณสามารถรัน iPerf server ด้วยขนาด TCP window ใหญ่และบนพอร์ต TCP อื่นได้ ใช้คำสั่ง:
# iperf3 -s -w 32768 –p 5200
- -w 32768 – ตั้งค่าขนาด TCP window เป็น 32 kB (โดยค่าเริ่มต้นประมาณ 8 kB)
- –p 5200 – พอร์ตที่ iPerf รอการเชื่อมต่อ (ฉันเตือนไว้ว่า iperf2 ฟังโดยค่าเริ่มต้นที่พอร์ต 5001 และ iperf3 ที่ 5201)
ผมใช้คอมพิวเตอร์ที่ติดตั้ง Windows 10 เป็น iPerf client รัน command prompt และไปที่ไดเรกทอรีที่มีไฟล์ iPerf executable:
cd c:\tools\iperf
เพื่อรันการทดสอบแบนด์วิดท์เครือข่ายจากไคลเอ็นต์ ให้ระบุที่อยู่ iPerf server (หรือชื่อ DNS):
iperf3.exe -c 192.168.1.200
หากคุณเริ่ม iPerf server ด้วยขนาด TCP window เพิ่มขึ้น คุณสามารถใช้คำสั่งต่อไปนี้เพื่อรับโหลดเครือข่ายสูงสุด:
iperf3.exe -c 192.168.1.200 -P 8 -t 30 -w 32768
- -c 192.168.1.200 – ที่อยู่ IP ของ iPerf server;
- -w 32768 – เพิ่มขนาด TCP window;
- -t 30 – คือเวลาในวินาทีสำหรับการทดสอบ (โดยค่าเริ่มต้นคือ 10 วินาที);
- -P 8 – คือจำนวนเธรดขนาน (streams) เพื่อรับโหลดช่องสัญญาณสูงสุด;

ในตัวอย่างของผม การทดสอบใช้เวลา 30 วินาที ในรายงานสุดท้าย เราสนใจค่าของคอลัมน์ Bandwidth ที่แสดงในบรรทัด [SUM] สุดท้าย ในกรณีนี้ แบนด์วิดท์เครือข่ายเฉลี่ยระหว่างสองโฮสต์คือ 85.9 Mbit/s ข้อมูล 307 MB ถูกถ่ายโอน (Transfer column) ด้วยความเร็วสมมาตร (sender=receiver)
โดยใช้ argument -f คุณสามารถเปลี่ยนรูปแบบความเร็ว (bits, kilobits หรือ megabits) ในการทดสอบต่อเนื่อง เมื่อคุณต้องการประเมินประสิทธิภาพเป็นเวลาหลายนาที (ชั่วโมง) คุณสามารถตั้งค่าช่วงเวลาในการแสดงผลลัพธ์ระหว่างทางโดยใช้ตัวเลือก –i

คุณสามารถรัน iPerf ในโหมด reverse (เซิร์ฟเวอร์ส่งข้อมูล และไคลเอ็นต์รับ) ใช้ตัวเลือก –R บนไคลเอ็นต์สำหรับสิ่งนี้
โดยค่าเริ่มต้น ยูทิลิตี้สร้างトラฟฟิก TCP หากคุณต้องการตรวจสอบแบนด์วิดท์เครือข่ายของคุณสำหรับแพ็กเก็ต UDP คุณต้องใช้ตัวเลือก –u ในกรณีนี้ คุณควรเริ่ม iPerf server ด้วยคำสั่ง: iperf3 -s –u)
หากคุณต้องการทดสอบแบนด์วิดท์ของ ISP คุณสามารถใช้หนึ่งใน iPerf servers สาธารณะ (รายการ iPerf public host พร้อมที่นี่):
iperf3 -c iperf.scottlinux.com
หากคุณต้องการวัดความเร็วเครือข่ายสูงสุดในทั้งสองทิศทาง (ในโหมด duplex) ใช้ตัวเลือก –d บนไคลเอ็นต์:
iperf3.exe -c IP -P 8 -t 30 -w 32768 –d

ระหว่างการทดสอบเครือข่ายโดยใช้ iPerf คุณสามารถตรวจสอบกราฟ throughput การเชื่อมต่อเครือข่ายของคุณผ่าน Task Manager
สำคัญที่ต้องทราบว่า ระหว่างการทดสอบ iPerf ใช้ ทั้งหมด แบนด์วิดท์ที่มีอยู่ของช่องสัญญาณระหว่างไคลเอ็นต์และเซิร์ฟเวอร์ ซึ่งอาจส่งผลลบต่อแอปพลิเคชันและผู้ใช้งานจริง

คุณสามารถแสดงรายการตัวเลือกทั้งหมดได้ดังนี้:
iperf3 –help
Iperf เป็นเครื่องมือเครือข่ายที่ใช้งานง่ายและสะดวก ช่วยให้คุณวัดประสิทธิภาพการเชื่อมต่อเครือข่ายและความเร็วการถ่ายโอนข้อมูลสูงสุดระหว่างสองอุปกรณ์ได้