以下规则通过在数据包中的随机偏移处引入一位错误来损坏 5% 的数据包:
sudo tc qdisc 更改 dev ens8 root netem 损坏 5%
但最近它给了我以下错误:
错误:未找到 Qdisc。要创建指定 NLM_F_CREATE 标志
您能否帮助我或为我提供一些其他方法来模拟数据包损坏?我正在尝试模拟数据包损坏,以查看我的错误检测机制的工作情况。
答案1
初始默认值队列盘由内核设置的特殊句柄0:
不能被修改或引用。它只能被新的覆盖队列盘。使用change
现有的参考资料根 队列盘,但由于这不能是默认内核的 qdisc,所以这是一个错误。
所以第一次这样内特姆 队列盘使用了,add
就应该使用关键字,这可能就是过去某个时候所做的事情。然后,稍后change
可以使用关键字来更改其某些参数(例如损坏百分比),因为通过关键字引用它就root
足够了。
作为快捷方式replace
将尝试change
,如果失败则将执行add
。
所以最后这个命令在第一次和接下来的几次都会起作用:
sudo tc qdisc replace dev ens8 root netem corrupt 5%
要删除这个队列盘这应该完成一次(第二次会失败,因为这将在默认情况下再次完成队列盘由内核安装,这是禁止的):
sudo tc qdisc delete dev ens8 root
add
, change
, replace
(即change
or else add
)和的用法delete
在许多其他内容中遵循类似的模式ip路由2命令。