OSPF的算法是啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OSPF的算法是啥相关的知识,希望对你有一定的参考价值。

我们知道,对于有向连通图,以任意一个节点为起点,利用最短路径算法可以计算出到其他节点的最短路径。那么,对于能抽象成有向连通图的网络拓扑来说,也可以利用最短路径算法先计算出以任意一台路由器为起点,到达其他路由器的最短路径,然后根据各路由器的网络连接情况可以得到到各个网络的路由路径。
  OSPF中用到的Dijkstra算法和RIP中用到的距离向量算法一样,都是相当经典的最短路径算法。本文将对Dijkstra算法及OSPF协议对Dijkstra算法的使用进行介绍。
  1 Dijkstra算法介绍
  在数学上,以某个节点为起点,计算到其他节点的最短路径的算法,称为“单源最短路径” 算法。求“单源最短路径”的问题在数学上可以精确描述如下:
  “单源最短路径” 问题:已知一个有n个节点(V0..n)构成的有向连通图G=(V,E),以及图中边的权函数C (E),其中V代表节点集合,E表示所有边的集合,并假设所有权非负,求由G中指定节点V0到其他各个节点的最短路径。
  Dijkstra算法是很经典的求解上述问题的算法,其基本想法是设计一种最短路径树的构造方法,按非降次序逐条构造从V0到各个节点的最短路径,第一步找到和V0相距最短的节点以及到这个节点的路径,第二步找到和V0相距次短的节点以及到这个节点的路径,如此反复,最后找到V0到所有节点的最短路径,构造出整棵最短路径树。
  对上述构造方法的一个直观考虑是:和V0相距最短的节点应该在和V0直接相邻的节点中,和V0相距次短的节点要么在和V0直接相邻的节点中,要么在和这些相邻节点相邻的节点中,如此逐步扩散考虑,应该就可以找到和V0相距最短、次短、…….第n短的节点以及对应的路径,而且因为是连通图,最后肯定所有节点都能全部考虑到,也就能完成整棵最短路径树的构造。
  事实上,上述直观考虑是对的,Dijkstra算法是对上述过程的一个提炼和优化:和V0相距最短的节点是和V0直接相连的节点没错;相距次短的节点范围可以缩小为,和V0直接相邻的节点,加上跟刚选中的最短节点直接相邻的节点;相距第三短的节点的范围可以类推得到,即在上一步考察的节点的基础上,加上和次短节点直接相邻的节点。如此逐步构造,可以按非降次序找到到所有节点的最短路径。
  为了从数学上精确描述上述构造过程,引入了集合的概念对节点和路径进行分类。
  我们把节点分成两个集合:
  A:已经选入最短路径树的节点的集合。
  B:剩余的其他节点的集合。
  对于路径,我们分成三个集合:
  (1)已经选入最短路径树的路径的集合
  (2)候选路径集合:下一条加入最短路径树的路径将从这个集合中选入
  (3)剩余的其他路径的集合(被废弃的路径或者还未考虑的路径)
  为了更好的理解,有必要对这里的路径定义进行一下强调:路径是指以V0为起点,其他节点为终点的由一条或多条边组成的一个有序集。边,可以理解为路径中的一段,只有到和V0直接相邻的节点的路径才直接对应一条边。从V0到所有节点,都可能存在一条或多条路径,非最短路径在计算过程中将会被废弃,放入集合III。
  从前面的描述中可以明显看出,Dijkstra算法是一个递归构造过程,因为任何递归都必须有明确的初始状态,所以我们有必要先得到上述Dijkstra算法中定义的集合的初始值:
  l 以V0为起点计算最短路径的话,初始状态时显然有且只有V0在集合A中,所以集合A的初始值为V0。集合B的初始值为剩余节点。
  l 前面提到过,下一个加入集合A的节点,一定是和V0直接有边相连的节点,因此,加入最短路径树的第一条路径也必然在这些和V0直接相连的边所代表的路径中产生,所以集合II的初始值就是和V0直接相连的边构成的路径。另外,初始状态最短路径树为空,所以集合I的初始值为空。集合I、II明确了的话,集合III自然明确。
  下面我们开始展开递归构造最短路径树的过程:
  l 第一步:从集合II中选择一条最短的路径,放入最短路径树,相应的,这条路径的终点对应的节点(这里记为X)应该从集合B移入集合A。
  l 第二步:考察所有从X出发的边的终点,考虑其中不属于集合A的节点,这里记为Y,计算从V0出发经X到达Y的路径值,计算方法为:最短路径树中V0到节点X的路径值加上(X,Y)这条边的值。为了描述方便,我们把从V0出发经X到达Y的路径记为(V0X)Y。接着考察集合II中的候选路径,如果其中没有到节点Y的路径,则直接把路径(V0X)Y作为候选路径加入集合II;如果集合II中已经有到节点Y的路径,则进行比较,如果这条路径值小于或等于路径 (V0X)Y的路径值,那么路径(V0X)Y作为被废弃的路径放入集合III,否则原集合II中到Y的路径被废弃放入集合II,(V0X)Y作为候选路径放入集合II。对于Y节点有多个的情况,按第二步的方法一个一个的计算和比较。
  l 重复第一步和第二步,直到集合II和集合B为空。
