Linux监控虚拟化网桥流量的核心是将其视为普通接口,用iftop、nload等工具直接指定桥名(如virbr0、br0)即可;OVS桥需用ovs-vsctl或ovs-ofctl命令获取端口统计。

Linux 中监控虚拟化网桥(如 br0、virbr0 或 OVS 桥)的实时流量吞吐率,核心思路是:**把网桥当作普通网络接口对待,用标准流量监控工具直接指定其名称即可**。因为 Linux 内核将网桥设备(bridge device)注册为一类独立的网络接口,其收发统计信息完整记录在 /proc/net/dev 中,所有基于该文件或 libpcap 抓包的工具均可支持。
直接使用 iftop 监控网桥接口
iftop 默认只监控物理网卡,但只要明确指定网桥名(如 virbr0),就能实时展示其上所有经过的流量连接:
- 运行
sudo iftop -i virbr0—— 查看默认 libvirt 虚拟网桥流量 - 加参数提升实用性:
sudo iftop -i br0 -n -N -B(禁 DNS、显端口、单位字节) - 若需过滤仅虚拟机通信,可叠加 tcpdump 风格过滤:
sudo iftop -i br0 -f "src net 192.168.100.0/24"
用 nload 快速查看整体吞吐曲线
nload 不依赖抓包,读取的是内核 /proc/net/dev 的原始计数器,对网桥完全兼容,且无需 root 权限(除非接口被权限限制):
- 直接运行
nload virbr0或nload br0,界面立即显示入/出速率曲线 - 单位切换更直观:
nload -u M virbr0(Mbit/s)、nload -u G br0(Gbit/s) - 同时对比宿主机物理口与网桥:
nload eth0 virbr0,便于判断是否瓶颈在桥接层
验证网桥是否被内核正确识别为接口
某些场景下(如未启用 STP、或使用较老内核),网桥可能不显示在 /proc/net/dev 中。先确认其存在性:
- 执行
ip link show type bridge列出所有网桥设备 - 检查
/proc/net/dev是否含对应条目:grep -E "(virbr|br)[0-9]:" /proc/net/dev - 若无输出,说明该网桥当前未启用(
ip link set br0 up)或未绑定任何端口(如 vnetX)
补充:OVS 网桥需额外适配
Open vSwitch 创建的网桥(如 ovs-br0)在 /proc/net/dev 中通常以内部端口(如 ovs-system、br-int)形式出现,而非桥名本身。此时应:
- 用
ovs-vsctl list-br查桥名,再用ovs-ofctl dump-ports查各端口流量 - 或直接监控其底层 datapath 接口:
sudo iftop -i ovs-system - OVS 自带命令更精准:
ovs-vsctl get interface返回精确字节数statistics











