基本知识
1.1 OSPF基本概念
- 定义:OSPF(Open Shortest Path First)是 IGP(域内网关协议),基于 链路状态 思想与 Dijkstra SPF 算法,按 区域(Area) 划分,收敛快、可扩展性好。
- 协议号:IPv4 的 IP Protocol = 89,组播地址 224.0.0.5(AllSPFRouters) 、224.0.0.6(AllDRouters) 。
- 设备角色:
-
- 内部路由器(Internal Router) :所有接口都在同一 Area 内。
- ABR(Area Border Router) :连接两个或多个 Area(其中必含 Area 0)。
- ASBR(AS Boundary Router) :与外部路由域交互(重分发),产生外部路由。
- 报文类型(五大控制报文) :
-
- Hello:发现/维持邻居,DR/BDR 选举。
- DD/DBD(Database Description) :邻接建立时的数据库目录摘要。
- LSR(Link State Request) :向对端请求缺失/过期的 LSA。
- LSU(Link State Update) :携带具体 LSA 内容。
- LSAck(Link State Acknowledgment) :对 LSU 的确认,确保可靠泛洪。
1.2 邻居与邻接(Neighbor vs. Adjacency)
- 邻居:在同一链路上互相收发 Hello 并满足参数匹配(Area-ID、Hello/Dead、网络类型、认证、Stub 标志、MTU 等)的路由器。
- 邻接:在邻居基础上进一步完成数据库同步(DD/LSR/LSU/LSAck),达到 Full 状态;并非所有网络类型/邻居都会形成邻接(如广播网段上非 DR/BDR 与非 DRother 之间通常不全邻接)。
- 邻接状态机(FSM) :
-
- Down → (收到 Hello)→ Init(我看见你)→ 2-Way(彼此看见,各自的 Router-ID 都出现在对方 Hello 的邻居列表里)→(若需邻接,如与 DR/BDR 或在 P2P)→ ExStart(协商主从/MTU)→ Exchange(交换 DBD)→ Loading(LSR/LSU 同步细节)→ Full。
- 常见卡点:
-
- 2-Way 停滞:可能是广播网段上非 DR/BDR 之间的正常现象;或 Stub 标志不一致。
- ExStart 卡住:多为 MTU 不匹配;或 DD 序列协商异常。
在点到点/点到多点网络中,邻接关系的建立过程和广播网络一样,唯一不同的是不需要选举DR和BDR,DD报文是组播发送的。
1.3 DR/BDR 与网络类型
- 为什么需要 DR/BDR:在多访问链路(广播或 NBMA)上,若所有路由器彼此全邻接,将导致 N×(N−1)/2 的邻接关系与泛洪风暴。DR/BDR 作为中心节点,其他 DRother 与 DR/BDR 建立邻接,显著降低复杂度。
- 选举规则(同一网段内):
-
- 接口优先级(Priority) 高者胜(0 表示不参与选举)。
- 优先级相同,则 Router-ID 大者胜。
- 非抢占:已当选者不会被后来更优者替换,除非重置/中断。
- 网络类型与默认 Hello/Dead(常见)
-
- Broadcast(以太网) :Hello/Dead 常见为 10s/40s,有 DR/BDR。
- Point-to-Point(P2P) :Hello/Dead 常见为 10s/40s,无 DR/BDR,形成全邻接。
- NBMA:默认常见 30s/120s,有 DR/BDR,需要手工邻居;可调为 P2MP/P2P 以简化。
- P2MP:逻辑多点,通常无 DR/BDR。
- 以太网上的 P2P:很多厂商支持把以太口改为 network-type p2p,可绕过 DR/BDR,适合两点直连链路或核心收敛优化。
1.4 LSA 类型与作用域(OSPFv2 常用)
LSA(Link-State Advertisement)是 OSPF 的“数据库记录”,通过可靠泛洪在相应作用域内传播。
- Type 1:Router-LSA(路由器自身在某 Area 的连接/开销)→ 仅在本 Area 内有效。
- Type 2:Network-LSA(由 DR 产生,描述多访问网段与连接其上的路由器)→ 仅在本 Area 内。
- Type 3:Summary-LSA(ABR 产生,把一个 Area 的前缀摘要到另一个 Area)→ 跨 Area,但不出 AS。
- Type 4:ASBR-Summary-LSA(ABR 发布 ASBR 的可达性)→ 跨 Area,但不出 AS。
- Type 5:AS-External-LSA(ASBR 注入的外部路由,如从 BGP/静态重分发)→ 整个 OSPF 域内传播(Stub/NSSA 除外) 。
- Type 7:NSSA-External-LSA(NSSA 内的外部路由,由 NSSA ABR 翻译为 Type 5)→ NSSA 内本地,出区后变 Type 5。
- (扩展/不常用)Type 9/10/11:Opaque LSA(流量工程/扩展用途)。
- 老化与刷新:
-
- LSA Refresh 通常 30 分钟;MaxAge 通常 3600 秒。
- 序列号、年龄与 LSAck 确保一致性与环路避免。
1.5 路由选择逻辑(简化顺序)
- 前缀匹配(最长匹配优先)。
- OSPF 路由类型优先级(常规认知):
-
- Intra-Area(区域内)
- Inter-Area(区域间 / 来自 Type 3/4)
- External:E1/N1(把链路代价叠加进来)优先于 E2/N2(只看外部度量)。
- 同等级比较:比较 累计 Cost;再比较 Router-ID 等细粒度规则(厂商实现略有差异)。
- 等价负载分担(ECMP) :多条相同度量的路径可被同时安装(数量上限与策略由设备决定)。
- Cost 计算:通常是 参考带宽 / 接口带宽,结果为整数,接口/进程均可手工设定;为避免千兆/万兆接口都为 1 的“扁平化”,需把 参考带宽 调到更大(如 100G)。
1.6 区域(Area)与分层设计
- Area 0(Backbone) :所有非 0 区域必须与 Area 0 连通(物理或通过 虚链路),跨区流量必须经由骨干。
- 分层意义:
-
- 控制 LSA 泛洪范围,降低每台设备的 LSDB 规模,提升收敛与稳定性。
- 在 ABR 做 路由汇总,隔离故障与变动。
- 虚链路(Virtual Link) :当某个非 0 区域与 Area 0 不连续时,可在一条 非 Stub 的传输区 上在两台 ABR 之间建立虚链路,逻辑上把该 ABR 接入 Backbone。设计上应 少用,更偏向过渡方案。
实验
2.1 拓扑图
2.2 各机器配置
A MSR36-20_1
#
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
#
interface LoopBack1
ip address 1.1.2.1 255.255.255.255
#
interface GigabitEthernet0/0
port link-mode route
combo enable copper
ip address 200.200.200.1 255.255.255.0
#
interface GigabitEthernet0/1
port link-mode route
combo enable copper
#
interface GigabitEthernet0/2
port link-mode route
combo enable copper
ip address 100.100.100.1 255.255.255.0
#
#
ospf 1 router-id 1.1.1.1
area 0.0.0.0
network 1.1.2.1 0.0.0.0
network 200.200.200.0 0.0.0.255
area 0.0.0.1
network 1.1.1.1 0.0.0.0
network 100.100.100.0 0.0.0.255
#
return
B MSR36-20_2
#
interface LoopBack0
ip address 2.2.2.2 255.255.255.255
#
interface LoopBack1
ip address 2.2.1.2 255.255.255.255
#
interface GigabitEthernet0/0
port link-mode route
combo enable copper
ip address 200.200.200.2 255.255.255.0
#
interface GigabitEthernet0/2
port link-mode route
combo enable copper
ip address 130.130.130.2 255.255.255.0
#
#
ospf 1 router-id 2.2.2.2
area 0.0.0.0
network 2.2.2.2 0.0.0.0
network 200.200.200.0 0.0.0.255
area 0.0.0.2
network 2.2.1.2 0.0.0.0
network 130.130.130.0 0.0.0.255
#
return
C MSR36-20_3
#
interface LoopBack0
ip address 3.3.3.3 255.255.255.255
#
interface GigabitEthernet0/0
port link-mode route
combo enable copper
#
interface GigabitEthernet0/1
port link-mode route
combo enable copper
ip address 10.10.10.254 255.255.255.0
#
interface GigabitEthernet0/2
port link-mode route
combo enable copper
ip address 100.100.100.3 255.255.255.0
#
#
ospf 1 router-id 3.3.3.3
area 0.0.0.1
network 3.3.3.3 0.0.0.0
network 10.10.10.0 0.0.0.255
network 100.100.100.0 0.0.0.255
#
return
D MSR36-20_4
#
interface LoopBack0
ip address 4.4.4.4 255.255.255.255
#
interface GigabitEthernet0/1
port link-mode route
combo enable copper
ip address 20.20.20.254 255.255.255.0
#
interface GigabitEthernet0/2
port link-mode route
combo enable copper
ip address 130.130.130.4 255.255.255.0
#
#
ospf 1 router-id 4.4.4.4
area 0.0.0.2
network 4.4.4.4 0.0.0.0
network 20.20.20.0 0.0.0.255
network 130.130.130.0 0.0.0.255
#
return
F PC
2.3 实验结果
A peer
各路由器和自己所在区域的路由器建立起邻居关系。