OSPF路由协议——上
OSPF路由协议
RIP的不足
以跳数评估的路由并非最优路径

- 如果RTA选择s0/0传输,传输需时会大大缩短为3s
最大跳数为16跳,导致网络尺度小

- RIP协议限制网络直径不能超过16跳,并且16跳为不可达。
收敛速度慢
- RIP 定期路由更新
- 更新计时器:定期路由更新的时间间隔,默认为30s
- 失效计时器:失效计时器内未收到更新,路由失效,默认180s
- 清除计时器:清除计时器内未收到更新,路由清除,默认240s

更新发送全部路由表,浪费网络资源

- 假设RTA和RTB各有1000条路由,每条路由需占用20个字节
- 每次路由更新时,RTA和RTB之间单向需消耗至少160Kb的带宽资源
OSPF简介
什么是OSPF
- OSPF英文全称Open Shortest Path First(开放式最短路径优先)
- OSPF是IETF开发的一种链路状态路由协议,使用基于带宽的度量值
- OSPF采用SPF(Shortest Path First,最短路径优先算法)算法计算路由,从算法上保证了无路由环路
- OSPF通过邻居关系维护路由,避免了定期更新第带宽的消耗
- OSPF路由更新效率高,网络收敛快,适用于大中型网络
- OSPF报文封装于IP,协议号89,组播地址224.0.0.5和224.0.0.6
OSPF的基本工作原理
OSPF协议模型
- OSPF基本协议模型

-
LSA(Link-State Advertisement,链路状态通告)
-
LSDB(Link-State Database,链路状态数据库)
-
OSPF的四张表
OSPF基本概念——Router ID
- 一台路由器要想运行OSPF协议,则必须存在Router ID(RID)
- RID是一个32比特无符号整数,可以在一个自治系统中唯一的标识一台路由器。
- RID可以手工配置,也可以自动生成。
- 如果没有通过命令指定RID,将按照如下顺序自动生成一个RID:
- 如果当前设备配置了Loopback接口(虚拟接口),将选取所有Loopback接口上数值最大的IP地址作为RID;
- 如果当前设备没有配置Loopback接口,将选取它所有已经配置IP地址且链路UP的接口上数值最大的IP地址作为RID。
Router ID选举实例

OSPF基本概念——LS
- 链路状态(LS):路由器周边的链路状态
- 直连网段状态:通过接口网段和接口状态感知
- 描述直连网段:(网段、掩码、接口开销)
- 直连拓扑状态:通过OSPF邻居和邻居状态感知
- 描述直连拓扑:(邻居RID、连接接口、接口开销)
- 接口开销:OSPF参考带宽/接口带宽
- OSPF参考带宽默认为100Mbps
- Loopback接口的开销默认为1
- 直连网段状态:通过接口网段和接口状态感知

OSPF基本概念——LSA
- 链路状态通告(LSA)
- 按一定格式封装后的链路状态信息
- LSA 1:路由器链路状态通告
- 每台路由器都会发起自己的LSA1
- LSA 2:传送网络链路状态通告
- LSA 1:路由器链路状态通告
- 按一定格式封装后的链路状态信息

OSPF基本概念——LSDB
- 链路状态数据库(LSDB)
- 每台OSPF路由器上都有一个LSDB,用于存储LSA。
- 同一个 区域中的OSPF路由器的LSDB一致。
- LSA封装在LSU报文中,在区域内洪泛,最终到达区域内LSDB一致。
- LSA在洪泛过程中保持不变

OSPF基本概念——SPF
- SPF计算
- 以自己LSA 1为根,进行SPF计算。
- 各OSPF路由器单独进行SPF计算,互不影响

SPF开销计算
- OSPF路由开销计算
- 以自己为根,到达目标网段的出接口的开销的和。

- OSPF的度量值为cost,也叫开销,是以链路的接口带宽为依据;
- 计算的方法为10的8次方除以带宽
OSPF基本概念——OSPF网络类型
- Broadcast广播多路访问:以太网接口
- NBMA(Non-Broadcast Multi-Access,非广播多点访问网络):帧中继接口
- P2MP(Point-to-MultiPoint,点到多点)
- P2P(Point-to-Point,点到点):PPP HDLC接口
OSPF基本概念——OSPF报文类型与封装
OSPF报文类型 | 作用 |
---|---|
Hello | 建立并维护邻居关系 |
Database Description(DD) | 数据库内容的汇总(仅包含LSA头部) |
Link State Request(LSR) | 请求自己没有的或者比自己更新的链路状态详细信息 |
Link State Update(LSU) | 链路状态更新信息(LSA头部和内容) |
Link State Acknowledge(LSAck) | 对LSU的确认 |
- OSPF报文封装在IP报文中,协议号为89

OSPF报文的目的地址

建立邻居关系(点对点)

维持邻居关系(点对点)

- 邻居之间通过交换Hello报文(默认30s),确认邻居是否工作正常
- 如果在一定的时间间隔内(120s),没有收到邻居发来的Hello报文,就认为邻居已经失效,从邻居表中删除。
DR/BDR的选举(广播多路访问)

