简介

OSPF(Open Shortest Path First,开放最短路径优先)是一种广泛应用的链路状态内部网关协议,在计算机网络中扮演着关键角色,是重要的动态路由协议。

形成路由的算法是通过Dijkstra algorithm(迪杰斯特拉最短路径算法)

其运行流程可概括为“三张表”

一、领居表

顾名思义,领居表类似生活中的领居,就好比一本通讯录,上面记载着你和哪些人认识,对方的名字,联系方式等等,也就是建立了通信关系,这张表记录了与本路由器建立邻接关系的所有OSPF邻居路由器的信息。每台运行OSPF协议的路由器都会维护这张表,内容通常包括邻居路由器的Router ID、接口IP地址、邻居状态等

二、拓扑表,也叫链路状态数据库(LSDB)

拓扑表包含了整个OSPF域内所有路由器生成并广播的链路状态公告(LSAS) 。LSDB中的信息反映了整个OSPF网络的拓扑结构,每台路由器都有相同的LSDB。路由器通过LSA中的信息计算最短路径树(SPT),用于确定到达各个目的网络的最优路径。

这张表就像一张地图,标注了每个领居的的连接状态以及他们连接的网络路段情况,比如能到哪里,走哪条路最快,道路的情况如何,每一个OSPF域的路由器都有这么一套拓扑表(地图)并且是统一的。

三、路由表

路由表是路由器实际用来指导数据包转发的表项,存储了到达特定目的网络或主机的下一跳信息以及相关的度量值。在OSPF协议中,路由器根据链路状态数据库生成的最短路径树计算出最优路径后,将其转换为路由表项。路由表中的每一条路由都是通过执行(Dijkstra)SPF算法得到的结果。

就好像导航,能指引你下一步该走哪条道,左转还是右转,去不同的目的地最佳的路线是什么等等。

路由器的种类

ospf 报文 open ospf lsu报文_链路

IR

内部区域(完全在区域内的路由器)

ABR

跨区域的路由器

BR

骨干区域的路由器(area 0)

ASBR  

跨协议的路由器(RIP-OSPF)

结合图片一目了然

区域的类型

标准区域

ospf 报文 open ospf lsu报文_OSPF_02

末梢区域(STUB)

ospf 报文 open ospf lsu报文_网络_03

非完全末梢区域not so stubby 

ospf 报文 open ospf lsu报文_链路_04

末节区域NSSA

类似于末梢区域,不接受自治系统外部路由(Type-5 LSA)。

但是,NSSA区域允许ASBR存在,ASBR可以通过发布Type-7 LSA来通告引入的外部路由信息。NSSA区域内的ABR将Type7 LSA转换为Type5 LSA,并将它们传播到其他区域。

NSSA区域不接受Type4 LSA即它不会从其他区域接收关于ASBR存在的汇总信息

完全NSSA区域

继承了NSSA的基本特性,在此基础上进一步过滤掉了Type3LSA

报文类型

hello报文

发现邻居

DBDs(database descriptor packets)

选举MASTER和SLAVE交换LSDB的摘要

LSRs(link state request)

向对方申请缺失的记录(LSA)

LSU(link state update)

更新信息

LSACKs(link state ack)

响应

通信过程

1.发现彼此-建立邻居关系

ospf 报文 open ospf lsu报文_OSPF_05

DOWN:刚刚启动

INIT:有了邻居

2-WAY:知道了彼此的存在,我知道你知道了我(很绕)

2.了解彼此

ospf 报文 open ospf lsu报文_OSPF_06

3.修复更新彼此的缺少的部分

LSA的类型

OSPF拓扑表(lsdb)的里的每条记录是LSA,LSA有多种类型

Type1:由每个路由器为其所在区域生成,描述了路由器本身所有接口的链路状态和成本

Type2:  在多路访问网络(如以太网)中,由被选举出的指定路由器DR生成,表示与DR相连的所有路由器及其接口状态

Type3:由ABR,生成,用于向其他区域通告本区域内部网络的汇总路由信息

Type4:也是由ABR生成,用于通告ASBR 的存在位置,不包含具体的外部路由信息

Type5:由ASBR生成,用于通告自治系统外部路由信息

还有一些6、7、9、10、11类型就不一一列举了

OSPF的 DR 和 BDR 选举

1、选举的目的

 在一个区域内,路由器通过组播方式向相邻路由器发送链路状态信息,这样会造成整个网络流量过大,通过选举DR和BDR方式,从而区域内的其他路由器只向DR或BDR发送链路状态信息,减少网络中的组播流量,更节省带宽使网络更加稳定

2、选举的方式

区域内通过Router ID来进行选举DR和BDR
    Router ID: OSPF区域内唯一标识路由器的IP地址


Router ID选取规则
       选取路由器loopback接口上数值最高的IP地址 (loopback 路由器虚拟接口,可以进行收发路由协议报文,可以配置IP地址)
如果没有loopback接口,在物理端口中选取IP地址最高的


DR和BDR的选举方法

 1.自动选举DR和BDR
 网段上Router ID最大的路由器将被选举为DR,第二大的将被选举为BDR
 2.手工选择DR和BDR

      优先级范围是0~255,数值越大,优先级越高,默认为1
      如果优先级相同,则需要比较Router ID,如果路由器的优先级被设置为0,它将不参与DR和     DBR的选举


    路由器的优先级可以影响一个选举过程,但是它不能强制更换已经存在的DR或BDR路由器(简单的说,如果一个区域内
已经存在DR和BDR,那么将无法通过修改路由器的优先级来强制更换


OSPF有两个组播地址:

224.0.0.5 代表所有ospf路由器 (DR和BDR使用此地址来发送更新到所有其他路由器)
224.0.0.6 代表DR(指定路由器),BDR (备份路中器) (其他路中器都向此地址来发送链路状态信息更新。

RIP协议和OSPF协议的对比

 RIP和OSPF是完全不同的两种协议,基于最典型的不同算法拿来做对比可以很清楚的看到优缺点

 RIP有两个版本一个是RIP V1 还有一个RIP V2基于V1改进     

OSPF

RIP V1

RIP V2

链路状态路由协议  

距离矢量路由协议

没有跳数限制

RIP的15跳限制,超过15跳的路由被认为不可达

可变长子网掩码

不支持可变长子网掩码

支持可变长子网掩码

收敛速度快

收敛速度慢 

组播发送链路状态更新

周期性广播更新整个路由表

周期性组播更新整个路由表