更改为 htb 后 qdisc 重置

更改为 htb 后 qdisc 重置

背景

我有一个运行 Ubuntu 的系统,它有两个界面eno1enp4s0.我使用以下命令创建了 OVS 桥:

ovs-vsctl add br s1

我使用以下命令将两个物理接口添加eno1enp4s0网桥中:

ovs-vsctl add-port s1 eno1

ovs-vsctl add-port s1 enp4s0

我验证了端口是使用以下命令添加的:

ovs-ofctl show s1

要检查附加到两个接口的排队规则,请使用:

ip link

附加到接口的排队规则是:

eno1: fq_codel

enp4s0: mq

我想将附加到它们的 qdisc 更改为htb.所以我使用以下方法在两个界面上更改了它们:

tc qdisc add dev eno1 root handle 1: htb default 12

tc qdisc add dev enp4s0 root handle 1: htb default 12

问题

在发出将两个接口的 qdisc 更改为 的命令后htb,我使用 验证了它是否确实已更改ip link。最初,他们都htb按照我的意愿进行了报告。但是,一段时间后,它会自动更改为其默认 qdisc(fq_codelmq)。

htb我尝试多次更改它们的 qdisc ,并发出ip link检查它们是否正在更改。他们每次都会在很短的时间后更改为默认的 qdisc。

问题

eno1如何将和的 qdisc 永久更改enp4s0htb.是什么导致它们在短时间内重置为默认 qdisc?

答案1

既然我已经解决了问题,我会回答我的问题

发生这种情况是因为 NetworkManager(或其他进程)可能正在控制该接口。他们定期重置接口配置。要解决这个问题:

检查managedNetworkManager 正在使用哪些接口:

nmcli dev status

如果测试接口在上述命令的输出中列为managed,则它们由 NetworkManager 控制。否则它们将被列为unmanaged.如果它们被列为managed,那么我们有两个选择:

  • 选项A:编辑 NetworkManager 配置文件并添加要从managedNetworkManager 中排除的接口:

sudo nano /etc/NetworkManager/NetworkManager.conf 将以下行添加到conf文件中:

[keyfile]
unmanaged-devices=mac:00:11:22:33:44:55;mac:66:77:88:99:00:aa

将 mac 地址替换为测试接口的 mac 地址。在较新版本的 NetworkManager 上,我们可以使用接口名称来执行此操作:

[keyfile]
unmanaged-devices=interface-name:eno1,interface-name:enp4s0

重新启动网络管理器:

systemctl stop NetworkManager
systemctl start NetworkManager

检查接口现在是否不受管理:

nmcli dev status

  • 选项B:停止网络管理器。

停止当前会话(它将在下次启动时再次启动):

systemctl stop NetworkManager

或者禁用 NetworkManager(下次启动时默认情况下不会再次启动):

systemctl disable NetworkManager


如果它们未在 NetworkManager 中列为受管理,则它们可能由 dhclient 租用。要检查:

sudo cat /var/lib/dhcp/dhcpd.leases

如果 dhclient 正在租用该接口,则它将在输出中列出。如果是,要么找到 dhclient 的 PID 并将其杀死,要么编辑 dhclient 的配置文件并排除测试接口。

相关内容