1. ETH=$1
2. LATENCY=$2
3. LOSS=$3
4. JITTER=$4
5. BW=$5
6. sudo /sbin/tc qdisc del dev eth0 root
7. sudo /sbin/tc qdisc add dev eth0 root handle 1: netem delay $LATENCY $JITTER
8. sudo /sbin/tc qdisc add dev eth0 parent 1:1 handle 10: netem loss $LOSS
9. sudo /sbin/tc qdisc add dev eth0 parent 10:1 handle 20: htb default 1
10.sudo /sbin/tc class add dev eth0 parent 20: classid 0:1 htb rate $BW ceil $BW
11.sudo /sbin/tc qdisc show
The above code results in:
RTNETLINK answers :No such file or directory
error on line 8,9,10 upon execution.
I am running Fedora Core 27. In order to get the module installed, I had to use
That's not intuitively obvious.
Your handles and parent handles don't match. e.g change to:
and it should work.
RTNETLINK answers :No such file or directory
comes for 2 reason.tc qdisc
with wrong optionssch_netem
is missingSo check first
sch_netem
is installed in your machine by using commandlsmod -l
. If it is missing install using commandmodprobe sch_netem
.Even after installing sch_netem, if you get this same error means you are executing with wrong option. For example you can add a impairment on a network interface using
ip qdisc add dev ...
. Similarly for removing this you can doip qdisc delete dev...
. If you are trying to delete an impairment without any prior add means, then also you get this error. And also for wrong options also you get this error.The problem is with missing kernel modules and/or kernel support. Make sure you can run
I also had to rebuild the kernel after I enabled because there's something built-in that is enabled after you enable network emulation.
See also http://forums.fedoraforum.org/showthread.php?t=285408 and http://www.linuxfoundation.org/collaborate/workgroups/networking/netem