4. 二层网络设计:交换机的角色、STP/RSTP/MSTP协议选择、链路聚合(LACP)配置思路
二层网络,说白了就是咱们局域网(LAN)的基石。交换机在这层扮演的角色,就是快速、准确地转发数据帧。但别小看这个“转发”,里面坑不少。我这些年排查过的网络故障,至少有一半跟二层环路、链路冗余设计不合理有关。
这一章,咱们就聊聊交换机在二层到底该干什么,以及怎么选生成树协议、怎么配链路聚合。嗯,都是实战里绕不开的东西。
4.1 交换机的核心角色:转发、过滤与学习
交换机不是傻傻地广播所有数据。它有三个基本动作:
- 学习:记录每个端口收到的源MAC地址,建立MAC地址表。
- 转发:查MAC表,知道目标MAC在哪个端口,就只往那个端口发。
- 过滤:如果目标MAC和源MAC在同一个端口,直接丢弃,不浪费带宽。
我在项目里见过有人把交换机当Hub用,所有端口都在广播风暴里打转。为什么?因为MAC表被撑爆了,或者环路没处理好。所以,理解交换机的这三个动作,是设计二层网络的第一步。
关键指标:MAC地址表容量、转发延迟、背板带宽。选型时别只看端口数,这些参数决定了交换机能扛多大流量。
4.2 生成树协议:STP、RSTP、MSTP怎么选?
冗余链路是必须的,但环路是致命的。生成树协议(STP)就是用来打破环路的。不过,STP有三个版本,选错了会出大问题。
4.2.1 STP(802.1D)—— 老古董,但得懂
STP通过选举根桥、阻塞冗余端口来消除环路。收敛时间30-50秒。嗯,这个速度在今天看来,简直慢得让人抓狂。我记得有一次,一台核心交换机重启,整个网络等了快一分钟才恢复,业务部门电话都打爆了。
STP的五个状态:Blocking、Listening、Learning、Forwarding、Disabled。其中Listening和Learning各15秒,这就是慢的根源。
4.2.2 RSTP(802.1w)—— 快速收敛,默认首选
RSTP把状态缩减到三个:Discarding、Learning、Forwarding。收敛时间缩短到1-3秒。怎么做到的?它引入了边缘端口(Edge Port)和点到点链路的概念。说白了,就是让交换机“猜”得更准,不用傻等计时器。
我个人习惯,只要不是特别老的设备,一律用RSTP。它兼容STP,但性能好得多。
避坑指南:我曾经在接入层交换机上忘了配边缘端口,结果一台PC插拔网线,整个生成树重新计算,网络抖了3秒。配RSTP时,记得把连接终端的端口设成 spanning-tree portfast(思科)或 stp edged-port(华为)。
4.2.3 MSTP(802.1s)—— 多实例,适合大型网络
MSTP把多个VLAN映射到不同的生成树实例(Instance)里。每个实例独立计算拓扑,可以做负载均衡。比如VLAN 10走链路A,VLAN 20走链路B,互不干扰。
我建议,如果你的网络超过50台交换机,或者有多个VLAN需要做流量分担,直接上MSTP。但要注意,所有交换机上的MSTP域名和修订号必须一致,否则实例会乱套。
| 协议 | 收敛时间 | VLAN支持 | 适用场景 |
|---|---|---|---|
| STP | 30-50秒 | 所有VLAN共用一棵树 | 小型网络、老旧设备 |
| RSTP | 1-3秒 | 所有VLAN共用一棵树 | 中小型网络、标准配置 |
| MSTP | 1-3秒 | 多实例,VLAN可分组 | 大型网络、多VLAN负载均衡 |
注意:MSTP的实例0(IST)必须包含所有VLAN,否则未映射的VLAN会被阻塞。我见过有人忘了配实例0,结果一堆VLAN不通,排查了半天。
4.3 链路聚合(LACP):把多条链路绑成一条
链路聚合,就是把多个物理端口捆绑成一个逻辑端口,增加带宽、提高可靠性。LACP(802.3ad)是标准协议,能自动协商聚合。
4.3.1 配置思路
- 创建聚合组:在交换机上创建一个Eth-Trunk(华为)或Port-Channel(思科)。
- 加入成员端口:把物理端口加进去。注意,成员端口的速率、双工模式、VLAN配置必须一致。
- 启用LACP:设置模式为Active(主动协商)或Passive(被动协商)。两端至少一端是Active。
- 检查状态:确认聚合组Up,成员端口都处于Selected状态。
举个例子,华为交换机上的配置:
interface Eth-Trunk 1
port link-type trunk
port trunk allow-pass vlan 10 20 30
mode lacp-static
#
interface GigabitEthernet0/0/1
eth-trunk 1
interface GigabitEthernet0/0/2
eth-trunk 1
思科交换机上的配置:
interface Port-channel 1
switchport mode trunk
switchport trunk allowed vlan 10,20,30
spanning-tree portfast trunk
#
interface GigabitEthernet0/1
channel-group 1 mode active
interface GigabitEthernet0/2
channel-group 1 mode active
个人经验:我习惯把LACP模式设成Active,这样两端都能主动发协商报文,收敛更快。另外,聚合组里最好用相同型号的板卡和线缆,否则可能出现成员端口状态不一致。
4.3.2 负载均衡算法
链路聚合不是简单的轮询,它根据哈希算法把流量分配到不同成员端口。常见算法有:
- 基于源MAC
- 基于目标MAC
- 基于源IP+目标IP
- 基于源IP+目标IP+端口号
我建议,如果是三层流量,用源IP+目标IP;如果是二层流量,用源MAC+目标MAC。选错了,可能导致某条链路撑爆,其他链路空闲。
4.4 知识结构图:二层网络设计核心逻辑
下面这张图,把交换机角色、生成树协议选择、链路聚合配置串起来了。你想想看,设计一个二层网络,其实就是这三件事:
4.5 实战避坑清单
最后,我把自己踩过的坑整理成清单,你配置的时候对照着检查:
- 环路问题:STP/RSTP/MSTP必须启用,否则广播风暴会瞬间打垮网络。我曾经在测试环境忘了开STP,结果两台交换机互连,整个办公室断网10分钟。
- 端口配置不一致:链路聚合的成员端口,速率、双工、VLAN必须一样。否则LACP协商失败,端口变成独立状态。
- MSTP域名不统一:所有交换机的MSTP域名和修订号必须一致,否则实例计算会出错,导致部分VLAN不通。
- 边缘端口漏配:连接PC、服务器的端口,记得配边缘端口(PortFast),否则设备插拔会触发生成树重新计算。
- 负载均衡算法选错:二层流量用MAC哈希,三层流量用IP哈希。选错了,链路利用率不均。
一句话总结:二层网络设计,就是让交换机高效转发、让生成树打破环路、让链路聚合提升带宽。这三件事做好了,网络就稳了八成。