आप दो बॉक्स के बीच नेटवर्क की गति का परीक्षण कैसे करते हैं?


168

मेरे घर में एक गिगाबिट नेटवर्क और कुछ उबंटू आधारित बक्से हैं। पूर्ण जिज्ञासा में से मैं दो बक्से के बीच की गति की जांच करना चाहूंगा। मुझे गति या किसी भी चीज से कोई समस्या नहीं है, यह वास्तव में मेरे लिए सिर्फ गीक है जो उत्सुक है। इसके अलावा शायद परिणाम मुझे बताएंगे कि क्या सुधार के लिए जगह है, या कि मेरे पास कुछ गलत तरीके से कॉन्फ़िगर किया गया है।

तो आप उबंटू बॉक्स के बीच नेटवर्क स्पीड का सही परीक्षण कैसे करते हैं?

जवाबों:


271

मैं उपयोग करता हूं iperf। यह एक क्लाइंट सर्वर व्यवस्था है जिसमें आप इसे एक छोर पर सर्वर मोड में चलाते हैं और नेटवर्क के दूसरी तरफ इसके कंप्यूटर से कनेक्ट करते हैं।

दोनों मशीनें चलती हैं:

sudo apt-get install iperf

हम iperfएक मशीन पर एक सर्वर शुरू करेंगे :

iperf -s

और फिर दूसरे कंप्यूटर पर, iperfक्लाइंट के रूप में कनेक्ट करने के लिए कहें :

iperf -c <address of other computer>

क्लाइंट मशीन पर, आपको कुछ इस तरह दिखाई देगा:

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

बेशक, यदि आप सर्वर मशीन पर फ़ायरवॉल चला रहे हैं, तो आपको पोर्ट 5001 पर कनेक्शन की अनुमति देनी होगी या -pध्वज के साथ पोर्ट बदलना होगा ।


ncयदि आप इस तरह से इच्छुक हैं तो आप सादे पुराने (netcat) के साथ बहुत कुछ कर सकते हैं । सर्वर मशीन पर:

nc -vvlnp 12345 >/dev/null

और ग्राहक सुरंग के माध्यम ddसे शून्य के एक गीगाबाइट को पाइप कर सकता है nc

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

डिमॉड के रूप में:

$ 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

समय वहां दिया जाता है, ddलेकिन यह पर्याप्त सटीक होना चाहिए क्योंकि यह केवल आउटपुट कर सकता है क्योंकि पाइप इसे तेजी से ले जाएगा। यदि आप इस बात से नाखुश हैं कि आप पूरी बात को timeकॉल में लपेट सकते हैं।

याद रखें कि परिणाम मेगा बाइट्स में है, इसलिए मेगा बिट्स -सेकेंड की गति प्राप्त करने के लिए इसे 8 से गुणा करें । ऊपर डेमो 944mbps पर चल रहा है।


यार तुम्हारे पास मेरे सवालों के सारे जवाब हैं! मेरा नेटवर्क स्पष्ट रूप से सेट अप नहीं है और साथ ही आपका केवल 714 एमबीटीएस में स्थानांतरण और 598 मीटर / सेकंड का बैंडविथ है। दुन्नो भविष्य में उस पर गौर कर सकता है। धन्यवाद।
जैकब स्कोन

निष्पक्षता में दूसरा बॉक्स केवल एक स्विच (और cat5e का 20 मीटर) दूर है और कोई भीड़ नहीं है। 600mbps अभी भी बहुत तेज है।
ओली

यह बहुत अच्छा है, लेकिन मेरे पास सर्वर तक रूट एक्सेस नहीं है।
ज्योफ

कोशिश करें। 10. 10. एकल कनेक्शन के साथ मेरा परिणाम jschoens के समान है, लेकिन 3+ समानांतर कनेक्शन के साथ, यह लगातार 920Mbps को धक्का देता है।
वूजजिस ४५६

1
@CMCDragonkai आप शायद उन संसाधनों का परीक्षण नहीं करना चाहिए जो आपके नहीं हैं। बैंडविड्थ भारी परीक्षणों का अल्पकालिक स्थिरता पर प्रभाव पड़ सकता है।
ओली

22

