IPERF3(1) User Manuals IPERF3(1)

iperf3 - ابزار سنجش کارایی و پهنای باند شبکه برای پروتکل‌های TCP، UDP و SCTP

iperf3 -s [ گزینه‌ها ]
iperf3 -c سرور [ گزینه‌ها ]

دستور iperf3 ابزاری برای سنجش و اندازه‌گیری کارایی و پهنای باند شبکه است. این ابزار می‌تواند کارایی پروتکل‌های TCP، UDP یا SCTP را بیازماید. برای اجرای آزمون iperf3، کاربر باید هم یک سرور و هم یک کلاینت را راه‌اندازی کند.

فایل اجرایی iperf3 شامل هر دو قابلیت کلاینت و سرور است. یک سرور iperf3 می‌تواند با استفاده از هر یک از پارامترهای خط فرمان -s یا --server راه‌اندازی شود، برای مثال:

iperf3 -s
iperf3 --server

توجه داشته باشید که بسیاری از پارامترهای iperf3 دارای هر دو شکل کوتاه (-s) و بلند (--server) هستند. در این بخش، ما معمولاً از شکل کوتاه فلگ‌های خط فرمان استفاده خواهیم کرد، مگر اینکه فقط شکل بلند یک فلگ در دسترس باشد.

به‌طور پیش‌فرض، سرور iperf3 روی پورت 5201 پروتکل TCP برای اتصالات از سوی کلاینت iperf3 گوش می‌دهد. یک پورت سفارشی را می‌توان با استفاده از فلگ -p مشخص کرد، برای مثال:

iperf3 -s -p 5002

پس از راه‌اندازی سرور، برای اتصالات از سوی کلاینت‌های iperf3 (به عبارت دیگر، اجرای برنامه iperf3 در حالت کلاینت) منتظر خواهد ماند. حالت کلاینت را می‌توان با استفاده از گزینه خط فرمان -c راه‌اندازی کرد که به میزبانی که iperf3 باید به آن متصل شود نیز نیاز دارد. میزبان می‌تواند با نام میزبان، آدرس تحت‌اللفظی IPv4 یا آدرس تحت‌اللفظی IPv6 مشخص شود:

iperf3 -c iperf3.example.com
iperf3 -c 192.0.2.1
iperf3 -c 2001:db8::1

اگر سرور iperf3 روی یک پورت غیر پیش‌فرض TCP در حال اجرا باشد، آن شماره پورت باید در کلاینت نیز مشخص شود:

iperf3 -c iperf3.example.com -p 5002

اتصال اولیه TCP برای تبادل پارامترهای آزمون، کنترل شروع و پایان آزمون و تبادل نتایج آزمون استفاده می‌شود. این اتصال گاهی اوقات به عنوان «اتصال کنترلی» (control connection) نامیده می‌شود. داده‌های واقعی آزمون از طریق یک اتصال TCP جداگانه، به عنوان یک جریان جداگانه از بسته‌های UDP یا به عنوان یک اتصال SCTP مستقل ارسال می‌شوند، بسته به اینکه چه پروتکلی توسط کلاینت مشخص شده باشد.

به‌طور معمول، داده‌های آزمون از کلاینت به سرور ارسال می‌شوند و سرعت بارگذاری (آپلود) کلاینت را اندازه‌گیری می‌کنند. اندازه‌گیری سرعت بارگیری (دانلود) از سرور را می‌توان با تعیین فلگ -R در کلاینت انجام داد. این کار باعث می‌شود داده‌ها از سرور به کلاینت ارسال شوند.

iperf3 -c iperf3.example.com -p 5202 -R

