| KXDPGUN(8) | Knot DNS | KXDPGUN(8) |
نام (NAME)
kxdpgun - ابزار ارزیابی و سنجش کارایی DNS مبتنی بر XDP
خلاصه دستور (SYNOPSIS)
kxdpgun [گزینهها] -i نام_فایل هدف
توضیحات (DESCRIPTION)
تولیدکننده قدرتمند ترافیک DNS که ارسال و دریافت بستهها را از طریق XDP انجام میدهد.
پرسوجوها بر اساس یک فایل متنی تولید میشوند که به صورت ترتیبی در یک حلقه تا زمان سپری شدن مدتزمان پیکربندیشده خوانده میشود. ترتیب پرسوجوها تضمینشده نیست. پاسخها (مگر در صورت غیرفعال بودن) دریافت و شمارش میشوند، اما با پرسوجوها تطبیق داده نمیشوند.
شمار رشتههای موازی به طور خودکار بر اساس تعداد صفهای پیکربندیشده برای رابط شبکه تشخیص داده میشود.
پارامترها (Parameters)
- نام_فایل
- مسیر فایل پرسوجوها. برای اطلاع از ساختار فایل به توضیحات زیر مراجعه کنید.
- هدف
- نام دامنه، آدرس IPv4 یا IPv6 یک مقصد راه دور.
گزینهها (Options)
- -t, --duration ثانیه
- مدت زمان تولید ترافیک بر حسب ثانیه به عنوان یک عدد اعشاری مشخص میشود (پیشفرض ۵٫۰ است).
- -T, --tcp[=حالت_اشکالزدایی]
- ارسال پرسوجوها روی TCP. فهرست حالتهای اشکالزدایی اختیاری را در زیر ببینید.
- -U, --quic[=حالت_اشکالزدایی]
- ارسال پرسوجوها روی QUIC. فهرست حالتهای اشکالزدایی اختیاری را در زیر ببینید.
- -Q, --qps تعداد
- تعداد تقریبی پرسوجوها در ثانیه برای ارسال (پیشفرض ۱۰۰۰ است). این برنامه برای سرعتهای پایین بهینهسازی نشده است و ممکن است در سرعتهای کم بستههای ارتباطی را از دست بدهد. حداقل سرعت توصیهشده ۲ بسته به ازای هر رشته (صف Rx/Tx) است.
- -b, --batch اندازه
- ارسال پرسوجوهای بیشتر در یک دسته. مقدار QPS را بهبود میبخشد اما ممکن است بر اتلاف بسته در سمت مقابل تأثیر بگذارد (پیشفرض ۱۰ برای UDP و ۱ برای TCP/QUIC است).
- -r, --drop
- دور ریختن پاسخهای دریافتی. مقدار QPS را افزایش میدهد، اما آمار پاسخها را غیرفعال میسازد.
- -p, --port شماره
- درگاه مقصد راه دور (پیشفرض ۵۳ برای UDP/TCP و ۸۵۳ برای QUIC است).
- -F, --affinity مشخصه_پردازنده
- وابستگی پردازنده (CPU affinity) برای تمام رشتهها که در قالب [<cpu_start>][s<cpu_step>] مشخص میشود؛ که در آن <cpu_start> شناسه CPU برای نخستین رشته و <cpu_step> گام افزایش شناسه CPU برای رشته بعدی است (پیشفرض 0s1 است).
- -i, --infile نام_فایل
- مسیر فایلی شامل الگوهای پرسوجو.
- -B, --binary
- مشخص کردن اینکه فایل ورودی در قالب باینری است. این قالب مشابه قالب پیامهای DNS مبتنی بر TCP است. این فایل شامل رکوردهایی در قالب طول ۲ بایتی (ترتیب شبکه) است که پس از آن پیام در فرمت سیم (wire format) دیاناس قرار میگیرد.
- -I, --interface رابط
- رابط شبکه برای ارتباطات خروجی. این گزینه در شرایطی کاربرد دارد که برای نمونه رابطها در یک پیوند (bond) قرار دارند.
- -l, --local آدرس_محلی[/پیشوند]
- بازنویسی آدرس IP مبدأ که به صورت خودکار شناسایی شده است. اگر به جای آن یک محدوده آدرس تعیین شود، IPهای مختلف از آن محدوده به صورت یکنواخت برای پرسوجوهای گوناگون استفاده خواهند شد (محدوده آدرس در حالت QUIC پشتیبانی نمیشود).
- -L, --mac-local
- بازنویسی آدرس MAC محلی شناساییشده به صورت خودکار.
- -R, --mac-remote
- بازنویسی آدرس MAC مقصد شناساییشده به صورت خودکار.
- -v, --vlan شناسه
- افزودن هدر VLAN 802.1Q با شناسه مشخصشده. ویژگی VLAN offloading باید غیرفعال باشد.
- -e, --edns-size اندازه
- اندازه محموله EDNS UDP، در محدوده ۵۱۲ تا ۴۰۹۶ (پیشفرض ۱۲۳۲ است). توجه داشته باشید که روی XDP حداکثر MTU پشتیبانیشده برابر ۱۷۹۰ است.
- -m, --mode حالت
- تنظیم حالت XDP. مقادیر پشتیبانیشده عبارتند از:
- auto (پیشفرض) – حالت XDP به صورت خودکار برای دستیابی به بالاترین کارایی انتخاب میشود، به این معنی که پشتیبانی درایور بومی (native) بر حالت عمومی ترجیح داده شده و در صورت در دسترس بودن، از zero-copy استفاده میشود.
- copy – حالت کپی سوکت XDP اجبار میشود حتی اگر zero-copy در دسترس باشد. این گزینه میتواند مشکلات گوناگون درایور را حل کند، اما به بهای کاهش کارایی تمام میشود.
- generic – پیادهسازی عمومی XDP اجبار میشود حتی اگر پیادهسازی بومی در دسترس باشد. این حالت نیازی به پشتیبانی درایور یا سختافزار ندارد، اما پایینترین کارایی را ارائه میدهد.
- -G, --qlog مسیر
- تولید
فایلهای qlog
در
دایرکتوری
مشخصشده
توسط مسیر.
دایرکتوری
باید از قبل
وجود داشته
باشد.
این گزینه در خارج از حالت QUIC نادیده گرفته میشود. کاربرد پیشنهادی آن با --quic=R یا با مقادیر کم QPS است، در غیر این صورت فایلهای بیش از حدی تولید خواهد شد.
- -j, --json
- چاپ آمارها با فرمت JSON.
- -S, --stats-period دوره
- گزارش
خودکار
آمارها در
هر دوره بر
حسب
میلیثانیه.
این گزارشها تنها حاوی معیارهای جمعآوریشده در دوره زمانی مشخصشده هستند.
- -h, --help
- چاپ راهنمای برنامه.
- -V, --version
- چاپ نسخه برنامه. گزینه -VV خلاصه پیکربندی زمان کامپایل را نیز چاپ میکند.
قالب فایل پرسوجوها (Queries file format)
هر سطر یک پرسوجو را در قالب زیر توصیف میکند:
نام_پرسوجو نوع_پرسوجو [فلگها]
که در آن نام_پرسوجو نام دامنهای است که باید پرسیده شود، نوع_پرسوجو نام نوع رکورد است، و فلگها یک نویسه واحد است:
E ارسال پرسوجو به همراه EDNS.
D درخواست DNSSEC (ترکیب EDNS به همراه فلگ DO).
حالتهای اشکالزدایی TCP/QUIC (TCP/QUIC debug modes)
- 0
- انجام دستتکانی (handshake) کامل برای همه اتصالات (فقط QUIC).
- 1
- صرفاً ارسال SYN (Initial) و دریافت SYN-ACK (Handshake).
- 2
- انجام دستتکانی TCP/QUIC و ارسال نکردن هیچ چیز دیگر، و اجازه بستن اتصال از سوی طرف مقابل.
- 3
- انجام دستتکانی TCP/QUIC و عدم واکنش پس از آن.
- 5
- ارسال پرسوجوی ناقص (N-1 بایت) و عدم واکنش پس از آن.
- 7
- ارسال پرسوجو و عدم ارسال تاییدیه (ACK) برای پاسخ یا هر پیام دیگر.
- 8
- نبستن اتصال و نادیده گرفتن درخواست بستن از سوی طرف مقابل.
- 9
- عملکرد عادی به جز عدم ارسال ACK برای آخرین FIN+ACK (فقط TCP).
- R
- استفاده مجدد از اتصالات به جای باز کردن اتصال جدید برای هر پرسوجو.
سیگنالها (Signals)
ارسال سیگنال USR1 به فرآیند در حال اجرا، تخلیه آمار فعلی را در خروجی استاندارد فعال میکند. در ترکیب با -S ممکن است باعث ناپایداری در زمانبندی چاپ شود.
نکات (NOTES)
هسته لینوکس ۴٫۱۸ یا بالاتر مورد نیاز است.
این ابزار باید با کاربر ریشه (root) یا با داشتن این قابلیتها اجرا شود: CAP_NET_RAW ،CAP_NET_ADMIN ،CAP_SYS_ADMIN ،CAP_IPC_LOCK و CAP_SYS_RESOURCE (در لینوکس نسخههای کمتر از ۵٫۱۱).
این ابزار درگاههای مبدأ UDP/TCP را از محدوده ۲۰۰۰ تا ۶۵۵۳۵ تخصیص میدهد.
برای عملکرد صحیح حالت QUIC روی کارتهای شبکه چندصفی Mellanox/NVIDIA، ممکن است نیاز به تنظیم دستور ethtool -X <dev> xfrm none باشد.
به دلیل ساختار چندرشتهای برنامه، اختلافات اندکی در بازه زمانی جمعآوری معیارها برای هر رشته مشخص وجود دارد. چاپ آماری این موضوع را نادیده میگیرد و بنابراین خروجی تا حد بسیار کمی نادقیق است. حاشیه خطا به طور متناسب با حجم دادهها و بازه زمانی که دادهها طی آن جمعآوری شدهاند، کاهش مییابد.
کدهای خروج (EXIT VALUES)
وضعیت خروج ۰ به معنای اجرای موفقیتآمیز است. هر وضعیت خروج دیگری نشاندهنده یک خطاست.
مثالها (EXAMPLES)
فایل پرسوجوهای ایجادشده به صورت دستی:
abc6.example.com. AAAA nxdomain.example.com. A notzone. A a.example.com. NS E ab.example.com. A D abcd.example.com. DS D
فایل پرسوجوهای تولیدشده از فایل ناحیه (منطقه) (قالب Knot DNS):
cat ZONE_FILE | awk "{print \,\}" | grep -E "(NS|DS|A|AAAA|PTR|MX|SOA)$" | sort -u -R > queries.txt
کاربرد پایه:
# kxdpgun -i ~/queries.txt 2001:DB8::1
استفاده از UDP با اندازه دسته افزایشیافته:
# kxdpgun -t 20 -Q 1000000 -i ~/queries.txt -b 20 -p 8853 192.0.2.1
استفاده از TCP:
# kxdpgun -t 20 -Q 100000 -i ~/queries.txt -T -p 8853 192.0.2.1
همچنین ببینید (SEE ALSO)
نویسنده (AUTHOR)
CZ.NIC, z.s.p.o. and contributors https://www.knot-dns.cz
حق نشر (COPYRIGHT)
Copyright (C) CZ.NIC, z.s.p.o. and contributors
| 2026-06-12 | 3.5.5 |