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=285408和http://www.linuxfoundation.org/collaborate/workgroups/networking/netem
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...。如果您尝试在没有任何事先添加方法的情况下删除损伤,那么您也会收到此错误。对于错误的选项也会出现此错误。
您的句柄和父句柄不匹配。例如更改为:
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)
它应该有效。