نتایج هم در کلاینت و هم در سرور نمایش داده می‌شوند. حداقل یک خط خروجی در هر بازه اندازه‌گیری وجود خواهد داشت (به‌طور پیش‌فرض یک بازه اندازه‌گیری به مدت یک ثانیه طول می‌کشد، اما این مقدار می‌تواند با گزینه -i تغییر کند). هر خط خروجی (حداقل) شامل زمان سپری‌شده از شروع آزمون، مقدار داده‌های منتقل‌شده در طول بازه و میانگین نرخ بیت در آن بازه است. توجه داشته باشید که مقادیر هر بازه اندازه‌گیری از دید فرآیند نقطه پایانی صادرکننده آن خروجی گرفته می‌شوند (به عبارت دیگر، خروجی کلاینت داده‌های بازه اندازه‌گیری را برای کلاینت نشان می‌دهد).

در پایان آزمون، مجموعه‌ای از آمارها وجود دارد که (تا حد امکان) خلاصه‌ای از آزمون را همان‌طور که توسط فرستنده و گیرنده دیده شده است، با خطوط برچسب‌گذاری‌شده متناظر نشان می‌دهد. به یاد داشته باشید که به‌طور پیش‌فرض کلاینت فرستنده و سرور گیرنده است، اگرچه همان‌طور که در بالا اشاره شد، استفاده از فلگ -R این نقش‌ها را معکوس خواهد کرد.

می‌توان کلاینت را با تعیین فلگ --get-server-output مجبور به بازیابی خروجی سمت سرور برای یک آزمون مشخص کرد.

هر یک از کلاینت یا سرور می‌تواند با ارسال فلگ -J خروجی خود را در ساختار JSON تولید کند که برای ادغام با برنامه‌های دیگر مفید است. به‌طور معمول محتویات ساختار JSON تنها پس از پایان آزمون به‌طور کامل شناخته می‌شوند و هیچ خروجی JSON تا پایان آزمون صادر نخواهد شد. با فعال کردن JSON تفکیک‌شده با خط (line-delimited JSON)، چندین شیء برای ارائه یک خروجی JSON با قابلیت تجزیه بی‌درنگ صادر خواهد شد.

ابزار iperf3 دارای مجموعه (بسیار) بزرگی از گزینه‌های خط فرمان است که می‌توان از آن‌ها برای تنظیم پارامترهای یک آزمون استفاده کرد. این گزینه‌ها در بخش «گزینه‌های عمومی (GENERAL OPTIONS)» صفحه راهنما در زیر آمده‌اند و همچنین در خروجی راهنمای iperf3 که با اجرای iperf3 با فلگ -h قابل مشاهده است، خلاصه شده‌اند.

