尝试在 Linux 终端 (netem) 中损坏数据包时出错

尝试在 Linux 终端 (netem) 中损坏数据包时出错

以下规则通过在数据包中的随机偏移处引入一位错误来损坏 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(即changeor else add)和的用法delete在许多其他内容中遵循类似的模式ip路由2命令。

相关内容