| VLAN manipulation action in tc(8) | Linux | VLAN manipulation action in tc(8) |
نام (NAME)
tc-vlan - ماژول دستکاری vlan در کنترل ترافیک لینوکس
خلاصه دستور (SYNOPSIS)
tc ... action vlan { pop | pop_eth | PUSH | MODIFY | PUSH_ETH } [ CONTROL ]
PUSH := push [ protocol VLANPROTO ] [ priority VLANPRIO ] id VLANID
MODIFY := modify [ protocol VLANPROTO ] [ priority VLANPRIO ] id VLANID
PUSH_ETH := push_eth dst_mac LLADDR src_mac LLADDR
CONTROL := { reclassify | pipe | drop | continue | pass | goto chain CHAIN_INDEX }
توضیحات (DESCRIPTION)
اکشن vlan امکان کپسولهسازی (encapsulation) یا کپسولهزدایی (decapsulation) استاندارد 802.1Q را روی بسته فراهم میکند که از طریق حالتهای عملیاتی POP، PUSH و MODIFY مشخص میشود. حالت POP ساده است، زیرا برای حذف بیرونیترین کپسولهسازی VLAN به اطلاعات بیشتری نیاز ندارد. حالتهای PUSH و MODIFY حداقل نیازمند یک VLANID هستند و به کاربر اجازه میدهند به صورت اختیاری VLANPROTO مورد نظر را انتخاب کند.
اکشن vlan همچنین میتواند برای افزودن یا حذف سرآیند پایه اترنت استفاده شود. حالت pop_eth که هیچ آرگومانی دریافت نمیکند، برای حذف سرآیند پایه اترنت به کار میرود. تمام VLANهای موجود باید پیش از این حذف شده باشند. عملیات معکوس، یعنی افزودن سرآیند پایه اترنت، با حالت push_eth انجام میشود. در این حالت، بسته نباید سرآیند MAC داشته باشد (پشتهسازی سرآیندهای MAC مجاز نیست). این حالت بیشتر زمانی مفید است که یک اکشن قبلی کل فریم اصلی را پشت یک سرآیند شبکه کپسولهسازی کرده باشد و پیش از هدایت بسته حاصل، نیاز به افزودن یک سرآیند اترنت به ابتدای آن باشد.
گزینهها (OPTIONS)
- pop
- حالت کپسولهزدایی (decapsulation)؛ هیچ آرگومان دیگری مجاز نیست.
- push
- حالت کپسولهسازی (encapsulation). حداقل به گزینه id نیاز دارد.
- modify
- حالت جایگزینی (replace). تگ موجود 802.1Q جایگزین میشود. حداقل به گزینه id نیاز دارد.
- pop_eth
- حالت کپسولهزدایی سرآیند اترنت. فقط روی یک سرآیند اترنت خالص کار میکند: در صورت وجود VLAN، ابتدا باید حذف شوند.
- push_eth
- حالت کپسولهسازی سرآیند اترنت. مقدار Ethertype به طور خودکار با استفاده از نوع سرآیند شبکه تنظیم میشود. زنجیرهسازی سرآیندهای اترنت مجاز نیست: هنگام استفاده از این حالت بسته نباید هیچ سرآیند MAC داشته باشد. نیازمند گزینههای dst_mac و src_mac است.
- id VLANID
- شناسه VLAN (یا همان VLAN ID) را برای کپسولهسازی مشخص میکند. VLANID یک عدد صحیح ۱۶ بیتی بدون علامت است که قالب آن به صورت خودکار تشخیص داده میشود (برای نمونه پیشوند '0x' برای تفسیر هگزادسیمال و غیره).
- protocol VLANPROTO
- پروتکل VLAN مورد استفاده را انتخاب میکند. در زمان نگارش این مستند، هسته لینوکس فقط 802.1Q یا 802.1ad را میپذیرد.
- priority VLANPRIO
- اولویت VLAN مورد استفاده را انتخاب میکند. عددی دهدهی در بازه 0 تا 7 است.
- dst_mac LLADDR
- آدرس MAC مقصد را تعیین میکند.
- src_mac LLADDR
- آدرس MAC مبدأ را تعیین میکند.
- CONTROL
- نحوه ادامه فرآیند پس از اجرای این اکشن را مشخص میکند.
- reclassify
- دستهبندی را با بازگشت به نخستین فیلتر متصل به والد این اکشن مجدداً آغاز میکند.
- pipe
- عملیات را با اکشن بعدی ادامه میدهد؛ این حالت پیشفرض است.
- drop
- بسته بدون اجرای اکشنهای بعدی دور انداخته میشود.
- continue
- دستهبندی را با فیلتر بعدی موجود در صف ادامه میدهد.
- pass
- بسته را برای پردازش به qdisc فراخواننده بازمیگرداند. این کار به فرآیند دستهبندی پایان میدهد.
مثالها (EXAMPLES)
مثال زیر بستههای ICMP ورودی روی eth0 از مبدأ 10.0.0.2 را درون VLAN با شناسه 123 کپسولهسازی میکند:
#tc qdisc add dev eth0 handle ffff: ingress #tc filter add dev eth0 parent ffff: pref 11 protocol ip \ u32 match ip protocol 1 0xff flowid 1:1 \ match ip src 10.0.0.2 flowid 1:1 \ action vlan push id 123
در اینجا نمونهای از عملکرد pop آورده شده است: بستههای ورودی VLAN روی eth0 کپسولهزدایی شده و سپس فرآیند دستهبندی برای بسته خالص مجدداً آغاز میشود:
#tc qdisc add dev eth0 handle ffff: ingress #tc filter add dev $ETH parent ffff: pref 1 protocol 802.1Q \ u32 match u32 0 0 flowid 1:1 \ action vlan pop reclassify
برای مشاهده مثالی از حالتهای pop_eth و push_eth، صفحه راهنمای tc-mpls(8) را ببینید.
همچنین ببینید (SEE ALSO)
| 12 Jan 2015 | iproute2 |