我有一个运行Ubuntu的系统,它有两个接口eno1和enp4s0。我创建了一个OVS桥,使用:
ovs-vsctl add br s1
我使用以下方法将两个物理接口eno1和enp4s0添加到桥接器中:
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。但是,一段时间后,它会自动更改为它们的默认qdiscs (fq_codel和mq)。
我多次尝试将他们的qdiscs更改为htb,并发出ip link以检查它们是否正在更改。每次短时间后,它们都会更改为默认的qdisc。
如何永久地将eno1和enp4s0的qdiscs更改为htb。是什么原因导致他们在短时间内重置为默认的qdiscs?
发布于 2020-01-12 05:38:00
发生这种情况的原因可能是NetworkManager (或其他一些进程)正在控制接口。它们定期重置接口配置。为解决这一问题:
检查哪些接口由managed由NetworkManager实现:
nmcli dev status
如果上述命令的输出中列出测试接口为managed,则它们由NetworkManager控制。否则,他们将被列为unmanaged。如果它们被列为managed,那么我们有两个选项:
managed中排除在外: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重新启动NetworkManager:
systemctl stop NetworkManager
systemctl start NetworkManager检查接口现在是否是非托管的:
nmcli dev status
停止当前会话(它将在下一次启动时再次启动):
systemctl stop NetworkManager
或者禁用NetworkManager (在下一次引导时,默认情况下它不会再次启动):
systemctl disable NetworkManager
如果它们没有在NetworkManager中作为托管列出,那么它们可能被dhclient租用。为了检查这一点:
sudo cat /var/lib/dhcp/dhcpd.leases
如果该接口是dhclient租用的,那么它将在输出中列出。如果是的话,要么找到dhclient的PID并关闭它,要么编辑dhclient的配置文件并排除测试接口。
https://unix.stackexchange.com/questions/561423
复制相似问题