1. 网桥基础概念与工作原理
网桥作为网络架构中的关键组件,在Linux系统中扮演着重要角色。要真正理解网桥的工作机制,我们需要从数据链路层(OSI第二层)开始剖析。
1.1 网桥与交换机的本质关系
网桥和交换机在功能上几乎可以视为同一种设备,它们都工作在数据链路层,基于MAC地址进行数据帧转发。现代交换机本质上就是多端口的高性能网桥,两者的核心区别主要体现在:
- 端口数量:传统网桥通常只有2-4个端口,而交换机可能具备24/48个甚至更多端口
- 转发方式:早期网桥采用存储转发(store-and-forward),现代交换机还支持直通转发(cut-through)
- 硬件实现:交换机通常采用ASIC芯片进行硬件加速,而软件网桥依赖CPU处理
在Linux系统中,当我们使用ip link命令创建网桥时,实际上是在内核空间建立了一个虚拟的软件交换机。
1.2 MAC地址自学习机制详解
网桥的核心智能来自于其MAC地址学习能力,这个过程值得深入理解:
-
初始状态:新创建的网桥MAC表为空,表现为"泛洪"状态——将接收到的所有未知目标MAC的帧广播到所有端口(除接收端口外)
-
学习阶段:
- 当主机A通过端口1发送帧时,网桥会提取帧中的源MAC地址(假设为MAC_A)
- 内核将记录
MAC_A → 端口1的映射关系,并设置老化计时器(通常300秒)
-
转发决策:
- 如果目标MAC存在于表中,则只转发到对应端口
- 如果目标MAC不存在,则泛洪到所有其他端口
- 如果目标MAC与源MAC位于同一端口,则丢弃该帧(过滤本地流量)
-
表项维护:
- 通过
bridge fdb show可以查看当前MAC表 - 不活跃的表项会在老化时间后自动清除
- 网络拓扑变化时(如端口断开),相关表项会被立即清除
- 通过
实际经验:在虚拟化环境中,如果发现虚拟机间通信延迟突然增大,很可能是MAC表项被错误清除导致的泛洪增加。可以通过
bridge fdb show | grep -i "00:15:5d"专门查看虚拟机的MAC表项状态。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
