虚拟化网络:VLAN、Linux Bridge 和 OVS 怎么理解?
虚拟化网络排查离不开 VLAN、Bridge、OVS、Bond 和虚拟网卡。本文用运维视角梳理基础概念。
虚拟化网络经常让初学者困惑。虚拟机里看到一块网卡,宿主机上有 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、交换机或物理链路。
