TCP, UDP, HTTP, HTTPS और ICMP पर नेटवर्क प्रदर्शन परीक्षण के लिए क्रॉस-प्लेटफ़ॉर्म CLI: बैंडविड्थ, connections/s, packets/s, विलंबता, हानि, जिटर, पिंग और ट्रेसरूट।
Ethr golang में लिखा गया एक क्रॉस-प्लेटफ़ॉर्म नेटवर्क प्रदर्शन मापन उपकरण है। इस परियोजना का लक्ष्य बैंडविड्थ, connections/s, packets/s, विलंबता (latency), हानि (loss) और जिटर (jitter) के व्यापक नेटवर्क प्रदर्शन मापन के लिए एक देशी उपकरण प्रदान करना है, जो TCP, UDP, HTTP, HTTPS जैसे कई प्रोटोकॉल और Windows, Linux तथा अन्य Unix सिस्टम जैसे कई प्लेटफ़ॉर्म पर कार्य करता है।
Ethr मौजूदा ओपन सोर्स नेटवर्क प्रदर्शन उपकरणों से प्रेरणा लेता है और उन विचारों पर आधारित है। बैंडविड्थ मापन के लिए, यह TCP और UDP ट्रैफ़िक के लिए iPerf3 के समान है। iPerf3 में थ्रॉटल किए गए परीक्षण, समृद्ध फीचर सेट जैसे कई और विकल्प हैं, जबकि Ethr कई थ्रेड्स का समर्थन करता है, जो इसे 1024 या उससे भी अधिक कनेक्शनों तक स्केल करने, एक ही सर्वर के साथ कई क्लाइंट्स के संचार आदि की अनुमति देता है। विलंबता मापन के लिए, यह Windows पर latte या Linux पर sockperf के समान है।
Ethr अन्य उपकरणों की तुलना में अधिक परीक्षण माप प्रदान करता है, उदाहरण के लिए यह बैंडविड्थ, connections/s, packets/s, विलंबता और TCP कनेक्शन सेटअप विलंबता के मापन को एक ही उपकरण में प्रदान करता है। भविष्य में, और अधिक सुविधाएँ (उम्मीद है कि अन्य योगदान देंगे) जोड़ने के साथ-साथ अधिक प्रोटोकॉल समर्थन जोड़ने की योजना है, ताकि यह नेटवर्क प्रदर्शन मापन के लिए एक व्यापक उपकरण बन सके।
Ethr golang के कारण स्वाभाविक रूप से क्रॉस-प्लेटफ़ॉर्म है, जैसा कि cygwin जैसी अमूर्त परत के माध्यम से संकलन करने के विपरीत है, जो कार्यक्षमता को सीमित कर सकती है। यह iPerf3, ntttcp, psping, sockperf और latte जैसे उपकरणों की कार्यक्षमता को मिलाकर और कई प्लेटफ़ॉर्म और कई प्रोटोकॉल के लिए एक ही उपकरण प्रदान करके प्रदर्शन मापन को एकीकृत करने की आशा करता है।
https://github.com/Microsoft/ethr/releases/latest
Linux
wget https://github.com/microsoft/ethr/releases/latest/download/ethr_linux.zip
unzip ethr_linux.zip
Windows Powershell
wget https://github.com/microsoft/ethr/releases/latest/download/ethr_windows.zip -OutFile ethr_windows.zip
Expand-Archive .\ethr_windows.zip -DestinationPath .
OSX
wget https://github.com/microsoft/ethr/releases/latest/download/ethr_osx.zip
unzip ethr_osx.zip
नोट: इसे स्रोत से बनाने के लिए go संस्करण 1.11 या उच्चतर आवश्यक है।
हम Ethr निर्भरताओं को प्रबंधित करने के लिए go-module का उपयोग करते हैं। अधिक जानकारी के लिए कृपया go-modules का उपयोग कैसे करें! देखें।
git clone https://github.com/Microsoft/ethr.git
cd ethr
go build
यदि ethr को $GOPATH/src ट्री के अंदर क्लोन किया गया है, तो कृपया सुनिश्चित करें कि आप go कमांड को GO111MODULE=on के साथ चलाएँ!
कमांड का उपयोग करके इमेज बनाएं:
docker build -t microsoft/ethr .
बाइनरी बनाएं:
Linux
docker run -e GOOS=linux -v $(pwd):/out microsoft/ethr make build-docker
Windows
docker run -e BINARY_NAME=ethr.exe -e GOOS=windows -v $(pwd):/out microsoft/ethr make build-docker
OS X
docker run -e BINARY_NAME=ethr -e GOOS=darwin -v $(pwd):/out microsoft/ethr make build-docker
go get github.com/microsoft/ethr
मान लीजिए आप yay (https://github.com/Jguer/yay) का उपयोग कर रहे हैं:
yay -S ethr
ethr.exe बनाने के लिए 'स्रोत से निर्माण' विषय का अनुसरण करें।
नया रिलीज़ संस्करण जोड़ने के लिए ethr.nuspec को संशोधित करें
vim ethr.nuspec
एक nuget पैकेज बनाएं(Ethr.0.2.1.nupkg जैसा)
nuget.exe pack ethr.nuspec
पैकेज को nuget.org पर अपलोड करें।
सहायता:
ethr -h
सर्वर:
ethr -s
टेक्स्ट UI के साथ सर्वर:
ethr -s -ui
क्लाइंट:
ethr -c <server ip>
उदाहरण:
// Start server
ethr -s
// Start client for default (bandwidth) test measurement using 1 thread
ethr -c localhost
// Start bandwidth test using 8 threads
ethr -c localhost -n 8
// Start connections/s test using 64 threads to server 10.1.0.11
ethr -c 10.1.0.11 -t c -n 64
// Run Ethr server on port 9999
./ethr -s -port 9999
// Measure TCP connection setup latency to ethr server on port 9999
// Assuming Ethr server is running on server with IP address: 10.1.1.100
./ethr -c 10.1.1.100 -p tcp -t pi -d 0 -4 -port 9999
// Measure TCP connection setup latency to www.github.com at port 443
./ethr -x www.github.com:443 -p tcp -t pi -d 0 -4
// Measure TCP connection setup latency to www.github.com at port 443
// Note: Here port 443 is driven automatically from https
./ethr -x https://www.github.com -p tcp -t pi -d 0 -4
// Measure ICMP ping latency to www.github.com
sudo ./ethr -x www.github.com -p icmp -t pi -d 0 -4
// Run measurement similar to mtr on Linux
sudo ./ethr -x www.github.com -p icmp -t mtr -d 0 -4
// Measure packets/s over UDP by sending small 1-byte packets
./ethr -c 172.28.192.1 -p udp -t p -d 0
ICMP से संबंधित परीक्षणों, Ping, TraceRoute, MyTraceRoute के लिए, Windows को फ़ायरवॉल के माध्यम से ICMP की अनुमति देना आवश्यक है। यह PowerShell का उपयोग करके निम्नलिखित कमांड द्वारा किया जा सकता है। हालाँकि, इसका उपयोग केवल तभी करें जब आपके सेटअप की सुरक्षा नीति इसकी अनुमति देती है।
// Allow ICMP packets via Firewall for IPv4
New-NetFirewallRule -DisplayName "ICMP_Allow_Any" -Direction Inbound -Protocol ICMPv4 -IcmpType Any -Action Allow -Profile Any -RemotePort Any
// Allow ICMP packets via Firewall for IPv6
New-NetFirewallRule -DisplayName "ICMPV6_Allow_Any" -Direction Inbound -Protocol ICMPv6 -IcmpType Any -Action Allow -Profile Any -RemotePort Any
इसके अलावा, TCP आधारित TraceRoute और MyTraceRoute के लिए Administrator मोड आवश्यक है, अन्यथा Ethr ICMP TTL exceeded संदेश प्राप्त नहीं कर पाएगा।
ICMP Ping, ICMP/TCP TraceRoute और MyTraceRoute के लिए, sudo के माध्यम से विशेषाधिकार (privileged) मोड आवश्यक है।