IPerf के लिए ओली की सिफारिश के रूप में भी। बस कई बिंदुओं को जोड़ना चाहते हैं:

  1. विंडोज़ क्लाइंट भी हैं जो प्लेटफ़ॉर्म पर परीक्षण करने में सक्षम हैं।
  2. -t <seconds>परीक्षण की लंबाई बदलता है। एक साथ कनेक्शन की संख्या में परिवर्तन। उदाहरण के लिए, 30 सेकंड के लिए एक साथ 10 कनेक्शन का परीक्षण करता है और 10 अलग कनेक्शन की गति के साथ कुल परिणाम देता है।-P <n>iperf -c [target IP] -P 10 -t 30
  3. आप sudo की जरूरत नहीं है। आप बस बाइनरी को http://iperf.fr/ पर डाउनलोड कर सकते हैं । यह काम करना चाहिए। इसके साथ डाउनलोड करें wget, इसे निष्पादन योग्य बनाएं chmodऔर आप सीधे बाइनरी चला सकते हैं। यह पूरी तरह से काम करता है।

मैंने पाया कि, डिफ़ॉल्ट सेटिंग्स का उपयोग करते हुए, एकल कनेक्शन की गति में काफी उतार-चढ़ाव होता है। हालांकि, 3+ समानांतर कनेक्शन के साथ, परिणाम मेरे गीगाबाइट स्विच पर अधिक सुसंगत हैं। (लगातार @ 910-920Mbps)


8

इस स्क्रिप्ट का उपयोग करके आप आसानी से अपनी मशीन और कुछ रिमोट होस्ट के बीच कनेक्शन की गति का परीक्षण कर सकते हैं। उपयोग करने का उदाहरण:

$ scp-speed-test.sh user@remote_host 80000
  • user@remote_host आपका गंतव्य होस्ट है (आपके पास इस होस्ट के लिए ssh-access होना चाहिए)
  • 80000परीक्षण फ़ाइल का अनुमानित आकार (kbs में) है, जो दूरस्थ होस्ट को प्राप्त होगा। यह अनिवार्य तर्क नहीं है।

4
यह एससीपी आवेदन की गति का परीक्षण करने के लिए लगता है, जो निचली परत पर एक परीक्षण से कम होगा। उदाहरण के लिए, nc L4 का उपयोग करता है। बेशक, यह बहुत अच्छा है यदि आप एससीपी की गति के बारे में अधिक ध्यान रखते हैं।
sudo

1
समस्याएं हैं: यह स्क्रिप्ट डिस्क पर एक फ़ाइल लिखती है और पढ़ती है - जो कि राम की तुलना में धीमी है, इसलिए एक कृत्रिम मंदी हो सकती है। इसके अलावा केवल शून्य भेजते हैं, यदि वे संकुचित हैं तो यह एक बड़ा कृत्रिम गति है। यदि आप छद्म आयामी डेटा चाहते हैं, तो इसका उपयोग न करें /dev/random(इसे ब्लॉक कर सकते हैं) याurandom (लिंक टिप्पणियों का सुझाव दिया गया है) वे बहुत धीमे भी हो सकते हैं, इसके बजाय एक डीएम-क्रिप्ट का उपयोग करें (क्रिप्टसएटअप के FAQ 2.19 देखें कि मैं किसी डिवाइस को क्रिप्टो करने के लिए कैसे मिटा सकता हूं- ग्रेड randomness? ) शायद एक फ़ाइल के साथ RAM में।
Xen2050

4

यदि आप अपने ईथरनेट लैन को निम्न स्तर पर परखना चाहते हैं तो आप ईथर का उपयोग कर सकते हैं जो एक मुफ्त लिनक्स सीएलआई ईथरनेट परीक्षण उपकरण है:

https://github.com/jwbensley/Etherate

इसे मिक्स में iPerf (जो बहुत अच्छे हैं!) जैसे उपकरणों के रूप में आईपी और टीसीपी या यूडीपी पर काम करते हैं। ईथरनेट / OSI लेयर 2 पर सीधे परीक्षण करें।


2

नीचे दिए गए आदेश में अतिरिक्त पैकेज की आवश्यकता नहीं है, लेकिन एसएसएच पहुंच:

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

उदाहरण आउटपुट:

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

कमांड रिमोट सर्वर पर stdout करने के लिए शून्य से भरी 3GB (1000 ^ 3 बाइट्स) डमी फ़ाइल को प्रिंट करता है, जिसे SSH के माध्यम से स्थानीय सर्वर के stdout में प्रिंट किया जाता है (स्थानांतरित किया जाता है) और फिर स्थानीय रूप से /dev/null( जिसे अनदेखा किया जाता है)। आप इसे निष्पादित करते समय परीक्षण की प्रगति भी देख सकते हैं।

