أداة سطر أوامر متعددة المنصات لاختبار أداء الشبكة عبر TCP وUDP وHTTP وHTTPS وICMP: عرض النطاق الترددي، الاتصالات/ثانية، الحزم/ثانية، زمن الاستجابة، الفقدان، التذبذب، ping، وtraceroute.
Ethr هي أداة قياس أداء الشبكة عبر المنصات مكتوبة بلغة golang. الهدف من هذا المشروع هو توفير أداة أصلية لقياسات شاملة لأداء الشبكة من حيث عرض النطاق الترددي، والاتصالات/الثانية، والحزم/الثانية، وزمن الاستجابة، والفقدان والاهتزاز (jitter)، عبر بروتوكولات متعددة مثل TCP وUDP وHTTP وHTTPS، وعبر منصات متعددة مثل Windows وLinux وأنظمة Unix الأخرى.
يستلهم Ethr من أدوات قياس أداء الشبكة مفتوحة المصدر الحالية ويبني على تلك الأفكار. لقياس عرض النطاق الترددي، فهو مشابه لـ iPerf3، لحركة مرور TCP وUDP. يمتلك iPerf3 خيارات أكثر بكثير مثل الاختبار المحدود السرعة ومجموعة ميزات أغنى، بينما يدعم Ethr خيوطاً متعددة، مما يسمح له بالتوسع إلى 1024 اتصالاً أو أكثر، وتواصل عدة عملاء مع خادم واحد، إلخ. لقياس زمن الاستجابة، فهو مشابه لـ latte على Windows أو sockperf على Linux.
يوفر Ethr قياسات اختبار أكثر مقارنة بالأدوات الأخرى، على سبيل المثال يوفر قياسات لعرض النطاق الترددي والاتصالات/الثانية والحزم/الثانية وزمن الاستجابة وزمن إنشاء اتصال 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 أو أحدث.
نستخدم go-module لإدارة تبعيات Ethr. لمزيد من المعلومات، يرجى مراجعة كيفية استخدام 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
الخادم مع واجهة نصية:
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
بالإضافة إلى ذلك، بالنسبة إلى TraceRoute وMyTraceRoute المستندين إلى TCP، يلزم وضع المسؤول، وإلا فلن يتمكن Ethr من استقبال رسائل ICMP الخاصة بتجاوز TTL.
بالنسبة إلى ICMP Ping وICMP/TCP TraceRoute وMyTraceRoute، يلزم الوضع المميز عبر sudo.