记一次Linux虚拟机启动后需要等待30秒才能通信的问题

起因是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 

 

posted @ 2020-11-26 09:49  伟成  阅读(1666)  评论(0编辑  收藏  举报