Tìm hiểu iperf
1.iperf là gì?
iperf
là một công cụ chuẩn đoán các vấn đề về tốc độ mạng bằng các đo thông lượng mạng tối đa mà server có thể xử lý. Nó hỗ trợ điều chỉnh một loạt các thông số khác nhau liên quan tới thời gian, giao thức và buffers. Với mỗi lần test, nó sẽ đều cho ra các bài báo cáo về throughput/bitrate hay số package bị mất…
Iperf hiện có 2 phiên bản là 2 và 3. Iperf 3 đầu tiên được phát triển cho CentOS Linux, FreeBSD, và macOS. Theo thời gian, nó dần hỗ trợ thêm một loạt các hệ điều hành khác như OpenBSD, NetBSD, Android, Solaris…
perf3 được phát triển chủ yếu bởi Phòng thí nghiệm Quốc gia ESnet / Lawrence Berkeley. Nó được phát hành tuân thủ theo giấy phép three-clause BSD.
2.Các tính năng trên iperf2 và iperf3
Các tính năng trên iperf 2 vẫn được hỗ trợ trên iperf 3:
- Kiểm tra TCP và UDP.
- Thiết lập port (
-p
) - Thiết lập các tùy chọn TCP: No delay, MSS,…
- Thiết lập băng thông UDP (
-b
) - Thiết lập kích thước buffer của socket.(
-w
) - Khoảng thời gian gửi báo cáo (
-i
) - Thiết lập buffer của iPerf (
-l
) - Kiểm tra ipv6 (
-6
) - Số lượng byte để truyền đi(
-n
) - Độ dài bài test (
-t
)(thời gian) - Định dạng của output (
-f
) Các tính năng mới trên iperf 3 - Dynamic server- Hầu hết các tùy chọn trên server có thể được cấu hình từ phía client.
- Trao đổi kết quả giữa server và client
- Một server iperf 3 chỉ cho phép 1 client kết nối( iperf 2 cho phép nhiều client kết nối).
- iperf API(libiprf) cho phép dễ dàng sử dụng, tùy chỉnh và mở rộng chức năng của iperf.
- Chế độ kiểm tra ngược- Server gửi, client nhân (
-R
) - Hiển thị output chi tiết hơn (
-V
) - Hiển thị output theo định dạng JSON (
-J
) - Thiết lập cpu (
-A
) - Số lượng block (packet) được gửi(
-k
)( thay vì dùng-t
hay-n
) - Chỉ sử dụng ipv4 (
-4
) - Chỉ sử dụng ipv6 (
-6
) - Chế độ server để nhận một kết nối (-s)
Tính năng trên iperf 2 mà iperf 3 không có
- Thử nghiệm 2 chiều (Bidirectional testing)
- Dữ liệu truyền từ stdin
- TTL : time-to-live
- Báo cáo dưới dạng các giá trị được ngăn cách nhau bởi dấu phẩy
3. Lab sử dụng iperf.
Cài đặt iperf
- Trên centos:
sudo yum install iperf
- Trên ubuntu:
sudo apt install iperf
Mô hình client server TCP/IP Cú pháp:
- Trên server:
iperf -s
- Trên client:
iperf -c <server-ip>
Ví dụ:
- Trên server với địa chỉ ip là 192.168.50.181: ```sh [root@lamth-cen1 ~]# iperf -s ———————————————————— Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ————————————————————
- Trên client chạy lệnh:
iperf -c 192.168.50.181
```sh
# iperf -c 192.168.50.181
------------------------------------------------------------
Client connecting to 192.168.50.181, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.162 port 36350 connected with 192.168.50.181 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.5 sec 8.38 MBytes 6.71 Mbits/sec
- Sau đó kết quả sẽ hiển thị cả trên client và server.
- Để tắt tiến trình iperf server nhấn
Ctrl+C
Test băng thông giữa hai máy ảo trong vmware worktation(cen1:10.88.88.):
- Trước khi giới hạn bang thông đo được băng thông giữa hai máy trung bình là 4020 Mbits/giây.
[root@cen1 ~]# iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[root@cen2 ~]# iperf -c 10.88.88.151 -f m -i 1
------------------------------------------------------------
Client connecting to 10.88.88.151, TCP port 5001
TCP window size: 0.52 MByte (default)
------------------------------------------------------------
[ 3] local 10.88.88.152 port 48682 connected with 10.88.88.151 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 1.0 sec 433 MBytes 3633 Mbits/sec
[ 3] 1.0- 2.0 sec 491 MBytes 4120 Mbits/sec
[ 3] 2.0- 3.0 sec 491 MBytes 4120 Mbits/sec
[ 3] 3.0- 4.0 sec 492 MBytes 4124 Mbits/sec
[ 3] 4.0- 5.0 sec 478 MBytes 4012 Mbits/sec
[ 3] 5.0- 6.0 sec 489 MBytes 4104 Mbits/sec
[ 3] 6.0- 7.0 sec 491 MBytes 4119 Mbits/sec
[ 3] 7.0- 8.0 sec 485 MBytes 4065 Mbits/sec
[ 3] 8.0- 9.0 sec 491 MBytes 4119 Mbits/sec
[ 3] 9.0-10.0 sec 451 MBytes 3783 Mbits/sec
[ 3] 0.0-10.0 sec 4792 MBytes 4020 Mbits/sec
[root@cen2 ~]#
- Thiết lập giới hạn bang thông cho server cen1. Setting » Network Adapter » Advanced… Trong phần incoming Traffic chọn giới hạn băng thông 10 Mbps
- Sau khi cấu hình giới hạn băng thông kiểm tra lại:
[root@cen1 ~]# iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------
``` [root@cen2 ~]# iperf -c 10.88.88.151 -f m -i 1 ———————————————————— Client connecting to 10.88.88.151, TCP port 5001 TCP window size: 0.26 MByte (default) ———————————————————— [ 3] local 10.88.88.152 port 48688 connected with 10.88.88.151 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0- 1.0 sec 1.75 MBytes 14.7 Mbits/sec [ 3] 1.0- 2.0 sec 1.25 MBytes 10.5 Mbits/sec [ 3] 2.0- 3.0 sec 1.25 MBytes 10.5 Mbits/sec [ 3] 3.0- 4.0 sec 1.25 MBytes 10.5 Mbits/sec [ 3] 4.0- 5.0 sec 1.25 MBytes 10.5 Mbits/sec [ 3] 5.0- 6.0 sec 1.12 MBytes 9.44 Mbits/sec [ 3] 6.0- 7.0 sec 1.12 MBytes 9.44 Mbits/sec [ 3] 7.0- 8.0 sec 1.62 MBytes 13.6 Mbits/sec [ 3] 8.0- 9.0 sec 1.50 MBytes 12.6 Mbits/sec [ 3] 9.0-10.0 sec 1.00 MBytes 8.39 Mbits/sec [ 3] 0.0-10.2 sec 13.1 MBytes 10.7 Mbits/sec
**Mô hình client server UDP**
Cú pháp
- Trên server: `iperf -s -u`
- Trên client: `iperf -c <server-ip> -u`
Ví dụ:
Trên server:
```sh
[root@lamth-cen1 ~]# iperf -s -u
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
Trên client:
# iperf -c 192.168.50.181 -u
------------------------------------------------------------
Client connecting to 192.168.50.181, UDP port 5001
Sending 1470 byte datagrams, IPG target: 11215.21 us (kalman adjust)
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.162 port 60079 connected with 192.168.50.181 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec
[ 3] Sent 893 datagrams
[ 3] Server Report:
[ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec 0.000 ms 2147481862/2147482755 (0%)