开放式最短路径优先(Open Shortest Path First,OSPF)是广泛使用的一种动态路由协议,它属于链路状态路由协议,具有路由变化收敛速度快、无路由环路、支持变长子网掩码(VLSM)和汇总、层次区域划分等优点。在网络中使用OSPF协议后,大部分路由将由OSPF协议自行计算和生成,无须网络管理员人工配置,当网络拓扑发生变化时,协议可以自动计算、更正路由信息。与EIGRP类似,都是“触发式”的路由协议。

OSPF分为两种:单区域用户简单的网络,多区域用于复杂网络

SPF 两级区域层次结构

  • 主干区域 - 主要功能是快速高效地传输 IP 数据包的 OSPF 区域。主干区域与其他类型的 OSPF 区域互连。主干区域也称为 OSPF 区域 0(area 0)。分层网络中将区域 0 定义为核心,所有其他区域与其直接连接。
  • 非主干区域 - 连接用户和资源。常规区域通常按功能或地理区域分组进行设置。默认情况下,非主干区域不允许来自另一区域的流量使用它的链路到达其他区域。来自其他区域的所有流量必须经过主干区域

OSPF路由器的类型

OSPF 路由器分为四种不同类型:

内部路由器 – 所有接口位于同一区域的路由器。区域中的所有内部路由器具有相同的 LSDB

主干路由器 – 主干区域中的路由器。主干区域被设为区域 0。

区域边界路由器 (ABR) – 接口连接多个区域的路由器。它必须为相连的每个区域维护单独的 LSDB,并能在区域之间路由。ABR 可配置为汇总来自相连区域的 LSDB 的路由信息。ABR 将路由信息分发到主干区域。然后主干路由器将消息转发到其他 ABR。在多区域网络中,一个区域可以有一个或多个 ABR。

自治系统边界路由器 (ASBR) – 至少有一个接口连接到外部网际网路的路由器。

OSPF LSA 类型

LSA 是 OSPF LSDB 的构建基块。单独使用时,它们充当数据库记录并提供特定 OSPF 网络的详细信息。组合使用时,它们描述 OSPF 网络或区域的完整拓扑。

LSA 第 1 类

所有路由器使用第 1 类 LSA 通告其直连 OSPF 链路,并将网络信息转发给 OSPF 邻居。LSA 包含直连接口、链路类型、邻居和链路状态的列表.

LSA 第 2 类

第 2 类 LSA 仅存在于多接入和非广播多接入 (NBMA) 网络,这些网络已选择了 DR 并且多接入网段上至少有两个路由器

LSA 第 3 类

ABR 使用第 3 类 LSA 通告来自其他区域的网络。ABR 在 LSDB 中收集第 1 类 LSA

 LSA 第 4 类

第 4 类和第 5 类 LSA 共同用于识别 ASBR 和将外部网络通告到 OSPF 路由域。

 LSA 第 5 类

第 5 类外部 LSA 描述到达 OSPF 路由域之外的网络的路由。

以使用以下公式计算所需的邻接数。多接入网络上任何数量的路由器要求的邻接关系数量(指定为 n)为:

                                          n (n – 1) / 2

默认 DR/BDR 选择过程

1.在网络中,路由器选择具有最高接口优先级的路由器作为 DR。具有第二高接口优先级的路由器被选为 BDR。优先级可配置为 0 - 255 之间的任意数字。路由器的优先级越高,就越可能被选为 DR。

2.如果路由器的接口优先级相等,则选择路由器 ID 最高的路由器作为 DR。路由器 ID 第二高的路由器被选为 BDR。

当然我们可以自己配置改变优先级,因而改变选举,最简单的使用 router-id

也可以是

  • ip ospf priority value - OSPFv2 接口命令
  • ipv6 ospf priority value - OSPFv3 接口命令

传播默认静态路由 

default-information originate 路由器配置模式命令

手动修改 OSPFv2 Hello 间隔和 Dead 间隔:

  • ip ospf hello-interval seconds
  • ip ospf dead-interval seconds
  • 使用 no ip ospf hello-interval  no ip ospf dead-interval 命令将间隔重置为默认值。

OSPF的数据包类型:

  • Hello 数据包: 用于建立和维护其他OSPF路由器的邻居关系
  • 数据库描述数据包:包含本地的LSDB,以方便建立SPF树
  • 链路状态请求数据包(LSR):路由器通过发送LSR请求DBD中的任意条目的详细信息
  • 链路状态更新信息(LSU)数据包:用于恢复LSR的通告新消息
  • 链路状态确认数据包(LSACK):路由器收到LSU后,发送LSACK用于确认

         

配置OSPF                                                                                                                                                                                                                                                                                                     

ospf区域的概念 ospf的区域类型_ospf区域的概念

 配置接口信息

