RTNETLINK答案:没有此类文件或目录错误

时间:2012-03-01 09:53:24

标签: linux

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行出现

错误。

4 个答案:

答案 0 :(得分:10)

问题在于缺少内核模块和/或内核支持。确保你可以运行

modprobe sch_netem

启用后我还必须重建内核,因为在启用网络仿真后会启用内置的内容。

另请参阅http://forums.fedoraforum.org/showthread.php?t=285408http://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

这在直观上并不明显。