.TH "xdp-trafficgen" "8" "FEBRUARY 19, 2026" "V1.6.3" "تولیدکننده ترافیک مبتنی بر XDP" .SH "نام (NAME)" XDP-trafficgen \- تولیدکننده ترافیک شبکه مبتنی بر XDP .SH "خلاصه دستور (SYNOPSIS)" .PP ابزار XDP-trafficgen یک تولیدکننده بسته است که از زیرسیستم هسته XDP برای تولید بسته‌ها و ارسال آن‌ها از طریق یک رابط شبکه استفاده می‌کند. بسته‌ها به صورت پویا در هسته تولید و ارسال می‌شوند که عملکرد بسیار بالایی (میلیون‌ها بسته در ثانیه به ازای هر هسته پردازنده) فراهم می‌سازد. .PP ابزار XDP-trafficgen از تولید ترافیک UDP با درگاه‌های مقصد ثابت یا پویا پشتیبانی کرده و همچنین پشتیبانی اولیه‌ای از تولید ترافیک ساختگی TCP روی یک جریان منفرد دارد. .SS "اجرای xdp-trafficgen" .PP نحو اجرای xdp-trafficgen به صورت زیر است: .RS .nf \fCUsage: xdp-trafficgen COMMAND [options] COMMAND can be one of: udp - run in UDP mode xsk-udp - run in UDP mode (using AF_XDP sockets) tcp - run in TCP mode probe - probe kernel support \fP .fi .RE .PP هر دستور و گزینه‌های آن در ادامه شرح داده شده‌اند. همچنین می‌توانید از \fIxdp\-trafficgen COMMAND \-\-help\fP برای مشاهده گزینه‌های هر دستور استفاده کنید. .SH "دستور UDP" .PP دستور UDP ترافیک UDP را به سمت یک نشانی IP مقصد مشخص با درگاه مقصد ثابت یا محدوده‌ای از شماره‌های درگاه تولید می‌کند. فقط ترافیک IPv6 پشتیبانی می‌شود و بسته‌های تولیدشده حد جهش (hop limit) معادل ۱ خواهند داشت تا امکان مسیریابی آن‌ها وجود نداشته باشد. .PP نحو دستور \fIudp\fP عبارت است از: .PP \fIxdp\-trafficgen udp [options] \fP .PP که در آن \fI\fP نام رابط مقصد است که بسته‌ها از طریق آن ارسال خواهند شد. توجه داشته باشید که درایور شبکه این رابط باید از هدایت‌های XDP پشتیبانی کند (باید عملیات درایور \fIndo_xdp_xmit\fP را پیاده‌سازی کرده باشد). .PP گزینه‌های پشتیبانی‌شده عبارتند از: .SS "-m, --dst-mac " .PP تنظیم آدرس MAC مقصد برای بسته‌های تولیدی. پیش‌فرض تولید بسته‌هایی با آدرس MAC تمام صفر است. .SS "-M, --src-mac " .PP تنظیم آدرس MAC مبدا برای بسته‌های تولیدی. پیش‌فرض استفاده از آدرس MAC همان رابط شبکه ارسال‌کننده بسته‌هاست. .SS "-a, --dst-addr " .PP نشانی IP مقصد بسته‌های تولیدی. مقدار پیش‌فرض نشانی پیوند-محلی (link-local) \fIfe80::2\fP است. .SS "-A, --src-addr " .PP نشانی IP مبدا بسته‌های تولیدی. مقدار پیش‌فرض نشانی پیوند-محلی \fIfe80::1\fP است. .SS "-p, --dst-port " .PP درگاه UDP مقصد برای بسته‌های تولیدی، یا اولین درگاه محدوده در صورت فعال بودن \fI\-\-dyn\-ports\fP. مقدار پیش‌فرض 1 است. .SS "-P, --src-port " .PP درگاه UDP مبدا برای بسته‌های تولیدی. مقدار پیش‌فرض 1 است. .SS "-d, --dyn-ports " .PP فعال‌سازی حالت درگاه پویا که در آن درگاه مقصد در بازه‌ای به تعداد \fI\fP از مبدا \fI\-\-dst\-port\fP تغییر می‌کند. .SS "-n, --num-packets " .PP تعداد بسته‌ها برای ارسال قبل از خروج. در صورت عدم تعیین، \fIxdp\-trafficgen\fP تا زمان دریافت وقفه به ارسال بسته‌ها ادامه می‌دهد. .SS "-s, --pkt-size " .PP اندازه هر بسته UDP ارسالی بر حسب بایت، شامل سرآیند اترنت و چکسام. از آنجا که \fIxdp\-trafficgen\fP ترافیک IPv6 تولید می‌کند، حداقل اندازه که مقدار پیش‌فرض نیز هست ۶۶ بایت است. .PP در نسخه‌های قدیمی‌تر \fIxdp\-trafficgen\fP چهار بایت چکسام اترنت که در انتهای بسته اضافه می‌شد به حساب نمی‌آمد، یعنی اندازه ۶۴ مجاز (و پیش‌فرض) بود در حالی که در عمل بسته‌های ۶۸ بایتی ارسال می‌شد. برای رفع این اشکال بدون شکستن تنظیمات کاربران قبلی، مقادیر ۶۴ یا ۶۵ با یک هشدار به مقدار حداقل ۶۶ تغییر می‌یابند به جای اینکه خطایی صادر شود. .SS "-t, --threads " .PP تعداد نخ‌های پردازشی همزمان برای ارسال بسته‌ها. در صورت امکان، هر نخ به یک هسته پردازنده مجزا متصل می‌شود. پیش‌فرض 1 است. .SS "-I, --interval " .PP نمایش آمار ارسال بسته‌ها در فواصل زمانی مشخص (بر حسب ثانیه). .SS "-v, --verbose" .PP فعال کردن ثبت لاگ پرجزئیات (-vv: با جزئیات بیشتر). .SS "--version" .PP نمایش اطلاعات نسخه و خروج. .SS "-h, --help" .PP نمایش چکیده‌ای از گزینه‌های در دسترس. .SH "دستور XSK-UDP" .PP دستور \fIxsk\-udp\fP نیز ترافیک UDP تولید می‌کند، اما این کار را با استفاده از سوکت \fIAF_XDP\fP و تولید ترافیک در فضای کاربری (userspace) انجام می‌دهد. از این دستور می‌توان برای آزمایش و ارزیابی عملکرد سوکت‌های \fIAF_XDP\fP در ارسال داده استفاده کرد. .PP کد این دستور از ابزار \fIxdpsock\fP که قبلاً بخشی از سورس هسته لینوکس و سپس مخزن bpf-examples بوده اقتباس شده است. این دستور معادل گزینه \fI\-\-txonly\fP در ابزار \fIxdpsock\fP است. .PP نحو این دستور عبارت است از: .PP \fIxdp\-trafficgen xsk\-udp [options] \fP .PP گزینه‌های پشتیبانی‌شده عبارتند از: .SS "-m, --dst-mac " .PP تنظیم آدرس MAC مقصد برای بسته‌های تولیدی. پیش‌فرض تولید بسته‌هایی با آدرس MAC تمام صفر است. .SS "-M, --src-mac " .PP تنظیم آدرس MAC مبدا برای بسته‌های تولیدی. پیش‌فرض استفاده از آدرس MAC همان رابط ارسال‌کننده است. .SS "-y, --timestamp" .PP افزودن برچسب زمانی (timestamp) به هر بسته با قالبی مشابه ابزار \fIpktgen\fP در هسته. .SS "-V, --vlan-tag" .PP افزودن برچسب vlan به بسته‌ها با استفاده از ID و PRI تعیین‌شده با گزینه‌های \fI\-\-vlan\-id\fP و \fI\-\-vlan\-pri\fP. .SS "-J, --vlan-id" .PP تنظیم شناسه vlan برای بسته‌ها. فقط در صورت تنظیم گزینه \fI\-\-vlan\-tag\fP اثر دارد. پیش‌فرض: 1. .SS "-K, --vlan-pri" .PP تنظیم اولویت (PRI) vlan برای بسته‌ها. فقط در صورت تنظیم گزینه \fI\-\-vlan\-tag\fP اثر دارد. پیش‌فرض: 0. .SS "-P, --fill-pattern " .PP استفاده از این الگو برای پر کردن داده‌های بسته. الگوی داده به عنوان یک مقدار هگزادسیمال ۳۲ بیتی مشخص می‌شود و پیش‌فرض آن 0 است. .SS "-T, --tx-cycle-time " .PP تعیین فاصله زمانی بین فوران‌های بسته (packet bursts) بر حسب میکروثانیه. در هر بازه زمانی، یک دسته بسته به اندازه \fI\-\-batch\-size\fP ارسال می‌شود. پیش‌فرض 0 است (ارسال بسته‌ها با حداکثر سرعت ممکن). .SS "-q, --queue " .PP انتخاب صف سخت‌افزاری دریافت برای آزمون. سوکت \fIAF_XDP\fP به این صف متصل می‌شود، بدین معنی که \fIxdp\-trafficgen\fP تمام بسته‌های ورودی به آن را پردازش خواهد کرد. پیش‌فرض صف 0 است. .SS "-i, --interval " .PP تنظیم بازه زمانی پایش برای جمع‌آوری تمامی آمارها و نمایش آن‌ها در خروجی. پیش‌فرض ۲ ثانیه است. .SS "-O, --retries " .PP تعیین حداکثر دفعات تلاش مجدد در تکمیل ارسال آخرین بسته‌های آزمون. هنگام پایان آزمایش، برنامه سعی در آزادسازی آخرین توصیف‌کننده‌های حلقه بسته با فواصل ۱ ثانیه‌ای می‌کند. این فقط زمانی کاربرد دارد که \fI\-\-pkt\-count\fP تنظیم شده باشد. .SS "-f, --frame-size " .PP تنظیم اندازه فریم‌های حافظه مورد استفاده برای ارسال بسته‌ها. بسته‌ها فارغ از اندازه واقعی روی شبکه، همواره از یک تکه حافظه با این اندازه استفاده می‌کنند. اندازه باید توانی از دو باشد مگر اینکه از فلگ \fI\-\-unaligned\fP استفاده شود. پیش‌فرض ۴۰۹۶ بایت (معادل اندازه صفحه در اکثر سیستم‌ها) است. .SS "-s, --pkt-size " .PP تعیین اندازه بسته‌های ارسالی. مقدار باید بین ۶۴ تا ۹۷۲۸ بایت باشد و پیش‌فرض آن ۶۴ است. .SS "-d, --duration " .PP تعیین مدت زمان آزمون بر حسب ثانیه. پیش‌فرض 0 است (اجرای بی‌پایان یا تا رسیدن به \fI\-\-pkt\-count\fP). .SS "-c, --pkt-count " .PP تعیین تعداد کل بسته‌ها برای ارسال پیش از خروج. پیش‌فرض 0 است (اجرای بی‌پایان یا تا رسیدن به سقف زمان \fI\-\-duration\fP). .SS "-b, --batch-size " .PP تعیین اندازه دسته برای حلقه پردازش بسته. این تعداد بسته‌ای است که در هر بار اجرای حلقه به یکباره فرستاده می‌شود. پیش‌فرض ۶۴ بسته است. همچنین به \fI\-\-tx\-cycle\-time\fP مراجعه کنید. .SS "-I, --irq-string " .PP فعال کردن چاپ آمار وقفه‌ها برای وقفه مرتبط با \fIirq\-string\fP در /proc/interrupts. رشته برای یافتن شماره IRQ با تطابق زیررشته استفاده می‌شود. فاقد پیش‌فرض است. .SS "-p, --poll" .PP استفاده از فراخوانی سیستمی \fIpoll()\fP برای دریافت اعلان آمادگی سوکت جهت ارسال بسته‌های جدید به جای تلاش مداوم در یک حلقه. .SS "-m, --no-need-wakeup" .PP عدم تنظیم پرچم \fIXDP_USE_NEED_WAKEUP\fP هنگام اتصال سوکت \fIAF_XDP\fP. این پرچم به طور پیش‌فرض تنظیم است و باعث می‌شود درایور هسته گاهی به خواب رفته و پردازنده را برای پردازش بسته‌ها به برنامه فضای کاربر بسپارد. .SS "-u, --unaligned" .PP پشتیبانی از ارسال بسته‌های ناتراز (unaligned)، یعنی بسته‌هایی که با ابتدای فریم داده تراز نیستند. با این تنظیم، حافظه با صفحات بزرگ (huge pages) برای بافر حافظه فضای کاربر فعال می‌شود و استفاده از اندازه‌های فریم غیر توانی از دو امکان‌پذیر می‌گردد. .SS "-M, --shared-umem" .PP فعال کردن حافظه فضای کاربری اشتراکی بین چند سوکت \fIAF_XDP\fP. در این حالت، ۴ سوکت با حافظه بافر یکسان ایجاد شده و بسته‌ها به روش نوبت‌گردشی (round-robin) روی هر یک ارسال می‌شوند. .SS "-x, --extra-stats" .PP چاپ آمارهای تکمیلی بسته در هر بازه زمانی خروجی. .SS "-Q, --quiet" .PP عدم چاپ هرگونه آمار در بازه‌های زمانی خروجی. .SS "-a, --app-stats" .PP چاپ آمارهای بیشتر در سطح برنامه در هر بازه خروجی. .SS "-C, --copy-mode " .PP انتخاب حالت رونوشت برای بسته‌ها: یکی از مقادیر \fIauto\fP، \fIcopy\fP یا \fIzero\-copy\fP. پیش‌فرض \fIauto\fP است که انتخاب را به هسته واگذار می‌کند. استفاده از zero-copy نیازمند پشتیبانی هسته و درایور بوده و فقط در حالت native برنامه XDP قابل استفاده است. .SS "-w, --clock " .PP انتخاب ساعت مورد استفاده برای رویدادهای زمان‌سنج در برنامه. مقادیر معتبر MONOTONIC، REALTIME، TAI و BOOTTIME هستند و پیش‌فرض MONOTONIC است. .SS "-W, --policy " .PP تنظیم سیاست زمان‌بندی (scheduler policy) پیش از اجرا. مقادیر معتبر \fISCHED_OTHER\fP و \fISCHED_FIFO\fP هستند و پیش‌فرض \fISCHED_OTHER\fP است. .SS "-U, --schpri " .PP تنظیم اولویت زمان‌بندی هنگام استفاده از \fISCHED_FIFO\fP. پیش‌فرض 0 است. .SS "-A, --attach-mode " .PP تنظیم حالت پیوست برنامه XDP (به صورت native یا skb) به رابط شبکه. پیش‌فرض native است. حالت zero-copy فقط در حالت native کار می‌کند. .SS "-v, --verbose" .PP فعال کردن ثبت لاگ پرجزئیات. دو بار درج آن لاگ کتابخانه‌های زیرین \fIlibxdp\fP و \fIlibbpf\fP را نیز فعال می‌کند. .SS "--version" .PP نمایش نسخه برنامه و خروج. .SS "-h, --help" .PP نمایش چکیده‌ای از گزینه‌های موجود. .SH "دستور TCP" .PP دستور TCP ترافیک ساختگی TCP را در یک جریان منفرد ایجاد می‌کند. این کار مبتنی بر نصب اولیه یک برنامه ورودی XDP بر روی رابط ارسال‌کننده است. سپس یک اتصال سوکت عادی TCP از فضای کاربری برقرار شده و پس از اتمام دست‌تکانی (handshake)، برنامه XDP ارسال ترافیک روی آن جریان را به دست می‌گیرد. برنامه XDP ورودی بسته‌های ACK دریافتی را بررسی کرده و پنجره دریافت را ردیابی می‌کند. .PP تولیدکننده ترافیک کنترل ازدحام ندارد و ردیابی ارسال مجدد آن بسیار ابتدایی است: هرگونه دریافت ACK تکراری از گیرنده باعث ریست شدن شماره ترتیب ارسال به آخرین مقدار تاییدشده و شروع دوباره از آن نقطه می‌شود. همین اتفاق در صورت عدم پیشرفت پنجره ظرف ۲ ثانیه رخ می‌دهد. بنابراین ترافیک زیادی تولید می‌شود اما در صورت اتلاف بسته، حجم بالایی از آن بازارسالی خواهد بود. .PP نحو اجرای دستور \fItcp\fP به صورت زیر است: .PP \fIxdp\-trafficgen tcp [options] \-i \fP .PP که در آن \fI\fP نام رابط مقصد و \fI\fP نام میزبان یا نشانی همتا برای اتصال است (تنها IPv6 پشتیبانی می‌شود). توجه داشته باشید درایور این کارت باید از عملیات \fIndo_xdp_xmit\fP پشتیبانی کند. .PP گزینه‌های پشتیبانی‌شده عبارتند از: .SS "-p, --dst-port " .PP اتصال به درگاه مقصد . پیش‌فرض 10000 است. .SS "-m, --mode " .PP بارگذاری برنامه ورودی XDP در حالت ؛ پیش‌فرض native است (مقادیر معتبر: native, skb, hw). .SS "-n, --num-packets " .PP تعداد بسته‌ها برای ارسال پیش از خروج. در صورت عدم تعیین، ارسال تا دریافت وقفه ادامه می‌یابد. .SS "-I, --interval " .PP نمایش آمار ارسال با این بازه زمانی (بر حسب ثانیه). .SS "-v, --verbose" .PP فعال کردن ثبت لاگ پرجزئیات (-vv: با جزئیات بیشتر). .SS "--version" .PP نمایش اطلاعات نسخه و خروج. .SS "-h, --help" .PP نمایش خلاصه‌ای از گزینه‌های در دسترس. .SH "دستور PROBE" .PP دستور PROBE قابلیت‌های هسته را بررسی می‌کند تا مشخص شود ویژگی‌های لازم برای اجرای xdp-trafficgen فراهم هستند یا خیر. از این دستور می‌توان جهت آگاهی از سازگاری هسته جاری یا پشتیبانی یک رابط شبکه خاص از ارسال بسته‌های xdp-trafficgen استفاده کرد. .PP نحو اجرای دستور \fIprobe\fP: .PP \fIxdp\-trafficgen probe [options]\fP .PP پس از بررسی، برنامه نتایج آزمون هسته و (در صورت ارائه نام رابط) پشتیبانی رابط شبکه را چاپ می‌کند. کد خروج در صورت موفقیت همه بررسی‌ها 0 و در غیر این صورت 1 خواهد بود. .PP توجه داشته باشید که این سنجش به سازوکار گزارش قابلیت‌های XDP در هسته وابسته است که پس از خود پشتیبانی XDP به هسته اضافه شد؛ لذا در برخی نسخه‌های قدیمی هسته ممکن است سنجش ناموفق باشد هرچند ابزار عملاً قادر به ارسال بسته‌ها باشد. .PP گزینه‌های پشتیبانی‌شده: .SS "-i, --ifname " .PP بررسی رابط شبکه تعیین‌شده علاوه بر بررسی عمومی هسته. .SS "-v, --verbose" .PP فعال کردن ثبت لاگ پرجزئیات (-vv: با جزئیات بیشتر). .SS "--version" .PP نمایش اطلاعات نسخه و خروج. .SS "-h, --help" .PP نمایش خلاصه‌ای از گزینه‌های موجود. .SH "گزارش اشکالات (BUGS)" .PP لطفاً هرگونه اشکال را در گیت‌هاب گزارش کنید: \fIhttps://github.com/xdp-project/xdp-tools/issues\fP .SH "نویسنده (AUTHOR)" .PP برنامه xdp-trafficgen و این صفحه راهنما توسط Toke Høiland-Jørgensen نوشته شده‌اند.