参考技术A djskla-spf
迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题。迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止
参考技术B OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故运作于自治系统内部。著名的迪克斯加算法(Dijkstra)被用来计算最短路径树。OSPF分为OSPFv2和OSPFv3两个版本,其中OSPFv2用在IPv4网络,OSPFv3用在IPv6网络。OSPFv2是由RFC 2328定义的,OSPFv3是由RFC 5340定义的。与RIP相比,OSPF是链路状态协议,而RIP是距离矢量协议。
OSPF路由协议是一种典型的链路状态(Link-state)的路由协议,一般用于同一个路由域内。在这里,路由域是指一个自治系统(Autonomous System),即AS,它是指一组通过统一的路由政策或路由协议互相交换路由信息的网络。在这个AS中,所有的OSPF路由器都维护一个相同的描述这个AS结构的数据库,该数据库中存放的是路由域中相应链路的状态信息,OSPF路由器正是通过这个数据库计算出其OSPF路由表的。
作为一种链路状态的路由协议,OSPF将链路状态组播数据LSA(Link State Advertisement)传送给在某一区域内的所有路由器,这一点与距离矢量路由协议不同。运行距离矢量路由协议的路由器是将部分或全部的路由表传递给与其相邻的路由器。

OSPF到底是啥?一文了解OSPF基本概念和工作原理

参考技术A 技术干货!

OSPF是开放式最短路径,是 一种基于链路状态的内部网关路由协议,通常用在中大型网络,协议号89,通过发送LSA进行路由计算。

关于OSPF的基本术语:

Router-ID:用于在自治系统中唯一标识一台运行OSPF的路由器,也就是这台路由器的名字,它是一个32位的无符号整数。

Router ID选举规则如下

1、优先级最高的是手动配置的Router ID(建议手动配置)

2、如果没有手动配置Router ID,路由器会自动选择使用本地回环口中最大的IP地址作为Router ID

3、如果没有配置本地回环口,路由器使用物理接口中最大的IP地址作为Router ID

一句话总结:ROUTER-ID越大越优先

2、Area:OSPF Area用于标识一个OSPF的区域。

区域是人为我们人为地将设备划分为不同的组,并不是真实存在的,每个区域用区域号(Area ID)来标识,单区域的area ID为0.0.0.0

3、度量值:OSPF使用Cost(开销)作为路由的度量值。cost开销值计算的是到目的地的每个出接口总和

P2P点到点 链路

广播(Broadcast)型链路

NBMA(非广播多路访问)

P2MP 点到多点

OSPF一共定义了5种类型的报文,不同类型的OSPF报文有相同的头部格式。

HELLO 报文 用来发现和维护邻居关系

DD报文 交换链路状态信息摘要

LSR报文 请求链路状态信息

LAU 报文 正式发送详细的链路状态信息

LSA 报文 确认收到LSA

① down 初始状态:还没有启用OSPF,开始发送hello包前的状态

② init:开始向外发送携带邻居信息的hello包

③ 2-way:双方都接受到了相邻路由器的hello包,并且包中有对方的路由信息,进入2way状态,这个状态中需要做DR/BDR选举,选出DR、BDR

④ ExSTART:开始进行fisrt DD包的交换,进行主从选举

⑤ Exchange:主从选举完毕之后,进行DBD包的传送,直到最后一个发完

⑥ loading:路由器发送LSR请求自己自己需要的条目的,等待对方使用发送完整的LSA具体信息,即LSU

⑦ Full:两边的LSDB表完全相同,将进行full状态,此时邻接关系完全建立。

Router ID重复 Router ID 是路由器的唯一标识,一定不能重复

同一网段路由器子网掩码不一致,子网掩码不一致那么两台路由器就不是同一网段,不能进行通信

3.网络类型不一致

4. Hello间隔、死亡时间不一致

5. DR选举问题,选举不出

6. DR优先级全为0,停在2-Way。

7. MTU不一致(DBD交互问题,停留在 Exstart、 Exchange状态)

8.接口绑定了ACL,过滤了OSPF协议报文

以上是关于OSPF的算法是啥的主要内容,如果未能解决你的问题,请参考以下文章

OSPF路由协议,OSPF路由协议是啥意思

RIP协议、OSPF协议采用啥算法?

目前使用的两种常见动态路由协议算法是啥方法

OSPF 中的最短路径算法:Dijkstra 算法

3.2OSPF

网络层-第五节2:OSPF协议与链路状态算法