actions in tc(8) Linux actions in tc(8)

tc-actions - مدیریت اکشنهای کنترل ترافیک (traffic control actions)

tc [ TC_OPTIONS ] actions add | change | replace ACTSPEC

tc [ TC_OPTIONS ] actions get | delete ACTISPEC

tc [ TC_OPTIONS ] actions flush ACTNAMESPEC

tc [ TC_OPTIONS ] actions ls | list ACTNAMESPEC [ ACTFILTER ]


ACTSPEC := action ACTDETAIL [ INDEXSPEC ] [ COOKIESPEC ] [ FLAGS ] [ HWSTATSSPEC ] [ CONTROL ] [ SKIPSPEC ]

ACTISPEC := ACTNAMESPEC INDEXSPEC

ACTNAMESPEC := action ACTNAME

INDEXSPEC := index INDEX

ACTFILTER := since MSTIME

COOKIESPEC := cookie COOKIE

FLAGS := no_percpu

HWSTATSSPEC := hw_stats { immediate | delayed | disabled }

ACTDETAIL := ACTNAME ACTPARAMS

ACTNAME می‌تواند هر نوع اکشن معتبری باشد: gact، mirred، bpf، connmark، csum، police و غیره.

MSTIME زمان سپری‌شده از آخرین به‌روزرسانی.

CONTROL := { reclassify | pipe | drop | continue | ok }

SKIPSPEC := { skip_sw | skip_hw }

TC_OPTIONS این‌ها گزینه‌هایی هستند که مختص به tc می‌باشند و نه تنها این گزینه‌ها. برای اطلاعات بیشتر به tc(8) مراجعه کنید.

شیء actions در tc به کاربر اجازه می‌دهد تا اکشن‌ها (اقدامات) را مستقل از یک دسته‌بندی‌کننده یا فیلتر (classifier) تعریف کند. سپس این اکشن‌ها می‌توانند به یک یا چند فیلتر اختصاص داده شوند، به‌طوری که هر بسته‌ای که با معیارهای دسته‌بندی‌کننده مطابقت داشته باشد، آن اکشن روی آن اعمال خواهد شد.

هر نوع اکشن (مانند mirred، police و غیره) جدول اختصاصی خود را برای ذخیره تمامی اکشن‌های ایجادشده خواهد داشت.

ایجاد یک اکشن جدید در جدول مربوط به آن اکشن.
اعمال تغییرات روی یک اکشن موجود.
نمایش اکشن دارای مقدار اندیس مشخص‌شده. در صورت ترکیب با گزینه -s برای tc، آمار مربوط به آن اکشن را نمایش می‌دهد.
حذف اکشن با مقدار اندیس مشخص‌شده. اگر اکشن قبلاً به یک دسته‌بندی‌کننده مرتبط شده باشد، دسته‌بندی‌کننده حذف نمی‌شود.
فهرست کردن تمام اکشن‌های موجود در جدول مشخص‌شده. در صورت ترکیب با گزینه -s برای tc، آمار تمامی اکشن‌های موجود در جدول مشخص‌شده را نمایش می‌دهد. همچنین در صورت ترکیب با گزینه since امکان فیلتر زمانی بر حسب میلی‌ثانیه از آخرین باری که یک اکشن در مسیر داده (datapath) استفاده شده است را فراهم می‌کند.
حذف تمامی اکشن‌های ذخیره‌شده در جدول مشخص‌شده.

توجه داشته باشید که این گزینه‌ها برای تمامی انواع اکشن در دسترس هستند.

