OSPF : 区域 / 为什么非骨干互访需要经过骨干

概述

OSPF系列第二篇 , 今天来围绕着区域这个概念展开写一篇博客

image-20240108022907086

分区背景

先来讨论一下技术背景 , 也就是为什么要分区 ? 所有设备都在一个区域不行吗 会有什么问题呢 .

首先明确一个知识点 : 正常状态下一个区域内的所有设备的LSDB都是一样的.区域内的路由器必须为所属的区域保存拓扑数据库。该路由器不包含关于其所属区域外部的网络拓扑的详细信息,因此减小了其数据库的大小。

所以区域的本质就是为了方便管理 比如减少LSA , 拓扑变化只能影响本区域 , 是OSPF为了适应大型网络做出的设计 , 如果仅仅是少量的设备运行OSPF那么分区的意义就没有这么大.

区域类型

image-20240108023757703

大致分为3类 , 骨干/非骨干/特殊 , 没有其他区域了

首先来说骨干 Area0 也是OSPF最重要的区域 , 必须要存在Area0区域 , 非骨干区域必须要围绕着骨干区域 .

非骨干区域连续的话会有问题 (因为防环机制) 此时需要虚链路 .

image-20240108024457759

如图 , 所有的非骨干区域必须围绕着骨干区域 . 特殊区域不先展开讨论 , 后续会有专门的篇幅来细说

为什么非骨干区域互访需要经过骨干区

OSPF中的骨干区域与非骨干区域

  1. 骨干区域(Area 0)的作用: 在OSPF中,所有的非骨干区域(比如Area 1, Area 2等)必须通过骨干区域进行数据交换。骨干区域的作用是作为一个中心枢纽,确保各个区域之间可以有效地交换路由信息。
  2. 区域边界路由器(ABR)的角色: ABR是连接不同OSPF区域(如骨干区域和非骨干区域)的路由器。它负责将一个区域内的路由信息汇总并传递给其他区域。

LSA(链路状态通告)

  • LSA的组成: LSA是OSPF中用来交换路由信息的单元,包含LS type(链路状态类型)、Link State ID(链路状态标识符)和Advertising Router(发布路由器的标识)。
  • 类型3 LSA的特殊作用: 当ABR将一个区域的路由信息传递到另一个区域时,它会使用类型3 LSA。此时,LSA中的信息不再是链路状态信息,而是纯粹的路由信息。

路由自环的问题与解决

  • 路由自环的产生原因: 在D-V(距离-向量)算法中,路由信息的生成者信息不会被包含在路由信息中,因此每条路由信息无法追溯到最初的生成者。这可能导致路由自环,即路由信息在网络中循环传播而不达到目的地。
  • OSPF的改进: OSPF在生成LSA时会加入路由器的ID(Router ID),这有助于追踪信息的来源。但如果信息传递超过两个区域,最初的生成者信息可能会丢失。
  • 解决方案: 为了避免路由自环,OSPF采用了一种策略:所有ABR将本区域的路由信息封装成LSA后,首先发送到骨干区域。骨干区域内的路由器清晰地知道每条LSA的生成者信息。然后,骨干区域负责将这些信息转发给其他非骨干区域。这样,通过骨干区域作为中转点,可以确保信息清晰且避免产生路由自环。

总结:OSPF中非骨干区域之间的通信必须经过骨干区域,主要是为了确保路由信息的准确性和避免路由自环的问题。ABR和类型3 LSA在这个过程中发挥关键作用。通过这种设计,OSPF确保了网络中的路由信息既准确又高效。

路由器类型

image-20240108025311862

这里的接口指的是 运行ospf的接口 , 在华为设备上可以通过display ospf abr-asbr 来查看相关的设备角色类型 .

其中最重要的2个观念就是ABR / ASBR 他们的关键点就是

OSPF 区域之间的设备 ABR --> 一定要理解 ABR必须要有一个接口在area 0

OSPF和不同协议之间的设备 ASBR -->引入了外部路由 (静态/BGP/ISIS…)

image-20240109011911738

理解这个图可以很好的感受到OSPF分区域的魅力 , 以及各角色的路由器类型

OSPF单区域问题/划分区域的好处

