注:本文为“OSPF 协议”相关合辑。
略作重排,如有内容异常,请看原文。
LSDB(Link State DataBase,链路状态数据库)
通过路由间的路由信息交换,自治系统内部可以达到信息同步,即 LSDB 描述的网络拓扑同步。
LSDB 唯一 ID 的三个参数
LSDB 中每份 LSA 都有唯一的身份证 ID,由以下三个参数构成:
- LSA 类型
- 链路状态 ID (Link State ID)
- 通告路由器的 Router ID
例如:R1 产生的 LSA1,其类型为 RouterLSA,Link State ID 为 1.1.1.1,通告路由器为 1.1.1.1。
LSDB 中的每份 LSA 通过此“身份证 ID”唯一标识。
- 泛洪是可靠的,可以是周期性(30 分钟)或触发产生的 LSA 通告过程。
- 泛洪是将 LSA 向区域中的每条链路复制并通告的过程。
- 全区域的泛洪会导致路由器收到多份相同的 LSA,LSDB 中仅保留最新的。
- 路由器仅泛洪最新的 LSA,相同 ID 的“旧的”LSA 会被“新的”LSA 所覆盖。
- 一旦最新的 LSA 被所有路由器收到,泛洪就结束。
- 区域中会有周期产生的新的 LSA 所致的泛洪或触发产生的新的 LSA 导致的泛洪行为。
判断相同 ID 的 LSA“新的”条件次序
判断相同 ID 的“新的”LSA 要依次比较以下内容:
- LSA 序列号 (Sequence Number)
- LSA 报文校验和 (Checksum)
- LSA 年龄 (LSA Age)
说明如下
- 序列号:有符号 32 位整数,采用线性递增的序列号,初始序列号从
0x80000001到最大值0x7FFFFFFF。序列号越大代表越新。LSA 会周期(30 分钟)产生新的 LSA,每次产生的 LSA 序列号都会增加 1。 - Checksum:16 位数,对刚收到的 LSA 做计算,Age 字段不在计算内。即使 LSA 存放在 LSDB 中,路由器也会每 5 分钟重新计算一次。
- Age:16 位无符号整数。LSA 的最大年龄是 3600 秒,LSA 在路由器间泛洪时每经过一跳年龄增加 1,在 LSDB 中存放时年龄也增加 1。若 LSA 的年龄达到 3600 秒(即 MaxAge),路由器会从 LSDB 中清除该 LSA。在拓扑稳定的场合下,每份存放在 LSDB 中的 LSA 间隔 30 分钟都会被周期产生的新 LSA 刷新。
泛洪机制将 LSA 向区域中的每条链路通告,不论 LSA 从哪条链路泛洪到当前路由器,在路由器的 LSDB 中仅保存一份最新的 LSA。若路由器收到多份相同“ID”的 LSA,则依次比较序列号、Checksum 和 LSA Age,来判定是否继续泛洪该 LSA,还是终止泛洪。
LSA 泛洪流程
- 如果收到的 LSA 本地数据库中没有,则接收该 LSA 并继续泛洪。
- 如果收到的 LSA 本地有,但收到的 LSA 比自己当前已有的 LSA 要新,则更新 LSDB 并泛洪新的 LSA。
- 如果收到的 LSA 比自己已有的 LSA 旧,则不接收该 LSA。
- 如果收到的 LSA 和自己路由器的 LSA 一样新,则忽略,并终止泛洪。
- 如果收到的 LSA 损坏,比如 Checksum 错误,则不接收该 LSA。
说明 1:判断 LSA 新旧的规则
- 序列号越大代表越新。
- 若序列号相同,则 Checksum 数值越大代表越新。
- 上述一致的情况下,继续比较 Age:
- 若 LSA 的 Age 为 MaxAge(即 3600 秒),则该 LSA 被认定更“新”。
- 若 LSA 间 Age 差额超过 15 分钟,则 Age 小的 LSA 被认定更“新”。
- 若 LSA Age 差额在 15 分钟以内,则二者视为相同“新”的 LSA,只保留先收到的一份 LSA。
说明 2:LSDB 中 LSA 的超时机制
LSDB 中 LSA 都有 Age,最大是 3600 秒,超过该值,则该 LSA 会从 LSDB 中被清除。LSDB 中 LSA 被清除的场景包括:
- 超过 MaxAge 被路由器自动清除。
- LSA 起源路由器产生 MaxAge 的 LSA 并向区域中泛洪,收到的路由器用其更新自己 LSDB 中的 LSA。泛洪 MaxAge 的 LSA,其作用相当于“毒化”路由。
LSA 超时机制流程
说明 3:可靠泛洪
泛洪的过程是可靠的过程,每份 LSA 都要在 LSU 中通告给邻居。邻居要对收到的每份 LSA 做确认,如果没有收到用于确认的 LSAck,则 LSU 要 5 秒后重传。可靠泛洪的结果使整个 Area 中的每台路由器都有完全一样的 LSDB。
可靠泛洪流程
OSPF 的三张表、LSA、LSDB、SPF 与路由表之间的关联、OSPF 建立的 8 种必要条件
Hades_Ling 于 2023-01-03 15:21:34 发布
一、OSPF 的三张表(邻居表、链路状态数据库表、路由表)
1. 邻居表
记录 OSPF 路由器之间的邻居状态。以下是示例输出:
<AR4>display ospf peer brief
OSPF Process 1 with Router ID 4.4.4.4
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.0 GigabitEthernet0/0/0 5.5.5.5 Full
----------------------------------------------------------------------------
2. LSDB 表
存储 OSPF 的 LSA 详细信息。通过命令 display ospf lsdb 查看 LSDB 的概览信息,而详细的 LSA 信息可通过 display ospf lsdb router 或 display ospf lsdb network 等命令查看。同一 OSPF 网络中的所有路由器维护相同的 LSDB 表。以下是示例输出:
<AR4>display ospf lsdb
OSPF Process 1 with Router ID 4.4.4.4
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 4.4.4.4 4.4.4.4 660 48 8000000C 1
Router 5.5.5.5 5.5.5.5 660 48 8000000C 1
Network 10.1.45.5 5.5.5.5 660 32 80000009 0
3. 路由表
OSPF 路由表中的路由是通过 SPF 算法计算得出的最优路径。以下是示例输出:
<AR4>display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 9 Routes : 9
Destination/Mask Proto Pre Cost Flags NextHop Interface
4.4.4.4/32 Direct 0 0 D 127.0.0.1 LoopBack0
5.5.5.5/32 OSPF 10 1 D 10.1.45.5 GigabitEthernet0/0/0
10.1.45.0/24 Direct 0 0 D 10.1.45.4 GigabitEthernet0/0/0
10.1.45.4/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
10.1.45.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
127.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
二、LSA、LSDB、SPF 与路由表的关联
- LSDB 的形成:OSPF 路由器通过交换自身的 LSA 来构建 LSDB。
- 路由的产生:通过 SPF 算法对 LSDB 中的路径信息进行计算,得出最优的 OSPF 路由。
- 路由表的更新:将最优的 OSPF 路由放置在路由表中。如果存在其他路由协议的最优路由与 OSPF 的最优路由相同,则比较路由优先级,优先级低的路由将被优先选择并放置在路由表中。
三、OSPF 邻居与邻接关系建立的必要条件
协议层面
- 版本一致性:OSPF 版本必须一致(如 OSPFv2 或 OSPFv3)。
- 区域一致性:链路配置的区域必须一致,否则无法建立邻居关系。
- Router-ID 唯一性:Router-ID 不能冲突。
链路层面
- 认证类型一致:认证类型和认证数据必须一致。
- 子网掩码一致:接口地址掩码必须一致。
- Hello 时间一致:Hello 时间间隔必须一致。
- Dead 时间一致:Dead 时间间隔必须一致。
- 区域类型一致:区域类型(如是否为特殊区域)必须一致。
- MTU 一致性(非必要): 对于华为设备来说,并不会在意链路的 MTU 值是否一致。
关于第 6 条的补充说明(原文未涉及)
华为设备 OSPF 协议中 MTU 配置
一、MTU 值对 OSPF 邻居关系与数据库同步的影响
-
邻居关系建立阶段
对于华为设备,当两台路由器的接口 MTU 值不一致时,不影响 OSPF 邻居关系的正常建立(如达到 Full 状态)。 -
数据库同步阶段
若邻居关系建立后,路由器在数据库同步过程中停留在 ExStart、Exchange 或 Loading 状态,通常是由 MTU 值不匹配导致的。这是因为:- MTU 值决定了单个 IP 数据包的最大长度,若两端设备允许的 MTU 值不同,可能导致 DD(数据库描述)报文分片或传输失败,进而阻塞同步流程。
二、华为设备的 MTU 配置机制
-
接口 MTU 检查功能
华为设备可通过命令ospf mtu-enable开启接口的 MTU 填充与检查功能。开启后,设备会在 DD 报文中携带接口 MTU 值,并验证对端设备的 MTU 是否一致;若不一致,则数据库同步会停滞。 -
缺省行为与兼容性配置
- 华为设备的缺省行为是不填充 DD 报文中的 MTU 值(值为 0),且不进行 MTU 检查,这与其他厂商设备的缺省设置可能存在差异。
- 为确保跨厂商设备的兼容性,建议保持华为设备的缺省配置(即不启用
mtu-enable),但需注意:此配置可能导致因 MTU 不匹配而引发数据库同步停滞的风险。
三、故障排查与配置建议
当 OSPF 邻居停留在 ExStart/Exchange/Loading 状态时,可按以下步骤排查:
- 检查两端接口的 MTU 值是否一致(使用
display interface命令)。 - 若为华为设备与其他厂商设备对接,可尝试在华为接口下禁用 MTU 检查(保持缺省配置),或统一两端 MTU 值(如设置为 1500)。
- 如需严格验证 MTU 一致性,可在华为接口启用
ospf mtu-enable,但需确保对端设备支持相同的 MTU 检查机制。
总结:华为设备的 MTU 配置需在兼容性与同步可靠性之间权衡,缺省配置适用于跨厂商环境,但需关注潜在的同步阻塞风险。
via:
-
huawei
-
OSPF 的三张表(邻居表、LSDB 表、路由表)、LSA、LSDB、SPF 与路由表之间的关联、OSPF 建立的 8 种必要条件 - Hades_Ling 于 2023-01-03 15:21:34 发布
https://blog.youkuaiyun.com/qq_45443704/article/details/128533697
2万+

被折叠的 条评论
为什么被折叠?