مشخص کردن مقدار اندیس جدول برای یک اکشن. INDEX یک مقدار ۳۲ بیتی است که برای نوع خاص اکشن مورد ارجاع، یکتا می‌باشد.
برای عملیات‌های add، change و replace، مقدار اندیس اختیاری است. هنگام افزودن یک اکشن جدید، مشخص کردن مقدار اندیس، اکشن را به آن اندیس اختصاص می‌دهد مگر اینکه آن مقدار قبلاً اختصاص یافته باشد. حذف مقدار اندیس در عملیات add باعث می‌شود که هسته مقداری را به اکشن جدید اختصاص دهد.
برای عملیات‌های get و delete، مقدار اندیس برای شناسایی اکشن خاصی که باید نمایش داده یا حذف شود، الزامی است.
علاوه بر اکشن مشخص‌شده، بسته منطبق را با مقدار تعیین‌شده توسط COOKIE علامت‌گذاری می‌کند. COOKIE یک مقدار ۱۲۸ بیتی است که تحت هیچ شرایطی توسط هسته تفسیر نخواهد شد. از این رو، می‌توان از آن به عنوان یک مقدار مرتبط‌کننده جهت حفظ وضعیت کاربر استفاده کرد. مقداری که باید ذخیره شود کاملاً دلخواه است و نیاز به قالب خاصی ندارد. این مقدار در داخل خود ساختار اکشن ذخیره می‌شود.
فلگ‌های مختص اکشن. در حال حاضر، تنها فلگ پشتیبانی‌شده no_percpu است که نشان می‌دهد انتظار می‌رود این اکشن حداقل ترافیک نرم‌افزاری را در مسیر داده داشته باشد و نیازی به تخصیص شمارنده‌های آماری با تخصیص‌دهنده percpu ندارد. این گزینه برای استفاده توسط اکشن‌های باراندازی‌شده در سخت‌افزار (hardware-offloaded) در نظر گرفته شده است.
نوع آمار سخت‌افزاری اکشن جدید را مشخص می‌کند. در صورت عدم تعیین، بسته به درایور و منابع آن، هر نوع شمارنده آماری ممکن است استفاده شود. HW_STATS نوع را مشخص می‌کند. هر یک از مقادیر زیر معتبر هستند:
بدین معنی است که در خروجی (dump)، کاربر وضعیت آمار سخت‌افزاری جاری را از دستگاهی که در زمان dump از آن پرس‌وجو شده دریافت می‌کند.
بدین معنی است که در خروجی (dump)، کاربر آمار سخت‌افزاری‌ای را دریافت می‌کند که ممکن است برای مدتی (شاید دو یا سه ثانیه) قدیمی باشد. این حالت زمانی رخ می‌دهد که درایور به‌صورت دوره‌ای به‌روزرسانی‌های آماری را استعلام (poll) می‌کند یا زمانی که به‌روزرسانی آماری ناهمگام را از دستگاه دریافت می‌نماید.
هیچ آمار سخت‌افزاری‌ای در خروجی (dump) در دسترس نخواهد بود.
هنگام دریافت خروجی (dump) از تعداد زیادی اکشن، می‌توان یک فیلتر زمانی میلی‌ثانیه‌ای را با MSTIME مشخص کرد. MSTIME تعداد میلی‌ثانیه‌ها از آخرین باری است که بسته‌ای به اکشن اصابت کرده است. به عنوان مثال، تعیین «since 20000» به معنای دریافت خروجی تمامی اکشن‌هایی است که در ۲۰ ثانیه گذشته بسته‌هایی را دیده‌اند. این گزینه زمانی مفید است که هسته دارای تعداد زیادی اکشن باشد و شما فقط به اکشن‌های اخیراً استفاده‌شده علاقه‌مند باشید.
پارامتر CONTROL مشخص می‌کند که tc پس از اجرای اکشن چگونه باید ادامه دهد. هر یک از موارد زیر معتبر هستند:
شروع مجدد دسته‌بندی با بازگشت به اولین فیلتر متصل به والد اکشن.
ادامه دادن با اکشن بعدی. این حالت کنترل پیش‌فرض است.
دور انداختن بسته بدون اجرای هیچ‌گونه اکشن دیگر.
ادامه دسته‌بندی با فیلتر بعدی.
بازگشت به qdisc فراخواننده برای پردازش بسته، و پایان دادن به دسته‌بندی این بسته.
پارامتر SKIPSPEC مشخص می‌کند که tc هنگام اجرای اکشن چگونه باید عمل کند. هر یک از موارد زیر معتبر هستند:
اکشن توسط نرم‌افزار پردازش نشود. اگر سخت‌افزار از تخلیه بار (offload) برای این اکشن پشتیبانی نکند، عملیات با شکست مواجه خواهد شد.
اکشن توسط سخت‌افزار پردازش نشود.

tc(8), tc-bpf(8), tc-connmark(8), tc-csum(8), tc-ife(8), tc-mirred(8), tc-nat(8), tc-pedit(8), tc-police(8), tc-simple(8), tc-skbedit(8), tc-skbmod(8), tc-tunnel_key(8), tc-vlan(8), tc-xt(8)

1 Aug 2017 iproute2