一、OSPF简介
全称:Open Shortest Path First(开放式最短路径优先)。
特点:
链路状态协议,基于带宽计算最优路径(Cost = 参考带宽/接口带宽,默认100Mbps)。
使用SPF算法(Dijkstra),避免路由环路。
高效更新:触发更新 + 增量更新,减少带宽消耗。
支持分层区域设计,适用于大型网络。
封装于IP协议,协议号89,组播地址:
224.0.0.5
(所有OSPF路由器)、224.0.0.6
(DR/BDR)。
二、OSPF基本工作原理
四张表
邻居表:记录邻居路由器(Hello报文建立)。
LSDB(链路状态数据库):存储所有LSA,区域内一致。
OSPF路由表:通过SPF计算生成的最优路径。
全局路由表:整合OSPF路由与其他协议路由。
Router ID(RID)
在一个自治系统中唯一标识路由器,手动配置或自动选择(优先Loopback接口最大IP,其次物理接口最大IP)。
链路状态(LS)与LSA
链路状态(LS):路由器周边的链路的状态
直连网段状态:通过接口网段和接口状态感知 描述直连网段:(网段,掩码,接口开销)
直连拓扑状态:通过OSPF邻居和邻居状态感知
描述直连拓扑:(邻居RouterID,连接接口,接口开销)
接口开销:OSPF参考带宽 / 接口带宽
OSPF参考带宽默认为100Mbps。
Loopback接口的开销默认为1。
LSA:封装后的链路状态信息(如LSA 1:路由器LSA;LSA 2:网络LSA)。
SPF计算
以自身为根,计算到所有节点的最短路径树(Cost累加出接口开销)。
三、OSPF邻居建立与维护
邻居状态机
Down → Init → 2-Way:通过Hello报文发现邻居(双向通信)。
ExStart → Exchange → Loading → Full:同步LSDB(DD报文交换LSA头部,LSR/LSU请求详细LSA)。
由于封装在IP协议(不可靠),可靠性要靠自己,如图,开始A、B都处于ExStart状态,A给B发送一个DD报文(不携带相关的LSDB数据)发送一个seq=x(随机)序号,I(Init状态)、M(more还有更多DD)、MS(可竞争M(主)/S(从))。B也发一个类似的报文seq=y,双方收到之后确认主从关系,RID小的为从于是A(从)立马变为Exchange,发送一个DD(携带相关LSDB数据)报文,序列号为seq=Y,表示收到了B的seq=Y的报文,B收到这个消息之后也变为Exchange状态,随及也发送一个DD(携带相关LSDB数据)报文,seq=Y+1给A,A收到之后(从就变loading)状态变为loading,就给B发送一个确认seq=Y+1的报文表示收到,B收到之后,状态就变为FULL(主) A随即发送一个请求LSR,向B中请求他没有的或者需要更新的(请求缺失的LSA),B就回一个LSU报文,把A没有的或者需要更新的发给A(发送完整LSA),A收到后状态变为FULL,再给B回复一个LSA确认报文
DR/BDR选举(广播/NBMA网络)
选举原则:优先级(默认1)→ RID(越大越优)。
作用:减少邻接关系数量(公式:
2(n-2)+1
vs 全互联n(n-1)/2
)。稳定性:已选举的DR/BDR不会被更高优先级路由器抢占。
报文类型
报文类型 作用 目的地址 Hello 发现/维护邻居 224.0.0.5 DD (Database Description) 同步LSA头部 单播(广播网络) LSR (Link State Request) 请求缺失的LSA 单播 LSU (Link State Update) 发送完整LSA 单播/224.0.0.6 LSAck 确认LSU 单播/224.0.0.5
四、OSPF区域划分
单区域 vs 多区域
单区域:所有路由器在同一Area 0(骨干区域),适合小型网络。
多区域:通过ABR(区域边界路由器)连接Area 0与其他区域,减少LSDB规模。
区域优势
限制LSA洪泛范围,提高收敛速度。
汇总路由减少路由表条目。
五、单区域OSPF配置示例
bash
# 配置RTA(华为设备示例) [RTA] router id 1.1.1.1 [RTA] ospf 1 [RTA-ospf-1] area 0 [RTA-ospf-1-area-0.0.0.0] network 1.1.1.1 0.0.0.0 # Loopback接口 [RTA-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255 # 物理接口网段 [RTA-ospf-1-area-0.0.0.0] quit
关键命令:
router ospf <进程号>
:启动OSPF进程。network <IP> <通配符> area <区域>
:指定参与OSPF的接口。passive-interface
:禁止接口发送Hello报文(如连接终端网段)。
六、续
OSPF协议包具备超时重传机制
OSPF协议包具备序列号,对重复包不做处理
2.泛洪新LSA
当有新的LSA生成或收到时,这条新的LSA应当被泛洪。
泛洪新的LSA时,只需要使用LS Update报文和LS Ack报文。
(1). 当RTA有新的LSA要泛洪时,RTA向RTB发送一个LS Update报文,在 这个报文里包含这条LSA。
(2). 收到新的LSA以后,RTB向RTA泛洪一个LS Ack报文进行确认。
当在两个处于完全邻接状态(邻居状态为Full)的路由器之间泛洪新的LSA 时,邻居状态不受影响。一直都是FULL状态不改变。
(3).当广播网络中的LSDB更新,链路状态发送变化时,主要是DR路由器发送更新报文
3.OSPF LSA老化
(1)LSA不老化的缺点:当网络长时间中断,故障网络中的设备发起 的LSA长时间无效,但仍然存储在LSDB中,浪费设备内存。
(2)OSPF LSA采用递增老化
LSA自发起时开始计时,到达最大老化时间后,从LSDB中清除。
OSPF最大老化时间3600秒,LSA头部的老化时间字段用于计时。
4.OSPF LSA老化与全网刷新
(1)正常OSPF网络的路由维护
LSA老化时间到达最大老化时间的一半(30分钟),发起路由器 随机等待一段时间后重新发起该LSA,然后洪泛,刷新所有路 由器LSDB。
新发起的LSA序列号加1,老化时间为0。
(2)LSA在整个洪泛过程中,除老化时间外,其余各字段都保持不变
如图为序列号LAS的更新规则