6-23 OSPF基础
OSPF简介
Open Shortest Path First,开放式最短路径优先协议
OSPF是一种链路状态路由协议,在RFC2328中描述
Open意味着公有,任何厂商都能支撑OSPF,OSPF是目前业内使用最广泛的IGP
在华为设备上,OSPF协议优先级
- 内部网络域 Internal10,
- 外部网络域 External150;
路由器之间交互的是链路状态信息,而不是直接交互路由
每台OSPF路由器都知晓网络拓扑结构,采用SPF算法计算达到目的地的最短路径
OSPF支持VLSM,支持手工路由汇总
OSPF基本特点
- 适应范围广:支持各种规模的网络(超大型网络如运营商使用的是IS-IS协议)
- 快速收敛:在网络的拓扑结构发生变化后立即发送更新报文,使这一变化在自治系统中同步。
- 无自环:使用SPF最短路径树算法进行路由计算,不会产生环路
- 区域划分:允许网络被划分成区域来管理,链路状态数据库仅需和区域内其他路由器保持一致。减小对路由器内存和CPU的消耗。同时区域间传送的路由信息减小,降低网络带宽占用
OSPF的基本概念
RouterID
OSPF使用RouterID作为路由器的标识,通常使用环回接口作为RouterID(环回口比较稳定)

- Router Identifier,路由器标示符,用于在一个OSPF域中唯一地标识一台路由器,每台运行OSPF的路由器具备Router-ID。
- 相同OSPF域内,禁止出现两台路由器有相同RouterID。
- OSPF Router-ID可以通过手工配置的方式,或使用自动获取的方式。自动选取的机制是:
- 若路由器存在loopback接口,则选最大的loopback接口IP地址
- 若无loopback接口,则选活跃的物理接口中IP地址最大的作为RouterD(实际项目手工配置)。
- Router-ID值遵循稳定第一的原则,不会抢占。如果需要更新RouterID:
- 重配地址:Undo ip address
- 重启进程:Reset ospf process
OSPF Cost
- OSPF使用Cost“开销”作为路由度量值,依据是接口的带宽。
- OSPF接口cost = 100M÷接口带宽,如10M接口的cost = 10。其中将100M为OSPF参考带宽(reference-bandwidth)即前面式子中的被除数,可修改
- 每一个激活OSPF的接口都有一个cost值。
- 一条OSPF路由的cost由该路由从起点一路到达本地的所有入接口cost值的总和。如下图所示,假设1.1.1.0/24网络中有一个IP向R3右侧直连网络中某个IP发送数据,则这条OSPF路由的开销为所有入接口开销值之和即1 + 50 + 1 = 52。下图黄色标签即
- 1.1.1.0/24网络中IP到达路由器R1的其他直连网络,其OSPF路由开销为1
- 1.1.1.0/24网络中IP到达路由器R2的右/上/下侧直连网络,其OSPF路由开销为51
- 1.1.1.0/24网络中IP到达路由器R3的右/上/下侧直连网络,其OSPF路由开销为52

OSPF Cost实验
OSPF协议之下,可以通过修改接口的开销,达到修改路由表的目的

如左图所示,从192.168.100.0/24网络中的一个IP欲到达R2下方的直连网络,有通过R1和通过R3两条路由可走,根据OSPF协议,两条路由的开销值都为2,于是R2的路由表中有相同开销的2条路由
如果此时如右图所示,将一条路径的开销值修改为9,那么OSPF协议将会使得R2的路由表中只有一条开销较小的路由
OSPF的三张表
邻居表(Peertable)
OSPF是一种可靠的路由协议,要求在路由器之间传递链路状态通告之前,需先建立OSPF邻居关系,hello报文用于发现直连链路上的其他OSPF路由器再经过一系列的OSPF消息交互最终建立起全毗邻的邻居关系,OSPF路由器的邻居信息显示在邻居表中。
笔者注:OSPF邻居表中保存了本路由器的邻居路由器信息
链路状态数据库(Link-state database,简称LSDB)
OSPF用LSA(link state Advertisement 链路状态通告)来描述网络拓扑信息,然后OSPF路由器用链路状态数据库来存储网络的这些LSA。OSPF将自已产生的以及邻居通告的LSA搜集并存储在链路状态数据库LSDB中。掌握LSDB的查看以及对LSA的深入分析才能够深入理解OSPF。
笔者注:OSPF链路状态数据库收集了全网的链路状态信息
OSPF路由表(Routingtable)
基于LSDB进行SPF(Dikstra算法)计算,而得出的OSPF路由表
拓展:查路由表消耗CPU,实际上现在路由器的转发依靠FIB转发表,该表是根据路由表和ARP表生成的,查找FIB表再通过硬件转发,效率更高。
OSPF的报文类型
| 报文类型 | 功能描述 | 备注 |
|---|---|---|
| Hello | 建立和维护OSPF邻居关系 | 打招呼以建立邻居关系 |
| DBD | 链路状态数据库描述信息(描述LSDB中的LSA头部信息) | 类似一个目录索引 |
| LSR | 链路状态请求,向OSPF邻居请求链路状态信息 | 根据上面的目录索引,确定我需要索引中哪条的详细信息 |
| LSU | 链路状态更新(包含一条或多条LSA) | 上述请求的返回信息 |
| LSAck | 对收到的LSU中的每一条LSA进行确认 | 通知对方,确认已收到 |