目录
1 virt-net架构核心原理与故障根源
前后端协作模型
- 前端驱动(Guest OS):虚拟机内的 virtio_net.ko 驱动,负责将网络请求封装为virtio协议格式
- 后端设备(Host QEMU):通过TAP设备将数据转发至物理网卡或OVS,支持零拷贝技术
通信桥梁:
基于virtqueue环形缓冲区(vring),包含三个关键组件:
- descriptor table(数据包地址/长度)
- available ring(Guest→Host数据写入区)
- used ring(Host→Guest处理结果区)
常见故障根源
- 驱动兼容性:Guest OS未安装或版本不匹配的virtio驱动(如CentOS 8默认驱动与KVM不兼容)
- 配置错误:虚拟网络桥接错误、TAP设备未绑定、安全组策略阻断
- 资源争用:vring队列阻塞、多虚拟机竞争物理网卡带宽
- 性能瓶颈:中断延迟高、校验和卸载冲突、多队列未启用
2 常见故障场景与排查
2.1 虚拟机网络不通
现象:Guest OS内网卡消失(ip a 无eth0),或能获取IP但无法通信。
排查步骤:
1、查看ko是否加载

驱动未加载:加载驱动包
2、检查主机配置

TAP未绑定:brctl addif docker0 tap0
2.2 虚拟机频繁断连或丢包
现象:网络连接间歇性中断,TCP重传率陡增
排查步骤:
1、检测虚拟化层日志
# Host检查QEMU日志

调整vring缓冲区大小(如下所示):

·2、检查物理网卡状态:
![]()
物理网卡丢包:升级驱动或启用RSS(是否支持多队列,使用以下命令查询与设置)

2.3 网络性能差(高延迟/低吞吐)
现象:Ping延迟 >1ms,或TCP吞吐量下降50%。
排查步骤:
检查vring队列状态

队列饱和度 >80%,启用多队列并分配更多CPU(如下所示):

Guest内关闭冲突的卸载功能:
![]()
尝试使用大页内存


464

被折叠的 条评论
为什么被折叠?



