| IPERF(1) | User Manuals | IPERF(1) |
نام (NAME)
iperf - اجرای آزمونهای ترافیک شبکه با استفاده از سوکتهای شبکه؛ سنجهها شامل توان عملیاتی و تاخیر یا ظرفیت و پاسخدهی پیوند میشوند.
خلاصه دستور (SYNOPSIS)
iperf -s [options]
iperf -c server [options]
iperf -u -s [options]
iperf -u -c server [options]
توضیحات (DESCRIPTION)
ابزار iperf 2 ابزاری برای آزمون است که اندازهگیریهای ترافیک شبکه را با استفاده از سوکتهای شبکه انجام میدهد. سنجههای کارایی پشتیبانیشده شامل توان عملیاتی (throughput) و تاخیر (latency) (یا ظرفیت پیوند و پاسخدهی) است. اندازهگیریهای تاخیر شامل هر دو تاخیر یکطرفه (OWD) و زمانهای رفتوبرگشت (RTT) میشود. ابزار Iperf میتواند از هر دو سوکت (یا پروتکل) TCP و UDP استفاده کند. این ابزار از ترافیک یکطرفه، دوطرفه همزمان (full duplex با سوکت یکسان) و ترافیک دوطرفه پشتیبانی کرده و از چندین جریان ترافیکی همزمان پشتیبانی میکند. این ابزار از ترافیک چندپخشی (multicast) شامل پیوستن به چندپخشی مبدا-خاص (SSM) پشتیبانی مینماید. طراحی چندنخی (multi-threaded) آن دستیابی به حداکثر کارایی را ممکن میسازد. سنجههای نمایشدادهشده به توصیف کارایی شبکه میزبان به میزبان کمک میکنند. تنظیم گزینه ارتقایافته (-e) تمامی سنجههای دردسترس را ارائه میدهد. نکته: سنجهها در سطح خواندن و نوشتنهای سوکت هستند و سربار مربوط به سرآیندهای لایههای پروتکل سطح پایینتر را شامل نمیشوند.
کاربر برای انجام آزمون باید هم یک سرور (برای دریافت ترافیک) و هم یک کلاینت (برای تولید و ارسال ترافیک) را راهاندازی کند. کلاینت و سرور معمولاً روی میزبانها یا رایانههای متفاوتی قرار دارند اما نیازی به متمایز بودن آنها نیست.
گزینههای عمومی (GENERAL OPTIONS)
- -b, --bandwidth
- تنظیم پهنای باند هدف و انحراف معیار اختیاری به صورت <mean>,[<stdev>] (برای پسوندها به NOTES مراجعه کنید). تنظیم نرخ بیت هدف روی کلاینت با مقدار 0، محدودیتهای نرخ بیت را غیرفعال میکند (بهویژه برای آزمونهای UDP مفید است). نرخ خواندن را روی سرور محدود خواهد کرد.
- -e, --enhanced
- نمایش خروجی ارتقایافته در گزارشها؛ در غیر این صورت از قالببندی گزارشهای قدیمی (نسخه 2.0.5) استفاده میشود (به NOTES مراجعه کنید).
- -f, --format [abkmgBKMG]
- قالب گزارش: تطبیقی (adaptive)، بیتها (bits)، بایتها (Bytes)، کیلوبیت (Kbits)، مگابیت (Mbits)، گیگابیت (Gbits)، کیلوبایت (KBytes)، مگابایت (MBytes)، گیگابایت (GBytes) (برای موارد بیشتر به NOTES مراجعه کنید).
- -h, --help
- چاپ خلاصهای از راهنما.
- --hide-ips
- پنهانسازی آدرسهای IP در خروجی (مفید برای زمانی که قصد انتشار نتایج را دارید و نمیخواهید آدرسهای کامل IP نمایش داده شوند؛ فقط v4).
- -i, --interval < t | f >
- نمونهبرداری یا نمایش گزارشهای بازهای در هر t ثانیه (پیشفرض) یا در هر فریم یا دسته (burst)؛ یعنی اگر از f استفاده شود بازه برابر با هر فریم یا دسته خواهد بود. گزارشدهی بازه فریم آزمایشی است. همچنین پیشنهاد میشود با نمونهبرداری سریع کامپایل شود، یعنی ./configure --enable-fastsampling
- -l, --len n[kmKM]
- تنظیم اندازه بافر خواندن/نوشتن (TCP) یا طول (UDP) به مقدار n (پیشفرض TCP برابر 128K، پیشفرض UDP برابر 1470).
- --l2checks
- انجام بررسیهای طول در لایه ۲ روی بستههای دریافتی UDP (نیازمند سیستمهایی است که از سوکتهای بسته پشتیبانی میکنند، مانند Linux).
- -m, --print_mss
- چاپ اندازه بیشینه قطعه (MSS) در TCP.
- --NUM_REPORT_STRUCTS <count>
- بازنویسی اندازه پیشفرض حافظه مشترک بین نخ(های) ترافیک و نخ گزارشگر به منظور کاهش تداخلهای قفل mutex. مقدار پیشفرض 5000 باید برای شبکههای 1Gb/s کافی باشد. در صورت مشاهده پیام اخطار مبنی بر کند بودن نخ گزارشگر، این مقدار را افزایش دهید. اگر پیام اخطار مشاهده نشود، افزایش این مقدار تاثیر قابل توجهی نخواهد داشت (به جز مصرف مقداری حافظه اضافی).
- -o, --output filename
- ارسال گزارش یا پیام خطا به این فایل مشخصشده.
- --permit-key [=<value>]
- تنظیم یک مقدار کلید که برای پذیرش ترافیک در یک اتصال توسط سرور باید مطابقت داشته باشد. اگر گزینه بدون مقدار در سرور مشخص شود، یک مقدار کلید بهطور خودکار تولید شده و در گزارش تنظیمات اولیه آن نمایش داده میشود. طول عمر کلید با استفاده از --permit-key-timeout تنظیم میشود و پیشفرض آن بیست ثانیه است. مقدار در کلاینت نیازمند استفاده از '=' است، مانند --permit-key=password (حتی اگر گزینه خط فرمان الزامی باشد). در صورتی که '=password' داده نشود، سرور بهطور خودکار یک مقدار تولید میکند. این مقدار همچنین به عنوان بخشی از شناسه انتقال (transfer id) در گزارشها استفاده خواهد شد. تنظیم این گزینه در کلاینت ولی عدم تنظیم آن در سرور نیز باعث رد شدن ترافیک کلاینت توسط سرور میشود. فقط TCP، بدون پشتیبانی از UDP.
- -p, --port m[-n]
- تنظیم درگاه(های) کلاینت یا سرور برای ارسال یا گوش دادن طبق m (پیشفرض 5001) به همراه محدوده درگاه اختیاری به صورت m-n (مثلاً -p 6002-6008) (به NOTES مراجعه کنید).
- --sum-dstip
- مجموع زدن نخهای ترافیک بر اساس آدرس IP مقصد (پیشفرض بر اساس آدرس IP مبدا است).
- --sum-only
- تنظیم خروجی تنها روی گزارشهای تجمیعی (sum). برای مقادیر بزرگ -P مفید است.
- --tcp-tx-delay n
- تنظیم TCP_TX_DELAY روی سوکت. واحد تاخیر میلیثانیه است. مقدار عدد اعشاری (float) میپذیرد. برای نیازمندیهای qdisc به Notes مراجعه کنید.
- -t, --time n
- زمان به ثانیه برای گوش دادن به اتصالات ترافیکی جدید، دریافت ترافیک یا ارسال ترافیک.
- -u, --udp
- استفاده از UDP به جای TCP.
- --utc
- استفاده از زمان هماهنگ جهانی (UTC) هنگام نمایش زمان در خروجی (در غیر این صورت از زمان محلی استفاده میشود).
- -w, --window n[kmKM]
- اندازه پنجره TCP (اندازه بافر سوکت).
- -z, --realtime
- درخواست زمانبند بلادرنگ (real-time)، در صورت پشتیبانی شدن.
- -B, --bind host[:port][%dev]
- اتصال (bind) به host، آدرس IP یا آدرس چندپخشی، درگاه یا دستگاه اختیاری (به NOTES مراجعه کنید).
- -C, --compatibility
- برای استفاده با نسخههای قدیمیتر؛ پیامهای اضافی ارسال نمیکند.
- -M, --mss n
- تنظیم بیشینه اندازه قطعه (MSS) در TCP با استفاده از TCP_MAXSEG.
- -N, --nodelay
- تنظیم بدون تاخیر TCP (no delay)، با غیرفعال کردن الگوریتم Nagle.
- -v, --version
- چاپ اطلاعات نسخه و خروج.
- -x, --reportexclude [CDMSV]
- مستثنی کردن گزارشهای C (اتصال)، D (داده)، M (چندپخشی)، S (تنظیمات)، V (سرور).
- -y, --reportstyle C|c
- اگر روی C یا c تنظیم شود، نتایج را به صورت CSV (مقادیر جداشده با کاما) گزارش میکند.
- --tcp-cca
- تنظیم الگوریتم کنترل ازدحام برای اتصالات TCP. برای اطلاعات بیشتر به SPECIFIC OPTIONS مراجعه کنید.
- --working-load-cca
- تنظیم الگوریتم کنترل ازدحام برای بارهای کاری (working loads) در TCP. برای اطلاعات بیشتر به SPECIFIC OPTIONS مراجعه کنید.
- -Z, --tcp-congestion
- تنظیم الگوریتم پیشفرض کنترل ازدحام برای اتصالات جدید. پلتفرمها باید از TCP_CONGESTION در setsockopt پشتیبانی کنند. (نکات: برای گزینههای موجود به sysctl و tcp_allowed_congestion_control مراجعه کنید. ممکن است به دسترسیهای مدیر سیستم/ریشه نیاز داشته باشد.).SH "گزینههای ویژه سرور (SERVER SPECIFIC OPTIONS)"
- -1, --singleclient
- تنظیم سرور برای پردازش تنها یک کلاینت در هر زمان.
- -b, --bandwidth n[kmgKMG]
- تنظیم نرخ خواندن هدف به n بیت بر ثانیه. در سرور تنها برای TCP است.
- -s, --server
- اجرا در حالت سرور.
- --histograms[=binwidth[u],bincount,[lowerci],[upperci]]
- فعالسازی بافتنگاشتهای (هیستوگرامهای) تأخیر برای بستههای udp (با -u)، برای نوشتنهای tcp (با --trip-times)، یا برای هر دو پروتکل udp یا tcp با کلاینتهای --isochronous، یا برای --bounceback. دستهبندی ستونها (binning) قابل تغییر است. پهنای ستون (پیشفرض ۱ میلیثانیه، افزودن u برای میکروثانیه، m برای میلیثانیه)، bincount تعداد کل ستونها (پیشفرض ۱۰۰۰)، ci بازه اطمینان بین ۰ تا ۱۰۰٪ است (پیشفرض کران پایین ۵٪، کران بالا ۹۵٪، انحراف معیار سوم ۹۹٫۷٪).
- --jitter-histograms[=<binwidth>]
- فعالسازی بافتنگاشتهای نوسان تأخیر (jitter) برای بستههای udp (با -u). مقدار اختیاری، پهنای ستون است که واحد آن بر حسب میکروثانیه بوده و مقدار پیشفرض آن ۱۰۰ میکروثانیه است.
- --permit-key [=<value>]
- تنظیم مقدار کلیدی که کلاینت برای پذیرش ترافیک توسط سرور باید با آن تطابق داشته باشد (همچنین با --permit-key تنظیم میشود). اگر این گزینه بدون مقدار داده شود، سرور بهطور خودکار یک کلید سراسری یکتا تولید میکند. این مقدار در گزارش تنظیمات اولیه سرور نمایش داده خواهد شد. طول عمر کلید با استفاده از --permit-key-timeout تعیین میشود و بهطور پیشفرض بیست ثانیه است. تنها برای TCP، بدون پشتیبانی از UDP.
- --permit-key-timeout <value>
- تنظیم طول عمر کلید مجوز به ثانیه. در صورت عدم تنظیم، مقدار پیشفرض ۲۰ ثانیه است. مقدار صفر زمانسنج را غیرفعال میکند.
- --skip-rx-copy
- تنظیم رشتههای سرور برای استفاده از MSG_TRUNC در هنگام دریافت (recv) در صورت امکان. این پرچم باعث میشود بایتهای داده دریافتشده دور ریخته شوند و مقداری از بار پردازندهٔ دریافتکننده کاسته شود.
- --tap-dev <dev>
- تنظیم رابط دریافت روی دستگاه TAP مشخصشده.
- --tcp-rx-window-clamp n[kmKM]
- تنظیم گزینهٔ سوکت TCP_WINDOW_CLAMP، واحد بر حسب بایت است.
- --test-exchange-timeout <value>
- تنظیم حداکثر زمان انتظار برای تبادل آزمون به ثانیه. در صورت عدم تنظیم، مقدار پیشفرض ۶۰ ثانیه است. مقدار صفر مهلت زمانی را غیرفعال میکند.
- -t, --time n
- زمان به ثانیه برای گوش دادن به اتصالات ترافیک جدید و/یا دریافت ترافیک (پیشفرض بینهایت است).
- --tos-override <val>
- تنظیم مقدار IP_TOS سوکت برای ترافیک معکوس (reverse) یا دوطرفه همزمان (full duplex). در نسخههای ۲٫۱٫۵ یا بالاتر پشتیبانی میشود. نسخههای پیشین مقدار IP_TOS را روی ترافیک معکوس تنظیم نمیکنند. برای مقادیر به بخش یادداشتها (NOTES) مراجعه کنید.
- -B, --bind ip | ip%device
- مقیدسازی (bind) به نشانی IP مبدأ و دستگاه مبدأ اختیاری برای دریافت.
- -D, --daemon
- اجرای سرور بهصورت یک دیمن (سرویس پسزمینه). در ویندوز، این گزینه خط فرمان مشخصشده را تحت IPerfService اجرا کرده و در صورت لزوم سرویس را نصب میکند. توجه داشته باشید که این سرویس برای شروع خودکار یا راهاندازی مجدد پیکربندی نشده است - اگر به سرویسی با شروع خودکار نیاز دارید، باید یک اسکریپت init ایجاد کنید یا از دستورات "sc" در ویندوز بهره ببرید.
- -H, --ssm-host host
- تنظیم میزبان مبدأ (نشانی ip) برای چندپخشی SSM؛ یعنی مؤلفهٔ S از ساختار S,G.
- -R, --remove
- حذف IPerfService (تنها در ویندوز).
- -U, --single_udp
- اجرا در حالت تکرشتهای UDP.
- -V, --ipv6_domain
- فعالسازی دریافت IPv6 با تنظیم دامنه و سوکت روی AF_INET6 (قابلیت دریافت بر روی هر دو پروتکل IPv4 و IPv6).
- --tcp-cca
- تنظیم الگوریتم کنترل ازدحام مورد استفاده برای اتصالات TCP - تنظیمات سمت کلاینت را بازنویسی میکند (مشابه --tcp-congestion).
- --working-load
- فعالسازی پشتیبانی از بارهای کاری TCP روی جریانهای ترافیکی UDP.
- --working-load-cca
- تنظیم الگوریتم کنترل ازدحام مورد استفاده برای بارهای کاری TCP - تنظیمات سمت کلاینت را بازنویسی میکند.
گزینههای ویژه کلاینت (CLIENT SPECIFIC OPTIONS)
- -b, --bandwidth n[kmgKMG][,n[kmgKMG]] | n[kmgKMG]pps
- تنظیم پهنای باند هدف به n بیت بر ثانیه (پیشفرض ۱ مگابیت بر ثانیه) یا n بسته در ثانیه. این گزینه میتواند با TCP یا UDP استفاده شود. بهصورت اختیاری، برای بارهای متغیر، از قالب میانگین,انحرافمعیار استفاده کنید.
- --bounceback[=n]
- اجرای آزمون بازگشتی (bounceback) یا rps در TCP با تعداد اختیاری نوشتنها در هر رگبار طبق مقدار n. پیشفرض ۱۰ نوشتن در هر دوره است و دورهٔ پیشفرض یک ثانیه میباشد (نکته: اندازه را با --bounceback-request تنظیم کنید). دربارهٔ تشخیص عدم همگامسازی ساعت به بخش یادداشتها (NOTES) مراجعه کنید.
- --bounceback-hold n
- درخواست از سرور برای اعمال تأخیر n میلیثانیهای میان خواندن و نوشتن خود (پیشفرض بدون تأخیر است).
- --bounceback-no-quickack
- درخواست از سرور برای عدم تنظیم گزینهٔ سوکت TCP_QUICKACK (غیرفعالسازی تأخیرهای ACK در TCP) در طول آزمون bounceback (به بخش یادداشتها (NOTES) مراجعه کنید).
- --bounceback-period[=n]
- درخواست از کلاینت برای زمانبندی ارسال(های) خود در هر n ثانیه (پیشفرض یک ثانیه است؛ برای ارسال فوری یا متوالی و پشت سر هم از مقدار صفر استفاده کنید).
- --bounceback-request n
- تنظیم اندازهٔ درخواست بازگشتی بر حسب بایت. مقدار پیشفرض ۱۰۰ بایت است.
- --bounceback-reply n
- تنظیم اندازهٔ پاسخ بازگشتی بر حسب بایت. این گزینه از اندازههای نامتقارن پیام بین درخواست و پاسخ پشتیبانی میکند. مقدار پیشفرض صفر است که از مقدار --bounceback-request استفاده میکند.
- --bounceback-txdelay n
- درخواست از کلاینت برای اعمال تأخیر n ثانیهای بین شروع بار کاری و ترافیک بازگشتی (پیشفرض بدون تأخیر است).
- --burst-period n
- تنظیم دورهٔ رگبار (burst) به ثانیه. پیشفرض یک ثانیه است. (نکته: کاربرد فرضشده، رگبارهای ترافیکی با چرخه کاری پایین است).
- --burst-size n
- تنظیم اندازهٔ رگبار بر حسب بایت. در صورت عدم تعیین مقدار، مقدار پیشفرض 1M است.
- -c, --client host | host%device
- اجرا در حالت کلاینت و اتصال به host؛ استفاده اختیاری از %dev از قابلیت SO_BINDTODEVICE برای مقید کردن رابط خروجی استفاده میکند (نیازمند ریشه بوده و به بخش یادداشتها (NOTES) مراجعه کنید).
- --connect-only[=n]
- تنها اتصال TCP (یا دستتکانی سهمرحلهای 3WHS) را بدون هیچگونه انتقال داده انجام میدهد؛ برای اندازهگیری زمانهای فراخوانی ()connect در TCP مفید است. مقدار اختیاری n تعداد کل اتصالات برای انجام است (صفر به معنای اجرای نامحدود است). توجه داشته باشید که -i نرخ اتصالات را محدود میکند، در حالی که -P رگبارها را ایجاد کرده و -t کلاینت و در نتیجه تلاشهای اتصال آن را خاتمه میدهد.
- --connect-retry-time n
- مقدار زمان به ثانیه برای تلاشهای مجدد اتصال TCP در سطح برنامه کاربردی. برای فاصله زمانی تلاش مجدد به --connect-retry-timer مراجعه کنید. برای جزئیات تنظیمات مربوط به اتصال TCP در سطح هسته یا سیستم، به اطلاعات سیستمعامل مراجعه فرمایید. این یک تلاش مجدد در سطح فراخوانی ()connect برنامه است و نه اتصال در سطح سیستم.
- --connect-retry-timer n
- حداقل مقدار زمان به ثانیه برای انتظار پیش از تلاش مجدد جهت اتصال. نکته: این حداقل زمان انتظار بین تلاشهای مجدد است و بسته به زمان صرفشده برای اتصال سیستمی میتواند طولانیتر باشد. برای جزئیات تنظیمات مربوط به اتصال TCP در سطح هسته یا سیستم، به اطلاعات سیستمعامل مراجعه کنید.
- --dscp
- تنظیم فیلد DSCP (با ماسک کردن بیتهای ECN) در بایت TOS (استفادهشده توسط IP_TOS و setsockopt).
- -d, --dualtest
- انجام یک آزمون دوطرفه همزمان با استفاده از دو سوکت یکطرفه.
- --fq-rate n[kmgKMG]
- تنظیم نرخ مورد استفاده برای تنظیم سرعت در سطح سوکت مبتنی بر صفبندی عادلانه (fair-queuing based socket-level pacing)، بر حسب بایت یا بیت در ثانیه. تنها روی بسترهایی که از گزینهٔ سوکت SO_MAX_PACING_RATE پشتیبانی میکنند در دسترس است. (نکته: در اینجا پسوندها بسته به استفاده از حروف بزرگ یا کوچک، به ترتیب نشاندهنده بایت/ثانیه یا بیت/ثانیه هستند).
- --fq-rate-step n[kmgKMG]
- تنظیم گام نرخ مورد استفاده برای تنظیم سرعت در سطح سوکت مبتنی بر صفبندی عادلانه، بر حسب بایت یا بیت در ثانیه. تغییر گام در هر fq-rate-step-interval رخ میدهد (پیشفرض یک ثانیه است).
- --fq-rate-step-interval n
- زمان به ثانیه پیش از تغییر گام fq-rate.
- --full-duplex
- اجرای یک آزمون دوطرفه همزمان کامل (full duplex)؛ یعنی ترافیک در هر دو جهت ارسال و دریافت با استفاده از سوکت یکسان.
- --histograms[=binwidth[u],bincount,[lowerci],[upperci]]
- فعالسازی بافتنگاشتهای ()select()/write با --tcp-write-times یا --bounceback (این گزینهها مانعةالجمع هستند). دستهبندی ستونها قابل تغییر است. پهنای ستون (پیشفرض ۱۰۰ میکروثانیه، افزودن u برای میکروثانیه، m برای میلیثانیه)، bincount تعداد کل ستونها (پیشفرض ۱۰۰۰۰)، ci بازه اطمینان بین ۰ تا ۱۰۰٪ است (پیشفرض کران پایین ۵٪، کران بالا ۹۵٪، انحراف معیار سوم ۹۹٫۷٪).
- --ignore-shutdown
- منتظر خاموشی یا بستن TCP (ارسال fin و finack) نمانده و از آخرین نوشتن بهعنوان رویداد پایانی استفاده میکند.
- --incr-dstip
- افزایش نشانی ip مقصد هنگام استفاده از گزینهٔ موازی (-P) یا بازه درگاه.
- --incr-dstport
- افزایش درگاه مقصد هنگام استفاده از گزینهٔ موازی (-P) یا بازه درگاه.
- --incr-srcip
- افزایش نشانی ip مبدأ هنگام استفاده از گزینهٔ موازی (-P) یا بازه درگاه.
- --incr-srcport
- افزایش درگاه مبدأ هنگام استفاده از گزینهٔ موازی (-P) یا بازه درگاه؛ نیازمند -B برای تنظیم درگاه مبدأ است.
- --ipg n
- تنظیم فاصلهٔ بینبستهای (IPG) به n (بر حسب ثانیه) برای بستهها یا درون یک فریم/رگبار در هنگام تنظیم --isochronous.
- --isochronous[=fps:mean,stdev]
- ارسال ترافیک همزمان (isochronous) با بسامد فریم بر ثانیه و بار تعریفشده بر اساس میانگین و انحراف معیار با استفاده از توزیع لاگنرمال؛ مقدار پیشفرض 60:20m,0 است. (نکته: در اینجا پسوندها بسته به استفاده از حروف بزرگ یا کوچک، به ترتیب نشاندهنده بایت/ثانیه یا بیت/ثانیه هستند. همچنین پسوند p برای تعیین اندازه رگبار بر حسب بسته پشتیبانی میشود؛ به عنوان مثال isochronous=2:25p دو رگبار ۲۵ بستهای در هر ثانیه یا یک رگبار ۲۵ بستهای در هر ۰٫۵ ثانیه ارسال خواهد کرد).
- --local-only[=1|0]
- مقدار ۱ را برای محدود کردن ترافیک تنها به شبکهٔ محلی (از طریق استفاده از SO_DONTROUTE) تعیین کنید، در غیر این صورت صفر بگذارید؛ همراه با امکان بازنویسی اختیاری پیشفرض زمان ترجمه (به configure --default-localonly مراجعه کنید).
- --near-congestion[=n]
- فعالسازی محدودیت نرخ نوشتن TCP بر اساس RTT نمونهبرداریشده. تأخیر پس از پایان تعداد بایتهای تعیینشده با -l اعمال میشود. مقدار اختیاری، ضریبی برای RTT است و میزان تأخیر زمانی را مشخص میکند. در صورت عدم تنظیم، مقدار پیشفرض ۰٫۵ است. مقادیر کمتر از ۱ پشتیبانی میشوند اما مقدار نمیتواند منفی باشد. این یک قابلیت آزمایشی است و احتمالاً روی شبکههای زنده و عملیاتی پایدار نیست. استفادهٔ پیشنهادی روی شبکههای آزمایشی کنترلشده است.
- --no-connect-sync
- بهطور پیشفرض، رشتههای ترافیک موازی (به ازای -P بزرگتر از ۱) پس از اتصالات TCP خود و قبل از ارسال ترافیک با یکدیگر همگام میشوند؛ یعنی ابتدا همهٔ رشتهها فرایند 3WHS در TCP را کامل کرده (یا با خطا مواجه میشوند) پیش از اینکه هر رشته ترافیکی شروع به ارسال کند. این گزینه آن همگامسازی را غیرفعال میکند تا هر رشته ترافیکی بلافاصله پس از تکمیل اتصال موفقیتآمیز خود، ارسال را آغاز کند.
- --no-udp-fin
- تبادل پایانی سرور به کلاینت در UDP را انجام ندهید، به این معنی که هیچ گزارش نهایی سروری در کلاینت نمایش داده نخواهد شد. تمام بستهها در طول آزمایش از سمت کلاینت به سرور خواهد بود و هیچ بستهای نباید در جهت معکوس ارسال شود. در صورت استفاده از این گزینه، اکیداً پیشنهاد میشود که -t روی سرور تنظیم شود. دلیل این امر این است که تنها یک بستهٔ راهانداز پایانی از کلاینت به سرور ارسال میشود و در صورت گم شدن آن، سرور به اجرای خود ادامه خواهد داد. (نیازمند نسخه ۲٫۰٫۱۴ یا بالاتر).
- -n, --num n[kmKM]
- تعداد بایتها برای ارسال (به جای -t).
- --permit-key [=<value>]
- تنظیم مقدار کلیدی که برای پذیرش ترافیک از کلاینت توسط سرور، باید با مقدار سرور (که آن هم با --permit-key تنظیم میشود) مطابقت داشته باشد. تنها برای TCP، بدون پشتیبانی از UDP..TP --sync-transfer-id شناسه(های) انتقال کلاینت را به کارساز ارسال میکند تا هر دو از یک شناسه یکسان در خروجیهای مربوطه خود استفاده کنند.
- -r, --tradeoff
- انجام یک آزمون دوطرفه بهصورت مجزا - نخست کلاینتبهکارساز، و در ادامه آزمون معکوس کارسازبهکلاینت.
- --tcp-cca
- تنظیم الگوریتم کنترل ازدحام مورد استفاده برای اتصالهای TCP و تبادل آن با کارساز (مشابه --tcp-congestion)
- --tcp-quickack
- تنظیم TCP_QUICKACK روی سوکت
- --tcp-write-prefetch n[kmKM]
- تنظیم TCP_NOTSENT_LOWAT روی سوکت و استفاده از نوشتنهای مبتنی بر رویداد از طریق select() روی سوکت.
- --tcp-write-times
- اندازهگیری زمانهای نوشتن در سوکت
- -t, --time n|0
- زمان انتقال ترافیک بر حسب ثانیه؛ مقدار صفر برای زمان نامحدود استفاده میشود (پیشفرض ۱۰ ثانیه است)
- --trip-times
- فعالسازی اندازهگیری تأخیر سرتاسری (end to end) نوشتن به خواندن (ساعتهای کلاینت و کارساز باید همگام باشند). به نکات مربوط به فعال بودن tcp-write-prefetch مراجعه کنید.
- --txdelay-time
- زمان بر حسب ثانیه برای مکث یا تاخیر پس از اتصال TCP و پیش از نوشتن در سوکت. برای UDP، این مقدار تاخیر بین شروع ریسه ترافیک و نخستین نوشتن است.
- --txstart-time n.n
- تنظیم txstart-time روی n.n با استفاده از قالب زمانی یونیکس یا epoch (از دقت میکروثانیه پشتیبانی میکند، مانند 1536014418.123456). یک مثال برای ایجاد تاخیر یکثانیهای با استفاده از جایگزینی دستور: iperf -c 192.168.1.10 --txstart-time $(expr $(date +%s) + 1).$(date +%N)
- --udp-l4s
- اجرای یک بار ترافیکی l4s (نیازمند کارساز iperf با پشتیبانی از l4s است)
- -B, --bind ip | ip:port | ipv6 -V | [ipv6]:port -V
- متصل کردن (bind) نشانی IP مبدأ و درگاه اختیاری بهعنوان مبدأ ترافیک (بخش NOTES را ببینید)
- -F, --fileinput name
- خواندن دادههای ارسالی از یک فایل ورودی
- -I, --stdin
- خواندن دادههای ارسالی از stdin (ورودی استاندارد)
- -L, --listenport n
- درگاه برای دریافت بازگشتی آزمونهای دوطرفه
- -P, --parallel n
- تعداد ریسههای کلاینت همگام برای اجرا
- -R, --reverse
- معکوس کردن جهت جریان ترافیک (کاربردی برای آزمون از میان فایروالها، بخش NOTES را ببینید)
- -S, --tos <val>
- تنظیم مقدار IP_TOS سوکت. نگارشهای 2.1.5 یا بالاتر این تنظیم tos را همراه با گزینه --reverse یا --full-duplex بازتاب میدهند (نگارشهای پیشین tos را روی ترافیک معکوس تنظیم نمیکنند). نکته: برای لغو و بازنویسی، از --tos-override در سمت کارساز استفاده کنید. برای مقادیر، به بخش NOTES مراجعه فرمایید.
- -T, --ttl n
- طول عمر (time-to-live)، برای چندپخشی (پیشفرض ۱)
- --working-load[=up|down|bidir][,n]
- درخواست یک بار کاری همزمان (working load)، در حال حاضر جریان(های) TCP؛ پیشفرض بهصورت full duplex (یا bidir) است مگر اینکه گزینه up یا down مشخص شود. تعداد جریانهای TCP بهطور پیشفرض ۱ است و با مقدار n قابل تغییر است؛ برای نمونه --working-load=down,4 از چهار جریان TCP از کارساز به کلاینت بهعنوان بار کاری استفاده خواهد کرد. مقدار IP ToS برای ترافیک بار کاری برابر BE (0x0) خواهد بود.
- --working-load-cca
- تنظیم الگوریتم کنترل ازدحام برای بارهای کاری TCP و تبادل آن با کارساز
- -V, --ipv6_domain
- تنظیم دامنه به IPv6 (ارسال بستهها بر بستر IPv6)
- -X, --peerdetect
- اجرای تشخیص نگارش همتا پیش از ارسال ترافیک.
- -Z, --linux-congestion algo
- تنظیم الگوریتم کنترل ازدحام TCP (فقط لینوکس)
مثالها (EXAMPLES)
آزمونهای
TCP (کلاینت) iperf -c
<host> -e -i 1
------------------------------------------------------------
Client connecting to 192.168.1.35, TCP port 5001 with pid 256370 (1/0
flows/load)
Write buffer size: 131072 Byte
TCP congestion control using cubic
TOS set to 0x0 (dscp=0,ecn=0) (Nagle on)
TCP window size: 100 MByte (default)
------------------------------------------------------------
[ 1] local 192.168.1.103%enp4s0 port 41024 connected with 192.168.1.35 port
5001 (sock=3) (icwnd/mss/irtt=14/1448/158) (ct=0.21 ms) on 2024-03-26
10:48:47.867 (PDT)
[ ID] Interval Transfer Bandwidth Write/Err Rtry InF(pkts)/Cwnd(pkts)/RTT(var)
NetPwr
[ 1] 0.00-1.00 sec 201 MBytes 1.68 Gbits/sec 1605/0 73
1531K(1083)/1566K(1108)/13336(112) us 15775
[ 1] 1.00-2.00 sec 101 MBytes 846 Mbits/sec 807/0 0
1670K(1181)/1689K(1195)/14429(83) us 7331
[ 1] 2.00-3.00 sec 101 MBytes 847 Mbits/sec 808/0 0
1790K(1266)/1790K(1266)/15325(97) us 6911
[ 1] 3.00-4.00 sec 134 MBytes 1.13 Gbits/sec 1075/0 0
1858K(1314)/1892K(1338)/16188(99) us 8704
[ 1] 4.00-5.00 sec 101 MBytes 846 Mbits/sec 807/0 1
1350K(955)/1370K(969)/11620(98) us 9103
[ 1] 5.00-6.00 sec 121 MBytes 1.01 Gbits/sec 966/0 0
1422K(1006)/1453K(1028)/12405(118) us 10207
[ 1] 6.00-7.00 sec 115 MBytes 962 Mbits/sec 917/0 0
1534K(1085)/1537K(1087)/13135(105) us 9151
[ 1] 7.00-8.00 sec 101 MBytes 844 Mbits/sec 805/0 0
1532K(1084)/1580K(1118)/13582(136) us 7769
[ 1] 8.00-9.00 sec 134 MBytes 1.13 Gbits/sec 1076/0 0
1603K(1134)/1619K(1145)/13858(105) us 10177
[ 1] 9.00-10.00 sec 101 MBytes 846 Mbits/sec 807/0 0
1602K(1133)/1650K(1167)/14113(105) us 7495
[ 1] 10.00-10.78 sec 128 KBytes 1.34 Mbits/sec 1/0 0
0K(0)/1681K(1189)/14424(111) us 11.64
[ 1] 0.00-10.78 sec 1.18 GBytes 941 Mbits/sec 9674/0 74
0K(0)/1681K(1189)/14424(111) us 8154
- توضیحات (بر اساس -e):
- ct= زمان
برقراری
اتصال TCP (یا
زمان
دستتکانی
سهمرحلهای
3WHS)
Write/Err تعداد کل نوشتنهای موفق در سوکت. تعداد کل خطاهای غیرمهلک در نوشتن سوکت
Rtry تعداد کل تلاشهای مجدد TCP
Inf(pkts)/Cwnd(pkts)/RTT(var) (فقط *nix) بایتها و بستههای در حال پرواز (inflight) در TCP، بایتها و بستههای پنجره ازدحام، و زمان رفتوبرگشت و واریانس آن (نمونهبرداریشده، که در آن NA نشاندهنده نبود مقدار است). مقدار Inflight بر حسب کیلوبایت و بسته بیان میشود که در آن packets_in_flight = (tcp_info_buf.tcpi_unacked - tcp_info_buf.tcpi_sacked - tcp_info_buf.tcpi_lost + tcp_info_buf.tcpi_retrans) است. مقدار RTT (var) واریانس نمونهبرداریشده RTT است. تمام آمارها از tcp_info یا tcp_connection_info گرفته شده و بر اساس بازه گزارشدهی -i نمونهبرداری میشوند.
NetPwr (فقط *nix) توان شبکه که بهصورت (throughput / RTT) تعریف میشود - iperf -c host.domain.com -i 1 --bounceback --permit-key=mytest --hide-ips
-
------------------------------------------------------------
Client connecting to (**hidden**), TCP port 5001
Bursting: 100 Byte writes 10 times every 1.00 second(s)
Bounce-back test (size= 100 Byte) (server hold req=0 usecs)
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[mytest(1)] local *.*.*.96 port 38044 connected with *.*.*.123 port 5001 (bb len/hold=100/0) (icwnd/mss/irtt=14/1448/10605)
[ ID] Interval Transfer Bandwidth BB cnt=avg/min/max/stdev Rtry Cwnd/RTT RPS
[mytest(1)] 0.00-1.00 sec 1.95 KBytes 16.0 Kbits/sec 10=11.949/9.662/19.597/3.127 ms 0 14K/10930 us 83 rps
[mytest(1)] 1.00-2.00 sec 1.95 KBytes 16.0 Kbits/sec 10=10.004/9.651/10.322/0.232 ms 0 14K/10244 us 99 rps
[mytest(1)] 2.00-3.00 sec 1.95 KBytes 16.0 Kbits/sec 10=10.582/9.720/14.831/1.573 ms 0 14K/10352 us 94 rps
[mytest(1)] 3.00-4.00 sec 1.95 KBytes 16.0 Kbits/sec 10=11.303/9.940/15.114/2.026 ms 0 14K/10832 us 88 rps
[mytest(1)] 4.00-5.00 sec 1.95 KBytes 16.0 Kbits/sec 10=11.148/9.671/14.803/1.837 ms 0 14K/10858 us 89 rps
[mytest(1)] 5.00-6.00 sec 1.95 KBytes 16.0 Kbits/sec 10=10.207/9.695/10.729/0.356 ms 0 14K/10390 us 97 rps
[mytest(1)] 6.00-7.00 sec 1.95 KBytes 16.0 Kbits/sec 10=10.871/9.770/14.387/1.547 ms 0 14K/10660 us 91 rps
[mytest(1)] 7.00-8.00 sec 1.95 KBytes 16.0 Kbits/sec 10=11.224/9.760/14.993/1.837 ms 0 14K/11027 us 89 rps
[mytest(1)] 8.00-9.00 sec 1.95 KBytes 16.0 Kbits/sec 10=10.719/9.887/14.553/1.455 ms 0 14K/10620 us 93 rps
[mytest(1)] 9.00-10.00 sec 1.95 KBytes 16.0 Kbits/sec 10=10.775/9.689/14.746/1.562 ms 0 14K/10596 us 92 rps
[mytest(1)] 0.00-10.02 sec 19.5 KBytes 16.0 Kbits/sec 100=10.878/9.651/19.597/1.743 ms 0 14K/11676 us 91 rps
[ 1] 0.00-10.02 sec BB8(f)-PDF: bin(w=100us):cnt(100)=97:5,98:8,99:10,100:8,101:12,102:10,103:6,104:7,105:2,106:2,107:3,108:3,109:2,110:1,114:1,115:1,118:1,120:2,121:1,124:1,125:1,128:1,140:1,143:1,144:1,146:2,148:1,149:2,150:1,151:1,152:1,196:1 (5.00/95.00/99.7%=97/149/196,Outliers=0,obl/obu=0/0) که در آن: BB cnt=avg/min/max/stdev تعداد بازگشتها (bouncebacks)، میانگین زمان، کمینه زمان، بیشینه زمان، انحراف معیار بر حسب میلیثانیه (ms)
Rtry تعداد کل تلاشهای مجدد TCP
Cwnd/RTT (تنها در *nix) پنجره ازدحام TCP و زمان رفتوبرگشت (نمونهبرداریشده، جایی که NA نشاندهنده نبود مقدار است)
RPS پاسخها در ثانیه
آزمونهای TCP (سرور)
iperf -s -e -i 1 -l 8K
------------------------------------------------------------
Server listening on TCP port 5001 with pid 13430
Read buffer size: 8.00 KByte
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 4] local 45.33.58.123 port 5001 connected with 45.56.85.133 port 49960
[ ID] Interval Transfer Bandwidth Reads Dist(bin=1.0K)
[ 4] 0.00-1.00 sec 124 MBytes 1.04 Gbits/sec 22249
798:2637:2061:767:2165:1563:589:11669
[ 4] 1.00-2.00 sec 136 MBytes 1.14 Gbits/sec 24780
946:3227:2227:790:2427:1888:641:12634
[ 4] 2.00-3.00 sec 137 MBytes 1.15 Gbits/sec 24484
1047:2686:2218:810:2195:1819:728:12981
[ 4] 3.00-4.00 sec 126 MBytes 1.06 Gbits/sec 20812
863:1353:1546:614:1712:1298:547:12879
[ 4] 4.00-5.00 sec 117 MBytes 984 Mbits/sec 20266
769:1886:1828:589:1866:1350:476:11502
[ 4] 5.00-6.00 sec 143 MBytes 1.20 Gbits/sec 24603
1066:1925:2139:822:2237:1827:744:13843
[ 4] 6.00-7.00 sec 126 MBytes 1.06 Gbits/sec 22635
834:2464:2249:724:2269:1646:608:11841
[ 4] 7.00-8.00 sec 110 MBytes 921 Mbits/sec 21107
842:2437:2747:592:2871:1903:496:9219
[ 4] 8.00-9.00 sec 126 MBytes 1.06 Gbits/sec 22804
1038:1784:2639:656:2738:1927:573:11449
[ 4] 9.00-10.00 sec 133 MBytes 1.11 Gbits/sec 23091
1088:1654:2105:710:2333:1928:723:12550
[ 4] 0.00-10.02 sec 1.25 GBytes 1.07 Gbits/sec 227306
9316:22088:21792:7096:22893:17193:6138:120790
- که در آن (به ازای -e،)
- Reads تعداد کل
خواندنهای
سوکت
Dist(bin=size) هیستوگرام هشتخانهای از شمار بایتهای بازگرداندهشده در خواندنهای سوکت. پهنای هر خانه بر پایه size تنظیم میشود. خانهها با دونقطه از یکدیگر جدا میشوند. در این مثال، خانهها عبارتند از 0-1K، 1K-2K، ..، 7K-8K.
آزمونهای
TCP (سرور به
همراه --trip-times
روی
کلاینت) iperf -s -i 1 -w
4M
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 8.00 MByte (WARNING: requested 4.00 MByte)
------------------------------------------------------------
[ 4] local 192.168.1.4%eth0 port 5001 connected with 192.168.1.7 port 44798
(trip-times) (MSS=1448) (peer 2.0.14-alpha)
[ ID] Interval Transfer Bandwidth Burst Latency avg/min/max/stdev (cnt/size)
inP NetPwr Reads=Dist
[ 4] 0.00-1.00 sec 19.0 MBytes 159 Mbits/sec 52.314/10.238/117.155/19.779 ms
(151/131717) 1.05 MByte 380.19 781=306:253:129:48:18:15:8:4
[ 4] 1.00-2.00 sec 20.0 MBytes 168 Mbits/sec 53.863/21.264/79.252/12.277 ms
(160/131080) 1.08 MByte 389.38 771=294:236:126:60:18:24:10:3
[ 4] 2.00-3.00 sec 18.2 MBytes 153 Mbits/sec 58.718/22.000/137.944/20.397 ms
(146/130964) 1.06 MByte 325.64 732=299:231:98:52:18:19:10:5
[ 4] 3.00-4.00 sec 19.7 MBytes 165 Mbits/sec 50.448/ 8.921/82.728/14.627 ms
(158/130588) 997 KByte 409.00 780=300:255:121:58:15:18:7:6
[ 4] 4.00-5.00 sec 18.8 MBytes 158 Mbits/sec 53.826/11.169/115.316/15.541 ms
(150/131420) 1.02 MByte 366.24 761=302:226:134:52:22:17:7:1
[ 4] 5.00-6.00 sec 19.5 MBytes 164 Mbits/sec 50.943/11.922/76.134/14.053 ms
(156/131276) 1.03 MByte 402.00 759=273:246:149:45:16:18:4:8
[ 4] 6.00-7.00 sec 18.5 MBytes 155 Mbits/sec 57.643/10.039/127.850/18.950 ms
(148/130926) 1.05 MByte 336.16 710=262:228:133:37:16:20:8:6
[ 4] 7.00-8.00 sec 19.6 MBytes 165 Mbits/sec 52.498/12.900/77.045/12.979 ms
(157/131003) 1.00 MByte 391.78 742=288:200:135:68:16:23:4:8
[ 4] 8.00-9.00 sec 18.0 MBytes 151 Mbits/sec 58.370/ 8.026/150.243/21.445 ms
(144/131255) 1.06 MByte 323.81 716=268:241:108:51:20:17:8:3
[ 4] 9.00-10.00 sec 18.4 MBytes 154 Mbits/sec 56.112/12.419/79.790/13.668 ms
(147/131194) 1.05 MByte 343.70 822=330:303:120:26:16:14:9:4
[ 4] 10.00-10.06 sec 1.03 MBytes 146 Mbits/sec 69.880/45.175/78.754/10.823 ms
(9/119632) 1.74 MByte 260.40 62=26:30:5:1:0:0:0:0
[ 4] 0.00-10.06 sec 191 MBytes 159 Mbits/sec 54.183/ 8.026/150.243/16.781 ms
(1526/131072) 1.03 MByte 366.98 7636=2948:2449:1258:498:175:185:75:48
- که در آن (به ازای -e،)
- Burst Latency تاخیر
یکطرفه TCP
از ()write به ()read در
قالب
میانگین/کمینه/بیشینه/انحراف
معیار
(نکته:
مستلزم آن
است که
ساعتهای
سیستم
کلاینت و
سرور با یک
مرجع مشترک
همگامسازی
شده باشند،
مانند
استفاده از
پروتکل
زمان دقیق PTP.
یک
اسیلاتور OCXO
هماهنگ با GPS
مرجع
پیشنهادی
است.)
cnt تعداد انفجارهای (bursts) کامل دریافتشده که برای محاسبات تاخیر انفجار استفاده شده است
size میانگین اندازه هر انفجار بر حسب بایت (فقط میانگین محاسبهشده و تخمینی)
inP مقدار inP، مخفف in progress (در حال انجام)، میانگین تعداد بایتهای در حال پردازش یا در حال انتقال (in flight) است. این مقدار از دیدگاه سطح برنامه کاربردی، از write تا read در نظر گرفته میشود. توجه داشته باشید که این یک مقدار میانگین است. مقدار داخل پرانتز انحراف معیار از میانگین است. (نیازمند --trip-times روی کلاینت است. قانون لیتل (Little's law) را در بخش NOTES ببینید.)
NetPwr توان شبکه تعریفشده بهصورت (توان عملیاتی / تاخیر یکطرفه)
آزمونهای TCP (همراه با بررسی همگامسازی تاخیر یکطرفه با -X و --trip-times روی کلاینت)
iperf -c 192.168.1.4 -X -e --trip-times -i 1 -t 2
------------------------------------------------------------
Client connecting to 192.168.1.4, TCP port 5001 with pid 16762 (1 flows)
Write buffer size: 131072 Byte
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[ 1] Clock sync check (ms): RTT/Half=(3.361/1.680)
OWD-send/ack/asym=(2.246/1.115/1.131)
[ 1] local 192.168.1.1%ap0 port 47466 connected with 192.168.1.4 port 5001
(MSS=1448) (trip-times) (sock=3) (peer 2.1.4-master)
[ ID] Interval Transfer Bandwidth Write/Err Rtry Cwnd/RTT NetPwr
[ 1] 0.00-1.00 sec 9.50 MBytes 79.7 Mbits/sec 77/0 0 2309K/113914 us 87
[ 1] 1.00-2.00 sec 7.12 MBytes 59.8 Mbits/sec 57/0 0 2492K/126113 us 59
[ 1] 2.00-2.42 sec 128 KBytes 2.47 Mbits/sec 2/0 0 2492K/126113 us 2
[ 1] 0.00-2.42 sec 16.8 MBytes 58.0 Mbits/sec 136/0 0 2492K/126113 us 57
آزمونهای UDP (کلاینت)
iperf -c <host> -e -i 1 -u -b 10m
------------------------------------------------------------
Client connecting to <host>, UDP port 5001 with pid 5169
Sending 1470 byte datagrams, IPG target: 1176.00 us (kalman adjust)
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local 45.56.85.133 port 32943 connected with 45.33.58.123 port 5001
[ ID] Interval Transfer Bandwidth Write/Err PPS
[ 3] 0.00-1.00 sec 1.19 MBytes 10.0 Mbits/sec 852/0 851 pps
[ 3] 1.00-2.00 sec 1.19 MBytes 10.0 Mbits/sec 850/0 850 pps
[ 3] 2.00-3.00 sec 1.19 MBytes 10.0 Mbits/sec 850/0 850 pps
[ 3] 3.00-4.00 sec 1.19 MBytes 10.0 Mbits/sec 851/0 850 pps
[ 3] 4.00-5.00 sec 1.19 MBytes 10.0 Mbits/sec 850/0 850 pps
[ 3] 5.00-6.00 sec 1.19 MBytes 10.0 Mbits/sec 850/0 850 pps
[ 3] 6.00-7.00 sec 1.19 MBytes 10.0 Mbits/sec 851/0 850 pps
[ 3] 7.00-8.00 sec 1.19 MBytes 10.0 Mbits/sec 850/0 850 pps
[ 3] 8.00-9.00 sec 1.19 MBytes 10.0 Mbits/sec 851/0 850 pps
[ 3] 0.00-10.00 sec 11.9 MBytes 10.0 Mbits/sec 8504/0 850 pps
[ 3] Sent 8504 datagrams
[ 3] Server Report:
[ 3] 0.00-10.00 sec 11.9 MBytes 10.0 Mbits/sec 0.047 ms 0/ 8504 (0%) 0.537/
0.392/23.657/ 0.497 ms 850 pps 2329.37 که در
آن (به ازای
-e،) Write/Err تعداد
کل
نوشتنهای
موفق روی
سوکت. تعداد
کل خطاهای
غیرمرگبار
در نوشتن
روی سوکت
PPS نرخ ارسال
بسته بر حسب
بسته بر
ثانیه
آزمونهای
UDP (سرور) iperf -s -i 1 -w 4M -u
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size: 8.00 MByte (WARNING: requested 4.00 MByte)
------------------------------------------------------------
[ 3] local 192.168.1.4 port 5001 connected with 192.168.1.1 port 60027 (WARN:
winsize=8.00 MByte req=4.00 MByte) (trip-times) (0.0) (peer 2.0.14-alpha)
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Latency avg/min/max/stdev
PPS inP NetPwr
[ 3] 0.00-1.00 sec 44.5 MBytes 373 Mbits/sec 0.071 ms 52198/83938 (62%)
75.185/ 2.367/85.189/14.430 ms 31854 pps 3.64 MByte 620.58
[ 3] 1.00-2.00 sec 44.8 MBytes 376 Mbits/sec 0.015 ms 59549/143701 (41%)
79.609/75.603/85.757/ 1.454 ms 31954 pps 3.56 MByte 590.04
[ 3] 2.00-3.00 sec 44.5 MBytes 373 Mbits/sec 0.017 ms 59494/202975 (29%)
80.006/75.951/88.198/ 1.638 ms 31733 pps 3.56 MByte 583.07
[ 3] 3.00-4.00 sec 44.5 MBytes 373 Mbits/sec 0.019 ms 59586/262562 (23%)
79.939/75.667/83.857/ 1.145 ms 31767 pps 3.56 MByte 583.57
[ 3] 4.00-5.00 sec 44.5 MBytes 373 Mbits/sec 0.081 ms 59612/322196 (19%)
79.882/75.400/86.618/ 1.666 ms 31755 pps 3.55 MByte 584.40
[ 3] 5.00-6.00 sec 44.7 MBytes 375 Mbits/sec 0.064 ms 59571/381918 (16%)
79.767/75.571/85.339/ 1.556 ms 31879 pps 3.56 MByte 588.02
[ 3] 6.00-7.00 sec 44.6 MBytes 374 Mbits/sec 0.041 ms 58990/440820 (13%)
79.722/75.662/85.938/ 1.087 ms 31820 pps 3.58 MByte 586.73
[ 3] 7.00-8.00 sec 44.7 MBytes 375 Mbits/sec 0.027 ms 59679/500548 (12%)
79.745/75.704/84.731/ 1.094 ms 31869 pps 3.55 MByte 587.46
[ 3] 8.00-9.00 sec 44.3 MBytes 371 Mbits/sec 0.078 ms 59230/559499 (11%)
80.346/75.514/94.293/ 2.858 ms 31590 pps 3.58 MByte 577.97
[ 3] 9.00-10.00 sec 44.4 MBytes 373 Mbits/sec 0.073 ms 58782/618394 (9.5%)
79.125/75.511/93.638/ 1.643 ms 31702 pps 3.55 MByte 588.99
[ 3] 10.00-10.08 sec 3.53 MBytes 367 Mbits/sec 0.129 ms 6026/595236 (1%)
94.967/80.709/99.685/ 3.560 ms 31107 pps 3.58 MByte 483.12
[ 3] 0.00-10.08 sec 449 MBytes 374 Mbits/sec 0.129 ms 592717/913046 (65%)
79.453/ 2.367/99.685/ 5.200 ms 31776 pps (null) 587.91
- که در آن (به ازای -e،)
- Latency تأخیر
انتها به
انتها در
قالب
میانگین/کمینه/بیشینه/انحراف
معیار
(نکته:
نیازمند
این است که
ساعت سیستم
کلاینت و
سرور با یک
مرجع مشترک
همگامسازی
شده باشند،
مانند
استفاده از
پروتکل
زمان دقیق PTP.
یک مرجع
پیشنهادی OCXO
تنظیمشده
با GPS است.)
PPS نرخ دریافت بسته بر حسب بسته بر ثانیه
inP inP، مخفف in progress (در جریان)، میانگین بایتهای در جریان یا در حال انتقال است. این مقدار از دیدگاه نوشتن تا خواندن برنامه در نظر گرفته میشود. (نیازمند --trip-times روی کلاینت است. به قانون لیتل در NOTES مراجعه کنید.)
NetPwr توان شبکه تعریفشده بهصورت (توان عملیاتی / تأخیر)
آزمونهای همزمان UDP (کلاینت)
iperf -c 192.168.100.33 -u -e -i 1 --isochronous=60:100m,10m
--realtime
------------------------------------------------------------
Client connecting to 192.168.100.33, UDP port 5001 with pid 14971
UDP isochronous: 60 frames/sec mean= 100 Mbit/s, stddev=10.0 Mbit/s,
Period/IPG=16.67/0.005 ms
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.100.76 port 42928 connected with 192.168.100.33 port 5001
[ ID] Interval Transfer Bandwidth Write/Err PPS frames:tx/missed/slips
[ 3] 0.00-1.00 sec 12.0 MBytes 101 Mbits/sec 8615/0 8493 pps 62/0/0
[ 3] 1.00-2.00 sec 12.0 MBytes 100 Mbits/sec 8556/0 8557 pps 60/0/0
[ 3] 2.00-3.00 sec 12.0 MBytes 101 Mbits/sec 8586/0 8586 pps 60/0/0
[ 3] 3.00-4.00 sec 12.1 MBytes 102 Mbits/sec 8687/0 8687 pps 60/0/0
[ 3] 4.00-5.00 sec 11.8 MBytes 99.2 Mbits/sec 8468/0 8468 pps 60/0/0
[ 3] 5.00-6.00 sec 11.9 MBytes 99.8 Mbits/sec 8519/0 8520 pps 60/0/0
[ 3] 6.00-7.00 sec 12.1 MBytes 102 Mbits/sec 8694/0 8694 pps 60/0/0
[ 3] 7.00-8.00 sec 12.1 MBytes 102 Mbits/sec 8692/0 8692 pps 60/0/0
[ 3] 8.00-9.00 sec 11.9 MBytes 100 Mbits/sec 8537/0 8537 pps 60/0/0
[ 3] 9.00-10.00 sec 11.8 MBytes 99.0 Mbits/sec 8450/0 8450 pps 60/0/0
[ 3] 0.00-10.01 sec 120 MBytes 100 Mbits/sec 85867/0 8574 pps 602/0/0
[ 3] Sent 85867 datagrams
[ 3] Server Report:
[ 3] 0.00-9.98 sec 120 MBytes 101 Mbits/sec 0.009 ms 196/85867 (0.23%) 0.665/
0.083/ 1.318/ 0.174 ms 8605 pps 18903.85
- که در آن (به ازای -e،)
- frames:tx/missed/slips تعداد کل فریمها یا رگبارهای همزمان. تعداد کل شناسههای فریم ارسالنشده. تعداد کل لغزشهای فریم
آزمونهای همزمان UDP (سرور)
iperf -s -e -u --udp-histogram=100u,2000 --realtime
------------------------------------------------------------
Server listening on UDP port 5001 with pid 5175
Receiving 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.100.33 port 5001 connected with 192.168.100.76 port 42928
isoch (peer 2.0.13-alpha)
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Latency avg/min/max/stdev
PPS NetPwr Frames/Lost
[ 3] 0.00-9.98 sec 120 MBytes 101 Mbits/sec 0.010 ms 196/85867 (0.23%) 0.665/
0.083/ 1.318/ 0.284 ms 8585 pps 18903.85 601/1
[ 3] 0.00-9.98 sec T8(f)-PDF:
bin(w=100us):cnt(85671)=1:2,2:844,3:10034,4:8493,5:8967,6:8733,7:8823,8:9023,9:8901,10:8816,11:7730,12:4563,13:741,14:1
(5.00/95.00%=3/12,Outliers=0,obl/obu=0/0)
[ 3] 0.00-9.98 sec F8(f)-PDF:
bin(w=100us):cnt(598)=15:2,16:1,17:27,18:68,19:125,20:136,21:103,22:83,23:22,24:23,25:5,26:3
(5.00/95.00%=17/24,Outliers=0,obl/obu=0/0)
- که در آن،
- Frames/lost تعداد
کل فریمها
(یا
رگبارهای)
دریافت شده.
تعداد کل
رگبارهای
از دست رفته
یا دارای
خطا
T8-PDF(f) هیستوگرام تأخیر برای بستهها
F8-PDF(f) هیستوگرام تأخیر برای فریمها.SH "محیط (ENVIRONMENT)" - نکته:
- تنظیمات گزینههای مربوط به متغیرهای محیطی بهخوبی نگهداری نشدهاند. در صورت تمایل، برای بررسی آنها به کد منبع مراجعه کنید.
نکات (NOTES)
گزینههای عددی (Numeric options): برخی گزینههای عددی از نویسههای قالببندی طبق '<value>c' پشتیبانی میکنند (مانند 10M) که در آنها نویسههای قالببندی c شامل k، m، g، K، M و G هستند. نویسههای قالببندی کوچک بر مبنای 10^3 و نویسههای بزرگ بر مبنای 2^n هستند؛ مثلاً 1k = 1000، 1K = 1024، 1m = 1,000,000 و 1M = 1,048,576.
محدودسازی نرخ (Rate limiting): گزینه -b از محدودسازی نرخ خواندن و نوشتن در سطح برنامه کاربردی پشتیبانی میکند. گزینه -b در سمت کلاینت همچنین از بارهای متغیر ارائهشده از طریق قالب <mean>,<standard deviation> (مانند -b 100m,10m) پشتیبانی میکند. توزیع آماری استفادهشده لگنرمال (log normal) است. وضعیت برای گزینه isochronous نیز مشابه است. گزینه -b در سمت سرور، نرخ خواندنها را محدود میکند. تنظیم آهنگ ارسال مبتنی بر سوکت (Socket based pacing) نیز با استفاده از گزینه بلند --fq-rate پشتیبانی میشود. این ویژگی همراه با گزینههای --reverse و --full-duplex نیز کار خواهد کرد.
مقادیر IP tos و dscp: کلاس type-of-service یا DSCP را برای اتصالات مشخص میکند. مقادیر پذیرفتهشده عبارتند از af11, af12, af13, af21, af22, af23, af31, af32, af33, af41, af42, af43, cs0, cs1, cs2, cs3, cs4, cs5, cs6, cs7, ef, le, nqb, nqb2, ac_be, ac_bk, ac_vi, ac_vo, lowdelay, throughput, reliability، یک مقدار عددی، یا none برای استفاده از پیشفرض سیستمعامل. مقادیر ac_xx چهار دسته دسترسی (access categories) تعریفشده در WMM برای Wi-Fi هستند، و نامهای مستعاری برای مقادیر DSCP هستند که تحت این فرض که دستگاه از جدول نگاشت DSCP-to-UP مشخصشده در IETF RFC 8325 استفاده میکند، به ACهای متناظر نگاشت خواهند شد.
میتوان
بایت tos را با
استفاده از
موارد زیر
تنظیم کرد:
--dscp در کلاینت
--tos یا -S در
کلاینت یا
سرور؛
اگرچه
تنظیم سمت
سرور
ملاحظاتی
دارد (طبق
مورد بعدی)
--tos-override برای
ترافیک
معکوس سمت
سرور
(کاربرد آن
برای
پاکسازی
یا bleaching در مسیر
بازگشت
است)
مقدار --dscp در کلاینت صرفاً برای راحتی است تا کاربر بتواند ۶ بیت فیلد dscp را بهجای کل بایت tos تنظیم کند. گزینه --tos-override امکان آزمایش ویژگی TOS بازتابیافته (reflected TOS) در APها را فراهم میکند. این حالت زمانی رخ میدهد که شبکه تنظیم tos سمت کلاینت را پاک (bleach) کند و در نتیجه ترافیک معکوس هیچ تنظیم TOS نداشته باشد. انتظار میرود AP مقدار TOS ترافیک بالادست را به ترافیک معکوس اعمال کند. کاربرد آن به این صورت است که --tos-override برابر با صفر قرار میگیرد تا پاکسازی بایت tos توسط شبکه شبیهسازی شود. اگر هیچ تنظیم --tos وجود نداشته باشد، فراخوانی setsockopt هرگز انجام نمیشود و از مقادیر پیشفرض استفاده خواهد شد.
--trip-times گزینه --trip-times معیارهای تأخیر یکطرفه (OWD) متعددی را فعال میکند. همچنین توجه داشته باشید که استفاده از --trip-times روی کلاینت TCP در صورتی که tcp-write-prefetch تنظیم نشده باشد، موجب میشود --tcp-write-prefetch روی مقدار کوچکی تنظیم شود. این کار برای کاهش تأخیر ناشی از تورم بافر سمت ارسال (send side bloat latency) انجام میشود (که ارتباطی با تأخیر ایجادشده توسط شبکه ندارد). برای غیرفعال کردن این ویژگی، --tcp-write-prefetch را روی صفر تنظیم کنید (که TCP_NOTSENT_LOWAT را غیرفعال کرده) و اجازه تورم بافر سمت ارسال را میدهد.
ساعتهای همگامسازیشده (Synchronized clocks): گزینه --trip-times نشاندهنده این است که ساعتهای کلاینت و سرور با یک مرجع مشترک همگامسازی شدهاند. معمولاً پروتکل زمان شبکه (NTP) یا پروتکل زمان دقیق (PTP) برای این منظور استفاده میشوند. خطای ساعت(های) مرجع و پروتکلهای همگامسازی بر دقت هرگونه اندازهگیری تأخیر سرتاسری (end to end) تأثیر خواهند گذاشت. بخش نکات مربوط به bounceback را برای تشخیص عدم همگامسازی ساعت ببینید
هیستوگرامها و آمارهای ناپارامتری (Histograms and non-parametric statistics): گزینه --histograms دادههای خام را بدون میانگینگیری ارائه میدهد. این ویژگی برای توزیعهای ناپارامتری، مانند تأخیر، مفید است. خروجی استاندارد از قضیه حد مرکزی برای تولید میانگین، حداقل، حداکثر و تغییرات استفاده میکند. هنگامی که توزیع پایهای گاوسی نباشد، این کار موجب از دست رفتن اطلاعات میشود. هیستوگرامها پشتیبانی میشوند تا این اطلاعات در دسترس قرار گیرند.
تفسیر خروجی هیستوگرام (Histogram output interpretation): در زیر نمونهای از هیستوگرام bounceback و نحوه تفسیر آن آورده شده است:
[ 1] 0.00-5.10 sec BB8-PDF:
bin(w=100us):cnt(50)=35:1,37:1,39:1,40:3,41:4,42:1,43:1,52:1,57:1,65:1,68:1,69:1,70:1,72:2,74:1,75:5,78:1,79:2,80:4,81:3,82:1,83:1,88:2,90:2,92:1,94:1,117:1,126:1,369:1,1000:1,1922:1,3710:1
(5.00/95.00/99.7%=39/1000/3710,Outliers=4,obl/obu=0/0)
- که در آن،
- [ 1] شماره
رشته
ترافیک (traffic thread number)
0.00-5.10 sec بازه زمانی هیستوگرام
BB8-PDF عبارت BB8 نام هیستوگرام است و PDF نشاندهنده خروجی خام هیستوگرام است
bin(w=100us) عرض هر دسته (bin width) را مشخص میکند. عرض دسته در این هیستوگرام ۱۰۰ میکروثانیه است
cnt(50) تعداد کل نمونهها در هیستوگرام را ارائه میدهد. ۵۰ نمونه در این هیستوگرام وجود دارد
35:1 شماره دسته و سپس تعداد نمونههای موجود در آن دسته را نشان میدهد. دسته ۳۵ با عرض دسته 100us معادل ۳.۴ میلیثانیه تا ۳.۵ میلیثانیه است و یک نمونه در آن قرار گرفته است
5.00/95.00/99.7%=39/1000/3710 فاصلههای اطمینان دستهها را مشخص میکند (بر اساس تابع توزیع تجمعی یکپارچه). ۵٪ در ۳.۹ میلیثانیه یا بهتر قرار گرفتهاند (بهیاد داشته باشید که شماره دسته در عرض دسته ضرب میشود). ۹۵٪ در ۱۰ میلیثانیه یا بهتر قرار گرفتهاند. ۹۹.۷٪ یا ۳ انحراف معیار در ۳۷.۱ میلیثانیه یا بهتر قرار گرفتهاند
Outliers=4 تعداد دادههای پرت (outlier) را ارائه میدهد؛ مشابه 3IQR (۳ برابر دامنه میانچارکی)، اما از ۱۰٪ و ۹۰٪ برای مرزهای درونی و بیرونی استفاده میکند و سپس ۳ برابر آن را برای تشخیص داده پرت در نظر میگیرد.
obl/obu=0/0 خارج از محدوده پایین (out of bounds lower) و خارج از محدوده بالا (out of bounds upper)؛ تعداد نمونههایی را نشان میدهد که امکان قرارگیری در دستهها را نداشتهاند زیرا مقدار آنها خارج از همه دستههای ممکن بوده است
اتصال (Binding) در سطح منطقی درگاه و آدرس IP (یا لایه ۳) با استفاده از گزینه -B و دونقطه به عنوان جداکننده بین درگاه و آدرس IP انجام میشود. اتصال در سطح دستگاه (یا لایه ۲) نیازمند علامت درصد (%) به عنوان جداکننده است (هم برای کلاینت و هم سرور). یک مثال برای درگاه مبدأ و آدرس IP عبارت است از -B 192.168.1.1:6001. برای متصل کردن تنها درگاه مبدأ و اجازه دادن به سیستمعامل جهت انتخاب آدرس IP مبدأ، از 0.0.0.0 استفاده کنید؛ مانند -B 0.0.0.0:6001. در سمت کلاینت، گزینه -B بر فراخوانی سیستمی bind(2) اثر میگذارد و آدرس IP مبدأ و درگاه مبدأ را تنظیم میکند؛ مانند iperf -c <host> -B 192.168.100.2:6002. این کار مقادیر مبدأ بسته را کنترل میکند اما مسیریابی را تعیین نمیکند. این موضوع ممکن است گیجکننده باشد زیرا جستجوی مسیر یا دستگاه ممکن است مربوط به دستگاهی با IP مبدأ پیکربندیشده نباشد. بنابراین برای مثال، اگر آدرس IP مربوط به eth0 برای -B استفاده شود و جدول مسیریابی برای آدرس IP مقصد واسط خروجی را eth1 تعیین کند، میزبان بسته را از طریق دستگاه eth1 ارسال خواهد کرد در حالی که از آدرس IP مبدأ eth0 درون بسته استفاده میکند. برای تأثیرگذاری بر واسط خروجی فیزیکی (مانند سیستمهای dual-homed) یا از -c <host>%<dev> (نیازمند ریشه) استفاده کنید که جستجوی جدول مسیریابی میزبان را دور میزند، یا برای هر آدرس مبدأ -B مسیریابی مبتنی بر سیاست (policy routing) را پیکربندی کرده و واسط خروجی را بهدرستی در مسیرهای سیاستی تنظیم کنید. در سمت سرور یا گیرنده، تنها بستههایی که مقصدشان آدرس IP تعیینشده با -B باشد دریافت خواهند شد. این ویژگی همچنین برای چندپخشی مفید است. برای مثال، iperf -s -B 224.0.0.1%eth0 فقط بستههای چندپخشی IP با IP مقصد 224.0.0.1 را که روی واسط eth0 دریافت شدهاند میپذیرد، در حالی که iperf -s -B 224.0.0.1 آن بستهها را روی هر واسطی دریافت خواهد کرد. در نهایت، مشخصکننده دستگاه برای v6 link-local الزامی است؛ مانند -c [v6addr]%<dev> -V، تا واسط خروجی انتخاب شود.
گزینههای معکوس (Reverse)، تمامدوطرفه (full-duplex)، آزمایش دوگانه (dualtest یا -d) و نوبتی (tradeoff یا -r): گزینههای --reverse (-R) و --full-duplex ممکن است در مقایسه با گزینههای قدیمیتر --dualtest (-d) و --tradeoff (-r) گیجکننده باشند. گزینههای جدیدتر --reverse و --full-duplex تنها یک سوکت باز میکنند و عملیات خواندن و نوشتن را روی همان توصیفگر سوکت یکسان انجام میدهند، یعنی از سوکت در حالت تمامدوطرفه (full duplex) استفاده میکنند. گزینههای قدیمیتر -d و -r سوکتهای دوم را در جهت مخالف باز میکنند و سوکت را در حالت تمامدوطرفه به کار نمیگیرند. توجه داشته باشید که تمامدوطرفه بودن مربوط به سوکت است و نه دستگاههای شبکه، و اینکه سوکتهای تمامدوطرفه توسط سیستمهای عامل پشتیبانی میشوند صرفنظر از اینکه شبکه زیربنایی از ارسال و دریافت تمامدوطرفه پشتیبانی کند یا خیر. پیشنهاد میشود از --reverse استفاده کنید اگر میخواهید از میان یک فایروال NAT آزمایش را انجام دهید (یا -R در سیستمهای غیر ویندوزی). این کار پس از باز کردن سوکت تمامدوطرفه، نقشهای آزمون را معکوس میکند. (نکته: در صورت وجود درگاه NAT در مسیر، ممکن است برای استفاده از -d و -r به سوراخکردن فایروال نیاز باشد.)
همچنین، تنظیم --reverse -b <rate> برای TCP و UDP رفتاری متفاوت دارد. برای TCP، این گزینه نرخ سمت خواندن را محدود میکند؛ یعنی کلاینت iperf (با نقش معکوسشده برای عمل به عنوان سرور) که از سوکت تمامدوطرفه میخواند. این کار به نوبه خود ترافیک معکوس را طبق کنترل ازدحام استاندارد TCP کنترل جریان میکند. مقدار --reverse -b <rate> برای UDP در هنگام ارسال اعمال خواهد شد (یعنی نقش سرور معکوس شده تا به عنوان کلاینت عمل کند)، چرا که در UDP کنترل جریانی وجود ندارد. هیچ گزینهای برای محدودسازی مستقیم نرخ نوشتنها در آزمایشهای TCP هنگام استفاده از --reverse وجود ندارد.
بازگشتی (Bounceback) آزمایش bounceback امکان اندازهگیری پاسخدهی شبکه را فراهم میکند (که در این آزمون معکوس تأخیر است). واحدها پاسخ در ثانیه یا rps هستند. تأخیر صرفاً درنگی با واحد زمان است. معیارهای تأخیر نیازمند این هستند که شخص بداند چه چیزی در حال اندازهگیری است. برای bounceback این فرایند شامل یک نوشتن کلاینت به خواندن سرور و به دنبال آن نوشتن سرور و سپس خواندن کلاینت است. داده اصلیِ نوشتهشده بازگردانده (bounce back) میشود. ابزار Iperf 2 سوکت را با TCP_NODELAY و احتمالاً TCP_QUICKACK (مگر اینکه غیرفعال شده باشد) تنظیم میکند. کلاینت یک نوشتن کوچک انجام میدهد (که در صورت مشخص نشدن -l، پیشفرض ۱۰۰ بایت است) و یک فراخوانی خواندن صادر میکند و منتظر "bounceback" از سمت سرور میماند. سرور منتظر خواندن میماند و سپس میتواند بهصورت اختیاری پیش از بازگرداندن محموله تاخیر ایجاد کند. این فرایند تا زمان پایان ترافیک تکرار میشود. نتایج بر حسب واحدهای rps و تاخیرهای زمانی نمایش داده میشوند.
گزینه سوکت TCP_QUICKACK در طول آزمایشهای bounceback هنگامی که bounceback-hold روی مقداری غیر از صفر تنظیم شده باشد، فعال خواهد شد. این گزینه سوکت پس از هر ()read در سرور و پیش از فراخوانی تاخیر نگهداشت اعمال میشود. این گزینه در سمت کلاینت نیز اعمال میگردد. از --bounceback-no-quickack استفاده کنید تا TCP در حالت پیشفرض برای هر سوکت اجرا شود (که به احتمال زیاد غیرفعال بودن TCP_QUICKACK است).
تشخیصهای عدم همگامسازی ساعت با --bounceback و --trip-times (از ۱۹ مارس ۲۰۲۳): ابزار Iperf 2 میتواند خطاهایی را تشخیص دهد که در آنها همگامسازی ساعتها خطایی بزرگتر از RTT آزمایش bounceback دارد. این کار از طریق برچسب زمانی ارسال کلاینت (ساعت A)، برچسب زمانی دریافت سرور (ساعت B) و برچسب زمانی دریافت نهایی کلاینت (ساعت A) انجام میشود. بررسی صورتگرفته روی هر bounceback عبارت است از write(A) < read(B) < read(A). این ویژگی در آزمونهای bounceback با کمی تعدیل پشتیبانی میشود: clock write(A) < clock read(B) < clock read(A) - (clock write(B) - clock read(B)). تمام برچسبهای زمانی در زمان نوشتن یا خواندن اولیه (و نه در زمان تکمیل آن) نمونهبرداری میشوند. خروجی خطا مانند نمونه زیر خواهد بود و برای مقدار صفر هیچ خروجی وجود ندارد.
[ 1] 0.00-10.00 sec Clock sync error count = 100
زمانهای اتصال TCP (TCP Connect times): زمان اتصال TCP (یا دستتکانی سهمرحلهای) را میتوان در کلاینت iperf هنگامی که گزینه -e (--enhanced) تنظیم شده باشد مشاهده کرد. در پیام اتصال به دنبال ct=<value> بگردید؛ برای نمونه در '[ 3] local 192.168.1.4 port 48736 connected with 192.168.1.1 port 5001 (ct=1.84 ms)' نشان میدهد که 3WHS به میزان ۱.۸۴ میلیثانیه زمان برده است..P Port-range بازههای درگاه با استفاده از نماد خط تیره (مانند 6001-6009) پشتیبانی میشوند. این ویژگی باعث ایجاد چندین ریسه، یکی به ازای هر درگاه، روی شنونده/سرور یا کلاینت خواهد شد. کاربر باید دقت کند که درگاههای موجود در بازه در دسترس بوده و از پیش توسط سیستمعامل در حال استفاده نباشند. گزینه -P روی کلاینت پشتیبانی میشود و برای هر درگاه مقصد در بازه درگاه اعمال خواهد شد. در نهایت، این قابلیت میتواند به عنوان یک راهکار موقت برای UDP در ویندوز و -P > 1 به کار رود، زیرا ویندوز بستههای UDP را بر اساس اتصال سرور و پنجتایی (quintuple) توزیع نمیکند.
محاسبه بسته بر ثانیه (pps calculation) محاسبه تعداد بستهها بر ثانیه به صورت مشتق انجام میشود؛ یعنی تعداد بستهها تقسیم بر زمان. زمان از آخرین بسته پیشین تا آخرین بسته فعلی در نظر گرفته میشود و معادل زمان بازه نمونهبرداری نیست. آخرین بسته ممکن است در زمانهای متفاوتی در طول یک بازه دریافت شود. این بدان معناست که pps لزوماً نباید با بایتهای rx تقسیم بر بازه نمونهبرداری یکسان باشد. همچنین با تنظیم --trip-times، زمان دریافت بسته بر اساس زمان نوشتن فرستنده مشخص میشود، بنابراین با --trip-times مقدار pps نشاندهنده pps سرتاسری (end to end) است. محاسبه RX pps تنها در صورتی فقط مربوط به سمت دریافتکننده است که -e تنظیم شده و --trip-times تنظیم نشده باشد.
قانون لیتل (Little's Law) در نظریه صف قضیهای است که میانگین تعداد اقلام (L) را در یک سیستم صف مانا بر اساس میانگین زمان انتظار (W) یک قلم در سیستم و میانگین تعداد اقلام ورودی به سیستم در واحد زمان (lambda) تعیین میکند. از نظر ریاضی، این فرمول به صورت L = lambda * W است. همانطور که در اینجا استفاده شده، واحدها بر حسب بایت هستند. نرخ ورود از عملیاتهای نوشتن (writes) گرفته میشود.
توان شبکه (Network power): معیار توان شبکه (NetPwr) بهصورت آزمایشی (experimental) است. این یک تابع کمکی است که به صورت تاخیر/توانعملیاتی (throughput/delay) تعریف میشود. برای ارسالهای TCP، تاخیر همان زمانهای RTT نمونهبرداریشده است. برای دریافتهای TCP، تاخیر همان تاخیر نوشتن تا خواندن (write to read latency) است. برای UDP، تاخیر همان تاخیر سرتاسری (end/end) است. این مفهوم را با تعریف توان در فیزیک (تغییرات انرژی/تغییرات زمان) اشتباه نگیرید؛ این بیشتر معیاری از یک ویژگی مطلوب تقسیم بر یک ویژگی نامطلوب است. همچنین توجه داشته باشید که برای دریافت این معیار در TCP باید از -i interval استفاده کرد، زیرا نرخ نمونهبرداری RTT توسط آن مشخص میشود. این معیار برای خوانایی بهتر توسط انسان مقیاسبندی شده است.
چندپخشی (Multicast): ابزار Iperf 2 از چندپخشی با چند نکته مهم پشتیبانی میکند. نخست اینکه جریانهای چندپخشی نمیتوانند از گزینه -P بهره ببرند؛ سرور جریانهای چندپخشی را سریالسازی (متوالی) خواهد کرد. همچنین، اکیداً توصیه میشود روی سروری که برای کلاینتهای چندپخشی استفاده میشود از گزینه -t استفاده شود. دلیل این امر آن است که تکبسته پایان ترافیک (end of traffic) ارسالشده از کلاینت به سرور ممکن است گم شود و هیچ بسته پایان ترافیک افزونهای (redundant) وجود ندارد. تنظیم -t روی سرور باعث میشود در صورتی که این بسته گم شود، ریسه سرور متوقف گردد.
TCP_QUICKACK: گزینه سوکت TCP_QUICKACK پس از هر بار فراخوانی read() روی سرور اعمال خواهد شد، به طوری که تأییدیههای TCP (ackها) به جای تاخیر احتمالی، فوراً ارسال شوند.
TCP_TX_DELAY (--tcp-tx-delay):
جریانهای
Iperf 2
میتوانند
تاخیرهای
متفاوتی را
تنظیم کرده
و شرایط
دنیای
واقعی را
شبیهسازی
نمایند.
واحد آن
میکروثانیه
است. این
قابلیت
نیازمند
زمانبند
بسته FQ یا یک
کارت شبکه
با قابلیت EDT
است. توجه
داشته
باشید که
ممکن است
محدودیتهای
زمانبند
بسته FQ نیاز
به کمی
تنظیم و
دستکاری
داشته
باشند
man tc-fq
PARAMETERS
limit
محدودیت
سخت روی
اندازه
واقعی صف.
هنگامی که
این
محدودیت
حاصل
شود،
بستههای
جدید دور
ریخته
میشوند. در
صورتی که
مقدار کاهش
یابد،
بستهها
دور ریخته
میشوند تا
محدودیت
جدید
برقرار شود.
پیشفرض 10000
بسته است.
flow_limit
محدودیت
سخت روی
بیشینه
تعداد
بستههای
صفبندیشده
به ازای هر
جریان.
مقدار
پیشفرض 100
است.
استفاده از گزینه TCP_TX_DELAY تعداد skbها را در FQ qdisc افزایش میدهد، بنابراین در صورت رسیدن به هر یک از محدودیتهای پیشین، بستهها دور ریخته خواهند شد. استفاده از تاخیرهای بزرگ ممکن است باگهای قدیمی در منطق TSO auto defer و/یا تشخیص محدودیت sndbuf را تحریک کند.
نمونهبرداری سریع (Fast Sampling): از ./configure --enable-fastsampling استفاده کنید و سپس برنامه را از سورس کامپایل نمایید تا دقت چهار رقمی (مانند 1.0000) در برچسبهای زمانی گزارشها فعال شود. برای نمونهبرداری در مقیاس زیر میلیثانیه کاربرد دارد.
خطاها (DIAGNOSTICS)
از ./configure --enable-thread-debug استفاده کنید و سپس برنامه را از سورس کامپایل نمایید تا هر دو قابلیت ارزیابی شرطها (asserts) و اشکالزدایی پیشرفته خود ابزار فعال شوند.
گزارش باگها (BUGS)
مشاهده کنید در https://sourceforge.net/p/iperf2/tickets
نویسندگان (AUTHORS)
پروژه Iperf2 که بر پایه iperf (در ابتدا نوشته شده توسط Mark Gates و Alex Warshavsky) است، با هدف نگهداری و همراه با برخی بهبودهای قابلیتی توسعه مییابد. سایر مشارکتها از سوی Ajay Tirumala، Jim Ferguson، Jon Dugan <jdugan at x1024 dot net>، Feng Qin، Kevin Gibbs، John Estabrook <jestabro at ncsa.uiuc.edu>، Andrew Gallatin <gallatin at gmail.com>، Stephen Hemminger <shemminger at linux-foundation.org>، Tim Auckland <tim.auckland at gmail.com>، Robert J. McMahon <rjmcmahon at rjmcmahon.com>
همچنین ببینید (SEE ALSO)
accept(2),bind(2),close(2),connect(2),fcntl(2),getpeername(2),getsockname(2),getsockopt(2),listen(2),read(2),recv(2),select(2),send(2),setsockopt(2),shutdown(2),write(2),ip(7),socket(7),tcp(7),udp(7)
کد منبع در http://sourceforge.net/projects/iperf2
"Unix Network Programming, Volume 1: The Sockets Networking API (3rd Edition) 3rd Edition" تألیف W. Richard Stevens (نویسنده)، Bill Fenner (نویسنده)، Andrew M. Rudoff (نویسنده)
| April 2024 | NLANR/DAST |