Mirror/redirect action in tc(8) Linux Mirror/redirect action in tc(8)

tc-mirred - کنش آینه‌کردن یا هدایت مجدد بسته‌ها در کنترل ترافیک


tc ... action mirred DIRECTION ACTION [ index INDEX ] TARGET

DIRECTION := { ingress | egress }

TARGET := { DEV | BLOCK }

DEV := dev DEVICENAME

BLOCK := blockid BLOCKID

ACTION := { mirror | redirect }

کنش mirred امکان آینه‌کردن (کپی کردن) یا تغییرمسیر دادن (ربودن یا stealing) بسته‌های دریافتی را فراهم می‌کند. آینه‌کردن همان قابلیتی است که گاهی با نام Switch Port Analyzer (SPAN) شناخته می‌شود و معمولاً برای تحلیل یا اشکال‌زدایی جریان‌های داده به کار می‌رود. هنگام آینه‌کردن به یک بلوک tc، بسته به تمام درگاه‌های موجود در بلوک آینه خواهد شد، به جز درگاهی که بسته از آن وارد شده است (در صورتی که آن درگاه بخشی از بلوک tc باشد). تغییرمسیر دادن مشابه آینه‌کردن است، با این تفاوت که رفتار آن بدین صورت است که بسته به N - 1 درگاه نخست در بلوک آینه می‌شود و به آخرین درگاه تغییرمسیر می‌یابد (توجه داشته باشید به درگاهی که بسته از آن وارد شده است، آینه یا تغییرمسیر انجام نخواهد شد).

جهتی که بسته باید در رابط مقصد ظاهر شود را مشخص می‌کند.
مشخص می‌کند که بسته باید در رابط مقصد یا بلوک کپی شود (mirror) یا منتقل گردد (redirect).
یک شناسه یکتا به این کنش اختصاص می‌دهد، به‌جای اینکه به هسته اجازه دهد یکی را به طور خودکار انتخاب کند. INDEX یک عدد صحیح بدون علامت ۳۲ بیتی بزرگ‌تر از صفر است.
رابط شبکه‌ای که باید تغییرمسیر یا آینه‌کردن به آن انجام شود را مشخص می‌کند.
بلوک tc مقصد برای تغییرمسیر یا آینه‌کردن را مشخص می‌کند.

محدود کردن پهنای باند ورودی در eth0 به 1mbit/s و تغییرمسیر ترافیک مازاد به lo به‌منظور اشکال‌زدایی:

# tc qdisc add dev eth0 handle ffff: clsact
# tc filter add dev eth0 ingress u32 \
	match u32 0 0 \
	action police rate 1mbit burst 100k conform-exceed pipe \
	action mirred egress redirect dev lo

آینه‌کردن تمام بسته‌های ورودی ICMP روی eth0 به یک رابط مجازی dummy برای بررسی با ابزارهایی مانند tcpdump:

# ip link add dummy0 type dummy
# ip link set dummy0 up
# tc qdisc add dev eth0 handle ffff: clsact
# tc filter add dev eth0 ingress protocol ip \
	u32 match ip protocol 1 0xff \
	action mirred egress mirror dev dummy0

با استفاده از یک رابط ifb، ارسال ترافیک ورودی از طریق یک نمونه از sfq امکان‌پذیر است:

# modprobe ifb
# ip link set ifb0 up
# tc qdisc add dev ifb0 root sfq
# tc qdisc add dev eth0 handle ffff: clsact
# tc filter add dev eth0 ingress u32 \
	match u32 0 0 \
	action mirred egress redirect dev ifb0

هسته برای جلوگیری از احتمال ایجاد حلقه‌های تودرتو، تودرتویی را به چهار سطح محدود می‌کند.

از تغییرمسیر دادن از یک دستگاه IFB به دستگاه دیگر خودداری کنید. دستگاه IFB یک مورد بسیار خاص از دستگاه‌های هدایت مجدد بسته است. تغییرمسیر از ifbX->ifbY باعث دور ریخته شدن تمامی بسته‌ها خواهد شد.

tc(8), tc-u32(8)

11 Jan 2015 iproute2