OSPF单区域问题:区域内的路由器同步LSDB,当区域内的网络规模越来越大时:

  • LSA通告越来越多,LSDB规模变得越来越臃肿。
  • 基于LSDB的路由计算的负担也极大地增加,路由表规模也变大了。
  • 设备性能下降,影响数据转发。
  • 当拓扑发生变化时,变更扩散到所有路由器,并可能引发整网的路由重计算。
  • 单区域也无法部署路由汇总。
  1. 减少区域内 LSA 的数量。在进行了区域划分之后,OSPF 路由器的 LSDB 既不需要维护所有区域的链路状态信息,而只需要维护本区域的链路状态信息。
  2. 便于管理。功能性和地理位置相同的路由器,往往有着相同的路由选择需求。
  3. 减少路由震荡的影响。OSPF 协议可以对部分区域进行特殊配置,或者在区域边界设置路由聚合和路由过滤等策略,将路由震荡控制在区域内,从而减少对于自治系统内其他区域路由器的影响,降低其他区域路由器 SPF 算法反复计算的次数。

OSPF 规划设计

根据分区域的精神来粗略的说一下OSPF在规划设计方向的思路

  1. route id 手动指定为回环口

  2. 不要使用aera 1 , 2 , 3 连续 , aera10 , 20 , 30 围绕着Aera0 , 方便后续扩展

  3. 非骨干区域如果只有一个 ABR做出口 , 可以把这个区域规划成NSSA

  4. 网络安全 : 静默端口 + 邻居密码认证 , 静默端口的直连路由仍可以发布 ,无法建立ospf邻居 和发送报文

虚连接Virtual Link

由于网络设计、规划、升级、合并、改造等因素,造成不规范区域架构,最终导致路由学习不完整:

虚链路就是在两台ABR之间通过一个非骨干区域建立的一条逻辑上的连接通道。通过虚链路,两台ABR之间直接传递OSPF报文信息,两者之间的OSPF设备只是起到一个转发报文的作用,相当于在两个ABR之间形成了一个点到点的连接。

vlink-peer x.x.x.x
dis ospf vlink

虚连接的存在增加了网络的复杂程度,使故障的排除更加困难。

  • 虚连接仅是作为修复无法避免的网络拓扑问题的一种临时手段。
  • 虚链路可以看作是一个网络是否需要重新规划设计的标志。
  • 虚连接的创建使OSPF协议可以通过非骨干区域通信,违背了OSPF区域间的防环规则,在某些场景下会导致路由环路的产生。
  • 因此,在网络规划中应该尽量避免使用虚连接。
  • 虚连接的另外一个应用是提供冗余的备份链路,当骨干区域因链路故障将被分割时,通过虚连接仍然可以保证骨干区域在逻辑上的连通性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/623229.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 10.0 系统语言随sim卡语言自适应变化功能实现

1.前言 在10.0的系统产品开发中,在对于sim卡这个功能模块中,在系统默认系统语言不随sim卡的语言变化,产品开发的需要要求系统语言 需要随着识别到sim卡的语言后,设置为系统默认语言,接下来就实现这个功能 2.系统语言随sim卡语言自适应变化功能实现的核心类 frameworks\…

BikeDNA(八)外在分析:OSM 与参考数据的比较2

BikeDNA(八)外在分析:OSM 与参考数据的比较2 1.数据完整性 见链接 2.网络拓扑结构 见链接 3.网络组件 本节仔细研究两个数据集的网络组件特征。 断开连接的组件不共享任何元素(节点/边)。 换句话说,…

庆祝一年的成长

本文字数:2288;估计阅读时间:6 分钟 作者:ClickHouse Team 审校:庄晓东(魏庄) 本文在公众号【ClickHouseInc】首发 随着今年即将结束,我们想要向您表达衷心的感谢,感谢您…

近两周10个令人难以置信的AI工具:

过去两周出现的最令人难以置信的AI工具: Genie:多模式文本到3D生成器Cognysys 2.0:自动创建工作流并根据提示执行任务 https://cognosys.ai MultiOn:AI个人代理,可以预订航班,订购食品等https://multion.a…

Linux more命令教程:掌握文件分页阅读(附案例详解和注意事项)

Linux more命令介绍 more命令,全称也是 more,它是一个用于满足用户分页阅读文件内容的工具。在我们需要阅读或分析文件内容时,more命令提供了一种在终端上逐页、逐行阅读长篇文件内容的方式。这个命令对于数据分析和代码审查非常有用。 Lin…

cad二次开发autolisp(一)

文章目录 一、概述1.1 简介1.2 打开编辑器1.3 调试页面 二、数据类型三、函数3.1 用户函数 四、语句4.1 常规语句4.2 流程控制语句 五、图元操作5.1 定义5.2 图元选择5.3 图元属性列表 一、概述 1.1 简介 简介:cad 二次开发语言,后缀名*.lsp适用于编写…

排序算法7----归并排序(C语言)

1、基本思想 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。 将无序的序列分解到单个元素,然后将有序的子序列合并,得到完全有序的序列:即先使每个子序列有序,再使子序列段…

