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
上面的代码导致:
RTNETLINK answers :No such file or directory
执行时第8,9,10行出现错误。
答案 0 :(得分:10)
问题在于缺少内核模块和/或内核支持。确保你可以运行
modprobe sch_netem
启用后我还必须重建内核,因为在启用网络仿真后会启用内置的内容。
另请参阅http://forums.fedoraforum.org/showthread.php?t=285408和http://www.linuxfoundation.org/collaborate/workgroups/networking/netem
答案 1 :(得分:2)
您的句柄和父句柄不匹配。例如改为:
7. sudo /sbin/tc qdisc add dev eth0 root handle 1:1 netem delay $LATENCY $JITTER
8. sudo /sbin/tc qdisc add dev eth0 parent 1:1 handle 10:1 netem loss $LOSS
9. sudo /sbin/tc qdisc add dev eth0 parent 10:1 handle 20:1 htb default 1
10.sudo /sbin/tc class add dev eth0 parent 20:1 classid 0:1 htb rate $BW ceil $BW
它应该有用。
答案 2 :(得分:1)
RTNETLINK answers :No such file or directory
有两个原因。
tc qdisc
sch_netem
缺少首先使用命令sch_netem
检查计算机中是否安装了lsmod -l
。如果使用命令modprobe sch_netem
缺少安装。
即使安装了sch_netem,如果你得到同样的错误意味着你正在执行错误的选项。例如,您可以使用ip qdisc add dev ...
在网络接口上添加损伤。同样,为了删除它,您可以执行ip qdisc delete dev...
。如果您尝试在没有任何先前添加方法的情况下删除损伤,那么您也会收到此错误。而且对于错误的选项,您也会收到此错误。
答案 3 :(得分:0)
我正在运行Fedora Core27。为了安装该模块,我不得不使用
sudo dnf install install kernel-modules-extra
这在直观上并不明显。