OSPF 开放式最短路径优先协议

2024-08-23 14:36

本文主要是介绍OSPF 开放式最短路径优先协议,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

什么是OSPF?

开放式最短路径优先OSPF,在大型网络结构当中路由器对IP的路由需要使用到RIP或者OSPF协议实现对链路的收敛,使得路由器能够准确的将IP数据包路由到准确的下一跳地址,接下来介绍一下OSPF实现链路收敛的原理方式。

OSPF相较于rip的优势

  • RIP使用跳点数量作为路径的评判标准,未考虑到链路带宽等其他因素。  OSPF使用cost(标准(指定)带宽/实际带宽)作为链路的评判标准,更加具有合理性。
  • RIP最大记录长度为15跳,在大型网络拓扑当中具有局限性。OSPF使用LSDB数据库的记录形式,没有跳点长度限制。
  • RIP更新次数频繁,每三十秒就对链路发送更新消息,占用网络资源。 OSPF只在路由发生变化或者三十分钟进行一次更新。
  • 收敛速度慢。 OSPF收敛速度快。

OSPF关系的组成

在OSPF当中有以下几种概念:DR BDR 邻接 邻居 Router ID 接下来我将具体讲解不同概念在OSPF当中的作用。

DR

同一个网段当中只能有一个组长、副组长

DR一个OSPF域当中的组长,用于负责对域内路由器LSA信息更新的发生以及给新接入的路由器进行数据同步等操作。

BDR

BDR指ospf域当中的副组长,始终与组长保持数据同步当组长出现故障后会顶替组长进行域内路由条目管理。

邻居

邻居关系是指两个相互连接的路由互为邻居关系。 路由器通过发送HELLO数据包来获取邻居信息。

邻接

邻接关系指DR、BDR与域内成员建立的邻居关系成为邻接关系,只有邻接关系才能实现LSA传输

Router ID

当一个路由器加入到OSPF域内后都会拥有一个RouterID用于在域内做唯一身份标识。这是一个4x8二进制数与IP相同,如果不由人员指定就会自动获取一个接口的IP作为该RouterID。

通常情况下会使用最大的本机回环地址作为RouterID,其次考虑使用最大的接口IP地址作为RouterID。

LSDB、LSA

LSDB指链路状态数据库,其中存放的是LSA,LSA指链路状态公告,路由器可以通过LSA获取整个域内的所有链路cost信息。从而实现选取最优路径。

cost

cost指路径开销,通常值为指定带宽/实际带宽,路径开销的值1越小,该路径的优先级越大,用户可以自己选择配置cost值,实现指定路径。

数据同步与常规LSA泛洪

两个组播地址

组播地址用于组员与组长有路由变更时发送组播让组员和组长实现LSDB更新

224.0.0.5   组员监听

224.0.0.6   组长监听

数据同步

当路由器接入一个OSPF域当中之后,会首先通过HELLO数据包发现域内的DR。

  • 在邻居关系建立后,路由器会与DR进行LSA数据库同步。这一过程称为数据库描述(DBD)交换
  • 路由器通过DBD报文交换其持有的LSA摘要信息。此时,如果路由器发现自己缺少某些LSA,它会通过发送**链路状态请求(LSR, Link State Request)**报文来请求特定的LSA。
  • DR会根据请求,将缺少的LSA发送给请求的路由器,使用**链路状态更新(LSU, Link State Update)**报文来进行传输。

LSA泛洪

LSA泛洪用于实现当域内某一台路由出现路由更新的情况,会首先在此路由本地生成LSA条目再发送给DR,DR接收到该条目后不会立即进行LSA泛洪会等待一段时间确认是否会再次接收到其他LSA条目,再进行泛洪以节省开销。

DR、BDR的确认

为什么要选取DR与BDR?

广播网络NBMA网络中,任意两台路由器之间都要传递路由信息。网络中有n台路由器,则需要建立n*(n-1)/2个邻接关系。这使得任何一台路由器的路由变化都会导致多次传递,浪费了带宽资源。

为解决这一问题,OSPF定义了DR。通过选举产生DR后,所有其他设备都只将信息发送给DR,由DR将网络链路状态LSA广播出去

