4. Underlay路由协议设计

在叶脊(Spine-Leaf)架构中,Underlay网络承担着为所有Overlay隧道提供无环、可预测、可扩展的IP可达性这一基础职责。它不承载业务策略,也不做复杂的路径控制,核心目标只有一个:让任意两台Leaf之间、以及Leaf与Spine之间,始终存在多条等价的、可快速收敛的转发路径。因此,Underlay路由协议的选择与配置,直接决定了整个数据中心网络的收敛速度、扩展上限和排障难度。

一、为什么Underlay首选OSPF或IS-IS

在Nexus平台上,Underlay路由协议通常从OSPFv2(IPv4)或IS-IS中二选一。两者都是链路状态协议,都支持ECMP,都能在毫秒级完成拓扑变化后的重新计算。选择依据主要看三点:

  • 协议开销与扩展性:IS-IS直接运行在二层之上,不依赖IP层,报文更精简,在大规模Clos拓扑中邻居建立和LSP泛洪效率更高;OSPF运行在IP之上,配置更直观,工程师熟悉度更高。
  • 区域/层级设计:OSPF使用Area 0作为骨干区域,Leaf和Spine通常全部划入Area 0,形成单区域扁平结构;IS-IS使用Level-1/Level-2,在叶脊场景中通常全部配置为Level-2,同样形成扁平骨干。
  • 与Overlay的配合:无论选哪个,Underlay只负责Loopback地址(通常作为VTEP地址)和互联接口地址的可达性,BGP EVPN等Overlay协议独立运行,两者解耦。

对于中小规模叶脊网络,OSPF配置简单、排障工具丰富,是稳妥选择;对于大规模、高密度Spine场景,IS-IS的扩展性和收敛表现更优。本节以OSPF为例展开,IS-IS的差异点会在关键处标注。

二、点对点链路设计:/30还是/31

Spine与Leaf之间的每条互联链路,都应设计为点对点(P2P)链路。Nexus接口下使用 ip address 配置地址时,推荐使用RFC 3021定义的/31掩码,即每条链路只消耗两个IP地址,相比/30节省一半地址空间。例如:

interface Ethernet1/1
  description To-Spine-01
  no switchport
  ip address 10.0.1.0/31
  ip router ospf 1 area 0.0.0.0
  no shutdown

对端Spine接口配置为 10.0.1.1/31。使用/31时,Nexus会自动将接口识别为点对点网络类型,不会产生DR/BDR选举,邻居关系直接进入FULL状态,收敛更快。如果使用/30,则需显式配置 ip ospf network point-to-point,否则OSPF会按广播网络处理,产生不必要的DR选举和LSA泛洪。

IS-IS方面,点对点链路同样推荐/31,并在接口下配置 isis network point-to-point,避免DIS选举。IS-IS的NET地址通常规划为 49.0001.0000.0000.0001.00 这类格式,其中System ID建议与Loopback地址或设备编号对应,便于排障时快速定位。

三、ECMP等价多路径:从协议到转发表

叶脊架构的带宽优势,本质上来自ECMP。以一台Leaf为例,它到每台Spine都有一条/31互联链路,同时通过OSPF学习到其他Leaf的Loopback地址。由于所有Spine到目标Leaf的路径开销(cost)相同,OSPF会计算出多条等价下一跳,Nexus默认支持最多16条ECMP路径(可通过 maximum-paths 调整)。

ECMP的生效需要三个条件同时满足:

  1. 路由协议计算出多条到达同一目的前缀的等价路径;
  2. 这些路径的下一跳接口均处于up状态,且下一跳地址可达;
  3. 转发表(FIB)中这些路径被正确安装为等价条目。

在Nexus上,可以通过以下命令验证ECMP是否生效:

Leaf-01# show ip route 10.255.0.2/32
IP Route Table for VRF "default"
'*' denotes best ucast next-hop
'**' denotes best mcast next-hop
'[x/y]' denotes [preference/metric]

10.255.0.2/32, ubest/mbest: 2/0
    *via 10.0.1.1, Eth1/1, [110/41], 00:12:33, ospf-1, intra
    *via 10.0.2.1, Eth1/2, [110/41], 00:12:33, ospf-1, intra

