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

kal*_*gav 11 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
Run Code Online (Sandbox Code Playgroud)

上面的代码导致:

RTNETLINK answers :No such file or directory
Run Code Online (Sandbox Code Playgroud)

执行时第8,9,10行的错误.

Dav*_*sky 10

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

modprobe sch_netem
Run Code Online (Sandbox Code Playgroud)

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

另见http://forums.fedoraforum.org/showthread.php?t=285408http://www.linuxfoundation.org/collaborate/workgroups/networking/netem

  • 顺便说一句,在我的情况下,我也遇到了一个令人沮丧的错误,看起来与这个相同.但当我打算使用`tc qdisc add ...`时,我试图使用`tc qdisc change ...`.错误消息是相同的.去搞清楚. (21认同)
  • 我可以运行modprobe`sch_netem`命令,它不会给出任何错误.还有`lsmod | grep -i sch_netem`返回`sch_netem 17306 0`.但仍然``qdisk change`命令给我错误:`RTNETLINK答案:没有这样的文件或目录` (2认同)

ras*_*hok 6

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...。如果您尝试在没有任何事先添加方法的情况下删除损伤,那么您也会收到此错误。对于错误的选项也会出现此错误。


Kim*_*ais 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
Run Code Online (Sandbox Code Playgroud)

它应该有效。