تنظیم پورت سرور برای گوش دادن یا اتصال به n (پیش‌فرض 5201).
تنظیم فرمت گزارش‌دهی: Kbits/Mbits/Gbits/Tbits (کیلوبیت/مگابیت/گیگابیت/ترابیت).
مکث به مدت n ثانیه میان گزارش‌های دوره‌ای کارایی و پهنای باند؛ پیش‌فرض ۱ است، برای غیرفعال‌سازی از ۰ استفاده کنید.
نوشتن یک فایل حاوی شناسه فرآیند (PID). این گزینه هنگام اجرا به عنوان یک دیمن بیشترین کاربرد را دارد.
استفاده از یک فایل به عنوان منبع داده (در فرستنده) یا مقصد داده (در گیرنده)، به جای تولید داده‌های تصادفی یا دور ریختن آن‌ها. این ویژگی برای بررسی اینکه آیا زیرسیستم ذخیره‌سازی گلوگاه انتقال فایل است یا خیر استفاده می‌شود. این کار iperf3 را به یک ابزار انتقال فایل تبدیل نمی‌کند. طول، ویژگی‌ها و در برخی موارد محتوای فایل دریافت‌شده ممکن است با فایل اصلی مطابقت نداشته باشد. این گزینه هنگام انجام آزمون‌های --udp در دسترس نیست.
تنظیم وابستگی پردازنده (CPU affinity)، در صورت امکان (فقط در لینوکس، FreeBSD و ویندوز). در هر دو سمت کلاینت و سرور می‌توانید با استفاده از قالب n این آرگومان (که در آن n شماره پردازنده است)، وابستگی محلی را تنظیم کنید. علاوه بر این، در سمت کلاینت می‌توانید وابستگی سرور را فقط برای همان یک آزمون با استفاده از قالب n,m این آرگومان بازنویسی (override) کنید. توجه داشته باشید که هنگام استفاده از این ویژگی، یک فرآیند تنها به یک پردازنده واحد مقید می‌شود (برخلاف مجموعه‌ای که احتمالاً شامل چندین پردازنده است).
اتصال به رابط شبکه خاص مرتبط با آدرس میزبان. اگر یک رابط اختیاری مشخص شود، به عنوان میان‌بری برای --bind-dev رابط در نظر گرفته می‌شود. توجه داشته باشید که برای آدرس‌های تحت‌اللفظی پیوند-محلی (link-local) در IPv6، علامت درصد و نام دستگاه رابط جهت تنظیم دامنه پیوند-محلی الزامی است.
اتصال به رابط شبکه مشخص‌شده. این گزینه از SO_BINDTODEVICE یا IP_BOUND_IF استفاده می‌کند و ممکن است به دسترسی ریشه (root) نیاز داشته باشد. (در لینوکس و احتمالاً سیستم‌های دیگر در دسترس است.)
تولید خروجی با جزئیات بیشتر.
تولید خروجی در قالب JSON به جای خروجی انسان‌خوانای پیش‌فرض.
تولید خروجی در قالب JSON تفکیک‌شده با خط به جای خروجی انسان‌خوانای پیش‌فرض. این گزینه در صورت مشخص شدن همزمان گزینه --json آن را لغو و بازنویسی می‌کند.
تولید خروجی در قالب JSON با فعال بودن جریان‌های JSON. این فلگ تنها در صورتی اثرگذار است که گزینه --json-stream نیز مشخص شده باشد.
ارسال خروجی به یک فایل لاگ.
اجبار به تخلیه بافر خروجی (flush) در هر بازه زمانی. برای جلوگیری از بافر شدن هنگام ارسال خروجی به لوله (pipe) استفاده می‌شود.
درج برچسب زمانی (timestamp) در ابتدای هر خط خروجی. به‌طور پیش‌فرض، برچسب‌های زمانی دارای فرمتی هستند که توسط ctime(1) صادر می‌شود. به‌صورت اختیاری، می‌توان = و به دنبال آن یک مشخصه فرمت را برای سفارشی‌سازی برچسب‌های زمانی اضافه کرد؛ ببینید strftime(3). اگر این فرمت اختیاری داده شود، = باید بلافاصله و بدون هیچ فاصله خالی پس از گزینه --timestamps قرار گیرد.
تنظیم مهلت زمانی بیکاری (idle timeout) برای دریافت داده‌ها در طول آزمون‌های فعال. در صورتی که به مدت این تعداد میلی‌ثانیه هیچ داده‌ای از فرستنده دریافت نشود، گیرنده آزمون را متوقف خواهد کرد (پیش‌فرض ۱۲۰۰۰۰ میلی‌ثانیه یا ۲ دقیقه است).
تنظیم مهلت زمانی برای داده‌های تاییدنشده TCP (در هر دو اتصال آزمون و کنترل). از این گزینه می‌توان برای تحمیل اتمام سریع‌تر آزمون در صورت تفکیک یا قطعی شبکه در حین آزمون استفاده کرد. پارامتر الزامی بر حسب میلی‌ثانیه مشخص می‌شود و پیش‌فرض آن تنظیمات سیستم است. این قابلیت به گزینه سوکت TCP_USER_TIMEOUT وابسته است و در سیستم‌هایی که از آن پشتیبانی نمی‌کنند کار نخواهد کرد.
این گزینه تنها هنگام استفاده از قابلیت‌های احراز هویت iperf3 معنادار است. نسخه‌های iperf3 قبل از 3.17 از پدینگ PKCS1 در اطلاعات اعتباری رمزگذاری‌شده با RSA استفاده می‌کردند که در برابر حمله کانال جانبی (side-channel attack) آسیب‌پذیر بود و می‌توانست کلید خصوصی سرور را فاش کند. با شروع از iperf-3.17، پدینگ OAEP استفاده می‌شود، با این حال این یک تغییر ناسازگار است که با نسخه‌های قدیمی‌تر iperf3 سازگاری ندارد. از این گزینه برای حفظ رفتار ناامن‌تر اما سازگارتر استفاده کنید.
استفاده از نوع MPTCP برای پروتکل فعلی. این گزینه فقط برای TCP اعمال می‌شود و استفاده از MPTCP را فعال می‌کند.
تولید خروجی اشکال‌زدایی (دیباگ). عمدتاً (و شاید منحصراً) برای توسعه‌دهندگان کاربرد دارد.
نمایش اطلاعات نسخه و خروج.
نمایش خلاصه راهنما.

