Simple action in tc(8) Linux Simple action in tc(8)

tc-simple - اکشن نمونه پایه در کنترل ترافیک


tc ... action simple [ sdata STRING ] [ index INDEX ] [ CONTROL ]

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

این یک نمونه آموزشی است و نه یک اکشن واقعاً کاربردی. با هر بار دسترسی، رشته‌ی STRING داده‌شده را چاپ می‌کند که می‌تواند طولی دلخواه داشته باشد.

رشته واقعی برای چاپ شدن.
مقدار اختیاری شاخص (index) اکشن.
مشخص می‌کند پس از اجرای اکشن، tc چگونه باید فرآیند را ادامه دهد. برای شرح مقادیر ممکن برای CONTROL، صفحه راهنمای tc-actions(8) را ببینید.

مثال زیر باعث می‌شود هسته هر بار که یک بسته ورودی ICMP را روی رابط eth0 مشاهده می‌کند، عبارت «Incoming ICMP!» را اعلام کند. مراحل به شرح زیر است:

1)
افزودن یک نقطه qdisc ورودی (ingress) به eth0
2)
راه‌اندازی یک زنجیره روی ingress رابط eth0 که ابتدا بسته‌های ICMP را تطبیق داده و سپس اکشن simple را برای اعلان فراخوانی می‌کند.
3)
نمایش آمار و نشان دادن اینکه هنوز هیچ بسته‌ای توسط این اکشن دریافت نشده است
4)
ارسال یک بسته پینگ به گوگل (با انتظار دریافت پاسخ)
5)
فیلتر کردن لاگ‌ها با grep برای مشاهده پیام ثبت‌شده
6)
نمایش مجدد آمار و مشاهده افزایش شمارنده به میزان ۱
  $ tc qdisc add dev eth0 ingress
  $ tc filter add dev eth0 parent ffff: protocol ip prio 5 \
	 u32 match ip protocol 1 0xff flowid 1:1 action simple sdata "Incoming ICMP"
  $ sudo tc -s filter ls dev eth0 parent ffff:
   filter protocol ip pref 5 u32
   filter protocol ip pref 5 u32 fh 800: ht divisor 1
   filter protocol ip pref 5 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:1
     match 00010000/00ff0000 at 8
	action order 1: Simple <Incoming ICMP>
	 index 4 ref 1 bind 1 installed 29 sec used 29 sec
	 Action statistics:
		Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
		backlog 0b 0p requeues 0
  $ ping -c 1 www.google.ca
  PING www.google.ca (74.125.225.120) 56(84) bytes of data.
  64 bytes from ord08s08-in-f24.1e100.net (74.125.225.120): icmp_req=1 ttl=53 time=31.3 ms
  --- www.google.ca ping statistics ---
  1 packets transmitted, 1 received, 0% packet loss, time 0ms
  rtt min/avg/max/mdev = 31.316/31.316/31.316/0.000 ms
  $ dmesg | grep simple
  [135354.473951] simple: Incoming ICMP_1
  $ sudo tc/tc -s filter ls dev eth0 parent ffff:
  filter protocol ip pref 5 u32
  filter protocol ip pref 5 u32 fh 800: ht divisor 1
  filter protocol ip pref 5 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:1
    match 00010000/00ff0000 at 8
	action order 1: Simple <Incoming ICMP>
	 index 4 ref 1 bind 1 installed 206 sec used 67 sec
	Action statistics:
	Sent 84 bytes 1 pkt (dropped 0, overlimits 0 requeues 0)
	backlog 0b 0p requeues 0

tc(8), tc-actions(8)

12 Jan 2015 iproute2