DCB-APP(8) راهنمای لینوکس DCB-APP(8)

dcb-app - پیکربندی اولویت برنامه جدول DCBX در dcb


dcb [ OPTIONS ] app { COMMAND | help }

dcb app { show | flush } dev DEV [ default-prio ] [ ethtype-prio ] [ stream-port-prio ] [ dgram-port-prio ] [ port-prio ] [ dscp-prio ] [ pcp-prio ]

dcb app { add | del | replace } dev DEV [ default-prio PRIO-LIST ] [ ethtype-prio ET-MAP ] [ stream-port-prio PORT-MAP ] [ dgram-port-prio PORT-MAP ] [ port-prio PORT-MAP ] [ dscp-prio DSCP-MAP ] [ pcp-prio PCP-MAP ]

PRIO-LIST := [ PRIO-LIST ] PRIO

ET-MAP := [ ET-MAP ] ET-MAPPING

ET-MAPPING := ET:PRIO

PORT-MAP := [ PORT-MAP ] PORT-MAPPING

PORT-MAPPING := PORT:PRIO

DSCP-MAP := [ DSCP-MAP ] DSCP-MAPPING

DSCP-MAPPING := { DSCP | all }:PRIO

PCP-MAP := [ PCP-MAP ] PCP-MAPPING

PCP-MAPPING := PCP:PRIO

ET := { 0x600 .. 0xffff }

PORT := { 1 .. 65535 }

DSCP := { 0 .. 63 }

PCP := { 0(nd/de) .. 7(nd/de) }

PRIO := { 0 .. 7 }

دستور dcb app برای پیکربندی جدول APP، یا جدول اولویت برنامه در زیرسیستم DCB (کوتاه‌نوشت Data Center Bridging) به کار می‌رود. جدول APP برای تخصیص اولویت به ترافیک بر اساس مقادیر موجود در یکی از چندین سرآیند استفاده می‌شود: EtherType، درگاه مقصد لایه ۴ (L4)، یا DSCP. همچنین امکان پیکربندی اولویت پیش‌فرض درگاه را فراهم می‌کند که در صورت عدم اعمال هیچ قانون اولویت‌بندی دیگری، انتخاب می‌شود.

مدخل‌های DCB APP سه‌گانه‌هایی (3-tuples) متشکل از انتخاب‌گر (selector)، شناسه پروتکل (protocol ID) و اولویت (priority) هستند. انتخاب‌گر یک شمارش است که یکی از فضاهای نام اولویت‌بندی را مشخص می‌کند. در حال حاضر عمدتاً با پارامترهای قابل پیکربندی توضیح‌داده‌شده در ادامه مطابقت دارد. شناسه پروتکل مقداری در فضای نام انتخاب‌گر است؛ به عنوان مثال برای انتخاب‌گر EtherType، شناسه‌های پروتکل همان مقادیر منفرد EtherType هستند و برای DSCP، نقاط کد (code points) مجزا می‌باشند. اولویت، همان اولویتی است که باید به ترافیک منطبق با انتخاب‌گر و شناسه پروتکل اختصاص یابد.

جدول APP مجموعه‌ای از مدخل‌های DCB APP است. تنها الزام این است که مدخل‌های تکراری اضافه نشوند. شایان ذکر است که داشتن تخصیص اولویت متعارض برای یک انتخاب‌گر و شناسه پروتکل یکسان مجاز است. به عنوان مثال، مجموعه دو مدخل APP به صورت (DSCP, 10, 1) و (DSCP, 10, 2)، که در آن بسته‌های دارای DSCP برابر با ۱۰ باید اولویت‌های ۱ و ۲ را دریافت کنند، یک جدول APP کاملاً معتبر را تشکیل می‌دهند. ابزار dcb app مدیریت سطح پایین جدول app را از طریق افزودن و حذف سه‌گانه‌های منفرد APP با دستورات add و del فراهم می‌کند. از سوی دیگر، دستور replace کاری را انجام می‌دهد که معمولاً در این شرایط مورد انتظار است: ابتدا پیکربندی جدید را اضافه می‌کند و سپس پیکربندی منسوخ را حذف می‌نماید، به طوری که فقط یک اولویت‌بندی برای یک انتخاب‌گر و شناسه پروتکل مشخص اعمال شود.

تمام مدخل‌های دارای یک انتخاب‌گر مشخص را نمایش می‌دهد. در صورتی که هیچ انتخاب‌گری تعیین نشود، تمام مدخل‌های جدول APP را به تفکیک هر انتخاب‌گر نشان می‌دهد.
تمام مدخل‌های دارای یک انتخاب‌گر مشخص را پاک می‌کند. در صورتی که هیچ انتخاب‌گری تعیین نشود، تمامی مدخل‌های جدول APP را حذف می‌کند.
به ترتیب برای افزودن و حذف سه‌گانه‌های منفرد APP به/از جدول DCB APP به کار می‌روند.
فهرست مدخل‌های ذکرشده به عنوان پارامتر را دریافت کرده و مواردی را که هنوز در جدول APP وجود ندارند اضافه می‌کند. سپس مدخل‌هایی را که انتخاب‌گر و شناسه پروتکل آن‌ها به عنوان پارامتر ذکر شده اما اولویت دقیقاً یکسانی ندارند، حذف می‌کند. این کار تضمین می‌کند که برای انتخاب‌گر و شناسه پروتکل مشخص‌شده، جدول تنها شامل اولویت (یا اولویت‌های) ارائه‌شده به عنوان پارامتر باشد.

