
前阵子帮一家做外贸的客户整理机柜两台Dell N3048堆在机柜最底层通电、插光纤、跑业务看起来一切正常。可等到我打开后台发现VLAN没规划、端口全是默认配置、STP还跑在老的802.1D上就知道这是个迟早要出事的网络。后来在一次拔插光纤的例行维护中整网ping值从1ms飙到500ms核心交换机日志里全是拓扑变化告警问题就出在STP没有做任何优化。Dell网络交换机的基本配置和STP优化看起来是两个独立的活儿实际上一套做下来才能真正稳。这篇文章不绕弯子直接讲怎么给Dell交换机做开局配置以及把STP从默认状态调成一个能快速收敛、抗环路、不怕私接小交换机的状态。适合正在看管PowerConnect/N系列/S系列交换机的运维兄弟。1. 先别急着敲命令确认你的Dell交换机在跑哪套CLI1.1 你手里的Dell可能不是你以为的DellDell的交换机产品线很乱。很多人一听到Dell交换机就默认它是类似Cisco的命令行实际上Dell这些年经历了PowerConnect、Force10、Dell EMC Networking几个阶段旗下至少有三套风格完全不同的CLI。老PowerConnect系列比如3524、5524、6224跑的是PowerConnect固件命令风格和Cisco IOS非常接近接口命名是Gi1/0/1、Te1/0/1这样的形式。N系列N1524、N2048、N3048、N4064有Web界面也有一整套CLI支持标准模式的命令风格大部分命令和Cisco类似但细节上仍有不少差异。S系列和原来的Force10S3048、S4048、S5148跑FTOS或者OS10命令风格和PowerConnect/N系列差得很远接口叫TenGigabitEthernet 1/1、FortyGigE 1/1配置方式更像传统机箱式设备。还有面向数据中心的Z系列一般中小企业接触不到。所以拿到设备的第一件事不是打开SecureCRT就敲命令而是先搞清楚它到底属于哪一代产品、跑的是什么系统。1.2 怎么快速确认当前模式和固件版本最简单的确认方式show version show system这两条命令在几乎所有Dell交换机上都能跑。输出里会带硬件型号、固件版本、系统运行时间。固件版本末尾的字母能间接提示系统家族比如带P或PC的多半是PowerConnect固件带FTOS的就是Force10那套。第二个方法看提示符。PowerConnect和N系列的提示符通常是console、console#输入configure之后变成console(config)#FTOS的提示符往往直接是DELL、DELL#配置视图下是DELL(config)#。看到提示符起码你心里有个底。还有一个办法是看命令风格。老PowerConnect支持show interfaces status这类命令FTOS里对应的是show interfaces加一堆参数。如果你敲show running-config之后输出里全是interface TenGigabitEthernet 1/1那就是FTOS/OS10。1.3 准备工作Console线、SSH、TFTP不管是哪种系统第一次上手基本都要靠Console口。我习惯直接用USB转Console线串口参数是9600、8、N、1也就是波特率9600、数据位8、无校验、停止位1这是Dell设备最常见的默认值。如果连不上先检查是不是转接线驱动没装好或者波特率设成了115200。登录进去之后首先要看一件事设备上有没有已存在的配置。用show running-config抓一遍有配置文件就先备份到TFTP上。Dell交换机支持TFTP上传下载配置命令大致是copy running-config tftp://192.168.1.100/switch.cfg如果你不确认TFTP地址也可以用show running-config把输出全选复制到本地文本虽然笨一点但至少留了底。备份这一步请务必做后面改STP、调VLAN一旦出问题还能滚回去。2. 开局配置给交换机一个能远程管理的身份2.1 管理IP到底配在哪SVI还是带外管理口新交换机出厂时一般有一个默认IP但我不推荐依赖它因为你不知道二手设备被上一任改成什么了。最稳妥的路径是Console进去手动配管理地址。管理地址可以放在VLAN1的SVI上也可以放在专门的带外管理口上。中小网络里绝大多数人把管理IP放到VLAN1因为这最省事。N系列上配置VLAN1管理地址的命令类似这样console# configure console(config)# interface vlan 1 console(config-if-vlan1)# ip address 192.168.10.2 255.255.255.0 console(config-if-vlan1)# no shutdown console(config-if-vlan1)# exit console(config)# ip default-gateway 192.168.10.1这段配置的意思是给VLAN1这个三层接口配上IP然后把默认网关指向核心路由器。需要注意VLAN1在Dell交换机上默认存在如果这个交换机被用来跑业务我不建议把管理地址和业务地址一起塞进VLAN1最好是单独划一个管理VLAN让管理流量和业务流量分开。管理VLAN里的端口属于管理网段其他业务VLAN的流量到达不了管理口安全性会好很多。S系列/FTOS上配置管理地址的路径不太一样。很多S系列有一个专门的Management接口可以这样配DELL(config)# interface Management 1/1 DELL(config-if-ma-1/1)# ip address 192.168.10.2/24 DELL(config-if-ma-1/1)# no shutdown DELL(config-if-ma-1/1)# exit DELL(config)# ip route 0.0.0.0/0 192.168.10.1所以我反复说命令一定要看设备实际情况来定。2.2 用户、密码和远程登录管理IP配好之后下一步是让这台设备能被安全地远程管理。Dell交换机默认允许Console口无密码登录如果直接开放Telnet等于把设备裸奔在网络上。务必先把用户名和密码配上然后开启SSH关掉Telnet。N系列上的典型配置console(config)# username admin password 0 yourpassword privilege 15 console(config)# crypto key generate rsa console(config)# ip ssh server enable console(config)# ip telnet server disablecrypto key generate rsa这步是生成SSH所需的RSA密钥不同型号密钥长度要求略有差异生成过程中它会问密钥长度一般1024位起步2048更稳妥。生成完之后SSH服务才能正常起来。SNMP也是被忽略得比较多的点。如果你后续要用监控系统盯交换机就需要配SNMPconsole(config)# snmp-server community public ro console(config)# snmp-server community private rw这里的public是只读团体名private是读写团体名生产环境里不要用这两个默认词换成一段别人猜不到的组合。只读团体名给监控系统用读写团体名尽量别给出去因为一旦被别人拿到就能直接改配置。2.3 别忘保存配置和固件版本检查所有配置改完之后记得保存。Dell交换机的保存命令通常是console# copy running-config startup-config有些型号也支持write memory效果一样。很多运维人员改完配置直接关电脑设备一重启配置全丢这种事我见过不止一次。固件版本也要顺手检查一下。登录设备之后用show version看一眼如果版本太老优化STP的时候可能会碰到命令不支持或者Bug。Dell官网每个型号都提供固件下载升级方法一般是把固件放到TFTP服务器上然后在交换机上执行console# copy tftp://192.168.1.100/N3048_6.8.13.6.stk nvram:升级之前查一下当前版本别跨太多大版本直接跳有些型号需要按顺序升级。升级过程中不要断电不要拔Console线等它自己重启完成。3. VLAN和接口配置把物理端口规划进业务VLAN3.1 创建VLAN和划分端口管理地址配好交换机还只是能管离能用还差一步。接下来是VLAN规划。这里的思路先创建VLAN再把端口切到对应VLAN最后配Trunk链路。N系列上创建VLAN的命令是console(config)# vlan 10 console(config-vlan10)# name servers console(config-vlan10)# exit端口做成Access口的配置console(config)# interface Te1/0/1 console(config-if)# description Server-A console(config-if)# switchport mode access console(config-if)# switchport access vlan 10 console(config-if)# no shutdown如果是一台上联到核心的交换机上联口通常要配成Trunkconsole(config)# interface Te1/0/24 console(config-if)# switchport mode trunk console(config-if)# switchport trunk allowed vlan add 10,20,30 console(config-if)# switchport trunk native vlan 99 console(config-if)# exit注意Trunk上有一个Native VLAN的概念默认是VLAN1。在跨交换机Trunk上我习惯把Native VLAN从1改成99或者其他专门的管理VLAN同时两边要一致。如果两边Native VLAN对不上Dell会报Trunk配置不一致STP也可能出现怪异行为。3.2 端口状态检查与未用端口处置VLAN和端口配置完之后用show interfaces status检查端口状态重点关注State列在用的端口应该是Connected没用到的端口第一次上电时往往也是Connected因为设备默认端口是启用的。未使用的端口建议全部shutdown掉。原因有两个一是防止有人把笔记本插到空闲端口上直接进到管理网络二是一旦空闲端口被误插成环STP虽然能兜底但没必要让风险靠近。批量关端口可以用interface range比如console(config)# interface range Te1/0/1-12 console(config-if)# shutdown3.3 基础链路健康检查在做STP优化之前最好先把物理层扫一遍。用show interfaces counters看看端口上有没有持续增长的CRC错误、Runts、Collisions。这些错误如果存在STP优化做得再好也没用因为底层链路本身就不稳。我曾经在排查一个STP老是收敛的问题时发现根因是一根劣质网线每隔几分钟就产生大量CRC错误端口被反复Up/DownSTP跟着反复收敛。换掉网线之后所有告警都消失了。所以别一上来就怀疑STP配置先确认物理链路是干净的。4. STP为什么重要以及Dell默认状态下可能埋的雷4.1 环路不是环形的拓扑才叫环路很多非网络专业的人以为STP只在交换机物理组成环形时才有用这是误解。只要网络里存在两条及以上可达同一目的地的路径就可能出现二层环路。比如两台交换机之间做了两条Trunk做冗余但没启用聚合协议墙上的信息面板被人接了一个小交换机扩展端口无线AP的LAN口连到了交换机上同时AP又通过别的链路回了交换机。环路一旦形成广播帧会在链路之间无限循环很快打满所有端口带宽交换机CPU飙升整个网络卡死。STP的作用就是在这些路径里选出唯一的转发路径把其他路径阻塞掉同时又保留冗余能力。4.2 Dell交换机的STP默认行为Dell交换机出厂时不同型号对STP的默认处理不完全一样。有些型号默认全局已经启用STP有些型号的某些端口默认属于STP参与端口但还存在不少设备默认把STP跑在老式802.1D上。默认状态下最有隐患的三件事根桥优先级默认是32768所有交换机一个值最后谁当根桥完全看MAC地址结果可能让根桥落在接入层或者一台性能很差的旧设备上所有端口默认都参与STP包括接PC、接打印机的终端口。PC插上之后端口要经历Listening、Learning两个阶段总共大约30到50秒才能转发数据默认的STP没有BPDU Guard、没有Portfast、没有Root Guard任何端口收到BPDU都可能改变整个网络的转发路径。默认根桥落到接入交换机上最直接的后果是核心到其他接入交换机的路径变成绕路。数据包从核心出去先到接入A再经接入A的普通口绕到接入B最后才到服务器。延迟高了不说如果中间还有一个端口是阻塞状态整条路径可能根本不通。4.3 一个真实的默认STP事故有一次去给客户做巡检他们的网络有两台核心加六台接入全是Dell。表面上看业务正常但偶尔晚上会卡顿。我抓了核心交换机的配置发现STP跑的是默认802.1D根桥优先级全部32768。通过show spanning-tree看到根桥居然是一台放在三楼角落的PowerConnect 2824因为那台设备的MAC地址最小。核心交换机反而把去服务器的端口阻塞掉了所有跨VLAN流量都绕了半圈。后续我把核心优先级改成4096把根桥抢回来整个网络的延迟立刻下降了同时收敛时链路切换时间也短了很多。这种案例不是个别现象只要是多台Dell交换机组网很少有人会刻意去把STP调优。默认STP能用但绝对称不上好用。5. STP优化实战目标是把收敛时间从秒级压到毫秒级5.1 模式选择RSTP、PVST还是MSTPSTP优化第一步是选定生成树模式。Dell交换机常见支持以下几种模式历史背景收敛速度实例数量适合场景STP (802.1D)最老30-50秒全局1个已经很少值得用RSTP (802.1w)STP改进秒级到毫秒级全局1个中小型网络首选PVST / Rapid-PVSTCisco私有思路被多数厂商支持秒级到毫秒级每个VLAN一个多VLAN想按VLAN做负载均衡MSTP (802.1s)多实例秒级到毫秒级可配置多个实例大规模多VLAN网络对绝大多数中小企业我推荐直接上RSTP或PVST。RSTP配置最简单所有VLAN共用一棵树链路冗余够用。PVST能按VLAN走不同路径适合有多个VLAN且希望不同VLAN走不同上联口的场景但配置复杂度更高对底层设备性能也有一点要求。MSTP我不建议一上来就上除非你明确知道它要解决什么问题。MSTP的优势在于把多个VLAN映射到少数的几个实例减少协议开销还能做负载均衡。但在几十台交换机以内的网络里RSTP或PVST完全够用MSTP配错反而容易让整网VLAN的转发路径变得难以排查。N系列上切模式的命令大致如下console(config)# spanning-tree mode rstp如果是PVST命令可能是spanning-tree mode pvst有的固件写成rapid-pvst。型号不同可选值会不一样输入spanning-tree mode ?看一下就明白了。5.2 配置根桥优先级让核心说了算选定模式之后最重要的事是把根桥固定下来。规则很简单核心交换机优先级最低汇聚次之接入保持默认。N系列上配置优先级console(config)# spanning-tree priority 4096如果你跑的是PVST某些固件支持按VLAN配置console(config)# spanning-tree vlan 10 priority 4096数值上我习惯用4096或8192。优先级越低越容易被选为根桥。核心设为4096汇聚设为8192接入保持32768这样拓扑里的根桥就是确定的不会因为哪台旧设备先启动或者MAC地址更小而抢走根桥。如果你操作的是FTOS的S系列STP配置的入口会有一点区别通常要先进入protocol spanning-tree rstp视图再执行bridge-priority 4096。不要试图用N系列的命令直接敲会报错。配置完成后用show spanning-tree查看根桥信息重点看Root ID和Bridge ID两行。如果Root ID显示的是优先级4096的那台设备且MAC地址符合预期说明根桥已经归位。5.3 接入端口快速收敛Portfast/Edge Port BPDU Guard接入PC、打印机、AP、IP电话的端口根本不需要参与STP计算。这些端口如果还走正常的Listening、Learning流程用户插上电脑要等几十秒才通网体验非常差。正确做法是给这些终端口配置快速转发Dell里有的叫Portfast有的叫Edge Port。N系列上通常可以这样console(config)# interface Te1/0/1 console(config-if)# spanning-tree portfast console(config-if)# spanning-tree bpduguard enableportfast让端口跳过Listening和Learning直接进入Forwarding状态这样PC一插上就能立刻通信。bpduguard的作用是如果这个端口收到了BPDU报文说明有人把另一台交换机或自带交换功能的设备接进来了交换机应该立即把端口禁用防止环路。这两个选项必须一起配。只配Portfast不配BPDU Guard万一有人在终端口上接了一个小交换机STP依然会因为新出现的BPDU而重新收敛端口也会因为Portfast绕过计算而直接转发环路风险反而更大。如果网络里绝大多数接入端口都是终端口可以在全局层面设置默认值省去逐端口配置。Dell N系列的命令可能是console(config)# spanning-tree portfast default console(config)# spanning-tree bpduguard default配了这个之后新建的端口只要没有手动覆盖就会自动带上快速转发和BPDU防护。当然接交换机的端口要单独覆盖回来否则上联口被BPDU Guard禁用就麻烦了。5.4 防止根桥被抢Root Guard和Loop Guard在接入端口上启用Portfast和BPDU Guard之后基本防住了私接小交换机这一类问题。但还有两种更隐蔽的情况要防范。第一种是根桥被其他设备抢占。如果网络里有人接入了一台优先级比核心更低的交换机STP会重新选根整网拓扑跟着变化。解决方法是Root Guardconsole(config)# interface Te1/0/5 console(config-if)# spanning-tree guard root这个端口一旦收到更优的BPDU会进入Root-Inconsistent状态端口变为阻塞直到更优BPDU消失。这样就算有人接了优先级低的交换机上来它也抢不走根桥身份。第二种是单向链路故障引发的环路。正常情况下STP通过BPDU协商阻塞一个端口如果某条链路的光纤或者网线只通了发送方向、收包方向断了对端交换机可能无法感知故障导致两个端口同时转发形成环路。Loop Guard可以在这种场景下把收不到BPDU的端口置为Blocking。console(config)# spanning-tree loopguard default需要说明的是Loop Guard和Root Guard、BPDU Guard它们的作用场景不一样不是二选一的关系。有条件的话把Root Guard放在所有不该成为根桥的端口上把Loop Guard放在所有Trunk口上BPDU Guard放在所有终端口上三层组合起来STP才算比较结实。5.5 验证和检查看根桥、端口状态、日志配置做完不能看一眼就收工。我每次调完STP都会做三件事一是show spanning-tree看全网的桥ID、根ID、每个VLAN的根端口和指定端口确认阻塞端口仍然在正确位置。二是show spanning-tree interface Te1/0/1或者show spanning-tree interface Te1/0/1 detail看具体端口的状态确认处于Forwarding还是Blocking以及端口开销是多少。三是看日志。Dell交换机在STP发生拓扑变化时会记录类似拓扑变化、端口从Blocking转为Forwarding这类信息。用show logging查看如果在没有任何物理操作的情况下日志里频繁出现拓扑变化说明网络里有人在插拔设备或者有端口在反复Up/Down需要排查。还有一个容易被忽略的检查点缺省情况下Dell设备的RSTP收敛是基于提议-同意握手机制它不依赖Forward Delay计时器。所以你不用去调那些forward-delay、max-age之类的参数默认值就行。谁要是跟你讲STP慢了把forward-delay调到4秒在RSTP/PVST下基本是在自欺欺人。6. 调优之后常见的坑来自现场的排障记录6.1 改了根桥优先级网络反而震荡了几秒我见过不止一次运维人员把核心交换机的STP优先级从32768改成4096之后整个网络立刻卡了几分钟。那是因为根桥切换本身会引起STP重新计算端口从阻塞变转发、从转发变阻塞都需要时间。在RSTP下这个时间比较短但也不代表零感。所以改根桥优先级这类操作尽量放在维护窗口里做。如果网络里设备很多可以先在核心上改优先级再逐台确认拓扑稳定不要同时改所有交换机的优先级以免STP出现多轮重新计算。6.2 Portfast开了却漏了BPDU Guard有一次客户反馈某台交换机下面接了一个小办公室办公室里自己加了台Hub和路由器网络时不时瘫痪几秒。我们查了接入端口发现上一任运维开了Portfast但没有开BPDU Guard。那台Hub本身不分隔冲突域广播风暴直接穿透STP没法快速把它隔离。后来在交换机的终端口上全部补上spanning-tree bpduguard enable小办公室再接Hub时交换机立刻把端口禁用并产生日志网络再也没有莫名卡顿。这个案例说明Portfast和BPDU Guard是配套动作。只开前者相当于给终端口开了快速通道但没设安检只有两者都开终端口才能既快速上线又能挡住意外接入。6.3 乱调timer救不了你老式STP的收敛时间主要靠Forward Delay和Max Age两个计时器控制所以很多从Cisco时代过来的运维习惯在STP模式下改这两个参数。但RSTP/PVST使用提议-同意机制端口快速切换不依赖计时器调forward-delay对RSTP端口收敛几乎没有正面作用反而可能让非RSTP兼容场景下的行为变得不可预期。我有一个原则如果网络里统一是RSTP或PVSTtimer一律不动保持默认。真正影响收敛速度的是端口类型、根桥位置和是否启用了快速转发这些优化到位了收敛时间已经足够短。6.4 不同型号命令不兼容用?看清楚再敲最后说一个所有Dell运维都会踩的坑命令不兼容。PowerConnect、N系列、S系列/FTOS命令集差别很大。比如N系列上是spanning-tree portfast某些FTOS版本里用的是spanning-tree edge-portN系列上是spanning-tree mode rstpFTOS里可能是protocol spanning-tree rstp。我第一次操作S系列时直接拿N系列的命令往里面敲结果报错一堆。后来养成一个习惯每到一个新设备先敲?补全再敲命令。Dell的命令行补全做得不错输入spanning-tree ?就能看到当前固件支持的所有子命令。别嫌麻烦这样至少不会因为命令不识别把自己卡住。还有一点Dell官网按型号提供了命令行参考文档建议在操作前下载对应的CLI Reference重点看Spanning Tree章节。文档里对每个命令的适用版本写得比较清楚。这几台Dell交换机调完之后变化最明显的是拔纤操作不再引起整网卡顿。原来插拔一根上联STP要重新选路径业务流量抖动几十秒现在RSTP收敛基本在两三秒内完成加上端口快速转发的配置终端设备基本无感。我个人的体会是Dell交换机的坑不在设备本身而在默认配置看起来能跑实际上没把STP当回事。只要按确认CLI类型、配好管理地址、规划VLAN、切换RSTP/PVST、锁死根桥、给终端口开快速转发和BPDU Guard这条路走一遍绝大多数网络隐患都能提前消掉。如果你手头的Dell交换机还没做过STP优化建议找个维护窗口先抓配置备份再逐步改改完一定记得保存配置。