2. 交换机工作原理:转发决策与三种转发模式

大家好,我是老张。今天咱们聊聊交换机最核心的东西——它到底是怎么工作的。

很多人觉得交换机就是个“高级集线器”,插上电就能用。其实不然。你想想看,集线器是傻乎乎的广播,交换机可是个“聪明人”。它得学会认路、记路,还得知道什么时候该喊、什么时候该闭嘴。

2.1 交换机的转发决策

交换机的转发决策,说白了就是四个动作:学习、泛洪、转发、过滤。我刚开始带团队时,有个小伙子问我:“张哥,交换机怎么知道数据该往哪个口送?”我说:“它跟你一样,得先认路。”

2.1.1 MAC地址表学习

交换机刚启动时,MAC地址表是空的。它就像一个刚入职的快递员,谁都不认识。

这时候,如果PC-A(MAC: AA-AA-AA-AA-AA-AA)想给PC-B(MAC: BB-BB-BB-BB-BB-BB)发数据,交换机会怎么做?

  • 它先看数据帧的源MAC地址——哦,是AA-AA-AA-AA-AA-AA
  • 再看这个帧是从哪个端口进来的——假设是GigabitEthernet 0/1
  • 于是它在本子上记一笔:AA-AA-AA-AA-AA-AA → Gi0/1

这就是学习过程。我遇到过不少新手,以为MAC地址表是配置上去的。其实不是,它是交换机自己“偷学”来的。

关键点:交换机只学习源MAC地址,不学习目的MAC地址。目的MAC地址是用来查表的。

2.1.2 泛洪(Flooding)

刚才的例子中,交换机虽然记住了PC-A在Gi0/1,但它不知道PC-B在哪。怎么办?

它会把这个数据帧复制一份,从除了接收端口以外的所有端口发出去。这就是泛洪。

嗯,这里要注意:泛洪不是广播,但效果有点像。广播是发给所有人,泛洪是“我不知道你在哪,所以喊一嗓子问问”。

我曾经在一个大二层网络里排查过一个问题——广播风暴。说白了就是环路导致泛洪无限循环。那叫一个惨,整个网络直接瘫痪。所以后来才有了STP(生成树协议),专门治这个毛病。

2.1.3 转发(Forwarding)

当交换机学会了PC-B在Gi0/2后,再收到发往PC-B的数据帧,它就直接查表,从Gi0/2发出去。这就是转发。

转发是交换机的本职工作。查表、匹配、发送,一气呵成。我习惯把MAC地址表比作“电话本”——你打电话前先翻翻本子,找到号码再拨,而不是挨个试。

2.1.4 过滤(Filtering)

过滤是很多人容易忽略的功能。举个例子:

PC-A和PC-B都在Gi0/1这个端口下(比如接了同一个傻瓜交换机),那PC-A发给PC-B的数据帧,交换机根本不需要转发到其他端口。它直接丢弃(或者说忽略)就行了。

这就是过滤。说白了就是“不关我事,我不掺和”。

小技巧:过滤功能可以大大减少不必要的网络流量。我建议你在部署时,合理规划VLAN,让广播域变小,过滤效果会更好。

2.2 交换机的三种转发模式

讲完了决策逻辑,咱们聊聊转发模式。这个知识点,面试经常问,实际工作中也经常要选。

交换机的转发模式有三种:存储转发、直通转发、碎片隔离。它们的主要区别在于——交换机什么时候开始转发数据。

2.2.1 存储转发(Store-and-Forward)

这是最常用、也是最稳妥的模式。

交换机会先把整个数据帧收完,存在缓冲区里,然后做CRC校验。校验通过了,再查表转发。校验失败?直接扔掉。

我个人的习惯是,在核心层和汇聚层交换机上,一律用存储转发。为什么?因为可靠性第一。你想想看,核心层要是转发了一个坏帧,整个网络都得跟着遭殃。

优点 缺点
错误帧不会扩散 延迟较大(需要收完整个帧)
支持不同速率的端口间转发 缓冲区占用较多

2.2.2 直通转发(Cut-Through)

直通转发就“急脾气”多了。它只要看到数据帧的目的MAC地址(前6个字节),就开始转发。不等你收完,也不做校验。

这样做的好处是延迟极低。我曾在数据中心里用过这种模式,对延迟敏感的业务(比如高频交易)特别合适。

但代价也很明显——它会转发错误帧。我曾经遇到过一个案例,某台交换机的某个端口老是丢包,查了半天,发现是直通转发模式下,对端发了一个坏帧,它照转不误,导致接收端直接丢弃。后来改成存储转发,问题就解决了。

警告:直通转发模式下,如果链路质量不好(误码率高),你会看到很多“幽灵丢包”——明明交换机没丢,但终端就是收不到。因为坏帧被转发出去了,但终端校验失败后丢弃了。

2.2.3 碎片隔离(Fragment-Free)

碎片隔离是前两种模式的“折中方案”。

它会等数据帧的前64个字节收完,再开始转发。为什么是64字节?因为以太网规定,小于64字节的帧属于“碎片帧”(通常是冲突造成的)。

所以碎片隔离能过滤掉大部分冲突碎片,但又比存储转发快一些。我一般只在接入层交换机上考虑用这个模式,而且前提是网络环境比较干净。

模式 转发时机 延迟 错误检测
存储转发 收完整个帧 完整CRC校验
直通转发 读到目的MAC
碎片隔离 读到前64字节 过滤碎片帧

2.3 如何选择转发模式?

这个问题没有标准答案,但我可以给你一些参考:

  • 核心/汇聚层:用存储转发。稳字当头。
  • 接入层(普通办公):存储转发或碎片隔离都行。看交换机支持不支持。
  • 高性能计算/数据中心:如果链路质量好,可以用直通转发。但一定要做好监控。

我记得有一次帮客户做网络改造,他们原来的接入层交换机全是直通转发,结果办公区经常有人抱怨网络卡。我过去一看,链路误码率都到10的负5次方了。改成存储转发后,虽然延迟多了几十微秒,但没人再抱怨了。你想想看,用户感知到的“卡”,往往不是延迟,而是重传和丢包。

总结一下:交换机的转发决策是“学、泛、转、滤”四个动作。转发模式的选择,本质上是延迟与可靠性之间的权衡。没有最好的模式,只有最适合你场景的模式。

好了,这一章就到这里。下一章咱们聊聊VLAN——为什么需要它,以及怎么用。到时候我会分享一个我踩过的坑,保证让你印象深刻。