I have an openwrt router and I want to shape incoming traffic in order to classify all the traffic addressed to a certain IP address in my home network as low priority. For that purpose I want to redirect all traffic incoming to the eth1 interface, the one connected to the DSL modem, to an IFB device where I will do the shaping. These are the details of my system:

Linux OpenWrt #7 Fri Jul 15 02:43:34 CEST 2011 mips GNU/Linux

Here is the script I am using where the last instruction is failing:

# Variable definition

# Configuring the ifbX interface
insmod ifb
insmod sch_htb
insmod sch_ingress
ifconfig $IFB up

# Adding the HTB scheduler to the ingress interface
$TC qdisc add dev $IFB root handle 1: htb default 11

# Set the maximum bandwidth that each priority class can get, and the maximum borrowing they can do
$TC class add dev $IFB parent 1:1 classid 1:10 htb rate $LP_RATE ceil $DL_RATE
$TC class add dev $IFB parent 1:1 classid 1:11 htb rate $HP_RATE ceil $DL_RATE

# Redirect all ingress traffic arriving at $ETH to $IFB
$TC qdisc del dev $ETH ingress 2>/dev/null
$TC qdisc add dev $ETH ingress
$TC filter add dev $ETH parent ffff: protocol ip prio 1 u32 \
   match u32 0 0 flowid 1:1 \
   action mirred egress redirect dev $IFB

The last instruction fails with:

Action 4 device ifb1 ifindex 9
RTNETLINK answers: No such file or directory
We have an error talking to the kernel

Does anyone know what am I doing wrong?


Try flowid 1:10 or flowid 1:11. The point of filtering is to choose which class to send the packet to, so don't send to the parent!

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.