记一次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 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM