动态路由协议-链路状态协议OSPF
一、OSPF的基本概念
1、OSPF简介
开放式最短路径优先OSPF是IETF组织开发的一个机遇链路状态的内部网关协议(Interior Gateway Protocol);其中开放式代表公有协议,不受厂商的限制,在任意设备上使用,应用最广泛的协议。版本:IPV2/IPV3,本文的OSPF均为OSPF IPV2协议。
2、OSPF的优点
作为基于链路状态的协议,除了能够解决RIP所面临的诸多问题以外,还有以下四点优点:
①、OSPF采用组播形式收发协议报文,组播地址是:224.0.0.5(.5代表OSPF内所有的路由器)/244.0.0.6(代表OSPF指定路由器DR);
②、支持无类型域间选路;
③、支持对等价路由器进行负载分担:路径开销相等的情况下,相等的两条路都可以选择;
④、支持报文认证。
3、Router-ID
①、OSPF的术语是Router-ID,一台路由器指定唯一的Router-ID。一旦设定无法更改。若想更改需要重启OSPF进程,但是重启的风险:网络需要重新收敛,重新计算,数据传输有风险;
②、Router-ID的设定可以通过手工配置,用32位点分十进制表示的。一般指的就是回环地址(loopback 0),因为loopback 0属于虚拟主机,接口不会断掉,从而保证了协议的稳定性。
4、OSPF Cost
①、OSPF使用cost“开销”作为路由度量值;
②、OSPF接口cost=100M/接口宽带,其中100M为OSPF的参考带宽,可以修改。数值取整,并非四舍五入;
③、每一个激活OSPF的接口都有一个cost值
④、一条OSPF路由的cost由该路由从起源一路到达本地所有入接口cost值得总和,具体含义看下图。

R1:cost=1;R2:cost=50;R3:cost=1
R1–R2的cost值=50+1;
R1–R3的cost值=50+1+1
二、OSPF邻居关系建立过程
2、五个关键的数据帧类型

第一步:创建关系R1发送hello报文,并将route-id记录下来;R2接收到hello信息后仅包含R1的1.1信息,并将此信息记录为1.2;当R2回发hello报文给R1时,则完成了关系创建;
第二步:首先确定master/slave关系并选择先发送DD数据报文的一方;随后交换LSA头部摘要信息;
第三步:包括LSR请求、LSU发送LSA以及LSAck确认;
第四步:完成同步后进入OSPF全邻域配置阶段;
细节部分即OSPF邻居关系建立共有七种状态:
down状态:短暂开启OSPF协议尚未收到hello报文;
INT状态:立即发送hello报文;当R1接收该报文后仅保存自己的IP地址;尚未实现双向连接;此时将R1的状态设为INT并在R2中进行设置;
Two-way状态:当双方均发送相关参数并完成双向连接后互换接口类型设置为Two-way;
Ex-start状态(就绪状态):准备发起数据报文传输;其中包含序列号位移位寄存器Seq=x以及route-id较大的为主节点发起连接请求;标志位I、M及MS分别为:
I=1表示正在协商主从关系;
M=1表示仍有后续数据报文需要传输;
MS=1表示当前数据由 master 发送;
Exchange状态:交换双方信息以确认主从关系并开始传输LSA头部摘要;其中标志位I及MS被置为0以表明已完成协商过程;
Load state(加载态):发起L SR请求并接收全部信息后生成L SU响应;双方均为 Loading 状态;
FULL state(完全态):完成交换过程
三、OSPF的基本工作机制
DR的主要职责是负责转发外部接口的路由信息;而BDR则主要负责作为备用路由器维持网络连通性

在OSPF网络中,默认情况下建立邻居关系后会生成一个Dynamic Router(DR)与一个 Backup Router(BDR)。当 DR 发生故障时,默认由 BDR 承接其职责;一旦恢复到正常状态后,则不再被视为 BDR角色。组播地址监听方面:
- DR BDR监听组播地址224.0.0.6
- DRother 监听组播地址 224.0.0.5
- 路由器除了被指定为 DR 和 BDR 外,默认角色为 DRother。
LSA广播流程:
请参考上图: - 路由器R3通过发送224.0.0.6地址的数据包来通知当前的 DR 和 BDR;
- DR/BDS将接收该数据包并广播至该组播地址范围内的所有成员;
- DR接收该广播数据包后会向其内部组播地址(如224.0.0.5)发送更新信息;
- 所有OSPF路由器接收到包含变化信息的LS数据单元(LSU)后:
- 更新自己的邻域内部路由数据库(LSDB);
- 经过一段时间(SPF延迟)执行 SPF算法;
- 更新路由表
OSPF区域划分概念:
在单区域环境下所面临的主要问题包括:
1.LSA广播范围过大导致路由器负担加重;
2 区域内网络拓扑的变化会引起整个网络计算SPF路径;
3 LSDB规模过大影响资源利用率及网络设备性能;
4 各路由器维护的路由表规模持续扩大但仅限于区域内路由无法实现汇总
针对上述问题需引入多区域划分策略


除了骨干区域外,还可以对以下四个类别进行详细配置:
- 末梢区域中的Stub类:其后端无路由器设备连接至R5。
- 完全末梢区域:仅提供单条默认路由至R4。
- 非完全末梢区域:在OSPF框架下属于非完全末梢的情况,在OSPF划分下可能延伸到其他非末端分支型结构(Totally Nssa)。
- 完全非末端分支型结构(Totally Nssa)
3、路由器的角色名称:
- IR类中的router均为内部router(IR),负责本地网络的管理;
- ABBR类中的router为边界型核心router(ABBR),负责跨域通信;
- BR类中的router为主干型关键节点(BR),确保网络连通性;
- ASBR类中的router为AS边界型核心router(ASBR),负责特定业务通道的管理;
4、OSPF网络类型:
此部分内容仅限于了解级别,请查阅相关技术资料获取详细信息

四、了解OSPF的基础配置
OSPF的基础配置首先需要设置各个接口的IP地址;接着在默认接口上指定loopback 0的IP地址;最后切换到OSPF全局配置模式进行参数设置
ospf 1 创建OSPF进程号
ospf 1 router-id 1.1.1.1 指定OSPF路由地址
area 0 配置骨干区域
network 192.168.1.0 0.0.0.255 在骨干区域配置特定接口
ospf cost 9 进接口配置cost值
2、OSPF的查看及验证
display ospf brief 查看ospf协议相关运行参数
display ospf per 查看ospf邻居表
display ospf lsdb 查看lsdb表
display ospf routing 查看ospf路由
ospf dr-priority 255 修改OSPF DR的优先级
五、OSPF六类LSA与链路状态数据库
OSPF通过链路状态通告(简称LSA)在路由器之间传播网络拓扑信息。这些类型的链路状态数据包(LSAs)全面描绘了网络的架构与连接情况,并且这些类型中每一种都有其特定的功能。
第一步
第二步
第三步
第四步
第五步
- 仅限于本区域内的传播,并非超越ABR范围的有效传输。
- OSpF路由器均负责宣告相关网段的信息及默认成本值(即路由与网络架构数据)。
- 命令行参数
dis ospf lsdb router 1.1.1.1用于获取该路由器本地保存的LSDB配置信息。
Link ID字段对应的Router ID标识该链路所在的物理接口及其连接状态;Annoucer ID标识当前链路的状态与更新频率(即通告者的状态更新频率).
注意,在LSA文件中的层次结构中可以看到不同类型的LSD数据,请确保正确识别各层中的关键字段以避免误读数据含义.
2、Type-2 LSA: Network LSA
只在多路访问MA网络中存在
- 传播范围:限于本地网络并禁止跨越ABR边界
- 宣告者角色:DR字段用于报告当前网络内运行的路由器数量
- 描述内容:列出参与连接的路由器数量、掩码信息以及直连端口对应的网段信息和成本值
- 查看方法建议:通过执行OSPF LSA数据库查询命令获取相关信息
1类2类小结:
基于发送出去的Type-1 LSA数据包及附加的信息类型,在该区域内所有路由器都能重构整个拓扑结构,并据此计算出到各子网段的最佳路径。
3、Type-3LSA: Summary LSA
汇总LSA,可通过操作拦截
- 传播域:整个OSPF域
- 发布者:ABR(本区域边界路由器,在某些情况下会变化)
- 描述:涉及域间路由信息的LSA-3在跨越多个ABR时会由发布者发生变化;数据经过area0进行汇总处理以实现总结功能
- 命令:dis ospf lsdb summary
4、Type-4 LSA:ASBR Summary LSA
告诉其他区域ASBR所在的位置,根据LSA-5而来
- 传播范围:除了ASBR所在的区域之外,在OSPF区域内实施传播
- 宣告者:ABR(当跨越多个ABR时会进行宣告)
- 内容:由ASBR提供的Router-id信息
- 查询途径:使用'dis ospf lsdb asbr'命令进行查询
5、Type-5 LSA:External LSA
外部LSA,描述外部信息,不属于任何一个区域
- 传播范围覆盖整个OSPF域。
- 宣布者为ASBR,在满足引入外部路由并执行重分发动作后才被确定;其通告信息在穿越多个区域时不会发生变化。
- 内容指定外部路由,并将其标识为“O-ASE”。
- 通过命令dis ospf lsdb ase获取相关信息。
通常情况下,在OSPF协议中会同时生成并发送带有LSA信息的链路状态数据包(LSDB)。其中的LSA-5主要用于描述外部路由的信息... ASBR的位置由LSDB中的LSA-4字段来说明。
6、Type-7 LSA: NSSA LSA
与LSA-5只是称呼的不同,都是关于域外路由的
- 覆盖范围为整个NSSA区域内。
- 宣布节点为ASBR(其在跨越多于一个区域时不会发生更改)。
- 其中外部路由会被过滤掉进入其他Area。
- 用于查询该信息的方法是dis ospf lsdb nssa.
当NS SA接收该Type-7 LSA时...负责将其转换成Type-5 LSA并注入至Area0中后...则会将该信息传播至整个OSPF网络。
Both Type-5 and Type-7 LSA feature two metric types, Type1 and Typ2. Additionally, when introducing external routes into OSPF, the default metric type for specified external routes is Type2, with a default external cost of 1.
7、配置命令
[R4]ospf 1 进入ospf进程
[R4-ospf-1]import-route rip 1 type 2 cost 1 别人注入到OSPF时需要配置cost值
[R4]rip 1 进入rip进程
[R4-rip-1]import-route ospf 1 注入到rip进程
需注意:入注是双向的
import-route direct 引入直连路由
import-route static 引入静态路由
default-route-advertise always 引入默认路由
查看各类信息
dis ospf routing 查看ospf的全局路由表
dis ospf ladb router 1.1.1.1 1类
dis ospf lsdb network 2类
dis ospf lsdb summary 3类
dis ospf lsdb asbr 4类
dis ospf lsdb ase 5类
dis ospf lsdb nssa 7类
六、实验要求:给路由器配置OSPF,并让PC1和PC2互通