React16源码: React中的异步调度scheduler模块以及时间片源码实现

React Scheduler 1 ) 概述 react当中的异步调度,称为 React Scheduler发布成单独的一个 npm 包就叫做 scheduler这个包它做了什么? A. 首先它维护时间片B. 然后模拟 requestIdleCallback 这个API 因为现在浏览器的支持不是特别的多所以在浏览当中只是去…

使用scipy处理图片——旋转任意角度

大纲 载入图片左旋转30度,且重新调整图片大小右旋转30度,且重新调整图片大小左旋转135度,保持图片大小不变右旋转135度,保持图片大小不变 在《使用numpy处理图片——90度旋转》中,我们使用numpy提供的方法,…

【PostgreSQL】函数与操作符-逻辑操作符

PostgreSQL常用的操作符 算术操作符:PostgreSQL支持基本的算术操作符,包括加法()、减法(-)、乘法(*)、除法(/)和取模(%)等。可以使用这…

命令行登录Mysql的详细讲解

目录 前言1. 本地登录2. 远程登录3. 拓展 前言 对于命令行登录Mysql一般都是用mysql -u root -p 但对于如何远程登陆,一直其他的参数还是有些盲区,对此总结科普 对于登录过程中出现的问题,可看我之前的文章: 服务器 出现ERROR …

Dreambooth Stable Diffusion始化训练环境(AutoDL)

以AutoDL为例 以下代码源自:赛博华佗——秋叶: Akegarasu 环境选择 Miniconda: Miniconda是一个轻量级的Conda环境管理系统。它包含了conda、Python和一些常用的包,以及能够管理安装其他包的能力。Miniconda是Anaconda的一个简化版&#xff0…

聊聊PowerJob的Alarmable

序 本文主要研究一下PowerJob的Alarmable Alarmable tech/powerjob/server/extension/Alarmable.java public interface Alarmable {void onFailed(Alarm alarm, List<UserInfoDO> targetUserList); }Alarmable接口定义了onFailed方法&#xff0c;其入参为alarm及tar…

【矩阵快速幂】封装类及测试用例及样例

作者推荐 视频算法专题 通俗的说&#xff0c;就是矩阵的乘方。 封装类 核心代码 class CMat { public:// 矩阵乘法static vector<vector<long long>> multiply(const vector<vector<long long>>& a, const vector<vector<long long>…

使用Python管理MySQL数据库,有录播直播私教课视频教程

查看所有数据库 from mysql.db_object import Databasedb Database(host"localhost",port3306,database"",username"root",password"zhangdapeng520" ) print(db.get_all_database())删除数据库 from mysql.db_object import Datab…

Python 面向对象之元类

Python 面向对象之元类 【一】一切皆对象 【1】元类 元类&#xff08;metaclass&#xff09;是Python中用于创建类的类。在Python中&#xff0c;类是对象&#xff0c;而元类就是类的类它们控制类的创建过程&#xff0c;允许你定制类的行为Python中内置的默认元类是type我们用…

Android JNI与Java类的转换调用

1. 前言 一般在Android中&#xff0c;对于JNI的调用&#xff0c;基本的数据类型就能满足要求了&#xff0c;具体可以看我的这一篇文章 : Android JNI/NDK 入门从一到二&#xff0c;但是最近在项目中遇到了基本类型满足不了需要的情况&#xff0c;需要在JNI中创建并操作Java类&…

Rust-语句和表达式

if-else Rust中if-else表达式的作用是实现条件分支。if-else表达式的构成方式为&#xff1a;以if关键字开头&#xff0c;后面跟上条件表达式&#xff0c;后续是结果语句块&#xff0c;最后是可选的else块。条件表达式的类型必须是bool。 if-else结构还可以当表达式使用 loop …

如何用LLM和自有知识库搭建智能agent?

用LangChain建立知识库&#xff0c;文末中也推荐其他方案。 项目源码&#xff1a;ChatPDF实现 LangChain Indexes使用 对加载的内容进行索引&#xff0c;在indexes中提供了一些功能&#xff1a; Document Loaders&#xff0c;加载文档Text Splitters&#xff0c;文档切分V…

nautilus`文件管理器打开文件管理器

使用nautilus文件管理器打开文件管理器&#xff0c;并使用管理员权限。以下是使用命令行的步骤&#xff1a; 打开终端&#xff08;命令行界面&#xff09;&#xff0c;你可以通过按下Ctrl Alt T组合键来打开终端。 在终端中&#xff0c;使用以下命令以管理员权限打开文件管理…