IFE action in tc(8) Linux IFE action in tc(8)

tc-ife - کپسوله‌سازی یا استخراج فراداده


tc ... action ife DIRECTION [ ACTION ] [ dst DMAC ] [ src SMAC ] [ type TYPE ] [ CONTROL ] [ index INDEX ]

DIRECTION := { decode | encode }

ACTION := { allow ATTR | use ATTR value }

ATTR := { mark | prio | tcindex }

CONTROL := { reclassify | use | pipe | drop | continue | ok | goto chain CHAIN_INDEX }

کنش ife به طرف فرستنده اجازه می‌دهد فراداده‌های اختیاری را کپسوله‌سازی کند که سپس توسط طرف گیرنده استخراج (decapsulate) می‌شوند. فرستنده در حالت کدگذاری (encode) و گیرنده در حالت رمزگشایی (decode) اجرا می‌شود. هر دو سمت فرستنده و گیرنده باید یک نوع اترنت (ethertype) یکسان را مشخص کنند. در آینده، ممکن است یک نوع اترنت ثبت‌شده به عنوان پیش‌فرض در دسترس قرار گیرد.

برای سمت گیرنده؛ در صورت تطابق بسته، فراداده را رمزگشایی می‌کند.
برای سمت فرستنده؛ در صورت تطابق بسته، فراداده مشخص‌شده را کدگذاری می‌کند.
فقط برای جهت کدگذاری؛ امکان کدگذاری فراداده مشخص‌شده را فراهم می‌کند.
فقط برای جهت کدگذاری؛ کدگذاری ایستا برای فراداده مشخص‌شده را اعمال می‌کند.
u32_value ] مقداری که باید برای علامت بسته (skb mark) تنظیم شود. مقدار u32 تنها زمانی لازم است که use مشخص شده باشد. اگر مقدار mark صفر باشد، کدگذاری نخواهد شد و در عوض، آمار «overlimits» افزایش یافته و کنش CONTROL انجام می‌شود.
u32_value ] مقداری که باید برای اولویت در ساختار skb تنظیم شود. مقدار u32 تنها زمانی لازم است که use مشخص شده باشد.
u16_value ] مقداری که باید برای شاخص کنترل ترافیک در ساختار skb تنظیم شود. مقدار u16 تنها زمانی لازم است که use مشخص شده باشد.
آدرس اختیاری شش بایتی MAC مقصد یا مبدأ برای کدگذاری.
نوع اترنت (ethertype) اختیاری ۱۶ بیتی برای کدگذاری. در صورت عدم تعیین، مقدار 0xED3E استفاده خواهد شد.
کنشی که باید پس از یک کدگذاری/رمزگشایی انجام شود.
اختصاص یک شناسه یکتا به این کنش به جای واگذاری انتخاب خودکار آن به هسته سیستم‌عامل. INDEX یک عدد صحیح بدون علامت ۳۲ بیتی بزرگ‌تر از صفر است.

در سمت گیرنده، بسته‌های دارای نوع اترنت 0xdead را تطبیق داده و دسته‌بندی را مجدداً آغاز کنید تا در قاعده بعدی با اولویت ۳، با پروتکل ICMP تطبیق داده شود:

# tc qdisc add dev eth0 handle ffff: ingress
# tc filter add dev eth0 parent ffff: prio 2 protocol 0xdead 	u32 match u32 0 0 flowid 1:1 	action ife decode reclassify
# tc filter add dev eth0 parent ffff: prio 3 protocol ip 	u32 match ip protocol 0xff flowid 1:1 	action continue

تطبیق با علامت skb برابر با ۱۷:

# tc filter add dev eth0 parent ffff: prio 4 protocol ip 	handle 0x11 fw flowid 1:1 	action ok

پیکربندی سمت فرستنده برای کدگذاری فیلترهای فوق. استفاده از آدرس IP مقصد 192.168.122.237/24، سپس برچسب‌گذاری با علامت skb برابر با ۱۷ در مبنای ۱۰. کدگذاری بسته با نوع اترنت 0xdead، افزودن skb->mark به فهرست مجاز فراداده‌های ارسالی، و بازنویسی آدرس MAC مقصد به 02:15:15:15:15:15.

# tc qdisc add dev eth0 root handle 1: prio
# tc filter add dev eth0 parent 1: protocol ip prio 10 u32 	match ip dst 192.168.122.237/24 	match ip protocol 1 0xff 	flowid 1:2 	action skbedit mark 17 	action ife encode 	type 0xDEAD 	allow mark 	dst 02:15:15:15:15:15

tc(8), tc-u32(8)

22 Apr 2016 iproute2