更改為 htb 後 qdisc 重置
背景
我有一個執行 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
)。我嘗試將他們的 qdisc 更改為
htb
多次,並發出ip link
以檢查它們是否正在更改。他們每次都在很短的時間後更改為預設的 qdisc。問題
如何將
eno1
和的 qdisc 永久更改enp4s0
為htb
. 是什麼導致它們在短時間內重置為預設的 qdisc?
我會回答我的問題,因為我已經解決了這個問題
發生這種情況的原因可能是 NetworkManager(或其他一些程序)正在控制介面。他們定期重置介面配置。要解決問題:
managed
檢查NetworkManager正在使用哪些介面:
nmcli dev status
如果測試介面在上述命令的輸出中列為
managed
,那麼它們是由 NetworkManager 控制的。否則,它們將被列為unmanaged
。如果它們被列為managed
,那麼我們有兩個選擇:
- **選項 A:**編輯 NetworkManager 配置文件並添加介面以從 NetworkManager 中排除
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
重啟網路管理器:
systemctl stop NetworkManager systemctl start NetworkManager
檢查介面現在是否不受管理:
nmcli dev status
- 選項 B:停止 NetworkManager。
停止目前會話(它將在下次啟動時再次啟動):
systemctl stop NetworkManager
或禁用 NetworkManager(預設情況下它不會在下次啟動時重新啟動):
systemctl disable NetworkManager
如果它們未在 NetworkManager 中列為託管,則它們可能由 dhclient 租用。要檢查:
sudo cat /var/lib/dhcp/dhcpd.leases
如果介面被 dhclient 租用,那麼它將在輸出中列出。如果是,要麼找到dhclient的PID並將其殺死,要麼編輯dhclient的配置文件並排除測試介面。