- 采用DR/BDR建立邻接关系,可以降低需要维护的邻接关系的数量
除了被选举出来的DR/BDR,其他的路由器都称为DROther,只需要和DR/BDR建立邻居关系即可,不需要再依次相互建立邻接关系,所有的LSA将由DR收取,统一进行洪泛,BDR作为DR的备份路由,当DR出故障了的时候,直接替代DR成为新的DR。
DR/BDR的选举原则
-
首先比较Hello报文中携带的优先级
- 优先级最高的被选举为DR,优先级次高的被选举为BDR
- 优先级为0的不参与选举
-
优先级一致的情况下,比较Router ID
- Router ID越大越优先
-
保持稳定原则
- 当DR/BDR已经选举完毕,就算一台具有更高优先级的路由器变为有效,也不会替换该网段中已经选举的DR/BDR成为新的DR/BDR
DR/BDR的选举示例一

- RTE后来加入网络,虽然它的Router ID比原来的DR和BDR都要高,但是出于稳定性考虑,只能成为DRother路由器
DR/BDR选举示例二

- 当DR失效时,BDR立刻成为新的DR
- DRother路由进行竞争,Router ID高的成为新的BDR
邻居关系无法建立原因总结
参数 | 配置要点 |
---|---|
router id | 每台OSPF路由器的router id必须唯一 |
area id | 同一网段的所有接口应当配置在同一区域内 |
Interface network-type | 同一网络接口的类型要相同,及hello时间与hellodown时间双方要一致 |
network mask | 除了点到点网络之外,同一网段的所有端口应当配置相同的掩码 |
authentication type | 同一区域的验证类型必须一致 |
authentication data | 同一网段的验证码必须一致 |
extern option | 配置stub区域或者NSSA时,区域内所有的路由器都要指定stub特性或者NSSA特性 |
peer | NBMA网络上的邻居需要手动指定 |
OSPF基本概念——邻居状态变换(邻居关系)

OSPF基本概念——邻居状态变换(邻接关系)

DOWN、Init、two-way(邻居)

ExStart和Exchange(邻接)

Loading和Full(邻接)

包含在各种报文中的LSA信息

LSA报文头部

字段名 | 长度(字节) | 作用说明 |
---|---|---|
LS age | 2字节 | LSA 生存时间(秒),最长3600秒,超过就作废。控制 LSA 生命周期。 |
Options | 1字节 | 支持的OSPF功能选项,比如是否支持NSSA、E位(E1/E2)、DC位等。 |
LS type | 1字节 | LSA 类型(例如1类Router-LSA,2类Network-LSA) |
Link State ID | 4字节 | LSA的“名字”,类型不同含义不同,例如: Router-LSA:本路由器的Router ID; Network-LSA:DR的接口IP。 |
Advertising Router | 4 字节 | 发出该 LSA 的路由器 ID,谁发的谁填它。 |
LS Sequence Number | 4 字节 | 序号,新LSA比旧的号大。 用于更新判断。初始值为 0x80000001 ,每次变化加1。 |
LS Checksum | 2字节 | CRC校验,用于验证 LSA 内容是否损坏。 |
Length | 2 字节 | 包括头部在内的 LSA 总长度(字节)。一般为20字节 |
Loading和Full(续)

- OSPF协议包具备超时重传机制
- OSPF协议具备序列号,对重复包不做处理
泛洪新LSA

当有新的LSA生成或者收到时,这条心的LSA应当被泛洪
泛洪新的LSA时,只需要使用LS Update报文和LS Ack报文:
1.当RTA有新的LSA要泛洪时,RTA向RTB发送一个LS Update报文,在这个报文里包含这条LSA
2.当收到新的LSA以后,RTB向RTA泛洪一个LS Ack报文进行确认。
当在两个处于完全邻接状态(邻居状态为Full)的路由器之间泛洪新的LSA时,邻居状态不受影响
广播网络中LSDB更新

- 在广播和NBMA网络中,链路状态发送变化时,主要是通过DR路由器发送更新报文
OSPF LSA洪范与老化
- OSPF LSA老化
- LSA不老化的缺点:当网络长时间中断,故障网络中的设备发起的LSA长时间无效,但仍然存储在LSDB中,浪费设备内存。
- OSPF LSA采用递增老化
- LSA自发起时开始计时,到达最大老化时间后,从LSDB中清除。
- OSPF最大老化时间3600秒,LSA头部的老化时间字段用于计时。

- OSPF LSA老化与全网刷新
- 正常OSPF网络的路由维护
- SA老化时间到达最大老化时间的一半(30分钟),发起路由器随机等待一段时间后重新发起该LSA,然后洪泛,刷新所有路由器LSDB。
- 新发起的LSA序列号加1,老化时间为0。
- LSA在整个洪泛过程中,除老化时间外,其余各字段都保持不变。
- 正常OSPF网络的路由维护

泛洪新LSA(续)

OSPF区域划分
OSPF协议分区域管理及路由器角色

OSPF区域号
- OSPF路由域:运行OSPF路由协议的网络
- OSPF区域:OSPF是一种支持划分多区域的协议
- Area ID:32位,用数字或IP地址表示

OSPF协议区域LSA发布
