iperf3 یک برنامه رایگان open source، چند پلتفرمه و کامند لاینی میباشد و برای اندازه گیری real time ظرفیت شبکه در لینوکس مورد استفاده قرار میگیرد. این ابزار یکی از ابزارهای قدرتمند برای تست ماکزیمم پهنای باندی که در شبکه های ip (از IPv4 و IPv6 پشتیبانی میکند) بتوان به دست آورد، مورد استفاده قرار میگیرد.
با استفاده از iperf شما میتوانید چندین پارامتر مربوط به timing، buffer و پرتکل هایی همچون TCP, UDP, SCTP را کنترل و تنظیم کنید. این ابزار برای عملیات tune کردن کارایی شبکه بسیار پرکاربرد است.
به منظور دریافت حداکثر کارایی شبکه، شما به افزایش throughput (ظرفیت) و latency (تاخیر) ظرفیت های دریافت و ارسال شبکه تان نیاز دارید. به هر حال قبل از اینکه شما بتوانید tuning واقعی را انجام دهید نیاز به انجام یکسری تست برای جمع آوری آمارهای کارایی کلی شبکه که شما را در پروسه tune کردن راهنمایی خواهد کرد، نیاز خواهید داشت.
نتایج این دستور شامل فواصل زمانی به ثانیه، دیتای انتقال یافته، پهنای باند (سرعت انتقال)، از دست رفتن دیتا (پکت لاست) و دیگر پارامترهای مفید در کارایی شبکه میباشد. این ابزار به صورت اساسی برای کمک در tune کردن ارتباطات TCP از بستر یک مسیر خاص طراحی شده و این علتی است که ما در این پست روی آن تمرکز خواهیم کرد.
تجهیزات مورد نیاز :
نحوه نصب iperf3 در سیستم عامل های Linux
قبل از هر کاری شما باید روی هر دو ماشین مورد نظر iperf3 را نصب کنید. با توجه به اینکه iperf3 در ریپازیتوری های رسمی در اکثر توزیع های لینوکسی رایج موجود هستند نصب این پکیج کاری آسان است، و تنها با استفاده از یک پکیج منیجر همانند زیر آنرا نصب کرد.
به محض اینکه شما iperf3 را روی هر دو ماشین نصب کردید، میتوانید کار تست throughput شبکه را شروع کنید.
نحوه تست Throughput شبکه بین سرورهای Linux
ابتدا به ماشین ریموتی که به عنوان سرور از آن استفاده خواهید کرد متصل شده و iperf3 را با استفاده از آپشن -s در مد سرور اجرا کنید. این ابزار به صورت پیش فرض روی پورت 5201 در حال listen میباشد.
شما میتوانید برای گزارشات از فرمت دلخواه خود (k, m, g برای Kbits, Mbits, Gbits یا K, M, G برای KBytes, Mbytes, Gbytes) با استفاده از آپشن -f همانند زیر استفاده کنید.
اگر پورت 5201 توسط برنامه دیگری روی سرور استفاده میشود شما میتوانید پورت متفاوتی را (مثلا 3000) با استفاده از آپشن -p همانند زیر استفاده کنید.
به صورت دلخواه شما میتوانید سرور را به عنوان یک سرویس با استفاده از آپشن -D اجرا کنید و پیغام های سرور را روی یک log فایل همانند زیر ذخیره کنید.
سپس روی ماشین لوکال تان که میخواهید به عنوان client از آن استفاده کنید (که در حقیقت معیار سنجش واقعی توسط این سرور صورت میگیرد) دستور iperf را در مد client با استفاده از آپشن -c اجرا کنید و آدرس هاستی که سرور روی آن در حال اجراست را مشخص نمایید (که میتوانید ip آدرس، دامین یا host name آنرا استفاده کنید).
بعد از حدود 18 تا 20 ثانیه، کلاینت باید به کار خود خاتمه دهد و نتایجی شامل میانگین throughput را برای تست و سنجش همانند تصویر زیر ایجاد کند.
نکته : از نتایج فراهم آمده همانطور که در تصویر بالا میبینید، تنوعی از مقادیر از server و client موجود است اما شما همیشه باید نتایج به دست آمده از iperf ماشین client در هر تستی که انجام میدهید بررسی و استفاده کنید.
نحوه اجرا کردن تست پیشرفته Throughput در Linux
یکسری گزینه های خاص کلاینت وجود دارند که میتوان با استفاده از آنها همانند آنچه که در زیر توضیح داده شده میتوان تست های پیشرفته را پیاده سازی کرد. یکی از فاکتورهای مهم که میزان دیتای در شبکه روی مدت زمان داده شده را مشخص میکند، سایز TCP میباشد، که در tune کردن ارتباطات TCP مهم است. شما میتوانید سایز آن/سایز بافر سوکت را با استفاده از آپشن -w همانند زیر تعریف کنید.
برای اجرا کردن آن در مد reverse که سرور ارسال میکند و کلاینت دریافت میکند میتوانید از آپشن -R همانند زیر استفاده کنید.
برای اجرا کردن یک تست دوطرفه، به این معنا که شما پهنای باند را در هر دو جهت به صورت همزمان اندازه گیری کنید، باید از آپشن -d استفاده کنید.
اگر شما بخواهید که نتایج سرور را در خروجی کلاینت دریافت کنید باید از آپشن --get-server-output استفاده کنید.
همچنین امکان تعریف تعداد stream های به صورت موازی برای کلاینت (در این مثال 2) وجود دارد که همزمان و با استفاده از آپشن -P انجام میشود.
برای اطلاعات بیشتر صفحه راهنمای iperf3 را مشاهده نمایید.
همچنین توصیه میشود مقالات زیر را مطالعه کنید :
ابزار stress-ng برای تحمیل لود بالا و استرس تست روی cpu در لینوکس
httpstat - یک ابزار آمارگیری Curl برای تست سرعت لود سایت
چگونه 90 درصد از memory خود را در linux برای تست اشغال کنیم؟
راهنمای جامع به منظور مدیریت، عیب یابی و رفع مشکلات شبکه برای یک ادمین لینوکس
به خاطر داشته باشید که همیشه قبل از اینکه اقدام به tune کردن واقعی شبکه خود داشته باشید، تست های کارایی network را پیاده سازی کنید. iperf3 یک ابزار قدرتمند میباشد که برای اجرا کردن تست های throughput شبکه بسیار مفید است. در صورتی که درباره این ابزار ترفندی میشناسید و یا با توجه به مباحث مطرح شده در پست بالا سوال یا نظری دارید آنرا با ما به اشتراک بگذارید.
با استفاده از iperf شما میتوانید چندین پارامتر مربوط به timing، buffer و پرتکل هایی همچون TCP, UDP, SCTP را کنترل و تنظیم کنید. این ابزار برای عملیات tune کردن کارایی شبکه بسیار پرکاربرد است.
به منظور دریافت حداکثر کارایی شبکه، شما به افزایش throughput (ظرفیت) و latency (تاخیر) ظرفیت های دریافت و ارسال شبکه تان نیاز دارید. به هر حال قبل از اینکه شما بتوانید tuning واقعی را انجام دهید نیاز به انجام یکسری تست برای جمع آوری آمارهای کارایی کلی شبکه که شما را در پروسه tune کردن راهنمایی خواهد کرد، نیاز خواهید داشت.
نتایج این دستور شامل فواصل زمانی به ثانیه، دیتای انتقال یافته، پهنای باند (سرعت انتقال)، از دست رفتن دیتا (پکت لاست) و دیگر پارامترهای مفید در کارایی شبکه میباشد. این ابزار به صورت اساسی برای کمک در tune کردن ارتباطات TCP از بستر یک مسیر خاص طراحی شده و این علتی است که ما در این پست روی آن تمرکز خواهیم کرد.
تجهیزات مورد نیاز :
- دو کامپیوتر شبکه بندی شده که روی هر دو iperf3 نصب است.
نحوه نصب iperf3 در سیستم عامل های Linux
قبل از هر کاری شما باید روی هر دو ماشین مورد نظر iperf3 را نصب کنید. با توجه به اینکه iperf3 در ریپازیتوری های رسمی در اکثر توزیع های لینوکسی رایج موجود هستند نصب این پکیج کاری آسان است، و تنها با استفاده از یک پکیج منیجر همانند زیر آنرا نصب کرد.
کد PHP:
$ sudo apt install iperf3 #Debian/Ubuntu
$ sudo yum install iperf3 #RHEL/CentOS
$ sudo dnf install iperf3 #Fedora 22+
نحوه تست Throughput شبکه بین سرورهای Linux
ابتدا به ماشین ریموتی که به عنوان سرور از آن استفاده خواهید کرد متصل شده و iperf3 را با استفاده از آپشن -s در مد سرور اجرا کنید. این ابزار به صورت پیش فرض روی پورت 5201 در حال listen میباشد.
شما میتوانید برای گزارشات از فرمت دلخواه خود (k, m, g برای Kbits, Mbits, Gbits یا K, M, G برای KBytes, Mbytes, Gbytes) با استفاده از آپشن -f همانند زیر استفاده کنید.
کد PHP:
$ iperf3 -s -f K
کد PHP:
$ iperf3 -s -p 3000
کد PHP:
$ iperf3 -s -D > iperf3log
کد PHP:
$ iperf3 -c 192.168.10.1 -f K
نکته : از نتایج فراهم آمده همانطور که در تصویر بالا میبینید، تنوعی از مقادیر از server و client موجود است اما شما همیشه باید نتایج به دست آمده از iperf ماشین client در هر تستی که انجام میدهید بررسی و استفاده کنید.
نحوه اجرا کردن تست پیشرفته Throughput در Linux
یکسری گزینه های خاص کلاینت وجود دارند که میتوان با استفاده از آنها همانند آنچه که در زیر توضیح داده شده میتوان تست های پیشرفته را پیاده سازی کرد. یکی از فاکتورهای مهم که میزان دیتای در شبکه روی مدت زمان داده شده را مشخص میکند، سایز TCP میباشد، که در tune کردن ارتباطات TCP مهم است. شما میتوانید سایز آن/سایز بافر سوکت را با استفاده از آپشن -w همانند زیر تعریف کنید.
کد PHP:
$ iperf3 -c 192.168.10.1 -f K -w 500K
کد PHP:
$ iperf3 -c 192.168.10.1 -f K -w 500K -R
کد PHP:
$ iperf3 -c 192.168.10.1 -f K -w 500K -d
کد PHP:
$ iperf3 -c 192.168.10.1 -f K -w 500K -R --get-server-output
همچنین امکان تعریف تعداد stream های به صورت موازی برای کلاینت (در این مثال 2) وجود دارد که همزمان و با استفاده از آپشن -P انجام میشود.
کد PHP:
$ iperf3 -c 192.168.10.1 -f K -w 500K -P 2
کد PHP:
$ man iperf3
iperf3 Homepage : https://iperf.fr
همچنین توصیه میشود مقالات زیر را مطالعه کنید :
ابزار stress-ng برای تحمیل لود بالا و استرس تست روی cpu در لینوکس
httpstat - یک ابزار آمارگیری Curl برای تست سرعت لود سایت
چگونه 90 درصد از memory خود را در linux برای تست اشغال کنیم؟
راهنمای جامع به منظور مدیریت، عیب یابی و رفع مشکلات شبکه برای یک ادمین لینوکس
به خاطر داشته باشید که همیشه قبل از اینکه اقدام به tune کردن واقعی شبکه خود داشته باشید، تست های کارایی network را پیاده سازی کنید. iperf3 یک ابزار قدرتمند میباشد که برای اجرا کردن تست های throughput شبکه بسیار مفید است. در صورتی که درباره این ابزار ترفندی میشناسید و یا با توجه به مباحث مطرح شده در پست بالا سوال یا نظری دارید آنرا با ما به اشتراک بگذارید.