gact [RAND] [INDEX] Where: ACTION := reclassify | drop | continue | pass | ok RAND := random RANDTYPE := netrand | determ VAL : = value not exceeding 10000 INDEX := index value used ACTION semantics - pass and ok are equivalent to accept - continue allows to restart classification lookup - drop drops packets - reclassify implies continue classification where we left off randomization -------------- At the moment there are only two algorithms. One is deterministic and the other uses internal kernel netrand. Examples: Rules can be installed on both ingress and egress - this shows ingress only tc qdisc add dev eth0 ingress # example 1 tc filter add dev eth0 parent ffff: protocol ip prio 6 u32 match ip src \ 10.0.0.9/32 flowid 1:16 action drop ping -c 20 10.0.0.9 -- filter u32 filter u32 fh 800: ht divisor 1 filter u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:16 (rule hit 32 success 20) match 0a000009/ffffffff at 12 (success 20 ) action order 1: gact action drop random type none pass val 0 index 1 ref 1 bind 1 installed 59 sec used 35 sec Sent 1680 bytes 20 pkts (dropped 20, overlimits 0 ) ---- # example 2 #allow 1 out 10 randomly using the netrand generator tc filter add dev eth0 parent ffff: protocol ip prio 6 u32 match ip src \ 10.0.0.9/32 flowid 1:16 action drop random netrand ok 10 ping -c 20 10.0.0.9 ---- filter protocol ip pref 6 u32 filter protocol ip pref 6 u32 fh 800: ht divisor 1filter protocol ip pref 6 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:16 (rule hit 20 success 20) match 0a000009/ffffffff at 12 (success 20 ) action order 1: gact action drop random type netrand pass val 10 index 5 ref 1 bind 1 installed 49 sec used 25 sec Sent 1680 bytes 20 pkts (dropped 16, overlimits 0 ) -------- #alternative: deterministically accept every second packet tc filter add dev eth0 parent ffff: protocol ip prio 6 u32 match ip src \ 10.0.0.9/32 flowid 1:16 action drop random determ ok 2 ping -c 20 10.0.0.9 tc -s filter show parent ffff: dev eth0 ----- filter protocol ip pref 6 u32 filter protocol ip pref 6 u32 fh 800: ht divisor 1filter protocol ip pref 6 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:16 (rule hit 20 success 20) match 0a000009/ffffffff at 12 (success 20 ) action order 1: gact action drop random type determ pass val 2 index 4 ref 1 bind 1 installed 118 sec used 82 sec Sent 1680 bytes 20 pkts (dropped 10, overlimits 0 ) -----