فهرست زیر پارامترها را به گونه‌ای نشان می‌دهد که با دستورات add، del و replace استفاده می‌شوند. برای دستورات show و flush، نام پارامتر به عنوان یک کلیدواژه ساده بدون آرگومان‌های اضافی به کار می‌رود.

اولویت مورد استفاده برای ترافیکی که اولویت آن به صورت دیگری مشخص نشده است. این آرگومان فهرستی از اولویت‌های منفرد است. توجه داشته باشید که قوانین default-prio به صورت سه‌تایی (EtherType, 0, PRIO) پیکربندی می‌شوند. dcb app این قوانین را به نام نمادین default-prio و برعکس ترجمه می‌کند.
پارامتر ET-MAP از نحو پارامتر آرایه‌ای استفاده می‌کند؛ برای جزئیات به dcb(8) مراجعه کنید. کلیدها مقادیر EtherType هستند. مقادیر، اولویت‌هایی هستند که باید به ترافیک با EtherType منطبق تخصیص یابند.
پارامتر PORT-MAP از نحو پارامتر آرایه‌ای استفاده می‌کند؛ برای جزئیات به dcb(8) مراجعه کنید. کلیدها شماره‌های درگاه مقصد لایه ۴ (L4) هستند که به ترتیب با ترافیک TCP و SCTP، ترافیک UDP و DCCP، یا هر یک از آن‌ها تطابق دارند. مقادیر، اولویت‌هایی هستند که باید به ترافیک منطبق اختصاص یابند.
پارامتر DSCP-MAP از نحو پارامتر آرایه‌ای استفاده می‌کند؛ برای جزئیات به dcb(8) مراجعه کنید. کلیدها نقاط DSCP و مقادیر، اولویت‌های تخصیص‌یافته به ترافیک با DSCP منطبق هستند. نقاط DSCP را می‌توان مستقیماً به صورت مقادیر عددی نوشت، یا از نام‌های نمادین مشخص‌شده در /etc/iproute2/rt_dsfield استفاده کرد (البته توجه داشته باشید که این فایل مقادیر کامل ۸ بیتی dsfield را تعیین می‌کند، در حالی که dcb app تنها از شش بیت بالاتر استفاده خواهد کرد). دستور dcb app show نیز در صورت امکان، مقادیر DSCP را به عنوان نام‌های نمادین قالب‌بندی می‌کند. گزینه خط فرمان -N ترجمه و تبدیل مقادیر در نمایش را غیرفعال می‌کند.
پارامتر PCP-MAP از نحو پارامتر آرایه‌ای استفاده می‌کند؛ برای جزئیات به dcb(8) مراجعه کنید. کلیدها PCP/DEI هستند. مقادیر، اولویت‌های تخصیص‌یافته به ترافیک با PCP/DEI منطبق می‌باشند. مقادیر PCP/DEI برای در بر گرفتن هر دو، به صورت ترکیبی از مقادیر عددی و نمادین نوشته می‌شوند. مقدار PCP همیشه به فرم عددی است، مثلاً 0 .. 7 و مقدار DEI به صورت نمادین، مثلاً 'de' (واجد شرایط دور انداختن یا drop-eligible) به نشانه ۱ بودن بیت DEI، یا 'nd' (فاقد شرایط دور انداختن یا not-drop-eligible) به نشانه ۰ بودن بیت DEI است. در ترکیب، عبارت 2de:1 به معنای نگاشت PCP=2 و DEI=1 به اولویت ۱ تفسیر می‌شود.

اولویت‌بندی ترافیک با DSCP مقدار 0 به اولویت 0، مقدار 24 به 3 و مقدار 48 به 6:

# dcb app add dev eth0 dscp-prio 0:0 24:3 48:6

افزودن یک قانون دیگر برای پیکربندی DSCP مقدار 24 به اولویت 2 و مشاهده نتیجه:

# dcb app add dev eth0 dscp-prio 24:2
# dcb app show dev eth0 dscp-prio
dscp-prio 0:0 CS3:2 CS3:3 CS6:6
# dcb -N app show dev eth0 dscp-prio
dscp-prio 0:0 24:2 24:3 48:6

پیکربندی مجدد جدول به طوری که تنها قانون برای DSCP مقدار 24، تخصیص اولویت 4 باشد:

# dcb app replace dev eth0 dscp-prio 24:4
# dcb app -N show dev eth0 dscp-prio
dscp-prio 0:0 24:4 48:6

پاکسازی تمام قوانین DSCP:

# dcb app flush dev eth0 dscp-prio
# dcb app show dev eth0 dscp-prio
(nothing)

افزودن یک قانون برای نگاشت ترافیک با PCP برابر با 1 و DEI برابر با 0 به اولویت 1 و PCP برابر با 2 و DEI برابر با 1 به اولویت 2:

# dcb app add dev eth0 pcp-prio 1nd:1 2de:2
# dcb app show dev eth0 pcp-prio
pcp-prio 1nd:1 2de:2

در صورت موفقیت‌آمیز بودن دستور وضعیت خروج 0 و در صورت بروز خطا یک عدد صحیح مثبت است.

dcb(8)

گزارش هرگونه باگ را به فهرست پستی توسعه‌دهندگان شبکه <netdev@vger.kernel.org> که توسعه و نگهداری اصلی در آنجا انجام می‌شود ارسال کنید. برای ارسال پیام به این فهرست پستی، نیازی به عضویت در آن ندارید.

Petr Machata <me@pmachata.org>

6 دسامبر 2020 iproute2