Router>enable 
Router#configure 
Router(config)#hostname R1
R1(config)#interface G0/0
R1(config-if)#ip address 10.0.0.1 255.255.255.0
R1(config-if)#no shutdown
Router>enable 
Router#configure 
Router(config)#hostname R2
R2(config)#interface G0/0
R2(config-if)#ip address 10.0.0.2 255.255.255.0
R2(config-if)#no shutdown 
R2(config-if)#exit
R2(config)#interface G0/1
R2(config-if)#ip address 10.0.1.1 255.255.255.0
R2(config-if)#no shutdown
Router>enable 
Router#configure 
Router(config)#hostname R3
R3(config)#interface G0/1
R3(config-if)#ip address 10.0.1.2 255.255.255.0 
R3(config-if)#no shutdown

配置OSPF 

R1(config-router)#router-id 1.1.1.1
R1(config-router)#network 10.0.0.0 0.0.0.255 area 0
R2(config)#router ospf 1
R2(config-router)#router-id 2.2.2.2 
R2(config-router)#network 10.0.0.0 0.0.0.255 area 0
R2(config-router)#network 10.0.1.0 0.0.0.255 area 0
R3(config)#router ospf 1
R3(config-router)#router-id 3.3.3.3
R3(config-router)#network 10.0.1.0 0.0.0.255 area 0

当我们配置完的时候,可以注意这样的信息

ospf区域的概念 ospf的区域类型_网络_02

ospf区域的概念 ospf的区域类型_网络_03

ospf区域的概念 ospf的区域类型_ospf区域的概念_04

 这样表示,OSPF的邻居已经建立;若配置完,没有出现此信息,可能你的网段没有声明正确哦

通过show ip ospf neighbor,可以查看邻居信息

ospf区域的概念 ospf的区域类型_OSPF_05

 

ospf区域的概念 ospf的区域类型_网络_06

ospf区域的概念 ospf的区域类型_网络_07

 当然,我们在一个未知的拓扑的时候,我们应该是首先show ip protocal

ospf区域的概念 ospf的区域类型_OSPF_08

 可以查看此时的OSPF的进程,网段,route-id等详细信息。这个主要是在拍错的时候用得多

 通过show ip ospf database查看OSPF的状态

ospf区域的概念 ospf的区域类型_ospf区域的概念_09

 

ospf区域的概念 ospf的区域类型_R3_10

 当然,这是单区域OSPF数据库

我们可以试着配置为OSPF,再来看数据库信息

ospf区域的概念 ospf的区域类型_OSPF_11

 添加配置R3、R4、ISP

R3(config)#interface G0/0
R3(config-if)#ip address 10.0.2.1 255.255.255.0 
R3(config-if)#no shutdown
Router>enable 
Router#configure 
Router(config)#hostname R4
R4(config)#interface G0/0
R4(config-if)#ip address 10.0.2.2 255.255.255.0
R4(config-if)#no shutdown 
R4(config-if)#exit
R4(config)#interface Serial 0/0/0
R4(config-if)#ip address 10.0.3.1 255.255.255.0
R4(config-if)#no shutdown
Router>enable 
Router#configure 
Router(config)#hostname ISP
ISP(config)#interface Serial 0/0/0
ISP(config-if)#ip address 10.0.3.1 255.255.255.0
ISP(config-if)#no shutdown

修改区域ID

R1(config)#router ospf 1
R1(config-router)#network 10.0.0.0 0.0.0.255 area 1

ospf区域的概念 ospf的区域类型_OSPF_12

如果在配置OSPF的时候,遇到这种情况,不要着急,是因为对面的路由器的声明区域不对,只需要修改对面路由器的区域ID即可 

R2(config)#router ospf 1
R2(config-router)#network 10.0.0.0 0.0.0.255 area 1

ospf区域的概念 ospf的区域类型_网络_13

 配置完后,又重新建立邻居关系

R3(config)#router ospf 1
R3(config-router)#network 10.0.2.0 0.0.0.255 area 0
R4(config-router)#router-id 4.4.4.4
R4(config-router)#network 10.0.2.0 0.0.0.255 area 0

ospf区域的概念 ospf的区域类型_R3_14

 当我们配置了多区域的OSPF后,OSPF的database就会显示五类的信息

ospf区域的概念 ospf的区域类型_OSPF_15

 配置完默认或静态路由,需要在重分布

R4(config)#ip route 0.0.0.0 0.0.0.0 serial 0/0/0
ISP(config)#ip route 0.0.0.0 0.0.0.0 serial 0/0/0
R4(config)#router ospf 1
R4(config-router)#default-information originate

ospf区域的概念 ospf的区域类型_运维_16

 在查看路由表的时候,我们可看见静态路由重新分布了