اجرا در حالت سرور.
اجرای سرور در پس‌زمینه به عنوان یک دیمن.
-1, --one-off
پاسخ‌گویی به (حداکثر) یک اتصال کلاینت و سپس خروج. اگر زمان بیکاری تنظیم شده باشد، سرور پس از گذشت آن مدت زمان بدون هیچ اتصالی خارج خواهد شد.
راه‌اندازی مجدد سرور پس از n ثانیه در صورتی که سرور قفل شود (گیر کند). در حالت تک‌اتصاله (one-off)، این مقدار تعداد ثانیه‌هایی است که سرور قبل از خروج منتظر می‌ماند.
حداکثر زمان، بر حسب ثانیه، که کلاینت iperf می‌تواند در برابر سرور اجرا شود. هنگامی که مجموع مقادیر time و omit کلاینت از حداکثر مدت تعیین‌شده توسط سرور فراتر رود یا مقدار time کلاینت برابر با ۰ باشد، سنجش رد می‌شود.
تنظیم محدودیت در سمت سرور که در صورت مشخص کردن آزمونی با بیش از n بیت بر ثانیه توسط کلاینت، یا در صورتی که میانگین داده‌های ارسال‌شده یا دریافت‌شده توسط کلاینت (شامل تمام جریان‌های داده) بیشتر از n بیت بر ثانیه باشد، باعث لغو آزمون می‌شود. حد پیش‌فرض ۰ است که به معنای عدم وجود محدودیت است. بازه‌ای که نرخ داده در آن میانگین‌گیری می‌شود به‌طور پیش‌فرض ۵ ثانیه است، اما می‌توان با افزودن نویسه / و یک عدد به مشخصه نرخ بیت، آن را تعیین کرد.
مسیر کلید خصوصی RSA (بدون حفاظت با رمز عبور) که برای رمزگشایی اعتبارنامه‌های احراز هویت کلاینت استفاده می‌شود (در صورت ساخت با پشتیبانی از OpenSSL).
مسیر فایل پیکربندی حاوی اعتبارنامه‌های کاربران مجاز برای اجرای آزمون‌های iperf (در صورت ساخت با پشتیبانی از OpenSSL). این فایل یک لیست جداشده با کاما از نام‌های کاربری و هش‌های رمز عبور است؛ اطلاعات بیشتر در مورد ساختار فایل را می‌توان در بخش «مثال‌ها» یافت.
تعیین آستانه انحراف زمانی مجاز (بر حسب ثانیه) میان سرور و کلاینت در طول فرآیند احراز هویت.

