Tunnel metadata manipulation action in tc(8) Linux Tunnel metadata manipulation action in tc(8)

tc-tunnel_key - دستکاری فراداده‌های تونل در tc


tc ... action tunnel_key { unset | SET }

SET := set src_ip ADDRESS dst_ip ADDRESS id KEY_ID dst_port UDP_PORT tos TOS ttl TTL [ csum | nocsum ]

کنش tunnel_key در ترکیب با یک دستگاه تونل IP اشتراکی، امکان کپسوله‌سازی یا کپسوله‌زدایی تونل IP را روی یک بسته فراهم می‌کند که این عملکرد با حالت‌های UNSET و SET مشخص می‌شود. حالت UNSET اختیاری است - حتی بدون استفاده از آن نیز اطلاعات فراداده پس از اتمام پردازش بسته به‌طور خودکار آزاد خواهد شد. عملکرد UNSET می‌تواند در مواردی به کار رود که ترافیک بین دو تونل هدایت می‌شود؛ جایی که فراداده‌های تونل اول برای کپسوله‌سازی انجام‌شده توسط تونل دوم استفاده خواهد شد. حالت SET نیازمند آدرس IP مبدأ و مقصد ADDRESS و شناسه کلید تونل KEY_ID است که توسط دستگاه اشتراکی تونل IP برای ایجاد سرآیند تونل استفاده خواهد شد. کنش tunnel_key تنها در ترکیب با یک کنش هدایت مجدد mirred redirect به یک دستگاه اشتراکی تونل IP کاربرد دارد که از فراداده استفاده خواهد کرد (برای SET) و فراداده‌های ایجادشده توسط آن را پاک می‌کند (برای UNSET).

لغو فراداده‌های تونل ایجادشده توسط دستگاه تونل IP. این عملکرد الزامی نیست و تنها در برخی سناریوهای خاص (همان‌طور که در بالا توضیح داده شد) استفاده می‌شود.
تنظیم فراداده‌های تونل برای استفاده توسط دستگاه تونل IP. نیازمند گزینه‌های src_ip و dst_ip است. گزینه‌های id، dst_port، geneve_opts، vxlan_opts و erspan_opts اختیاری هستند.
شناسه تونل (به عنوان مثال VNI در تونل VXLAN).
آدرس IP مبدأ در سرآیند بیرونی (IPv4 یا IPv6).
آدرس IP مقصد در سرآیند بیرونی (IPv4 یا IPv6).
درگاه UDP مقصد در سرآیند بیرونی.
گزینه‌های با طول متغیر Geneve. گزینه geneve_opts به قالب CLASS:TYPE:DATA مشخص می‌شود که در آن CLASS به صورت یک مقدار ۱۶ بیتی هگزادسیمال، TYPE به صورت یک مقدار ۸ بیتی هگزادسیمال و DATA به صورت یک مقدار هگزادسیمال با طول متغیر نمایش داده می‌شود. علاوه بر این، می‌توان چندین گزینه را با استفاده از کاما به عنوان جداکننده فهرست کرد.
گزینه‌های فراداده Vxlan. گزینه vxlan_opts به قالب GBP و به صورت یک عدد ۳۲ بیتی تعیین می‌شود. تعیین چندین گزینه پشتیبانی نمی‌شود.
گزینه‌های فراداده Erspan. گزینه erspan_opts به قالب VERSION:INDEX:DIR:HWID مشخص می‌شود که در آن VERSION به صورت یک عدد ۸ بیتی، INDEX به صورت یک عدد ۳۲ بیتی، و DIR و HWID به صورت اعداد ۸ بیتی نمایش داده می‌شوند. تعیین چندین گزینه پشتیبانی نمی‌شود. توجه داشته باشید که هنگامی که VERSION برابر ۱ باشد از INDEX استفاده می‌شود، و هنگامی که VERSION برابر ۲ باشد از DIR و HWID استفاده خواهد شد.
فیلد TOS در سرآیند بیرونی.
فیلد TTL در سرآیند بیرونی.
[no]csum
جمع کنترلی (checksum) بخش UDP بیرونی را کنترل می‌کند. هنگامی که روی csum تنظیم شود (که حالت پیش‌فرض است)، جمع کنترلی UDP بیرونی محاسبه شده و در بسته‌ها گنجانده می‌شود. هنگامی که روی nocsum تنظیم گردد، جمع کنترلی UDP بیرونی صفر خواهد بود. توجه داشته باشید که در صورت استفاده از جمع کنترلی صفر UDP با IPv6، نقطه پایانی دیگر تونل باید به گونه‌ای پیکربندی شده باشد که چنین بسته‌هایی را بپذیرد. در لینوکس، این گزینه معادل udp6zerocsumrx برای رابط تونل VXLAN است.
در صورت استفاده از nocsum با IPv6، مطمئن شوید که دقیقاً می‌دانید چه کاری انجام می‌دهید. جمع کنترلی صفر UDP محافظت ضعیف‌تری در برابر بسته‌های آسیب‌دیده فراهم می‌آورد. برای جزئیات بیشتر به RFC6935 مراجعه کنید.
غیرمجاز کردن قطعه‌بندی IP (یا IP fragmentation).

مثال زیر بسته‌های ICMP ورودی روی رابط eth0 را از طریق تنظیم فراداده‌ها روی VNI 11، نشانی IP مبدأ 11.11.0.1 و نشانی IP مقصد 11.11.0.2 و تغییرمسیر دادن بسته همراه با فراداده به دستگاه vxlan0 (که کپسوله‌سازی واقعی را با استفاده از فراداده انجام می‌دهد) درون یک تونل vxlan کپسوله‌سازی می‌کند:

#tc qdisc add dev eth0 handle ffff: ingress
#tc filter add dev eth0 protocol ip parent ffff: \
  flower \
    ip_proto icmp \
  action tunnel_key set \
    src_ip 11.11.0.1 \
    dst_ip 11.11.0.2 \
    id 11 \
  action mirred egress redirect dev vxlan0

در اینجا مثالی از عملکرد unset آورده شده است: ترافیک ورودی VXLAN با آدرس‌های IP بیرونی و VNI 11 توسط vxlan0 کپسوله‌زدایی شده و پیش از هدایت مجدد به دستگاه tunl1، فراداده‌های آن پاک می‌شوند:

#tc qdisc add dev eth0 handle ffff: ingress
#tc filter add dev vxlan0 protocol ip parent ffff:   flower \
	  enc_src_ip 11.11.0.2 enc_dst_ip 11.11.0.1 enc_key_id 11 	action tunnel_key unset 	action mirred egress redirect dev tunl1

tc(8)

10 Nov 2016 iproute2