提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


OSPF路由协议

  • 前言
  • OSPF启动过程
  • OSPF LSA类型
  • OSPF路由器类型
  • 邻居状态机及含义
  • 末梢区域和完全末梢区域
  • 路由重分发概念
  • 每种区域中允许泛洪的LSA
  • 地址汇总的作用
  • 基于AS进行分类
  • OSPF的数据包类型
  • OSPF的工作过程
  • 配置项目
  • 地址汇总配置实例



路由协议OSPF全称为Open Shortest Path First,也就开放的最短路径优先协议,因为OSPF是由IETF开发的,它的使用不受任何厂商限制,所有人都可以使用,所以称为开放的,而最短路径优先(SPF)只是OSPF的核心思想,其使用的算法是Dijkstra算法,最短路径优先并没有太多特殊的含义,并没有任何一个路由协议是最长路径优先的,所有协议,都会选最短的。

前言

OSPF的使用IP协议号89。

OSPF启动过程

路由器从启动OSPF进程,到根据链路状态数据库计算出路由表,同样需要经历一系列的启动过程,总共有8种可能的启动过程,但并不是一定会经历这7个过程,具体过程如下:

Down → Init → Two-way → Exstart → Exchange → Loading → Full

OSPF LSA类型

Router-LSA(Type1): 每个路由器都会产生,描述了路由器的链路状态和开销,在所属的区域内传播。
Network-LSA(Type2): 由DR产生,描述本网段的链路状态,在所属的区域内传播。
Network-summary-LSA(Type3): 由ABR产生,描述区域内所有的路由,并通告给其他相关区域。
ASBR-summary-LSA(Type4): 由ABR产生,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。
AS-external-LSA(Type5): 由ASBR产生,描述到AS外部的路由,通告到所有的区域(除了Stub区域和NSSA区域)。
NSSA LSA(Type7):由ASBR产生,描述到AS外部的路由,仅在NSSA区域内传播。

OSPF路由器类型

区域内路由器:该类路由器的所有接口都属于同一个OSPF区域。

区域边界路由器ABR:该类路由器可以同时属于两个以上的区域,但其中一个必须是骨干区域。ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。

骨干路由器:该类路由器至少有一个接口属于骨干区域。所有的ABR和位于Area0的内部路由器都是骨干路由器。

自治系统边界路由器ASBR:与其他AS交换路由信息的路由器称为ASBR。ASBR并不一定位于AS的边界,它可能是区域内路由器,也可能是ABR。只要一台OSPF路由器引入了外部路由的信息,它就成为ASBR。

邻居状态机及含义

开启ospf协议的命令 启动ospf协议_链路

末梢区域和完全末梢区域

末梢区域和完全末梢区域主要目的是减少区域内的LSA条目以及路由条目,减少对设备CPU和内存的占用。
(1)只有一个默认路由作为其区域的出口
(2)区域不能作为虚链路的穿越区域
(3)Stub区域里无法自治系统边界路由器ASBR
(4)不是骨干区域Area 0

路由重分发概念

使用路由重分发特性以交换不同协议创建的路由信息。(与度量值和管理距离有关)
重分发到OSPF域中路由的路径类型

类型1的外部路径(Type 1 external path, E1):与内部和外部开销有关。
类型2的外部路径(Type 2 external path, E2):只与外部开销有关。

每种区域中允许泛洪的LSA

开启ospf协议的命令 启动ospf协议_OSPF_02

地址汇总的作用

地址汇总也是通过减少泛洪的LSA数量节省资源可以通过屏蔽一些网络不稳定的细节来节省资源减少路由表中的路由条目。
下面展示一些 内联代码片

// An highlighted block
var foo = '------------------OSPF地址汇总------------------
192.168.1.0/24     192.168.00000   001.0/24
192.168.2.0/24     192.168.00000   010.0/24
192.168.3.0/24     192.168.00000   011.0/24
192.168.4.0/24     192.168.00000   100.0/24
192.168.5.0/24     192.168.00000  101.0/24
192.168.6.0/24     192.168.00000  110.0/24
                                8+8+5=21
                   192.168.00000000.0/21=192.168.0.0/21