اجرا در حالت کلاینت و اتصال به سرور مشخص‌شده. به‌طور پیش‌فرض، یک آزمون شامل ارسال داده از کلاینت به سرور است، مگر اینکه فلگ -R مشخص شده باشد. اگر یک رابط اختیاری مشخص شود، به عنوان میان‌بری برای --bind-dev رابط در نظر گرفته می‌شود. توجه داشته باشید که علامت درصد و نام دستگاه رابط برای آدرس‌های تحت‌اللفظی پیوند-محلی در IPv6 الزامی است.
استفاده از پروتکل SCTP برای آزمون‌ها به جای TCP (در FreeBSD و لینوکس). توجه داشته باشید که ارتباط TCP همچنان برای اتصال کنترلی میان کلاینت و سرور استفاده می‌شود.
استفاده از پروتکل UDP برای آزمون‌ها به جای TCP. توجه داشته باشید که ارتباط TCP همچنان برای اتصال کنترلی میان کلاینت و سرور استفاده می‌شود.
تنظیم مهلت زمانی برای برقراری اتصال کنترلی اولیه به سرور، بر حسب میلی‌ثانیه. رفتار پیش‌فرض، مهلت زمانی سیستم‌عامل برای برقراری اتصال TCP است. ارائه یک مقدار کوتاه‌تر ممکن است تشخیص سرور غیرفعال یا از کار افتاده iperf3 را سرعت ببخشد.
تنظیم نرخ بیت هدف بر روی n بیت بر ثانیه (پیش‌فرض ۱ مگابیت بر ثانیه برای UDP، نامحدود برای TCP/SCTP). در صورت وجود چندین جریان (فلگ -P)، محدودیت کارایی و پهنای باند به‌طور جداگانه برای هر جریان اعمال می‌شود. همچنین می‌توانید یک '/' و یک عدد را به مشخصه نرخ بیت اضافه کنید. به این حالت «حالت انفجاری» (burst mode) گفته می‌شود. این کار تعداد ارسال‌های داده‌شده را بدون مکث انجام می‌دهد، حتی اگر این کار موقتاً از محدودیت مشخص‌شده فراتر رود. تنظیم نرخ بیت هدف روی ۰، محدودیت‌های نرخ بیت را غیرفعال می‌کند (به‌ویژه برای آزمون‌های UDP مفید است). این محدودیت پهنای باند به‌طور داخلی در درون iperf3 پیاده‌سازی شده و در همه پلتفرم‌ها در دسترس است. آن را با فلگ --fq-rate مقایسه کنید. این گزینه جایگزین فلگ --bandwidth شده است که اکنون منسوخ شده ولی (حداقل در حال حاضر) همچنان پذیرفته می‌شود.
تنظیم بازه تایمر گام‌بندی (pacing timer) بر حسب میکروثانیه (پیش‌فرض ۱۰۰۰ میکروثانیه یا ۱ میلی‌ثانیه). این گزینه تایمر داخلی گام‌بندی iperf3 را برای گزینه -b/--bitrate کنترل می‌کند. تایمر در بازه تعیین‌شده توسط این پارامتر فعال می‌شود. مقادیر کوچک‌تر پارامتر تایمر گام‌بندی ترافیک ارسالی توسط iperf3 را هموارتر می‌کند، اما احتمالاً به دلیل پردازش مکرر تایمر با افت کارایی همراه است.
تنظیم یک نرخ برای استفاده با گام‌بندی در سطح سوکت مبتنی بر صف‌بندی عادلانه (fair-queueing)، بر حسب بیت بر ثانیه. این گام‌بندی (در صورت مشخص شدن) علاوه بر هرگونه گام‌بندی ناشی از گام‌بندی داخلی کارایی iperf3 (فلگ -b/--bitrate) اعمال خواهد شد و هر دو را می‌توان برای یک آزمون مشخص کرد. تنها در پلتفرم‌هایی که از گزینه سوکت SO_MAX_PACING_RATE پشتیبانی می‌کنند در دسترس است (در حال حاضر فقط لینوکس). پیش‌فرض بدون گام‌بندی مبتنی بر صف‌بندی عادلانه است.
این گزینه منسوخ شده و حذف خواهد شد. این گزینه معادل با مشخص کردن --fq-rate=0 است.
تنظیم مدت زمان آزمون بر حسب ثانیه (پیش‌فرض ۱۰ ثانیه). گزینه‌های -t ، -n " و " -k مانعةالجمع هستند (همزمان قابل استفاده نیستند).
تنظیم تعداد بایت‌ها برای ارسال. گزینه‌های -t ، -n " و " -k مانعةالجمع هستند (همزمان قابل استفاده نیستند).
تنظیم تعداد بلوک‌ها (بسته‌ها) برای ارسال. گزینه‌های -t ، -n " و " -k مانعةالجمع هستند (همزمان قابل استفاده نیستند).
تنظیم طول بافر برای خواندن یا نوشتن. برای آزمون‌های TCP، مقدار پیش‌فرض 128KB است. در مورد UDP، ابزار iperf3 تلاش می‌کند تا به‌طور پویا یک اندازه ارسال منطقی را بر اساس MTU مسیر تعیین کند؛ اگر این مقدار قابل تعیین نباشد، از 1460 بایت به عنوان اندازه ارسال استفاده می‌کند. برای آزمون‌های SCTP، اندازه پیش‌فرض 64KB است.
اتصال جریان‌های داده به یک پورت خاص کلاینت TCP یا UDP (فقط برای TCP و UDP، پیش‌فرض استفاده از یک پورت موقت/ephemeral است).
تنظیم تعداد جریان‌های موازی کلاینت برای اجرا. با شروع از iperf-3.16، ابزار iperf3 یک ریسه (thread) جداگانه برای هر جریان آزمون ایجاد می‌کند. استفاده از چندین جریان در مواردی که کارایی شبکه محدود به پردازنده است، ممکن است به پهنای باند و کارایی بالاتری نسبت به یک جریان واحد منجر شود.
معکوس کردن جهت آزمون، به‌طوری که سرور داده‌ها را به کلاینت ارسال کند.
آزمون در هر دو جهت (عادی و معکوس)، به‌طوری که کلاینت و سرور به‌طور همزمان داده‌ها را ارسال و دریافت می‌کنند.
تنظیم اندازه بافر سوکت / اندازه پنجره (window size). این مقدار به سرور ارسال شده و در آن سمت نیز استفاده می‌شود؛ در هر دو سمت، این گزینه اندازه بافر سوکت ارسال و دریافت را تعیین می‌کند. از این گزینه می‌توان برای تنظیم (غیرمستقیم) حداکثر اندازه پنجره TCP استفاده کرد. توجه داشته باشید که در سیستم‌های لینوکسی، حداکثر اندازه موثر پنجره تقریباً دو برابر مقداری است که توسط این گزینه مشخص شده است. این رفتار یک باگ در iperf3 نیست، بلکه یکی از ویژگی‌های هسته لینوکس است، همان‌طور که در tcp(7) و socket(7) مستند شده است.
تنظیم حداکثر اندازه سگمنت (MSS) در TCP/SCTP (به‌صورت MTU - 40 بایت).
تنظیم گزینه no delay در TCP/SCTP، که الگوریتم نیگل (Nagle's Algorithm) را غیرفعال می‌کند.
-4, --version4
اجبار به استفاده از IPv4.
-6, --version6
اجبار به استفاده از IPv6.
تنظیم بیت‌های نوع سرویس IP (Type of Service). پیشوندهای معمول برای اعداد در مبنای هشت و شانزده قابل استفاده هستند؛ به عنوان مثال 52، 064 و 0x34 همگی مقدار یکسانی را مشخص می‌کنند.
تنظیم بیت‌های DSCP در IP. هر دو مقادیر عددی و نمادین پذیرفته می‌شوند. مقادیر عددی را می‌توان در مبنای ده، هشت و شانزده مشخص کرد (ببینید --tos در بالا).
تنظیم برچسب جریان (flow label) در IPv6 (در حال حاضر فقط در لینوکس پشتیبانی می‌شود).
اتصال پیوندهای SCTP به زیرمجموعه خاصی از لینک‌ها با استفاده از sctp_bindx(3). در صورت مشخص شدن این فلگ، فلگ -B نادیده گرفته خواهد شد. به‌طور معمول هنگام راه‌اندازی یک پیوند، SCTP آدرس‌های پروتکل تمام پیوندهای فعال در میزبان محلی را شامل می‌شود. مشخص کردن حداقل یک نام --X این رفتار را غیرفعال می‌کند. این فلگ باید برای هر پیوندی که قرار است در ارتباط گنجانده شود مشخص شود، و هم برای سرورها و هم کلاینت‌های iperf پشتیبانی می‌شود (مورد دوم با ارسال اولین آرگومان --X به bind(2) پشتیبانی می‌شود). نام‌های میزبان به عنوان آرگومان پذیرفته شده و با استفاده از getaddrinfo(3) حل می‌شوند. اگر فلگ‌های --4 یا --6 نیز مشخص شده باشند، نام‌هایی که به آدرس‌های درون خانواده پروتکل مشخص‌شده حل نشوند نادیده گرفته خواهند شد.
تنظیم تعداد جریان‌های SCTP.
استفاده از روش «کپی صفر» (zero copy) برای ارسال داده‌ها، مانند sendfile(2)، به جای write(2) معمول.
نادیده گرفتن داده‌های بسته دریافت‌شده، با استفاده از فلگ MSG_TRUNC در فراخوانی سیستمی recv(2).
اجرای پیش‌آزمون به مدت n ثانیه و حذف آمارهای پیش‌آزمون، جهت گذشتن از دوره شروع آهسته (slow-start) در TCP.
افزودن پیشوند رشته رشته به ابتدای هر خط خروجی.
مشخص کردن یک فیلد متنی داده اضافی جهت گنجانده شدن در خروجی JSON.
تنظیم الگوریتم کنترل ازدحام (فقط در لینوکس و FreeBSD). مترادف قدیمی‌تر --linux-congestion برای این فلگ پذیرفته می‌شود اما منسوخ است.
دریافت خروجی از سمت سرور. فرمت خروجی توسط سرور تعیین می‌شود (به‌ویژه اگر سرور با فلگ --json اجرا شده باشد، خروجی در قالب JSON خواهد بود؛ در غیر این صورت در قالب انسان‌خوانا خواهد بود). اگر کلاینت با --json اجرا شود، خروجی سرور در یک شیء JSON گنجانده می‌شود؛ در غیر این صورت در انتهای خروجی انسان‌خوانا ضمیمه می‌شود. توجه داشته باشید که خروجی سرور تنها در صورتی در دسترس است که آزمون به پایان برسد، نه در حالتی که متوقف یا قطع شود.
استفاده از شمارنده‌های ۶۴ بیتی در بسته‌های آزمون UDP. استفاده از این گزینه می‌تواند به جلوگیری از سرریز شمارنده در طول آزمون‌های طولانی یا با نرخ بیت بالای UDP کمک کند. هر دو کلاینت و سرور باید حداقل نسخه 3.1 را اجرا کنند تا این گزینه کار کند. ممکن است در آینده به رفتار پیش‌فرض تبدیل شود.
فعال‌سازی تفکیک و بارگذاری سراسری بسته‌های ارسالی (GSO) در فرستنده و تجمیع بسته‌های دریافتی (GRO) در گیرنده برای UDP، در جایی که توسط سیستم‌عامل و سخت‌افزار شبکه پشتیبانی شود (در حال حاضر فقط لینوکس). ویژگی GSO به پشته شبکه اجازه می‌دهد چندین دیتاگرام UDP را در بسته‌های بزرگ‌تر تجمیع کند، که باعث بهبود کارایی و پهنای باند و کاهش بار پردازنده می‌شود. این یک گزینه مخصوص کلاینت است؛ کلاینت تنظیمات GSO/GRO را به‌طور خودکار به سرور منتقل می‌کند. این ویژگی به‌طور پیش‌فرض غیرفعال است و باید صراحتاً با این فلگ فعال شود.
استفاده از الگوی تکرارشونده در بار مفید (payload) به جای بایت‌های تصادفی. همان بار مفیدی که در iperf2 استفاده می‌شد استفاده می‌شود (تکرار نویسه‌های '0..9' در ASCII). این گزینه ممکن است برای آزمودن و آشکارسازی مشکلات در تجهیزات شبکه با فشرده‌سازی سخت‌افزاری (از جمله برخی اکسس‌پوینت‌های WiFi) که عملکرد iperf2 و iperf3 صرفاً به دلیل آنتروپی بار مفید در آن‌ها متفاوت است، کمک کند.
تنظیم بیت Don't Fragment (DF) در IPv4 برای بسته‌های خروجی. فقط برای آزمون‌های UDP روی IPv4 کاربرد دارد.
مشخص کردن نام کاربری برای احراز هویت در سرور iperf (در صورت ساخت با پشتیبانی از OpenSSL). رمز عبور هنگام اجرای آزمون به‌صورت تعاملی درخواست خواهد شد. توجه داشته باشید که رمز عبور را می‌توان از طریق متغیر محیطی IPERF3_PASSWORD نیز مشخص کرد. در صورت وجود این متغیر، اعلان درخواست رمز عبور نادیده گرفته می‌شود.
تنظیم مسیر کلید عمومی RSA که برای رمزگذاری اعتبارنامه‌های احراز هویت استفاده می‌شود (در صورت ساخت با پشتیبانی از OpenSSL).

قابلیت احراز هویت در iperf3 نیازمند یک جفت‌کلید عمومی RSA است. کلید عمومی برای رمزگذاری توکن احراز هویت حاوی اطلاعات کاربری استفاده می‌شود، در حالی که کلید خصوصی برای رمزگشایی توکن احراز هویت به کار می‌رود. کلید خصوصی باید در فرمت PEM باشد و علاوه بر این نباید رمز عبور روی آن تنظیم شده باشد. کلید عمومی باید در فرمت PEM بوده و از انکودینگ SubjectPrefixKeyInfo استفاده کند. نمونه‌ای از دستورات UNIX/Linux با استفاده از OpenSSL برای تولید یک جفت‌کلید با ساختار صحیح در زیر آمده است:

> openssl genrsa -des3 -out private.pem 2048

> openssl rsa -in private.pem -outform PEM -pubout -out public.pem

> openssl rsa -in private.pem -out private_not_protected.pem \

-outform PEM

پس از اجرای این دستورات، کلید عمومی در فایل public.pem و کلید خصوصی در فایل private_not_protected.pem قرار خواهد گرفت.

یک فایل متنی ساده (plaintext) باید در اختیار سرور iperf3 قرار گیرد تا مشخصات کاربران مجاز تعیین شود. این فایل یک لیست ساده جداشده با کاما از جفت‌های نام کاربری و هش رمز عبور متناظر است. هش رمز عبور یک هش SHA256 از رشته "{$user}$password" است. فایل می‌تواند شامل خطوط توضیحات (شروع‌شده با نویسه #) نیز باشد. نمونه‌ای از دستورات برای تولید هش رمز عبور در یک سیستم UNIX/Linux در زیر آمده است:

> S_USER=mario S_PASSWD=rossi

> echo -n "{$S_USER}$S_PASSWD" | sha256sum | awk '{ print $1 }'

نمونه‌ای از یک فایل رمز عبور (با ورودی متناظر با نام کاربری و رمز عبور بالا) در زیر آمده است:

> cat credentials.csv

# file format: username,sha256

mario,bf7a49a846d44b454a5d11e7acfaf13d138bbe0b7483aa3e050879700572709b

فهرستی از مشارکت‌کنندگان در iperf3 را می‌توان در مستندات موجود در نشانی https://software.es.net/iperf/dev.html#authors یافت.

libiperf(3), https://software.es.net/iperf

April 2026 ESnet