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,一经查实,立即删除!

相关文章

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

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

庆祝一年的成长

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

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提供的方法,…

命令行登录Mysql的详细讲解

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

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

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

Python 面向对象之元类

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

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…

开发实践5_后台管理^/ 分_页器

以下学习 朔宁夫 开发课 。&#xff08;Python&#xff09; 一 基本使用 创建超级用户 terminal // python manage.py createsuperuser 访问地址 //Log in | Django site adminhttp://127.0.0.1:8000/admin/login/?next/admin/ superuserr login django自带admin功能。其…

一文读懂「Prompt Engineering」提示词工程

在了解提示过程之前&#xff0c;先了解一下什么是提示prompt&#xff0c;见最后附录部分 一、什么是Prompt Engingering&#xff1f; 提示工程&#xff08;Prompt Engingering&#xff09;&#xff0c;也被称为上下文提示&#xff08;In-Context Prompting&#xff09;&#x…

Django项目中的默认文件都有什么用

manager.py&#xff1a; 是django用于管理本项目的命令行工具&#xff0c;之后进行站点运行&#xff0c;数据库自动生成等都是通过本文件完成。 djangoStudy/__init__.py&#xff1a; 告诉python该目录是一个python包&#xff0c;暂无内容&#xff0c;后期一些工具的初始化可…

【数据库】间隙锁Gap Lock

什么是间隙锁 间隙锁&#xff08;Gap Lock&#xff09;&#xff1a;间隙锁是&#xff08;RR级别下&#xff09;一个在索引记录之间的间隙上的锁&#xff0c;可以是两个索引记录之间&#xff0c;也可能是第一个索引记录之前或最后一个索引之后的空间。间隙锁&#xff08;Gap Lo…

Github登录时,要二次验证.Github 2FA登录问题

2023下半年, Github登录时,要二次验证. 点击“Enable 2FA now”跳到2FA验证界面。 点setup key是到secret串。 这里有一个可以不用app的验证方法。填入secret串,运行后,会得到验证码. https://blog.csdn.net/dejavu_980323/article/details/132318107 按照这个文章,得到验证…

分布式任务调度平台XXL-JOB使用(二)

说明&#xff1a;之前总结过在CentOS系统里使用XXL-JOB。但在代码开发阶段&#xff0c;我们有时需要在本地环境测试定时任务代码&#xff0c;本文介绍如何在Windows系统使用XXL-JOB。 下载 &#xff08;1&#xff09;下载代码&#xff0c;解压打开 首先&#xff0c;去Github…

在Android原生项目中 创建 Flutter模块

前言 应用场景&#xff1a;在已有的Android原生项目中&#xff0c;引入Flutter模块&#xff0c;摸索了两天&#xff0c;终于给整出来了&#xff1b; 如果是新项目&#xff0c;最好直接创建Flutter项目&#xff0c;然后在Fluter的 android / ios目录中&#xff0c;写原生代码&…

深思熟虑可能性模型介绍与使用

深思熟虑可能性模型介绍与使用 如何联系我 作者&#xff1a;鲁伟林 邮箱&#xff1a;thinking_fioa163.com或vlinyes163.com 版权声明&#xff1a;文章和记录为个人所有&#xff0c;如果转载或个人学习&#xff0c;需注明出处&#xff0c;不得用于商业盈利行为。 背景 20…

[牛客周赛复盘] 牛客周赛 Round 28 20240114

[牛客周赛复盘] 牛客周赛 Round 28 20240114 总结A\B1. 题目描述2. 思路分析3. 代码实现 小红的炸砖块1. 题目描述2. 思路分析3. 代码实现 小红统计区间&#xff08;easy&#xff09;1. 题目描述2. 思路分析3. 代码实现 小红的好数组1. 题目描述2. 思路分析3. 代码实现 小红统…