起因是kvm虛擬機啟動后,無法正常訪問。通過在宿主機執行 dmesg 觀察到如下日志:
[74.509332] device vnet0 entered promiscuous mode
[74.509873] br0: port 2(vnet0) entered blocking state
[74.509878] br0: port 2(vnet0) entered listening state
[84.339252] kvm [50471]: vcpu0 disabled perfctr wrmsr: 0xc2 data 0xffff
[89.532812] br0: port 2(vnet0) entered learning state
[104.567542] br0: port 2(vnet0) entered forwarding state
[104.567556] br0: topology change detected, sending tcn bpdu
原因是我們的機器通過橋接與內網通信。當節點接入網絡時,由於生成樹【stp】的機制,狀態從block->listen->learn->forward 幾個狀態切換。最后一步開始轉發消息。
生成樹是在二層交換網絡必不可少的功能,用好了才能避免網絡環路。
最終的優化措施是縮短收斂時間:
brctl sethello br0 1
brctl setfd br0 2