第二章:交换机工作原理——转发决策与三种转发方式
各位好,我是老张。今天咱们聊聊交换机最核心的活儿——转发决策。说白了,交换机就是个聪明的快递分拣员,它得知道每个包裹该送到哪个门。
我刚开始接触交换机时,总觉得这玩意儿挺神秘。后来拆了几台设备,抓了几次包,才明白它其实就是个高速的、带智能的转发器。嗯,咱们一步步来。
2.1 MAC地址表学习:交换机的记忆
交换机刚启动时,MAC地址表是空的。它就像一个刚入职的快递员,谁都不认识。那它怎么知道数据该往哪发?
靠学习。我记得第一次在实验室里用抓包软件观察这个过程,特别有意思。
当一台主机发送数据帧时,交换机会做两件事:
- 记录源MAC地址:从哪个端口进来的,就把这个MAC地址和端口号绑定起来
- 检查目的MAC地址:看看表里有没有这个地址的记录
举个例子,主机A(MAC: AA-AA-AA-AA-AA-AA)从端口1发了个帧给主机B。交换机会在表里记下:
MAC地址 端口
AA-AA-AA-AA-AA-AA 1
这就是学习过程。但注意,MAC地址表是有时效的。我见过不少网络故障,就是因为表项老化时间设置不合理。默认一般是300秒,但如果你网络里设备频繁上下线,建议调短一些。
2.2 转发决策:四种基本动作
交换机拿到一个数据帧后,会查MAC地址表。根据查表结果,有四种处理方式:
| 查表结果 | 动作 | 说明 |
|---|---|---|
| 目的MAC在表中,且端口与源端口不同 | 转发 | 直接发往对应端口 |
| 目的MAC在表中,但端口与源端口相同 | 过滤 | 丢弃,因为没必要发回去 |
| 目的MAC不在表中 | 泛洪 | 除了源端口,所有端口都发一份 |
| 目的MAC是广播/组播地址 | 泛洪 | 同上,广播必须全网发 |
你想想看,泛洪其实挺浪费带宽的。所以交换机才要拼命学习,把MAC地址表填满。我见过一些网络,广播风暴就是这么来的——交换机学不过来,就一直泛洪。
核心要点:转发和过滤是交换机的理想状态,泛洪是不得已而为之。网络优化的目标,就是尽量减少泛洪。
2.3 三种转发方式:性能与可靠性的博弈
交换机转发数据帧,不是收到完整帧才处理的。它可以选择不同的时机。这就引出了三种转发方式。
2.3.1 存储转发(Store-and-Forward)
这是最稳妥的方式。交换机把整个帧收完,存在缓冲区里,检查CRC校验,没问题再转发。
优点很明显:错误帧不会传出去。缺点也明显:延迟大。一个1518字节的帧,在百兆环境下,光接收就要花120微秒左右。
我个人习惯在核心层用存储转发。为什么?因为核心层要保证数据质量,宁可慢一点,也不能把坏帧扩散出去。我在某银行数据中心做项目时,所有核心交换机都强制配置成存储转发。
2.3.2 直通转发(Cut-Through)
这个就激进了。交换机只要看到目的MAC地址(前6个字节),就开始转发。延迟极低,但坏帧也会传出去。
直通转发的延迟通常只有几微秒。适合对延迟敏感的场景,比如高频交易。我记得有个客户做量化交易,要求交换机延迟必须低于5微秒,最后只能选直通转发。
2.3.3 无碎片转发(Fragment-Free)
这是折中方案。交换机收到前64个字节后,才开始转发。为什么是64?因为以太网规定,有效帧最小是64字节。小于64字节的,肯定是冲突碎片。
无碎片转发能过滤掉大部分坏帧,延迟又比存储转发低。我一般在接入层用这个方式。既保证了基本的数据质量,又不会太慢。
三种方式的对比,我整理了个表:
| 转发方式 | 延迟 | 错误过滤 | 适用场景 |
|---|---|---|---|
| 存储转发 | 高(完整帧接收) | 完全过滤 | 核心层、WAN连接 |
| 直通转发 | 低(仅看目的MAC) | 不过滤 | 高频交易、HPC |
| 无碎片转发 | 中(前64字节) | 过滤碎片 | 接入层、普通办公 |
2.4 实际配置示例
以思科交换机为例,配置转发方式很简单。但要注意,不是所有型号都支持所有模式。
! 配置存储转发(默认模式)
Switch(config)# interface gigabitEthernet 0/1
Switch(config-if)# switchport
Switch(config-if)# switchport mode access
! 存储转发是默认的,不需要额外配置
! 配置直通转发(部分型号支持)
Switch(config)# interface gigabitEthernet 0/1
Switch(config-if)# switchport
Switch(config-if)# switchport mode access
Switch(config-if)# switchport cut-through
! 查看当前转发模式
Switch# show interfaces gigabitEthernet 0/1
! 输出中会显示 "Store-and-Forward" 或 "Cut-Through"
华为交换机配置类似:
[Switch] interface gigabitEthernet 0/0/1
[Switch-GigabitEthernet0/0/1] port mode cut-through
[Switch-GigabitEthernet0/0/1] display port cut-through
2.5 总结
交换机的转发决策,说白了就是查表、做决定。MAC地址表是基础,学习、泛洪、转发、过滤是四个基本动作。三种转发方式各有优劣,选型时要权衡延迟和可靠性。
嗯,这一章就到这里。下一章咱们聊聊VLAN,那才是真正让交换机变聪明的东西。