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

dcb-rewr - پیکربندی بازنویسی اولویت به کدپوینت در dcb


dcb [ OPTIONS ] rewr { COMMAND | help }

dcb rewr { show | flush } dev DEV [ prio-dscp ] [ prio-pcp ]

dcb rewr { add | del | replace } dev DEV [ prio-dscp DSCP-MAP ] [ prio-pcp PCP-MAP ]

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

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

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

PCP-MAPPING := PRIO:PCP

DSCP := { 0 .. 63 }

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

PRIO := { 0 .. 7 }

دستور dcb rewr برای پیکربندی جدول بازنویسی (rewrite table) در زیرسیستم DCB (کوتاه‌نوشت Data Center Bridging) به کار می‌رود. جدول بازنویسی برای بازنویسی مقادیر مشخصی در سرآیندهای بسته بر اساس اولویت بسته استفاده می‌شود.

مدخل‌های بازنویسی DCB، همانند مدخل‌های DCB APP، سه‌گانه‌هایی (3-tuples) متشکل از انتخاب‌گر (selector)، شناسه پروتکل (protocol ID) و اولویت (priority) هستند. انتخاب‌گر یک شمارش است که یکی از فضاهای نام اولویت‌بندی را مشخص می‌کند. در حال حاضر، فقط فضاهای نام انتخاب‌گر DSCP و PCP توسط dcb rewr پشتیبانی می‌شوند.

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

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

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

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

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

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

افزودن یک قانون برای بازنویسی DSCP به 25 برای ترافیک با اولویت 3:

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

پیکربندی مجدد جدول به طوری که فقط یک قانون برای بازنویسی ترافیک با اولویت 3 وجود داشته باشد:

# dcb rewr replace dev eth0 prio-dscp 3:26
# dcb rewr -N show dev eth0 prio-dscp
prio-dscp 0:0 3:26 6:48

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

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

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

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

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

dcb(8)، dcb-app(8)، dcb-apptrust(8)

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

Daniel Machon <daniel.machon@microchip.com>

15 مه 2023 iproute2