简介这份文档面向数据中心网络工程师、云计算架构学习者与运维人员系统讲解叶脊Spine-Leaf网络拓扑下的全三层网络设计与实践。内容从传统三层架构的带宽浪费、STP收敛慢、难以支撑大二层与东西向流量等弊端切入引出扁平化叶脊架构并展开Spine与Leaf全网状连接、负载均衡、延迟可预测、带宽与服务器数量水平扩展等核心优势还结合端口数量与带宽估算网络规模延伸至Facebook Fabric多POD扩展思路。资源包为1个docx文档约671KB结构完整、条理清晰适合作为架构入门与方案参考。目前已有225人学习可帮助读者快速建立叶脊网络整体认知理解虚拟化与云计算场景下的设计取舍与扩容逻辑。1. 叶脊网络架构简介为什么全三层设计成了数据中心的新默认如果你最近在规划机房搬迁、AI 训练集群或者跨校区智慧教室专网大概率会听到一个词——叶脊Spine-Leaf网络拓扑。它不是什么新概念但过去两年随着东西向流量爆炸式增长这套架构已经从互联网大厂专属变成了中型企业数据中心的标准答案。简单说叶脊把网络分成两层Leaf 交换机负责接服务器和终端Spine 交换机只负责 Leaf 之间的高速转发任意两台 Leaf 之间恰好经过一台 Spine跳数固定、延迟可预测。而“全三层”指的是从 Leaf 到 Spine、甚至 Leaf 到服务器全部走路由不再依赖二层生成树。这套组合解决了传统三层架构里跨机柜流量绕行核心、STP 链路利用率低、故障域大三个老大难问题。本文面向需要落地叶脊架构的网络工程师从选型、IP 规划、路由配置到避坑给出一套能直接抄作业的全三层实践路径。2. 全三层叶脊的底层逻辑为什么必须放弃二层转发2.1 从 STP 的链路利用率说起传统数据中心网络常用“核心-汇聚-接入”三层结构接入和汇聚之间跑二层靠 STP 防环。STP 的毛病在于不管你有多少条上行链路最终只有一条处于转发状态其余全部阻塞。这意味着你花钱买的 40G/100G 链路实际利用率可能只有 50% 甚至更低。更麻烦的是STP 收敛慢拓扑一变就全网泛洪大规模环境下动辄秒级中断。叶脊全三层方案直接砍掉 STP。每台 Leaf 和每台 Spine 之间都建立三层点对点链路跑 OSPF 或 BGP。ECMP等价多路径让流量在多个 Spine 之间哈希分担链路利用率瞬间拉到接近 100%。而且任意 Leaf 到任意 Leaf 的路径跳数固定为 2延迟可预测这对 AI 训练、分布式存储这类对抖动敏感的业务非常关键。常见做法是Leaf 与 Spine 之间用 /30 或 /31 互联地址Leaf 上写服务器网段的 SVIVLAN 接口作为网关Spine 上只保留互联地址和 Loopback不碰业务网段。这样故障域被限制在单台 Leaf 或单条链路不会像二层网络那样一个广播风暴打穿全网。2.2 路由协议选型OSPF 还是 BGP叶脊全三层里路由协议选型是第一个分叉口。小规模Leaf 少于 20 台用 OSPF 足够配置简单收敛快。但一旦 Leaf 数量上去OSPF 的 LSDB 会变大而且 OSPF 对 ECMP 的支持虽然成熟但策略控制能力弱。BGP 的优势在于天然支持多路径、策略丰富、收敛可控而且可以按 Leaf 做 AS 号规划故障隔离更清晰。我一般会这样选如果 Leaf 数量在 10 台以内、团队对 BGP 不熟直接 OSPF别折腾。如果 Leaf 超过 20 台或者未来要接多租户、跨校区 VXLAN果断上 BGP。BGP 的配置模板如下每台 Leaf 一个私有 AS 号Spine 用同一个 AS 号Leaf 与 Spine 之间跑 eBGP。# Leaf-01 BGP 配置示例Cisco NX-OS 风格 router bgp 65001 router-id 10.0.0.1 address-family ipv4 unicast maximum-paths 4 # 允许 4 条 ECMP 路径 maximum-paths ibgp 4 neighbor 10.1.1.1 # Spine-01 互联地址 remote-as 65000 address-family ipv4 unicast send-community route-map LEAF-IN in # 入方向策略只收默认路由或特定前缀 neighbor 10.1.1.3 # Spine-02 互联地址 remote-as 65000 address-family ipv4 unicast send-community route-map LEAF-IN in这段配置的关键点maximum-paths 4让 BGP 把去往同一目的地的多条等价路径都装进路由表配合底层 ECMP 实现负载分担。route-map LEAF-IN用来控制从 Spine 收哪些路由——通常 Leaf 只需要默认路由指向 Spine或者收本 Leaf 下服务器网段的明细路由避免路由表膨胀。Spine 侧则要配置next-hop-self或者用peer-group统一策略确保 Leaf 学到的下一跳是 Spine 自己。参数上router-id必须全网唯一建议用 Loopback0 地址。maximum-paths的值要跟实际物理链路数匹配配大了浪费内存配小了流量分担不均。如果跑 iBGP还要注意next-hop-self和route-reflector的配置但叶脊场景下更推荐 eBGP配置更直观。2.3 IP 地址规划别让 /24 成为你的天花板全三层叶脊的 IP 规划比二层网络更讲究因为每个 Leaf 下的服务器网段、Leaf-Spine 互联地址、Loopback 地址都要提前算好。常见做法是按业务或机柜划分 /24 网段每个 Leaf 负责一个或多个 /24网关设在 Leaf 的 SVI 上。Leaf-Spine 互联用 /31点对点链路最省地址Loopback 用 /32。举个例子Leaf-01 下挂服务器网段 10.10.1.0/24网关 10.10.1.1 配在 Leaf-01 的 VLAN 100 SVI 上。Leaf-01 与 Spine-01 的互联地址用 10.1.1.0/31Leaf-01 侧 10.1.1.0Spine-01 侧 10.1.1.1。Leaf-01 的 Loopback0 用 10.0.0.1/32。这样规划的好处是地址块清晰故障时看 IP 就知道是哪台设备、哪条链路。注意服务器网段的网关必须配在 Leaf 上不要配在 Spine 上。Spine 只做转发不碰业务网关否则流量会绕行失去叶脊的跳数优势。如果未来要上 VXLAN服务器网段可以复用但需要额外规划 VTEP 地址通常用 Loopback1。VXLAN 的分布式网关会把网关 IP 配在每台 Leaf 的 VXLAN 接口上这时候 IP 规划要预留足够的 Loopback 地址空间。3. 从零搭建叶脊全三层配置步骤与验证命令3.1 物理连接与基础配置假设你有 2 台 Spine、4 台 Leaf每台 Leaf 上联两台 Spine服务器双网卡分别接两台 Leaf或者单网卡接一台 Leaf另一台 Leaf 做备份。物理连接完成后先做基础配置主机名、管理 IP、SSH、NTP、MTU。MTU 特别重要全三层网络里如果后续要跑 VXLAN物理接口 MTU 建议设成 9216巨帧至少也要 9000。如果只跑普通路由1500 也能用但 ECMP 哈希时大包分片会影响性能。# 基础配置模板以 Leaf-01 为例 hostname Leaf-01 feature ospf feature bgp feature interface-vlan interface Ethernet1/1 description TO-SPINE-01 no switchport ip address 10.1.1.0/31 mtu 9216 no shutdown interface Ethernet1/2 description TO-SPINE-02 no switchport ip address 10.1.1.2/31 mtu 9216 no shutdown interface Loopback0 ip address 10.0.0.1/32 interface Vlan100 description SERVER-NET-10.10.1.0 no shutdown ip address 10.10.1.1/24 mtu 9216这段配置里no switchport把物理口从二层切到三层这是全三层的基础。ip address 10.1.1.0/31用 /31 节省地址但注意有些老设备不支持 /31那就用 /30。mtu 9216在物理口和 SVI 上都要配否则 VXLAN 封装后大包会被丢弃。Loopback0 用来做 router-id 和 BGP 更新源。3.2 OSPF 与 BGP 双协议配置对比如果你选 OSPF配置更简单# Leaf-01 OSPF 配置 router ospf 1 router-id 10.0.0.1 maximum-paths 4 passive-interface default no passive-interface Ethernet1/1 no passive-interface Ethernet1/2 network 10.1.1.0/31 area 0.0.0.0 network 10.1.1.2/31 area 0.0.0.0 network 10.0.0.1/32 area 0.0.0.0 network 10.10.1.0/24 area 0.0.0.0passive-interface default把所有接口设为被动只对上行口放开防止 OSPF 报文发到服务器网段。maximum-paths 4开启 ECMP。Spine 侧配置类似但不需要宣告服务器网段只宣告互联地址和 Loopback。如果选 BGP参考 2.2 的模板Spine 侧配置# Spine-01 BGP 配置 router bgp 65000 router-id 10.0.0.100 address-family ipv4 unicast maximum-paths 8 neighbor 10.1.1.0 remote-as 65001 address-family ipv4 unicast route-map SPINE-OUT out neighbor 10.1.1.2 remote-as 65002 address-family ipv4 unicast route-map SPINE-OUT outSpine 不需要知道具体服务器网段只需要把 Leaf 的 Loopback 和互联地址收进来然后通过route-map SPINE-OUT决定给 Leaf 发什么路由。通常 Spine 会给 Leaf 发默认路由或者汇总路由减少 Leaf 的路由表规模。3.3 验证命令怎么确认 ECMP 真的生效了配完路由别急着上业务。先验证 ECMP 是否生效。在 Leaf-01 上执行show ip route 10.10.2.0/24如果输出里看到两条下一跳分别指向 Spine-01 和 Spine-02说明 ECMP 生效。再执行show ip route 10.10.2.0/24 detail看Installed字段和Nexthop数量。如果只有一条检查maximum-paths是否配了、物理口是否都 up、路由协议是否都建立了邻居。另一个关键验证是流量哈希。用traceroute从 Leaf-01 下的服务器到 Leaf-02 下的服务器多跑几次看路径是否在 Spine-01 和 Spine-02 之间切换。如果每次都走同一台 Spine说明哈希算法可能基于源 IP 或目的 IP需要调整成基于五元组。不同厂商的哈希配置命令不同Cisco 用port-channel load-balance src-dst-ipArista 用ip load-sharing相关命令。提示ECMP 哈希不均匀是常见问题。如果发现某条 Spine 链路流量明显偏高先检查哈希算法再检查是否有大流比如备份流量固定走一条路径。可以用show interface counters看各上行口的流量比例。4. 叶脊全三层避坑指南五个血泪教训4.1 现象服务器跨 Leaf 通信时断时续ping 丢包 30%原因Leaf 上服务器网段的 SVI 配了ip address但没配no shutdown或者 VLAN 没在物理口上放行。更隐蔽的情况是服务器双网卡做了 bond但两台 Leaf 的网关 IP 不一致服务器 ARP 表混乱。解决先show interface vlan 100确认 SVI 状态。再检查服务器 bond 模式如果是主备模式确保备 Leaf 的网关也配了相同 IP用 VRRP 或 anycast 网关。如果是 LACP两台 Leaf 都要配 port-channel 且模式一致。4.2 现象BGP 邻居建立不起来卡在 Active 或 Connect 状态原因Leaf 和 Spine 的remote-as配反了或者更新源没指定 Loopback导致 BGP 报文源地址不是预期地址。另一个常见原因是 MTU 不匹配BGP 大包被丢弃。解决show bgp neighbor 10.1.1.1看状态和错误码。检查neighbor 10.1.1.1 update-source Loopback0是否配了。如果 MTU 问题在物理口和 BGP 配置里都调 MTU或者用neighbor 10.1.1.1 transport path-mtu-discovery。4.3 现象VXLAN 隧道起不来VTEP 地址 ping 不通原因VTEP 通常用 Loopback1 地址但 Loopback1 没有在底层路由协议里宣告导致远端 Leaf 学不到。或者物理口 MTU 不够VXLAN 封装后包超长被丢。解决show ip route 10.0.1.1/32确认 VTEP 地址是否可达。如果不可达在 OSPF/BGP 里宣告 Loopback1。MTU 问题就统一调成 9216包括物理口、SVI、Loopback。4.4 现象ECMP 配了但流量只走一条链路原因哈希算法基于源 IP 和目的 IP如果服务器到服务器只有一对 IP 通信哈希结果固定走一条。或者maximum-paths配了但路由协议没生效比如 OSPF 的maximum-paths和全局的maximum-paths冲突。解决换哈希算法为基于五元组源 IP、目的 IP、源端口、目的端口、协议。如果业务本身是大流考虑用 flowlet 或者动态负载分担。检查show ip route的 detail 输出确认多条下一跳都装了。4.5 现象Leaf 重启后服务器网络中断 5 分钟以上原因路由协议收敛慢或者 BGP 的graceful-restart没配邻居重建期间流量黑洞。另一个原因是服务器网段的网关没配ip redirects或arp老化时间太长。解决开 BGPgraceful-restart和bfd双向转发检测把故障检测时间降到毫秒级。OSPF 可以调hello-interval和dead-interval但别调太小否则容易误判。服务器侧可以配arp timeout短一点加速切换。5. 进阶技巧用 BFD 和 Anycast 网关把收敛压到毫秒级叶脊全三层搭起来只是第一步真正体现功力的是故障收敛速度。我踩过最深的坑是BGP 默认的 hold time 是 180 秒邻居挂了要等 3 分钟才切换业务早就断了。后来上了 BFD把检测时间压到 300 毫秒以内配合 BGP 的fast-external-fallover切换几乎无感。BFD 配置很简单在 Leaf 和 Spine 的 BGP 邻居下加一行# Leaf-01 BFD 配置 interface Ethernet1/1 bfd interval 300 min_rx 300 multiplier 3 router bgp 65001 neighbor 10.1.1.1 bfdinterval 300是发送间隔 300 毫秒min_rx 300是接收间隔multiplier 3是连续丢 3 个包判定故障。这样故障检测时间就是 900 毫秒比 BGP 默认的 180 秒快了两个数量级。注意 BFD 要两端都配而且物理口和路由协议都要开。另一个进阶技巧是 Anycast 网关。传统叶脊里服务器网关配在 Leaf 的 SVI 上如果 Leaf 挂了服务器要等 ARP 老化才能切到备用 Leaf。Anycast 网关让多台 Leaf 配相同的网关 IP 和 MAC服务器 ARP 表里只有一个网关但实际由多台 Leaf 响应。配合 VXLAN 的分布式网关服务器甚至感觉不到 Leaf 切换。具体做法在 Leaf-01 和 Leaf-02 的 VLAN 100 SVI 上配相同的 IP 10.10.1.1/24 和相同的 MAC 地址比如 0000.1111.2222。底层用 VXLAN 把两台 Leaf 的 VLAN 100 打通BGP EVPN 同步 MAC 和 ARP 表。这样服务器发 ARP 请求两台 Leaf 都可能响应但服务器只认第一个响应后续流量走哪台 Leaf 取决于 ECMP 哈希。验证 Anycast 网关是否生效在服务器上arp -a看网关 MAC 是否一致然后断开一台 Leaf 的上行链路看服务器 ping 网关是否丢包。如果丢包在 1 个以内说明 Anycast 和 BFD 配合到位了。注意Anycast 网关要求所有 Leaf 的 VXLAN VNI 和 VLAN 映射一致否则 MAC 表同步会出问题。配置前先把 VXLAN 底层打通再配 Anycast。最后说个我自己的习惯每次割接前先在一台 Leaf 上配好所有功能用show running-config导出模板再用脚本批量推送到其他 Leaf。叶脊架构里 Leaf 配置高度相似手工一台台配不仅慢还容易漏掉maximum-paths或者bfd这种关键参数。脚本化推送后再逐台show ip route和show bgp summary验证比人眼靠谱得多。希望帮到你。本文还有配套的精品资源点击获取