निश्चित रूप से अन्य उपकरणों के रूप में सटीक नहीं है, लेकिन मेरा उपयोग मामला एक बैकअप प्रक्रिया को डीबग करने के लिए था जहां मैं परीक्षण करना चाहता था कि क्या नेटवर्क गति अतिरिक्त पैकेज स्थापित किए बिना समस्या थी।


1

दो मेजबानों के बीच बैंडविड्थ बेंचमार्किंग के लिए कुछ अन्य अच्छे कमांड-लाइन टूल भी हैं:

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

goben

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

2
ये एक दूसरे से और iperf से कैसे अलग हैं? क्या वे वही काम करते हैं, जो वे करते हैं? Nuttcp डेबियन & जाहिरा तौर पर है "Nuttcp nttcp पर आधारित है, जो मूल ttcp पर सिलिकॉन ग्राफिक्स (SGI) में किसी व्यक्ति द्वारा वृद्धि थी, जिसे दिसंबर 1984 से कुछ समय पहले माइक मुस ने डीआरएल में लिखा था, प्रदर्शन की तुलना करने के लिए DARPA को तय करने में मदद करने के लिए UC बर्कले और BBN द्वारा TCP स्टैक पहले BSD यूनिक्स रिलीज़ में कौन से संस्करण को जगह देता है। "
Xen2050

0

के रूप में मैं सबसे अच्छा जवाब में मेरी टिप्पणी में बताया, कि समाधान अच्छा नहीं है पर्याप्त ग्राहक कारण हो / सर्वर नहीं है अनुकूलित करने के लिए ... निचोड़ गति के हर बिट

मेरा समाधान:

दोनों तरफ एक रैमडिस्क बनाएं (इसलिए, आप स्टोरेज स्पीड से सीमित नहीं हैं और मेरा सुझाव है कि आपने उन्हें रम्फ नहीं tmpfs से बनाया है, इसलिए वे स्वैप में नहीं जाएंगे ... बस सावधान रहें कम से कम 512M फ्री मेमोरी न छोड़ें सिस्टम के लिए, यह आवश्यक है यदि आपके पास गीगा ईथरनेट है, तो उस गति पर भी SSDs चीजों को धीमा कर सकता है) सर्वर पर अपाचे स्थापित करें, फिर रैमडिस्क के लिए एक लिंक बनाएं, रैमडिस्क पर कुछ बड़ी फाइलें बनाएं (100M-1G, आप उन्हें बना सकते हैं dd से / dev / random या copy (यदि आपके हाथ में कुछ है) तो क्लाइंट की तरफ जाएं और उन्हें (उस तरफ की रैमडिस्क पर) एक एडवांस डाउनलोड प्रोग्राम के साथ डाउनलोड करें, मैंने इस्तेमाल किया lftp

ओह ठीक है, अंतर प्रमुख था, iperf और 9.5M / s netcat द्वारा रिपोर्ट किए गए 75mbps से

करने के लिए 11.18M / s मेरी समाधान के साथ:

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

9.5M * 8 = 76 एमबीपीएस; यह 75 एमबीपीएस के काफी करीब है
फुस्का सॉफ्टवेयर

-4

पहले बॉक्स पर अपने कंप्यूटर को रखना आसान है, दूसरे बॉक्स को पहले बॉक्स पर प्लग करें। फिर अपने कंप्यूटर से पहले बॉक्स को पिंग करके रिजल्ट सेव करें, दूसरे बॉक्स को पिंग करें और सब्स्ट्रेक्शन करें।


10
यह नेटवर्क विलंबता दिखाता है जो गति का केवल एक हिस्सा है। उदाहरण के लिए मेरे फोन के 3 जी कनेक्शन में विशाल विलंबता (100-300ms) है, लेकिन यह अभी भी 5mbps के थ्रूपुट का प्रबंधन कर सकता है।
ओली

मेरी गलती नहीं है अगर उसने गति पूछी लेकिन थ्रूपुट चाहता था।
न्यामिउ द गैलेनथ्रोप

1
विलंबता प्रतिक्रिया-समय है, गति नहीं।
wullxz
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.