输出中 ubest/mbest: 2/0 表示有2条等价最优路径,两条路径的metric均为41,分别从Eth1/1和Eth1/2出去。如果只看到1条,需要检查对端接口是否up、OSPF邻居是否FULL、以及是否被 maximum-paths 限制。

四、关键参数与收敛调优

Underlay的收敛速度直接影响Overlay隧道的恢复时间。以下参数在Nexus上值得关注:

参数推荐值作用
OSPF hello-interval3秒(P2P)加快邻居失效检测
OSPF dead-interval12秒(P2P)通常为hello的4倍
OSPF cost手动指定或按带宽确保所有Spine路径等价
maximum-paths16(默认)允许的ECMP最大路径数
BFD启用,间隔300ms×3毫秒级故障检测,触发快速重路由

BFD(Bidirectional Forwarding Detection)是Underlay收敛的关键加速器。在OSPF邻居间启用BFD后,链路故障可在300ms内被检测到,OSPF随即重新计算并更新ECMP组,整个过程通常在1秒内完成。配置示例:

interface Ethernet1/1
  ip ospf bfd
  bfd interval 300 min_rx 300 multiplier 3

IS-IS的收敛调优类似,可调整 isis hello-interval、isis hello-multiplier,并启用 bfd。此外,IS-IS支持LSP快速泛洪和PRC(Partial Route Calculation),在拓扑变化时只重算受影响的前缀,进一步缩短收敛时间。

五、Underlay与Overlay的边界

需要特别强调的是,Underlay路由协议只负责VTEP Loopback地址和互联地址的可达性,不应引入任何业务网段。业务网段的路由应由BGP EVPN在Overlay中传递。如果误将业务网段引入OSPF,会导致Underlay路由表膨胀,破坏叶脊架构的清晰边界,也会让排障变得困难。

一个典型的Underlay路由表应该非常干净:每台Leaf只看到所有Spine的互联地址、所有Leaf的Loopback地址,以及自己的直连网段。Spine则看到所有Leaf的Loopback地址和互联地址。路由条目数量与设备数量成线性关系,而不是与业务网段数量成线性关系。

Underlay OSPF点对点链路与ECMP转发示意 Spine-01 Lo: 10.255.0.1/32 Spine-02 Lo: 10.255.0.2/32 Leaf-01 Lo: 10.255.1.1/32 Leaf-02 Lo: 10.255.1.2/32 Eth1/1 ↔ Eth1/1 10.0.1.0/31 Eth1/2 ↔ Eth1/1 10.0.2.0/31 Eth1/2 ↔ Eth1/2 10.0.3.0/31 Eth1/2 ↔ Eth1/2 10.0.4.0/31 Leaf-01 到 10.255.1.2/32 的ECMP 2条等价路径:经Spine-01 / 经Spine-02 OSPF Area 0.0.0.0 所有Spine/Leaf均属骨干区域 BFD 300ms × 3 故障检测 < 1秒,触发ECMP重算 Spine-01互联链路 Spine-02互联链路

上图展示了四台设备组成的典型叶脊Underlay:两台Spine与两台Leaf之间通过/31点对点链路互联,全部接口运行OSPF Area 0。Leaf-01到Leaf-02的Loopback地址存在两条等价路径,分别经过Spine-01和Spine-02,形成ECMP。BFD在每条链路上运行,一旦某条链路故障,OSPF在1秒内完成收敛,ECMP组自动更新为单路径,业务流量切换到剩余Spine。

在实际部署中,建议先完成所有点对点链路的IP地址和OSPF邻居配置,确认每台Leaf都能看到所有Spine的Loopback地址,再检查ECMP条目数量是否等于Spine数量。如果ECMP数量少于Spine数量,优先排查接口状态、OSPF邻居状态和cost值是否一致。
不要将业务网段引入Underlay的OSPF进程。Underlay只承载VTEP Loopback和互联地址,业务路由由BGP EVPN在Overlay中传递。混用会导致路由表膨胀和排障困难。