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

相关文章

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

VSCode设置python SDK路径的实现步骤

《VSCode设置pythonSDK路径的实现步骤》本文主要介绍了VSCode设置pythonSDK路径的实现步骤,包括命令面板切换、settings.json配置、环境变量及虚拟环境处理,具有一定... 目录一、通过命令面板快速切换(推荐方法)二、通过 settings.json 配置(项目级/全局)三、

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)

《如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)》:本文主要介绍如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)问题,具有很好的参考价值,希望对大家有所帮助,如有... 目录先在你打算存放的地方建四个文件夹更改这四个路径就可以修改默认虚拟内存分页js文件的位置接下来从高级-

一文详解如何查看本地MySQL的安装路径

《一文详解如何查看本地MySQL的安装路径》本地安装MySQL对于初学者或者开发人员来说是一项基础技能,但在安装过程中可能会遇到各种问题,:本文主要介绍如何查看本地MySQL安装路径的相关资料,需... 目录1. 如何查看本地mysql的安装路径1.1. 方法1:通过查询本地服务1.2. 方法2:通过MyS

Python如何调用指定路径的模块

《Python如何调用指定路径的模块》要在Python中调用指定路径的模块,可以使用sys.path.append,importlib.util.spec_from_file_location和exe... 目录一、sys.path.append() 方法1. 方法简介2. 使用示例3. 注意事项二、imp

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3

Linux修改pip和conda缓存路径的几种方法

《Linux修改pip和conda缓存路径的几种方法》在Python生态中,pip和conda是两种常见的软件包管理工具,它们在安装、更新和卸载软件包时都会使用缓存来提高效率,适当地修改它们的缓存路径... 目录一、pip 和 conda 的缓存机制1. pip 的缓存机制默认缓存路径2. conda 的缓