网络拓扑结构设计:需求折算、冗余收敛与施工交付
上周被拉去看一个三十来人的办公区网络方案对方给的第一版图纸是一台核心交换机往下辐射一圈所有接入设备全挂在上面看起来清爽又对称。我随口问了一句要是有人把一根网线两头都插进墙上的信息面板这套网络会怎样对面愣了十几秒才反应过来——这恰恰就是网络拓扑结构设计要提前消化的东西。它不是在图纸上画几个方块连几条线而是把能扛住什么故障将来怎么长钱花在哪这几件事在动第一颗螺丝之前就用结构定下来。这篇内容想聊的是真实的拓扑设计过程从需求清单倒推结构从端口数、流量模型、可用性指标算出该用几层、怎么冗余、收敛比定多少再到落地时的布线顺序、配置节奏和交付文档。刚入行的朋友可以把它当成一份从零到交付的检查清单做过几年网络的同行大概率能在里面找到几个自己踩过的坑——尤其是冗余做成假冗余、IP规划埋雷这两块我见过太多项目在这里返工。1. 把需求翻成结构约束别急着画圈圈1.1 三张清单端口、流量、可用性我做拓扑设计的第一步从来不是打开画图工具而是先把三张清单摊在桌上。第一张是端口清单把所有需要联网的东西一个个数出来工位信息点、打印机、会议室投屏、门禁控制器、监控摄像头、无线AP、语音话机再加上临时扩容和调试用的备用口。这里最常见的错误是按现在有多少人去估端口正确做法是按信息点算并且乘一个 1.2 到 1.5 的系数。一个 60 人的办公区信息点往往有 90 到 120 个因为会议室、开放工位、打印区的密度远高于人头数。第二张是流量清单。要判断这套网络主要是南北向流量还是东西向流量。南北向就是终端访问外网或云服务特点是出口带宽是瓶颈东西向是内部设备互访比如虚拟化集群之间的迁移、存储读写、内部服务调用特点是汇聚层和核心层之间的链路容易被压满。判断方法不复杂问问有没有本地机房、有没有跑虚拟化、有没有NAS或者备份一体机。如果东西向流量占比超过一半那基本可以确定扁平的三层结构会吃力。第三张是可用性清单也就是业务中断的容忍时间。这个指标必须由业务方给不能自己拍脑袋。收银、门禁这类业务中断一分钟就有人投诉普通办公网断了十分钟大家骂两句也就过去了研发环境的构建任务半夜中断可能第二天才发现。不同的容忍时间对应完全不同的冗余投入把所有业务都按最高标准做钱花得冤枉运维也复杂。1.2 一张表把需求翻译成结构参数清单收集完我会用一张对照表把它们折算成结构参数。这张表是整个设计过程的核心工具后面所有选型都以它为依据避免凭感觉拍板。需求维度采集到的事实折算出的结构约束接入端口数约 96 个信息点 20 个监控 12 个 AP至少 128 口按 6 台 24 口接入交换机规划楼层与距离3 层楼最远信息点约 65 米楼层内铜缆直连楼间用光纤东西向流量占比本地虚拟化集群 备份约占六成汇聚层上行至少万兆考虑双上行中断容忍办公 10 分钟门禁 1 分钟核心双机、网关冗余、双上行三年增长新增一层办公区交换机预留 20% 端口机柜预留空间运维能力无专职网络工程师协议尽量简单避免多层嵌套这张表的价值在于它把模糊的描述变成了可执行的数字。比如未来可能扩容这种话落到结构上就是预留 20% 端口 机柜剩余空间 上行链路留一个空槽位。没有这一步做出来的拓扑图永远只是示意图施工时还要重新推一遍。1.3 从图纸开始的代价我见过几个典型的项目都是从一张漂亮的拓扑图开始最后在施工阶段被迫推翻重来。最常见的一种是先把核心交换机定下来然后按它的端口数往下分配接入层结果做到一半发现某层楼的端口不够只好在接入层再级联一级。这一级联不要紧收敛比从 20:1 掉到 40:1那层楼的终端高峰期开始丢包最后只能加设备重排。另一种是从设备清单开始把能买的设备买回来再想怎么连。这样做的后果是冗余全落在同一台设备上——明明规划了双上行两台接入交换机的上行却都插到了同一块业务板上板卡一挂两台一起断。这类问题的根源都是跳过了需求折算直接进入了画图选设备环节。拓扑设计的顺序必须是需求、约束、结构、设备反过来做一定出问题。2. 基础拓扑的适用边界什么时候该换掉它2.1 星型的隐性上限绝大多数办公网络都是星型也就是所有接入设备汇聚到一个中心节点。这没什么问题星型的优点很实在故障定位简单某一根线断只影响一个终端扩容直观加一台接入交换机就多一片端口管理集中配置和策略都在中心做。但星型有一个隐形上限很多人在设计时没有意识到——中心节点的端口密度和背板转发能力就是整个网络的天花板。具体来说当接入设备超过十几台之后中心节点要么换成框式设备靠业务板扩容要么靠堆叠把多台设备虚拟成一台。前者成本陡增后者受堆叠带宽和堆叠链路长度限制。曾经有一个项目中心是一台 48 口交换机下面挂了 11 台接入交换机全部挤在 48 个口里连上行链路都只能单条。后来加了两台新设备实在没口了只好让新设备级联到旧接入交换机上网络层级从两层变成三层出故障时排查时间翻了一倍。星型没问题问题是你得在端口耗尽之前预判到那个点。2.2 总线与环型留在现场的理由总线型在办公网络里基本绝迹了早期同轴电缆那种一根线串到底的接法一处断全线瘫维护成本极高。但它在工业现场还活着比如一些设备控制总线节点数量固定、距离短、实时性要求高、环境干扰大总线结构的确定性和低成本反而成了优势。环型也是同理工业环网通过冗余环协议实现单点断开后几十毫秒内倒换这个特性在产线、轨道、电力这些不能停的场合很有价值。这两个结构给我们的启发不是该用它们而是提醒一件事拓扑结构的选择标准是场景不是先进程度。办公网追求的是易扩展易维护工业现场追求的是确定性倒换和抗干扰两者的最优解完全不同。见过有人在办公网里照搬环形结构做冗余结果环协议配置复杂、环路隐患多一次误配置就让整栋楼广播风暴最后退回星型加双上行。冗余的复杂度要和运维能力匹配这句话在后面几节还会反复出现。2.3 树型层级核心、汇聚、接入各管什么三层树型是中等规模网络最稳的选择。接入层负责端口密度和末端供电工作很单纯把终端接进来、打上正确的 VLAN 标签、把 PoE 供上。汇聚层负责策略和网关是 VLAN 终结的地方ACL、QoS、路由汇总都在这一层做。核心层只做高速转发尽量不放策略因为它一旦出问题影响面最大配置越简单越不容易出事。小规模场景可以把核心和汇聚合并也就是常说的两层结构核心交换机直接终结 VLAN 并且接接入层。这个做法能省设备省成本但有一个前提接入设备数量不要超过核心的可用端口而且核心要留出冗余端口。一旦接入设备数量接近核心端口数的七成就该考虑拆成三层了。我一般会在图纸上画一条线接入设备数量超过 12 台、或者跨了三个以上楼层就拆成三层这样将来某一层楼扩容不会牵动全局。2.4 网状与部分网状冗余是花钱买的全互联网状结构里n 个节点需要 n(n-1)/2 条链路节点一多成本指数级上升。五个节点就要十条链路十个节点四十五条光模块和光纤的钱能把预算吃光。所以现实中几乎不会做全互联用的都是部分网状核心层两台设备之间互联汇聚层每台设备双上行到两台核心接入层每台设备双上行到两台汇聚。这样任意一条链路或一台设备故障路径都能绕开。部分网状的关键是绕开这两个字要真的能绕。判断方法很直接在图纸上把任意一台设备涂黑看剩下的路径是否还连通所有节点再把任意一条链路涂黑重复这个检查。如果某次涂黑之后有节点成了孤岛说明这个位置的冗余是假的。我在评审方案时基本就用这个方法一支笔一张图五分钟能把假冗余全找出来。很多方案号称双上行一涂黑才发现两台汇聚都上联到同一台核心核心一挂照样全断。3. 规模一上来二层就要开始做减法3.1 广播域与 VLAN 边界怎么切VLAN 划分的本质是把一个大广播域切成若干小广播域控制广播报文的影响范围同时给策略提供抓手。切分维度一般按部门、按楼层、按功能三个维度选一个做主维度另外两个做补充。我的习惯是按楼层做主维度因为物理位置最稳定人员调动不频繁部门作为次要维度同一个楼层里如果部门差异大再拆开。每个 VLAN 的可用地址数我一般控制在 200 到 250 之间超过就拆。广播报文在二层是泛洪的一个 VLAN 里终端越多广播报文占用的带宽和每台终端的 CPU 中断就越多。曾经有个项目把所有工位塞进一个 /22 的网段一千多个地址结果每天早上大家开机的时候网络明显卡顿拆成四个 VLAN 之后这个现象就消失了。VLAN 编号要提前规划成段别随手编。比如 1 到 99 留给设备管理和互联100 到 199 给办公区200 到 299 给语音300 到 399 给无线 AP 管理400 到 499 给监控和门禁500 以上给服务器和特殊用途。这样后面看配置或者抓包扫一眼 VLAN ID 就知道是哪类设备排查效率高不少。管理 VLAN 一定要单独划出来不要和设备默认 VLAN 混用这是基本功。3.2 大二层的代价有些方案为了简单把整栋楼的接入层全部打通成一个巨大的二层域网关放在最顶上的核心。这样做的确省事VLAN 少、路由少、配置简单。但代价在三个方面一是广播域巨大前面说的广播风暴风险成倍上升二是生成树域过大任何一次拓扑变化都会引起全楼重新收敛收敛期间可能出现短暂环路三是故障域巨大一条链路抖动整栋楼的终端都能感觉到。我更喜欢的分法是每层楼或者每个防火分区做一个二层域网关下沉到本区的汇聚设备。这样二层域的范围可控生成树收敛快某个区的环路不会波及整栋楼。跨区通信走三层路由收敛由协议负责比二层收敛可预测得多。这个改动带来的额外工作量主要是 IP 规划和路由配置但它换来的是故障可隔离长期看非常值。3.3 叶脊结构出现的真正原因东西向流量占主导的场景传统三层树型会撞上一个物理瓶颈同一汇聚设备下的两台服务器互访流量必须上行到汇聚再下行明明物理上很近却要绕一圈。当服务器数量多、互访频繁时汇聚层的带宽被这种绕行流量耗尽加带宽只是治标。叶脊结构解决的就是这个问题。脊交换机之间不互联全部负责向上转发叶交换机连接服务器和终端每台叶都连接到所有脊。任意两台叶之间最多经过一跳脊路径长度固定为两跳延迟可预测。更重要的一点是叶脊之间的链路可以做等价多路径流量自动分摊到所有脊上带宽随脊的数量线性增长扩容时只需要加脊和连线的端口不影响已有业务。不过叶脊不是银弹。它的前提是设备数量达到一定规模、东西向流量确实是瓶颈、并且运维能接受等价多路径和三层路由到边缘的配置方式。几十台服务器的小环境硬套叶脊只会把配置复杂度拉上去收益却看不到。我的经验判断线大致是服务器超过 50 台、虚拟化集群三个以上、东西向流量占七成才值得考虑叶脊。4. 冗余不是加线是把故障域切小4.1 单点排查从电源到出口做冗余设计之前我习惯先做一次单点清单。把整套系统里所有挂了就全瘫的部件列出来然后按影响面和修复时间排序。典型的单点包括核心设备的电源模块、机房的供电回路、出口线路、DHCP 服务器、认证服务器、域名解析、机柜的 PDU 插座。这个清单往往会暴露一些被忽略的地方。有一次评审方案设备冗余做得很完整双核心双电源双上行但一查机柜两台核心的电源模块都插在同一个 PDU 上PDU 又只接了一路市电。这种情况下设备再冗余也没用一个插座松动就全断。所以冗余要从供电一路往上捋双路市电、双 UPS、双 PDU、双电源模块、双设备、双链路、双出口缺哪一环哪一环就是真正的单点。4.2 链路聚合与堆叠的取舍链路聚合把多条物理链路捆成一条逻辑链路既提升带宽又提供冗余单条断掉流量自动切到剩余链路。配置上要注意两端的聚合模式必须匹配静态聚合和动态协商不能混用否则会出现链路时通时不通的诡异现象。我一般优先用动态协商虽然配置稍多但它能自动检测对端状态不容易出现一端认为聚合成功、另一端认为失败的半通状态。堆叠是把多台物理设备虚拟成一台逻辑设备好处是管理统一、可以跨设备做链路聚合。但它也带来两个隐患一是堆叠域本身成了新的故障域堆叠主控异常时可能引发整组重启二是堆叠线缆有长度限制跨楼层堆叠基本不可行。我见过最坑的情况是堆叠之后生成树的根桥跟着堆叠主控漂移全网拓扑跟着重新计算业务抖了几秒。所以堆叠规模要控制一般不超过四到六台并且堆叠域要限制在同一个机柜或者相邻机柜内。4.3 网关冗余与路由收敛时间网关冗余解决的是汇聚设备故障时终端网关不丢的问题。两个方案一是把网关做在冗余组里主备之间通过虚拟地址对外提供服务主设备故障时备设备接管二是两台设备做跨设备链路聚合网关同时活跃在两台上。前者配置简单、成熟稳定切换时间一般在秒级后者切换更快但配置复杂对设备能力有要求。无论哪种方案都要注意一个细节网关冗余的角色要和生成树的根桥角色保持一致。也就是说二层转发路径的主用设备和三层网关的主用设备最好是同一台否则会出现流量绕行——终端的数据先发给备网关备网关再转给主网关多绕一跳延迟和带宽都受影响。这个细节在很多方案里被忽略配置完成后业务能用但性能打了折扣。路由收敛时间主要看协议和故障检测机制。三层路由协议本身的收敛在秒级配合快速检测机制可以做到毫秒级感知。但我不建议盲目追求毫秒级收敛因为收敛太快容易引发路由震荡一次链路抖动就全网重算反而更不稳定。合理的做法是根据业务容忍时间设定办公网秒级足够关键业务链路再用快速检测。4.4 环路与广播风暴的兜底只要网络里有冗余链路就有环路的可能生成树协议就是干这个的。现在用的基本都是多实例生成树可以按 VLAN 分组计算不同的转发路径实现负载分担。配置要点有三一是根桥要明确指定不要让它自己选举否则网络一变化根桥就可能换人二是所有接终端的端口都要配置边缘端口加环路保护防止有人把网线两头插进同一个面板三是设备互联端口不要配边缘属性否则会误阻塞正常链路。比生成树更根本的兜底是物理层面的规范信息面板施工完必须逐个测试并打标签跳线只能从配线架到交换机不允许在面板侧乱接。这条规范听上去很土但能挡掉八成以上的环路事故。另外可以在接入交换机上开广播风暴抑制设置一个阈值超过就自动阻塞端口并告警。阈值别设太低正常业务的广播量波动不小设太低会误杀。5. 必须算出来的几个数字5.1 收敛比与上行带宽收敛比是接入端口总带宽和上行带宽的比例也叫超额认购比。一台 24 口千兆接入交换机配两个万兆上行收敛比是 24:2 也就是 12:1意思是理论上所有端口同时满速跑上行只能承载十二分之一。这个比例在办公场景完全够用因为终端不会同时跑满。不同场景的合理区间大致如下场景推荐收敛比说明普通办公10:1 到 20:1终端以网页、办公软件为主突发多但持续低研发/设计4:1 到 8:1代码同步、大文件传输、编译缓存拉取服务器接入1:1 到 3:1虚拟化迁移、存储读写持续高负载监控汇聚8:1 到 15:1码流恒定但要留出突发和回放余量算的时候别只算平均要算峰值。比如 96 个信息点按每人峰值 20 兆估算总峰值接近 2G那上行至少要两条万兆或者四条千兆做聚合。监控场景更要注意N 路摄像头码流是恒定的按每路 4 兆、40 路算就是 160 兆持续流量上行一条千兆够用但没余量加一条做聚合更稳妥。5.2 地址池与 DHCP 作用域地址规划我一般按区域 功能两段来编址。比如第二段表示楼层或区域第三段表示 VLAN 功能具体主机位按需分配。这样看到地址就知道设备在哪、属于哪类抓包和查日志时非常省事。每个 VLAN 用 /24预留一部分给固定地址网关、服务器、打印机、AP、摄像头剩下的给 DHCP 动态分配。动态池的大小要按实际终端数乘 1.5 左右别刚好卡死。一个 60 人的区域算上手机、平板、笔记本双网卡在线终端往往有 120 到 150 个地址池给到 200 个才不紧张。DHCP 租期办公网设 8 小时比较合适太短会增加服务器压力太长会导致地址回收慢。另外要单独规划几个不参与动态分配的小网段设备管理网段、AP 管理网段、互联地址网段设备之间的三层链路。互联地址我一般用 /30 或者 /31成对分配并且记录下来避免后面扩容时发现地址被占。地址规划表要作为交付文档的一部分不能只存在某个人的脑子里。5.3 PoE 功率预算与端口类型带 PoE 的场景一定要算功率预算这是最容易翻车的地方。标准供电能力大致分三档低功率档每端口十几瓦中功率档每端口二十五瓦左右高功率档能到六十瓦甚至更高具体看设备规格。算法是把所有需要供电设备的实际功耗加起来乘一个 1.3 左右的余量系数然后和整机的 PoE 总预算对比。举个例子一台 24 口接入交换机接 8 个 AP每个 12 瓦、6 个摄像头每个 8 瓦、4 部话机每个 5 瓦总功耗约 96 48 20 164 瓦乘 1.3 是 213 瓦。如果这台交换机整机 PoE 预算是 190 瓦就已经超了得换成预算更高的型号或者分两台设备。这个账不算装机当天上电就能看到部分端口供不上电或者整机反复重启。端口类型也要提前定接终端的用普通电口接 AP 和摄像头用带 PoE 的电口设备之间上联优先用光口铜缆超过 100 米必须转光纤。多模光纤的传输距离受速率影响万兆下一般几百米单模可以到十公里跨楼栋基本都用单模。光模块的速率和封装要和端口匹配这一块建议把型号逐条写进采购清单不要用兼容即可糊过去。6. 从图纸到机柜施工顺序与被忽略的细节6.1 上架与布线的顺序设备上架的顺序很影响后期维护。我的习惯是先装理线架和配线架再装交换机最后跳线。这样交换机的位置由配线架决定跳线长度统一好控制走线也整齐。反过来先装交换机再补配线架经常会发现两者位置错开半个 U跳线要么绷得太紧要么绕一大圈。机柜内的线缆分三类上联光纤、终端跳线、电源线。三类线要走不同的路径光纤走一侧的理线环跳线走正面理线架电源线走另一侧或者后方尽量不交叉。标签必须两端一致规则是信息点编号—配线架端口—交换机端口一条链路三个标签缺一个后面排查就要靠猜。这一条我吃过亏某个项目施工队只在一端贴了标签半年后查一个故障端口花了四十分钟才定位到对面是哪个面板。6.2 配置与验证的推进节奏配置不要一次性全推。合理的节奏是先打通管理通道确认每台设备都能远程登录并且配置能保存再做二层互联确认 VLAN 能通、生成树状态正常然后做三层网关确认同网段互通、跨网段能路由接着做出口和策略确认能上网最后做冗余和优化。每一步验证通过再进入下一步出问题时排查范围就限定在这一步之内。验证方法要具体。生成树看根桥是不是你指定的那台不是的话查优先级配置链路聚合看成员端口是否都是转发状态有没有端口被踢出网关冗余看主备状态和虚拟地址能不能 ping 通DHCP 看地址池使用率和租约列表。最后做一次断线演练把主用链路拔掉观察业务恢复时间这个动作能暴露很多纸面上看不出的问题。6.3 交付时要留下的东西交付文档的价值在于半年后接手的人能不能看懂。至少要有这几样物理拓扑图机柜位置、设备型号、端口连接、逻辑拓扑图VLAN 划分、网段、路由关系、IP 和 VLAN 规划表、端口对照表、机柜上架图、配置文件备份、管理账号和权限说明、变更记录。图纸要标注时间和版本号否则改过几轮之后没人知道哪张是准的。配置文件备份这一项经常被忽略。设备配置做完一定要导出保存最好两台设备各存一份同时留一份离线副本。我遇到过一次设备主板故障返修返修回来配置全丢幸好当时有备份二十分钟恢复。没有备份的话那台设备上几十条 ACL 和路由策略要重新敲一遍还得凭记忆。变更记录也一样重要哪怕只是记一行某月某日调整了某 VLAN 的网关地址将来排查问题时能省很多时间。7. 几个真实踩过的坑7.1 堆叠线缆与生成树的连环反应有个项目为了管理方便把四台接入交换机做了堆叠跨设备链路聚合配得很顺。运行两个月后一次例行重启堆叠主控切换生成树的根桥跟着漂到了另一台设备上全网拓扑重新计算业务抖了将近十秒。问题根源是根桥优先级没有固定用的是默认值堆叠主控变了根桥就跟着变。修复方法很简单把根桥优先级手工指定为最低值并且和网关冗余的主设备对齐同时在堆叠配置里固定主控选举的优先级。改完之后又做了一次重启演练业务无感。这件事让我形成一个习惯凡是涉及选举的机制优先级都要手工指定不要依赖默认值和自动协商默认值只在实验环境里好用。7.2 IP 规划埋的雷另一个项目在扩容时新加了一个部门施工方图省事从已有网段里切了一段出来给新部门用结果和新部门的旧系统地址撞了。表现是某些终端能上网但访问不了内部系统抓包看到 ARP 响应来自两个不同的物理地址典型的地址冲突。这类问题的排查成本很高因为表面症状是部分网站打不开很容易被误判成出口问题。从那以后我在每个项目里都坚持两件事一是地址规划表必须有唯一责任人维护任何新增网段先查表再分配二是接入交换机上开地址冲突检测发现冲突立即告警。规范听着繁琐但比起事后花两天定位一个地址冲突这点工作量不值一提。7.3 无线 AP 的位置和供电无线覆盖经常被当成附属项最后才想起来。实际经验是 AP 的位置和供电要在拓扑设计阶段就一起定。位置上AP 尽量挂在走廊或者开放区的吊顶避开金属吊顶和承重墙覆盖半径按办公环境算一般十几米一个点位会议室和隔断多的区域要加密。供电上AP 优先走 PoE省掉一堆适配器和插座但要在前面说的功率预算里占好额度。还有一个常见疏漏AP 接在接入交换机上但端口没有划到 AP 管理 VLAN导致无线控制器发现不了这个 AP。表现是 AP 通电了、指示灯正常、就是不上线。这种问题的排查顺序是先看端口 VLAN再看 DHCP 有没有拿到管理地址最后看控制器和 AP 之间的连通性。把这三步写进施工检查表能省掉大量现场返工。最后说点个人的体会。拓扑设计这件事做得越久越觉得它不是技术问题而是取舍问题。每一个冗余设计都要花钱每增加一层结构都要增加运维复杂度每一次顺手加个环路都在给未来埋隐患。我现在做方案习惯在图纸边上写三行字哪些地方允许断、断了多久必须恢复、谁负责恢复。这三行字写清楚结构基本就定了。至于用几台设备、走几根光纤、收敛比定多少都是这三行字的推论。真正的功夫不在画图在于把业务方的模糊需求翻译成结构上可验证的约束然后老老实实按约束施工。