为了防止DR发生故障,重新选举DR时会造成业务中断,除了DR之外,还会选举一个备份指定路由器BDR。这样除DR和BDR之外的路由器(称为DR Other)之间将不再建立邻接关系,也不再交换任何路由信息,这样就减少了广播网和NBMA网络上各路由器之间邻接关系的数量。

DR和BDR的选举是基于以下两个主要因素进行的:

  • 路由器优先级:OSPF路由器接口上配置的优先级(Priority)值。优先级的范围是0到255,数值越大,优先级越高。默认值通常为1。
  • 路由器ID(Router ID):在优先级相同的情况下,使用路由器ID作为次要决策因素。路由器ID是OSPF路由器的唯一标识,通常是路由器上配置的最高IP地址,或手动指定的一个32位值。

五个重要的报文

HELLO报文

HELLO报文用于发现和维持邻居关系

BDB

DBD指发送的LSDB信息摘要,成员路由接收后通过查看摘要确定自己需要的路由LSA。

LSR

成员路由确定所需要的LSA后发送LSR请求需要的LSA信息

LSV

一个LSV包含了多个LSA

LSAck

LSAck表示确认收到了信息。

这篇关于OSPF 开放式最短路径优先协议的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1099658

相关文章

python获取当前文件和目录路径的方法详解

《python获取当前文件和目录路径的方法详解》:本文主要介绍Python中获取当前文件路径和目录的方法,包括使用__file__关键字、os.path.abspath、os.path.realp... 目录1、获取当前文件路径2、获取当前文件所在目录3、os.path.abspath和os.path.re

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

hdu1180(广搜+优先队列)

此题要求最少到达目标点T的最短时间,所以我选择了广度优先搜索,并且要用到优先队列。 另外此题注意点较多,比如说可以在某个点停留,我wa了好多两次,就是因为忽略了这一点,然后参考了大神的思想,然后经过反复修改才AC的 这是我的代码 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<

hdu2544(单源最短路径)

模板题: //题意:求1到n的最短路径,模板题#include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#i

poj 1734 (floyd求最小环并打印路径)

题意: 求图中的一个最小环,并打印路径。 解析: ans 保存最小环长度。 一直wa,最后终于找到原因,inf开太大爆掉了。。。 虽然0x3f3f3f3f用memset好用,但是还是有局限性。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#incl

poj 3190 优先队列+贪心

题意: 有n头牛,分别给他们挤奶的时间。 然后每头牛挤奶的时候都要在一个stall里面,并且每个stall每次只能占用一头牛。 问最少需要多少个stall,并输出每头牛所在的stall。 e.g 样例: INPUT: 51 102 43 65 84 7 OUTPUT: 412324 HINT: Explanation of the s

poj 2431 poj 3253 优先队列的运用

poj 2431: 题意: 一条路起点为0, 终点为l。 卡车初始时在0点,并且有p升油,假设油箱无限大。 给n个加油站,每个加油站距离终点 l 距离为 x[i],可以加的油量为fuel[i]。 问最少加几次油可以到达终点,若不能到达,输出-1。 解析: 《挑战程序设计竞赛》: “在卡车开往终点的途中,只有在加油站才可以加油。但是,如果认为“在到达加油站i时,就获得了一

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

POJ2010 贪心优先队列

c头牛,需要选n头(奇数);学校总共有f的资金, 每头牛分数score和学费cost,问合法招生方案中,中间分数(即排名第(n+1)/2)最高的是多少。 n头牛按照先score后cost从小到大排序; 枚举中间score的牛,  预处理左边与右边的最小花费和。 预处理直接优先队列贪心 public class Main {public static voi

【408DS算法题】039进阶-判断图中路径是否存在

Index 题目分析实现总结 题目 对于给定的图G,设计函数实现判断G中是否含有从start结点到stop结点的路径。 分析实现 对于图的路径的存在性判断,有两种做法:(本文的实现均基于邻接矩阵存储方式的图) 1.图的BFS BFS的思路相对比较直观——从起始结点出发进行层次遍历,遍历过程中遇到结点i就表示存在路径start->i,故只需判断每个结点i是否就是stop