OSPF路由协议

发布于:2025-07-24 ⋅ 阅读:(34) ⋅ 点赞:(0)

一、OSPF简介

  • 全称:Open Shortest Path First(开放式最短路径优先)。

  • 特点

    • 链路状态协议,基于带宽计算最优路径(Cost = 参考带宽/接口带宽,默认100Mbps)。

    • 使用SPF算法(Dijkstra),避免路由环路。

    • 高效更新:触发更新 + 增量更新,减少带宽消耗。

    • 支持分层区域设计,适用于大型网络。

    • 封装于IP协议,协议号89,组播地址:224.0.0.5(所有OSPF路由器)、224.0.0.6(DR/BDR)。


二、OSPF基本工作原理

  1. 四张表

    • 邻居表:记录邻居路由器(Hello报文建立)。

    • LSDB(链路状态数据库):存储所有LSA,区域内一致。

    • OSPF路由表:通过SPF计算生成的最优路径。

    • 全局路由表:整合OSPF路由与其他协议路由。

  2. Router ID(RID)

    • 在一个自治系统中唯一标识路由器,手动配置或自动选择(优先Loopback接口最大IP,其次物理接口最大IP)。

  3. 链路状态(LS)与LSA

    • 链路状态(LS):路由器周边的链路的状态  

    • 直连网段状态:通过接口网段和接口状态感知 描述直连网段:(网段,掩码,接口开销)

    • 直连拓扑状态:通过OSPF邻居和邻居状态感知

    •  描述直连拓扑:(邻居RouterID,连接接口,接口开销)

    • 接口开销:OSPF参考带宽 / 接口带宽

    • OSPF参考带宽默认为100Mbps。

    • Loopback接口的开销默认为1。

    • LSA:封装后的链路状态信息(如LSA 1:路由器LSA;LSA 2:网络LSA)。

  4. SPF计算

    • 以自身为根,计算到所有节点的最短路径树(Cost累加出接口开销)。


三、OSPF邻居建立与维护

  1. 邻居状态机

    • 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确认报文

  2. DR/BDR选举(广播/NBMA网络)

    • 选举原则:优先级(默认1)→ RID(越大越优)。

    • 作用:减少邻接关系数量(公式:2(n-2)+1 vs 全互联n(n-1)/2)。

    • 稳定性:已选举的DR/BDR不会被更高优先级路由器抢占。

  3. 报文类型

    报文类型 作用 目的地址
    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区域划分

  1. 单区域 vs 多区域

    • 单区域:所有路由器在同一Area 0(骨干区域),适合小型网络。

    • 多区域:通过ABR(区域边界路由器)连接Area 0与其他区域,减少LSDB规模。

  2. 区域优势

    • 限制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的更新规则


网站公告

今日签到

点亮在社区的每一天
去签到