2. 交换机的核心功能:MAC地址学习、转发决策(查表)、帧修改与转发

大家好,我是你们的老朋友。今天咱们聊聊交换机最核心的三个动作:学、查、改。说白了,就是MAC地址学习、查表转发、帧修改。这三个动作,构成了交换机所有智能行为的基础。

我记得刚入行那会儿,带我的老工程师跟我说:“你只要搞懂了这三个动作,交换机在你眼里就是透明的。” 当时我不信,后来做了几个项目,发现还真是这么回事。

2.1 MAC地址学习:交换机的“记性”从哪来?

交换机不是天生就知道哪个MAC在哪个端口。它得学。怎么学?很简单——偷听

当一个数据帧从某个端口进来,交换机会把帧的源MAC地址和接收端口号记下来,存到一张表里。这张表,就叫MAC地址表(也叫转发表)。

核心要点:MAC地址学习是动态的。交换机只学习源MAC,不学目的MAC。目的MAC是查表用的。

举个例子。假设PC-A(MAC: AA:AA:AA:AA:AA:AA)从端口1发了个帧给PC-B。交换机一看,哦,源MAC是AA:AA:AA:AA:AA:AA,从端口1进来的。好,记下来。下次再有发往AA:AA:AA:AA:AA:AA的帧,我就知道往端口1扔。

这里有个坑,我踩过。我曾经在一个项目中,发现网络里偶尔出现丢包。查了半天,发现是MAC地址表老化时间设置得太短。交换机学到一个MAC,没几秒就忘了,然后又得重新广播。你想想看,这得多浪费带宽。

避坑指南:MAC地址表的老化时间,默认一般是300秒。如果你的网络里设备频繁上下线,建议适当调长。我曾经把老化时间调到600秒,效果立竿见影。

2.2 转发决策(查表):交换机的大脑

学完了,就得用。当交换机收到一个帧,它会提取目的MAC,然后去MAC地址表里查。查表的结果,决定了这个帧的命运。

查表的结果有三种:

  • 命中(已知单播):表里有这个目的MAC,且对应的端口不是接收端口。直接转发到那个端口。
  • 未命中(未知单播):表里没有这个目的MAC。交换机不知道发给谁,只能广播到所有端口(除了接收端口)。
  • 命中但端口相同:目的MAC对应的端口就是接收端口。这说明目的和源在同一个网段,交换机不需要转发,直接丢弃帧。

我个人习惯把查表过程想象成“快递分拣”。你收到一个包裹,地址是北京的。你查一下分拣表,发现北京在3号传送带。好,扔过去。如果表里没有北京,你就得喊一嗓子:“谁认识北京的?” 这就是广播。

注意:广播是必要的,但也是危险的。过多的广播会导致广播风暴,把交换机CPU打满。我曾经在一个数据中心项目里,因为一个环路导致广播风暴,整个网络瘫痪了10分钟。嗯,从那以后,我对STP(生成树协议)格外上心。

2.3 帧修改与转发:不只是“搬砖”

查完表,交换机不是直接把帧扔出去就完事了。它还得对帧做一些“手脚”。最常见的修改就是重写CRC(循环冗余校验)。

为什么?因为帧在交换机内部处理时,可能会被缓存、修改(比如VLAN标签)。原来的CRC已经不对了。交换机必须重新计算CRC,保证帧的完整性。

另外,如果帧需要穿越不同的VLAN,交换机还得添加或移除VLAN标签。这个动作在Trunk端口上很常见。

一句话总结:交换机不是简单的“搬运工”,它是个“质检员+包装工”。它要确保每个帧出去的时候,都是完好无损、格式正确的。

2.4 三种转发方式:存储转发、直通转发、无碎片转发

好了,核心功能讲完了。接下来聊聊交换机怎么转发帧。不同的转发方式,决定了交换机的延迟可靠性。目前主流的有三种。

转发方式 工作原理 延迟 错误检测 适用场景
存储转发 完整接收整个帧,检查CRC,再转发 高(完整帧时间) 强(丢弃坏帧) 企业网、数据中心(可靠性优先)
直通转发 只接收目的MAC地址(前6字节),立即转发 极低(微秒级) 弱(可能转发坏帧) 高性能计算、低延迟交易
无碎片转发 接收前64字节,检查是否冲突碎片,再转发 中等 中等(过滤碎片) 传统以太网(平衡延迟和可靠性)

我一个个说。

2.4.1 存储转发

这是最“老实”的方式。交换机把整个帧收进来,存到缓冲区,然后检查CRC。如果CRC正确,再查表转发。如果CRC错误,直接丢弃。

优点很明显:可靠性高。坏帧不会在网络里传播。缺点也明显:延迟大。你得等整个帧收完才能转发。对于64字节的小帧还好,对于1518字节的大帧,延迟就比较可观了。

我个人习惯在核心层交换机上用存储转发。为什么?因为核心层承载着整个网络的流量,可靠性是第一位的。延迟多一点,但心里踏实。

2.4.2 直通转发

这个方式就“激进”多了。交换机只要读到帧的前6个字节(目的MAC),就立刻开始转发。不等帧收完,也不检查CRC。

延迟极低,几乎是线速。但风险也大——如果帧在传输过程中出了错,交换机根本不知道,照样转发出去。坏帧会一直传到目的地,浪费带宽。

我建议在接入层或者对延迟极度敏感的场景下使用直通转发。比如高频交易,几微秒的延迟可能就是几百万的损失。但你要做好心理准备,偶尔会有坏帧被转发出去。

小技巧:现在的很多高端交换机支持自适应转发。它们会监控端口的错误率。如果错误率低,自动切换到直通转发;如果错误率高,自动回退到存储转发。这个功能我特别喜欢,省心。

2.4.3 无碎片转发

这个方式是前两者的折中。交换机接收前64字节,然后检查帧是否小于64字节。如果小于64字节,说明是冲突碎片( runt ),直接丢弃。如果大于等于64字节,就认为帧是完整的,开始转发。

为什么是64字节?因为以太网规定,有效帧的最小长度是64字节。小于64字节的帧,99%是冲突导致的碎片。

无碎片转发的延迟比存储转发低,比直通转发高。可靠性也是中等水平。我一般在汇聚层使用这种方式,算是一个不错的平衡点。

2.5 知识体系总览

说了这么多,我画了一张图,帮你把这一章的知识串起来。

交换机核心功能与转发方式 核心功能 MAC地址学习 学习源MAC与端口映射 转发决策(查表) 查目的MAC决定转发端口 帧修改与转发 重写CRC、VLAN标签 三种转发方式 存储转发 完整接收帧 检查CRC 再转发 延迟:高 可靠性:高 直通转发 仅读目的MAC 立即转发 不检查CRC 延迟:极低 可靠性:低 无碎片转发 接收前64字节 检查帧长度 过滤碎片 延迟:中等 可靠性:中等 选择转发方式 = 在延迟与可靠性之间做权衡

这张图把核心功能和转发方式的关系理清楚了。你仔细看,核心功能是交换机必须做的,不管哪种转发方式,都得学MAC、查表、改帧。而转发方式决定了这些动作的执行时机和可靠性。

好了,这一章的内容就到这儿。记住,学、查、改是基础,三种转发方式是选择。搞懂了这些,你再看交换机的数据手册,会发现很多东西都是相通的。


公众号:蓝海资料掘金营,微信deep3321