R1
[r1]sys R1
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]ip add 192.168.1.254 24
[R1-GigabitEthernet0/0/0]int g0/0/1
[R1-GigabitEthernet0/0/1]ip add 12.0.0.2 24
[R1-GigabitEthernet0/0/1]q
[R1]int loo
[R1]int LoopBack 0
[R1-LoopBack0]ip add 1.1.1.1 32
[R1]ospf 1 创建OSPF进程号为1
[R1-ospf-1]ospf 1 router-id 1.1.1.1 指定OSPF路由地址1.1.1.1
[R1-ospf-1]area 0 配置骨干区域
[R1-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255 在骨干区域配置特定接口
[R1-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.255
R2
[Huawei]sys R2
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]ip add 12.0.0.1 24
[R2-GigabitEthernet0/0/0]int g0/0/1
[R2-GigabitEthernet0/0/1]ip add 23.0.0.2 24
[R2-GigabitEthernet0/0/1]1
[R2]int loop
[R2]int LoopBack 0
[R2-LoopBack0]ip add 2.2.2.2 32
[R2-LoopBack0]q
[R2]ospf 1
[R2-ospf-1]ospf 1 router-id 2.2.2.2
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 23.0.0.0 0.0.0.255
R3
[R3]int g0/0/0
[R3-GigabitEthernet0/0/0]i add 23.0.0.1 24
[R3-GigabitEthernet0/0/0]int g0/0/1
[R3-GigabitEthernet0/0/1]ip add 192.168.2.254 24
[R3-GigabitEthernet0/0/1]q
[R3]int l
[R3]int LoopBack 0
[R3-LoopBack0]ip add 3.3.3.3 32
[R3]ospf 1
[R3-ospf-1]ospf 1 router-id 3.3.3.3
[R3-ospf-1-area-0.0.0.0]network 23.0.0.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network 192.168.2.0 0.0.0.255


验证可以看一下路由器
display ospf per

dis ip routing-table