';

下面展示一些 内联代码片

// A code block
var foo = 'bar';
// An highlighted block
var foo = '#####区域间路由汇总配置
#####ABR配置
[r8]ospf
[r8-ospf-1]area 1
[r8-ospf-1-area-0.0.0.1]abr-summary 192.168.0.0 255.255.240.0

#####外部路由汇总配置
#####ASBR配置
[r8]ospf
[r8-ospf-1]area 1
[r8-ospf-1-area-0.0.0.1]abr-summary 192.168.0.0 255.255.240.0
';

基于AS进行分类

IGP(内部网关路由协议—AS内部)—— RIP/OSPF/EIGRP/ISIS
EGP(外部网关路由协议—AS之间)—— EGP(V1/2)/BGP(V1 ~ 4+)
IGP
【1】更新时是否携带子网掩码 – 有类别(不带) 无类别(带)
【2】特征 – DV距离矢量-RIP/EIGRP LS 链路状态-OSPF/ISIS

距离矢量:邻居间直接共享路由表 – 传闻性协议 – 更新量少 –- 选路
链路状态:邻居间共享拓扑 --本地计算 –更新量大—收敛速度受更新量影响—防环、选路

OSPF的数据包类型

Hello包 :邻居、邻接的发现,建立;周期保活 hello time 10s或30s ;dead time为hello time 4倍
DBD 包 :数据库描述包 –数据库目录
LSR 包 :链路状态请求
LSU 包 :链路状态更新 – 携带具体的LSA信息
LSack 包 : 链路状态确认包

OSPF的工作过程

启动OSPF协议后,本地基于所有激活接口使用组播224.0.0.5进行周期的hello收发;接收到的hello包若存在本地的RID,那么建立邻居关系,生成邻居表
表中所有邻居存在条件,条件匹配失败将停留于邻居关系,仅hello包周期保活即可;
条件匹配成功,需要进一步建立为邻接关系;邻接关系间,需要使用DBD包来进行数据库目录共享,使用LSR/LSU/LSACK来获取本地未知的LSA信息,补全本地的LSDB(链路状态数据库—所有LSA的集合)生成数据表
数据库同步完成后,本地其余SFP算法,基于数据库生成有向图,合成最短路径树,最终将所有未知网段的路由加载于本地的***路由表***中;–收敛完成,hello包周期保活,每30min再周期比对一次数据库目录;

配置项目

r2 r3 r4的ospf配置

开启ospf协议的命令 启动ospf协议_OSPF_03

开启ospf协议的命令 启动ospf协议_OSPF_04


开启ospf协议的命令 启动ospf协议_链路_05

rip:

配置ip

开启ospf协议的命令 启动ospf协议_数据库_06

开启ospf协议的命令 启动ospf协议_OSPF_07


把ospf注入rip进行重分发

开启ospf协议的命令 启动ospf协议_开启ospf协议的命令_08


外部rip注入ospf重分发

R6 通上

开启ospf协议的命令 启动ospf协议_OSPF_09


这里要设为6.0.0.0要注意下静态路由:

开启ospf协议的命令 启动ospf协议_数据库_10


开启ospf协议的命令 启动ospf协议_数据库_11


默认路由:

开启ospf协议的命令 启动ospf协议_链路_12


开启ospf协议的命令 启动ospf协议_OSPF_13

开启ospf协议的命令 启动ospf协议_链路_14


上:路由分发直连路由

下:路由分发静态路由

开启ospf协议的命令 启动ospf协议_开启ospf协议的命令_15


路由分发默认路由结果:

开启ospf协议的命令 启动ospf协议_开启ospf协议的命令_16

地址汇总配置实例

先配置路由器的IP地址和回环接口

开启ospf协议的命令 启动ospf协议_OSPF_17

开启ospf协议的命令 启动ospf协议_OSPF_18


配置ospf 不过多解释

开启ospf协议的命令 启动ospf协议_开启ospf协议的命令_19


汇总