Làm thế nào để bạn kiểm tra tốc độ mạng giữa hai hộp?


168

Tôi có một mạng gigabit được thiết lập trong nhà của tôi và một vài hộp dựa trên Ubuntu. Vì tò mò hoàn toàn, tôi muốn kiểm tra tốc độ giữa hai hộp. Tôi không có bất kỳ vấn đề với tốc độ hoặc bất cứ điều gì, nó thực sự chỉ là sự đam mê trong tôi là tò mò. Thêm vào đó, có thể kết quả sẽ cho tôi biết nếu có chỗ để cải thiện hoặc tôi có cấu hình sai.

Vậy làm thế nào để bạn kiểm tra đúng tốc độ mạng giữa các hộp Ubuntu?

Câu trả lời:


272

Tôi sử dụng iperf. Đó là sự sắp xếp máy chủ của máy khách trong đó bạn chạy nó ở chế độ máy chủ ở một đầu và kết nối với nó từ một máy tính khác ở phía bên kia của mạng.

Cả hai máy đều chạy:

sudo apt-get install iperf

Chúng tôi sẽ khởi động một iperfmáy chủ trên một trong các máy:

iperf -s

Và sau đó trên máy tính khác, hãy nói iperfđể kết nối với tư cách là khách hàng:

iperf -c <address of other computer>

Trên máy khách, bạn sẽ thấy một cái gì đó như thế này:

oli@bert:~$ iperf -c tim
------------------------------------------------------------
Client connecting to tim, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.0.4 port 37248 connected with 192.168.0.5 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.04 GBytes    893 Mbits/sec

Tất nhiên, nếu bạn đang chạy tường lửa trên máy chủ, bạn sẽ cần cho phép kết nối trên cổng 5001 hoặc thay đổi cổng bằng -pcờ.


Bạn có thể làm khá nhiều điều tương tự với thuần cũ nc(netcat) nếu bạn đang nghiêng như vậy. Trên máy chủ:

nc -vvlnp 12345 >/dev/null

Và các đường ống khách hàng có thể một gigabyte các zeros qua ddqua ncđường hầm.

dd if=/dev/zero bs=1M count=1K | nc -vvn 10.10.0.2 12345

Như demod:

