技术博客

虚拟化网络:VLAN、Linux Bridge 和 OVS 怎么理解?

虚拟化网络排查离不开 VLAN、Bridge、OVS、Bond 和虚拟网卡。本文用运维视角梳理基础概念。

虚拟化网络VLANLinux BridgeOVS

虚拟化网络经常让初学者困惑。虚拟机里看到一块网卡,宿主机上有 tap/vnet 设备,外面还有 Bridge、Bond、VLAN、OVS。它们其实是把虚拟机流量接入物理网络的不同组件。

Linux Bridge 可以理解为宿主机里的软件交换机。虚拟机网卡接到 Bridge,Bridge 再接到物理网卡或 Bond。

VLAN 用于二层隔离。不同业务、环境或租户可以放到不同 VLAN。宿主机交换机端口通常配置 trunk,让多个 VLAN 通过。

OVS 是更强的软件交换机,适合复杂 SDN、隧道、OpenStack Neutron 等场景。它能力强,但排查也更复杂。

Bond 用于链路聚合或冗余。常见模式包括 active-backup、802.3ad 等。选择哪种模式要和交换机配置一致。

排查顺序:

ip link
bridge link
ip addr
ovs-vsctl show
tcpdump -i <interface>

网络不通时,先确认虚拟机 IP、网关、路由,再看宿主机 Bridge/OVS,再看 VLAN 和物理交换机。不要只在虚拟机里反复改配置。

虚拟化网络的核心是路径感:流量从虚拟机出来,经过哪些虚拟设备,最后怎么到物理网络。

一条虚拟机流量路径怎么画

排查网络时,建议把路径画成这样:

VM eth0 -> tap/vnet -> Linux Bridge/OVS -> Bond -> 物理网卡 -> 交换机 -> 网关

每一层都可以单独验证。

虚拟机内部:

ip addr
ip route
ping <gateway>

宿主机侧:

ip link
bridge vlan show
bridge link
ovs-vsctl show

物理网卡:

ethtool <nic>
ethtool -S <nic>

抓包时建议从内到外逐层抓:

tcpdump -i <tap> -nn
tcpdump -i <bridge> -nn
tcpdump -i <bond> -nn

如果虚拟机发出的 ARP 在 tap 能看到,但 bridge 看不到,问题在虚拟交换层。如果 bond 能看到但对端收不到,问题可能在 VLAN、交换机或物理链路。

常见误区

不要把“能 ping 通宿主机”当成业务网络正常。虚拟机流量可能走完全不同的 VLAN、Bridge 或 OVS 流表。