4.HCIP OSPF域内路由计算 📅 2026/6/16 9:41:06 OSPF域内路由计算一、域内路由计算概述1.1 路由计算的基本过程OSPFOpen Shortest Path First开放式最短路径优先是一种内部网关协议用于在自治系统内部计算路由。与距离矢量协议不同运行OSPF的设备不交互路由信息而是交互链路状态信息。OSPF协议路由的计算过程如下先通过交互Hello报文形成邻居关系再通过泛洪LSA完成链路状态数据库LSDB的同步然后每台设备基于本机的LSDB独立地计算最短路径树。当网络稳定下来后每一台路由器都拥有完全相同的链路状态数据库对于同一区域而言。1.2 域内路由计算的两个核心阶段OSPF域内路由计算分为两个阶段第一阶段构建SPF树树干构建阶段根据Router-LSA1类LSA中的P2P和TransNet类型的链路以及Network-LSA2类LSA构建SPF最短路径树的主干树干。树干覆盖了所有路由器节点和伪节点此阶段仅使用拓扑信息即描述路由器之间连接关系的链路不涉及具体的网络前缀。第二阶段计算最优路由挂载叶子阶段树干构建完成后根据Router-LSA中的StubNet类型的链路以及Network-LSA中的路由信息将网络前缀作为“叶子”挂载到对应的路由器节点上计算出到达各个网段的最优路由。1.3 输入材料1类LSA与2类LSAOSPF域内路由计算所需的数据主要来自区域内部泛洪的两类LSARouter-LSA1类LSA每台OSPF路由器都会为自己的每个所属区域生成一条Router-LSA描述本路由器在该区域内的链路状态信息包括链路的数量、类型、网络掩码和开销信息等。1类LSA中同时包含了拓扑信息和路由信息。Network-LSA2类LSA仅在广播型MA网络如以太网或NBMA网络中产生由DR生成用于描述伪节点所连接的所有设备以及该网络的子网掩码。2类LSA中也同时包含了拓扑信息和路由信息。说明在单区域内路由计算阶段LSDB中通常只包含Router-LSA和Network-LSA。涉及区域间或外部路由计算的LSAType 35、7在此阶段暂不涉及。二、核心LSA详解2.1 LSA通用头部格式所有LSA都拥有统一的头部格式其中Type、LS id和Adv rtr是LSA的三要素用于唯一标识一条LSA。通用头部的关键字段如下字段含义LS ageLSA产生后所经过的时间秒最大老化时间3600秒Options可选项E-bit、N-bit等能力标记位TypeLSA类型1为Router-LSA2为Network-LSALink State ID与Type共同唯一标识一个LSAAdv rtr产生此LSA的路由器Router IDLS sequence number序列号数值越大代表LSA越新LS checksum校验和用于检查LSA完整性LengthLSA总长度区域内路由计算仅依赖1类LSARouter-LSA和2类LSANetwork-LSA两者中同时包含了拓扑信息和路由信息。2.2 1类LSARouter-LSA2.2.1 概述1类LSA由每台OSPF路由器为自己的每个所属区域产生描述了本路由器在该区域内的链路状态信息。Router-LSA中包含了拓扑信息P2P和TransNet链路和路由信息StubNet链路。P2P网络示例以R5与R2之间的P2P链路为例在P2P网络中路由器产生的Router-LSA中会同时包含拓扑信息和路由信息Router-LSA中包含 - 拓扑信息P2P类型Link ID 2.2.2.2邻居Router IDData 本地接口IP地址Link Type P-2-PMetric 48 - 路由信息StubNet类型Link ID 192.168.45.0Stub网络地址Data 255.255.255.0掩码Link Type StubNetMetric 48广播网络示例以R1为例当R1连接到广播型网络时其Router-LSA只包含指向DR的拓扑信息不包含路由信息——网络号及子网掩码需要通过2类LSA获取Router-LSA中包含 - 拓扑信息TransNet类型Link ID 192.168.12.2DR接口IP地址Data 本地接口IP地址Link Type TransNetMetric 1检查点1TransNet链路中是否包含网络号/掩码信息评估TransNet链路中不包含网络号/掩码及共享链路上其他路由器的任何信息只包含与DR的连接关系及开销。2.2.2 链路类型详解Router-LSA中的Link字段承载链路信息每条链路通过Link ID、Data、Link Type和Metric进行描述。链路类型主要有以下四种链路类型用途Link ID含义Data含义归属P2P描述点到点连接邻居路由器的Router ID本地接口IP地址拓扑信息TransNet描述到MA/NBMA网络的连接DR的接口IP地址本地接口IP地址拓扑信息StubNet描述末节网段直连网络该Stub网络的网络号子网掩码路由信息Virtual描述虚连接虚连接对端的Router ID本端虚连接接口IP拓扑信息P2P链路和TransNet链路描述的是路由器之间的连接关系属于拓扑信息用于构建SPF树干StubNet链路描述的是直连的IP网段属于路由信息用于挂载叶子。StubNet链路不参与SPF树干构建。2.2.3 重要边界说明OSPF规定只有ABR区域边界路由器可以将非骨干区域的3类LSA中的信息传递给骨干区域普通的区域内路由器只能在本区域内接收并传播1类LSA。检查点2“ABR可以在骨干区域有Full邻居时将非骨干区域的3类LSA传递到骨干区域”这一说法是否正确评估根据OSPF区域间水平分割机制ABR不会将非骨干区域的3类LSA传递到骨干区域这破坏了区域间防环机制。该表述与OSPF防环规则相违背。2.3 2类LSANetwork-LSA2.3.1 概述2类LSA由广播网或NBMA网络中的DR指定路由器产生记录了这一网络上所有路由器的Router ID描述本网段的链路状态在所属的区域内传播。2类LSA中同时包含了拓扑信息和路由信息。2.3.2 字段详解字段含义LS idDR的接口IP地址Adv rtr产生此Network-LSA的路由器Router ID即DR的Router IDNet mask该网段的网络掩码Attached Router连接到该网段的路由器列表包含DR自身的Router IDNetwork-LSA示例Type : Network (2类LSA) Ls id : 192.168.12.2 (DR的接口IP地址) Adv rtr : 2.2.2.2 (DR的Router ID) Net mask : 255.255.255.0 (网络掩码) Attached Router: 2.2.2.2 Attached Router: 1.1.1.12.3.3 伪节点机制在广播型MA网络如以太网中可能存在多台路由器连接到同一个广播域。如果直接用物理路由器节点来描述这种多对多的连接关系每个路由器都需要描述与所有其他路由器的连接关系拓扑图会变得极其复杂。OSPF引入伪节点Pseudonode的概念来解决这一问题。在广播型MA网络中DR生成2类LSA来描述伪节点。2类LSA中包含DR接口的IP地址LS id以及该广播网络上所有的路由器列表Attached Router List同时还描述了该网络的子网掩码。通过伪节点机制原本多台路由器之间多对多的复杂连接关系被简化为每台路由器与伪节点之间的一对一连接关系拓扑图变得简洁清晰SPF算法的高效计算得以保证。2.3.4 1类与2类LSA的协同关系总结在广播网络中1类LSA和2类LSA必须配合使用才能完整描述广播网络的拓扑和路由信息1类LSA通过TransNet链路指向DR描述“本路由器连接到这个MA网络”2类LSA通过Attached Router列表描述该MA网络连接了哪些路由器拓扑信息并通过Net Mask提供网络掩码路由信息比较维度P2P网络广播型网络MA/NBMA伪节点不存在直接描述邻居关系存在DR代表伪节点拓扑信息描述Router-LSA中的P2P链路指向邻居路由器Router-LSA中的TransNet链路指向DRNetwork-LSA补充伪节点连接的设备列表路由信息描述Router-LSA中的StubNet链路Network-LSA中的LS id Net Mask三、SPF树的构建原理3.1 Dijkstra算法的核心思想OSPF使用SPF最短路径优先算法来计算路由本质上就是图论中的Dijkstra算法用于求解单源最短路径问题。每台路由器基于链路状态数据库以自己为根节点独立计算一棵以自己为根的、无环的、拥有最短路径的树。3.2 华为SPF计算的两个阶段在实践中OSPF的SPF计算通常分为两个阶段阶段一构建SPF树干这一阶段提取拓扑信息P2P、TransNet、2类LSA中的Attached Router构建覆盖所有路由器节点和伪节点的最短路径树主干路由器将自己添加到最短路径树的树根位置查看自己的Router-LSA仅关注非StubNet类型的Link即P2P和TransNet因为这些Link描述的是路由器之间的连接关系拓扑信息StubNet链路不参与SPF树干构建将这些Link指向的节点邻居路由器或伪节点放入候选列表记录累计开销父节点到根的开销 本Link的Metric值从候选列表中选出离根节点最近的节点将其加入SPF树并从候选列表中删除若该节点是普通路由器展开其Router-LSA查看其中的P2P和TransNet Link计算累计开销将新邻居加入或更新候选列表若该节点是伪节点展开其Network-LSA从Attached Router列表中发现新路由器节点计算累计开销父节点到根的开销 DR到路由器的开销DR到路由器的开销通常为0加入或更新候选列表重复步骤4-6直到候选列表为空检查点3“SPF树干构建阶段StubNet链路也参与候选列表填充”这一做法是否正确评估华为SPF计算过程中树干构建阶段只处理非StubNet类型的Link即P2P和TransNetStubNet链路不参与构建SPF树干。因此StubNet链路不参与候选列表填充该做法是正确的。阶段二计算最优路由挂载叶子当树干所有路由器节点和伪节点构建完成后再将路由信息作为“叶子”挂载到树干上遍历树中每个路由器节点查看其Router-LSA中的StubNet类型的Link提取直连网段信息将这些网段作为叶子附加到对应的路由器节点上对于广播网络中的伪节点查看其Network-LSA中的Net Mask字段结合LS id得到该广播网络的地址范围将该网段作为叶子附加到伪节点对应的广播网段上叶子网段的路由开销等于该叶子所依附节点到根节点的累计开销核心理解“先有树干后有叶子”。树干基于拓扑信息构建叶子基于路由信息挂载两者缺一不可。这一分阶段的机制确保了SPF计算的高效性和准确性。3.3 广播网络中的特殊处理当根节点通过TransNet链路连接到DR伪节点时构建树干的关键点在于分析伪节点的Network-LSADR产生的Network-LSA中包含了与该伪节点相连的所有路由器列表Attached Router列表。通过这些信息可以继续发现新的路由器节点并将它们添加到候选列表中。特别说明当存在两条等价路径累计开销相同时OSPF会默认开启负载分担实现流量均衡。四、SPF树构建示例手把手教程以下通过一个示例拓扑逐步演示以R1为根的SPF树构建过程。示例拓扑R1Router ID1.1.1.1通过以太网连接到DR接口IP 192.168.12.2Metric1同时通过P2P链路直连R3Metric48。DR的2类LSA中Attached Router列表包含R22.2.2.2Metric0。R2再通过P2P链路连接R4Metric48R3通过P2P链路连接R4Metric48。R4连接Stub网段192.168.45.0/24。4.1 第一步初始化候选列表R1将自己添加到最短路径树的树根位置然后查看自己的Router-LSA。R1的Router-LSA中包含以下可用于树干构建的LinkTransNet链路Link ID 192.168.12.2DR接口IPMetric 1P2P链路Link ID 3.3.3.3R3的Router IDMetric 48忽略StubNet链路将上述两个节点加入候选列表累计开销分别为1和48。4.2 第二步按开销从小到大将节点加入SPF树树干构建第1轮候选列表中累计开销最小的是192.168.12.2DR伪节点开销1。将其加入SPF树从候选列表删除。展开其Network-LSA从Attached Router列表中发现新节点2.2.2.2R2的Router ID。计算累计开销根到DR的开销1 DR到R2的开销0 1。将2.2.2.2加入候选列表。此时候选列表3.3.3.3(48)、2.2.2.2(1)第2轮选择2.2.2.2开销1加入SPF树。展开R2的Router-LSA查看非StubNet链路R2 → DR192.168.12.2已在SPF树中忽略R2 → R44.4.4.4P2P链路Metric48。累计开销14849加入候选列表。此时候选列表3.3.3.3(48)、4.4.4.4(49)第3轮选择3.3.3.3R3开销48加入SPF树。展开R3的Router-LSA查看非StubNet链路R3 → R44.4.4.4P2P链路Metric48。累计开销484896。此时4.4.4.4在候选列表中的原开销为49新开销96更大不更新候选列表。此时候选列表4.4.4.4(49)第4轮选择4.4.4.4R4开销49加入SPF树。展开R4的Router-LSA无新拓扑节点发现。候选列表为空树干构建完成。树干节点R1(0)、DR(1)、R2(1)、R3(48)、R4(49)4.3 第三步挂载叶子计算路由树干构建完成后遍历每个节点提取网段信息R1提取其Router-LSA中的StubNet链路附加直连网段如有DR伪节点提取其Network-LSA中的Net Mask与LS id做与运算得到广播网段192.168.12.0/24开销1R2提取其Router-LSA中的StubNet链路附加直连网段如有R3提取其Router-LSA中的StubNet链路附加直连网段如有R4提取其Router-LSA中的StubNet链路附加192.168.45.0/24开销R4节点到根的开销49最终R1的路由表中包含区域内路由条目。五、常用命令速查5.1 查看链路状态数据库LSDB# 查看OSPF进程的LSDB摘要信息Huaweidisplay ospf lsdb示例输出OSPF Process 1 with Router ID 10.1.1.1 Link State Database Area: 0.0.0.0 Type LinkState ID AdvRouter Age Len Sequence Metric Router 10.1.1.1 10.1.1.1 1348 48 800007C9 10000 Router 10.1.1.2 10.1.1.2 1078 60 80000654 0 Network 192.168.10.1 192.168.10.1 1349 32 80000060 0输出字段说明TypeLSA类型Router、Network、Sum-Net等LinkState ID链路状态IDAdvRouter通告此LSA的路由器Router IDAge老化时间秒LenLSA长度Sequence序列号数值越大代表LSA越新Metric开销值5.2 查看特定类型的LSA# 查看自己生成的Router-LSA验证本地通告的拓扑和路由信息Huaweidisplay ospf lsdb router self-originate# 查看指定路由器生成的Router-LSAHuaweidisplay ospf lsdb router2.2.2.2# 查看Network-LSA由DR生成描述伪节点信息Huaweidisplay ospf lsdb network192.168.12.25.3 查看OSPF路由表# 查看OSPF路由表显示计算出的最终路由结果Huaweidisplay ospf routing输出中的区域内路由Intra-Area Route即由SPF算法通过1类和2类LSA计算得到的最终结果。六、域内路由知识要点速查知识点核心要点LSA类型Router-LSA1类描述路由器直连接口状态Network-LSA2类描述MA/NBMA网段信息链路类型归属P2P与TransNet属于拓扑信息树干构建StubNet属于路由信息叶子挂载伪节点广播型MA网络中的逻辑节点由DR代表通过2类LSA描述简化拓扑复杂度树干基于P2P、TransNet和Network-LSA的Attached Router列表构建的SPF主干覆盖所有路由器和伪节点叶子基于StubNet和Network-LSA的Net Mask挂载的网络前缀最终转化为IP路由表条目SPF计算流程阶段一构建树干拓扑计算→ 阶段二挂载叶子路由计算Dijkstra算法以根节点为起点逐次选取最近节点直到覆盖全网关键命令display ospf lsdb、display ospf lsdb router、display ospf routing声明本文档主要基于华为官方技术文档和RFC标准进行编写具体部署和故障排查请以华为官方最新发布的产品文档为准。本文内容仅供参考学习实际网络部署时应结合具体设备型号和软件版本进行验证。