$ dd if=/dev/zero bs=1M count=1K | nc -vvn 10.10.0.2 12345
Connection to 10.10.0.2 12345 port [tcp/*] succeeded!
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 9.11995 s, 118 MB/s

Thời gian ở đó được đưa ra bởi ddnhưng nó phải đủ chính xác vì nó chỉ có thể xuất ra nhanh nhất khi đường ống sẽ lấy nó. Nếu bạn không hài lòng với điều đó, bạn có thể kết thúc toàn bộ timecuộc gọi.

Hãy nhớ rằng kết quả là trong mega byte để nhân nó bằng 8 để có được một mega bit thầu giá mỗi thứ hai tốc độ. Bản demo ở trên đang chạy ở tốc độ 944mbps.


Người đàn ông bạn có tất cả các câu trả lời cho câu hỏi của tôi! Mạng của tôi rõ ràng không được thiết lập cũng như mạng của bạn chỉ chuyển ở mức 714 MB và băng thông 598 Mbits / giây. Dunno có thể nhìn vào điều đó trong tương lai. Cảm ơn.
Jacob Schoen

Nói một cách công bằng, hộp kia chỉ cách một công tắc (và 20 mét của cat5e) và không có tắc nghẽn. 600mbps vẫn còn khá nhanh.
Oli

Điều này thật tuyệt, nhưng tôi không có quyền truy cập root vào máy chủ.
Geoff

Hãy thử -P 10. Kết quả của tôi với kết nối đơn tương tự như jschoens, nhưng với hơn 3 kết nối song song, nó liên tục đẩy được tốc độ 920Mbps.
wujj123456

1
@CMCDragonkai Có lẽ bạn không nên thử tài nguyên không phải của bạn. Các bài kiểm tra băng thông nặng có thể có tác động đến sự ổn định ngắn hạn.
Oli

22

Tương tự như khuyến nghị của Oli cho iperf. Chỉ muốn thêm vài điểm:

  1. Ngoài ra còn có các máy khách windows cho phép thử nghiệm trên các nền tảng.
  2. -t <seconds>thay đổi độ dài thử nghiệm. thay đổi số lượng kết nối đồng thời. Ví dụ: kiểm tra 10 kết nối với nhau trong 30 giây và cho kết quả tổng hợp cùng với 10 tốc độ kết nối riêng biệt.-P <n>iperf -c [target IP] -P 10 -t 30
  3. Bạn không cần sudo. Bạn có thể dễ dàng tải về nhị phân tại http://iperf.fr/ . Nó nên hoạt động. Tải xuống bằng wget, làm cho nó có thể thực thi được chmodvà bạn có thể trực tiếp chạy tệp nhị phân. Nó hoạt động hoàn hảo.

Tôi thấy rằng, bằng cách sử dụng các cài đặt mặc định, tốc độ kết nối đơn dao động khá nhiều. Tuy nhiên, với hơn 3 kết nối song song, kết quả phù hợp hơn với chuyển đổi gigabyte của tôi. (nhất quán @ 910-920Mbps)


8

Sử dụng tập lệnh này, bạn có thể dễ dàng kiểm tra tốc độ kết nối giữa máy của mình và một số máy chủ từ xa. Ví dụ về việc sử dụng:

$ scp-speed-test.sh user@remote_host 80000
  • user@remote_host là máy chủ đích của bạn (bạn phải có quyền truy cập ssh vào máy chủ này)
  • 80000là kích thước gần đúng của tệp thử nghiệm (tính bằng kbs), sẽ được nhận đến máy chủ từ xa. Nó không phải là đối số bắt buộc.

4
Điều này dường như để kiểm tra tốc độ của ứng dụng SCP, sẽ thấp hơn so với thử nghiệm ở lớp thấp hơn. Ví dụ, nc sử dụng L4. Tất nhiên, điều này thật tuyệt nếu bạn quan tâm nhiều hơn đến tốc độ của SCP.
sudo

1
Có vấn đề: Tập lệnh này ghi và đọc một tệp vào đĩa - chậm hơn ram, do đó có thể là chậm nhân tạo. Cũng chỉ gửi số không, trong trường hợp chúng bị nén đó là một sự tăng tốc nhân tạo lớn. Nếu bạn muốn có dữ liệu giả ngẫu nhiên, đừng sử dụng /dev/random(nó có thể chặn) hoặcurandom (nhận xét liên kết đề xuất rằng) chúng cũng có thể rất chậm, thay vào đó hãy sử dụng một dm-crypt (Xem Câu hỏi thường gặp của cryptsetup 2.19 Làm cách nào tôi có thể xóa thiết bị bằng mật mã- độ ngẫu nhiên lớp? ) có thể với một tập tin trong ram.
Xen2050

4

Nếu bạn muốn kiểm tra Ethernet LAN của mình ở mức thấp hơn, bạn có thể sử dụng Etherate, một công cụ kiểm tra Ethernet CLI Linux miễn phí:

https://github.com/jwbensley/ Khác

Ném nó vào hỗn hợp khi các công cụ như iPerf (rất tốt!) Hoạt động trên IP và TCP hoặc UDP. Etherate kiểm tra trực tiếp qua Ethernet / OSI lớp 2.


2

Lệnh bên dưới không yêu cầu các gói bổ sung nhưng truy cập SSH:

ssh username@myserver.example.com 'dd if=/dev/zero bs=1GB count=3 2>/dev/null' | dd of=/dev/null status=progress

Ví dụ đầu ra:

2992238080 bytes (3.0 GB) copied, 27.010250 s, 111 MB/s
5859375+0 records in
5859375+0 records out
3000000000 bytes (3.0 GB) copied, 27.1943 s, 110 MB/s

Lệnh in một tệp giả 3 GB (1000 ^ 3 byte) đầy đủ các số 0 đến thiết bị xuất chuẩn trên máy chủ từ xa, được in (chuyển) qua SSH tới thiết bị xuất chuẩn của máy chủ cục bộ và sau đó được chuyển sang cục bộ /dev/null(tức là bỏ qua). Bạn thậm chí có thể thấy tiến trình của bài kiểm tra trong khi thực hiện nó.

Chắc chắn là không chính xác như các công cụ khác nhưng trường hợp sử dụng của tôi là gỡ lỗi một quá trình sao lưu mà tôi muốn kiểm tra xem tốc độ mạng có phải là vấn đề mà không cần cài đặt các gói bổ sung hay không.


1

Ngoài ra còn có một số công cụ dòng lệnh tốt khác để đo điểm chuẩn băng thông giữa hai máy chủ:

nuttcp

server$ nuttcp -S
client$ nuttcp -v -v -i1 1.1.1.1 ;# 1.1.1.1 is server's address

nepim

 server$ nepim
 client$ nepim -d -c 1.1.1.1 ;# 1.1.1.1 is server's address

yêu tinh

 server$ goben
 client$ goben -hosts 1.1.1.1 ;# 1.1.1.1 is server's address

2
Làm thế nào là khác nhau từ nhau, và từ iperf? Họ làm việc như nhau, họ làm gì? nuttcp có trong Debian & dường như "nuttcp dựa trên nttcp, đến lượt nó là một sự cải tiến của ai đó tại Silicon Graphics (SGI) trên ttcp gốc, được Mike Muuss viết tại BRL vào khoảng trước tháng 12 năm 1984, để so sánh hiệu suất của Các ngăn xếp TCP của UC Berkeley và BBN để giúp DARPA quyết định phiên bản nào sẽ được phát hành trong phiên bản BSD Unix đầu tiên. "
Xen2050

0

như tôi đã chỉ ra trong nhận xét của mình ở câu trả lời tốt nhất, giải pháp đó không đủ tốt vì máy khách / máy chủ không được tối ưu hóa để ... ép từng bit tốc độ

giải pháp của tôi:

tạo một ramdisk ở cả hai bên (do đó, bạn không bị giới hạn bởi tốc độ lưu trữ và tôi khuyên bạn nên tạo chúng bằng ramfs chứ không phải tmpfs, vì vậy chúng sẽ không bị hoán đổi ... chỉ cần cẩn thận không để lại ít nhất 512M bộ nhớ trống đối với hệ thống, điều này BẮT BUỘC nếu bạn có giga ethernet, với tốc độ đó, ngay cả SSD cũng có thể làm chậm mọi thứ) cài đặt apache trên máy chủ, sau đó tạo liên kết tới ramdisk, tạo một vài tệp lớn trên ramdisk (100M-1G, bạn có thể tạo chúng bằng dd từ / dev / ngẫu nhiên hoặc sao chép nếu bạn có sẵn trong tay), sau đó đi về phía khách hàng và tải xuống (cũng trên ramdisk đó) với một chương trình tải xuống nâng cao, tôi đã sử dụng lftp

ồ, sự khác biệt là rất lớn, từ 75mbps được báo cáo bởi iperf và 9,5M / s netcat

đến 11,18M / s với giải pháp của tôi:

1591129421 bytes transferred in 136 seconds (11.18M/s)

9,5M * 8 = 76 mbps; nó khá gần 75 mbps
Phần mềm Fusca

-4

Thật dễ dàng cắm máy tính của bạn vào hộp đầu tiên, cắm hộp khác vào hộp đầu tiên. Sau đó, từ máy tính của bạn ping hộp đầu tiên lưu kết quả, ping hộp khác và thực hiện phép con.


10
Điều đó cho thấy độ trễ mạng chỉ là một phần của tốc độ. Ví dụ: kết nối 3G của điện thoại của tôi có độ trễ rất lớn (100-300ms) nhưng nó vẫn có thể quản lý thông lượng 5mbps.
Oli

Không phải lỗi của tôi nếu anh ấy hỏi tốc độ nhưng muốn thông lượng.
Nyamiou The Galeanthrope 7/12/17

1
Độ trễ là thời gian phản ứng, không phải tốc độ.
wullxz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.