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

news2025/2/23 17:20:10

概述

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.coloradmin.cn/o/1383975.html

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

相关文章

小程序基础学习(请求封装)(重点,核心)

目录 首先: 封装一个request请求的js文件,用的是Promise 然后: 请求编写 原理:首先在页面加载完成以后发送一次请求数据,由于请求的数据会反复使用,直接把他抽离到外面,以后直接调用。在使用a…

如何用MetaGPT帮你写一个贪吃蛇的小游戏项目

如何用MetaGPT帮你写一个贪吃蛇的小游戏项目 MetaGPT是基于大型语言模型(LLMs)的多智能体写作框架,目前在Github开源,其Start数量也是比较高的,是一款非常不错的开源框架。 下面将带你进入MetaGPT的大门,开启MetaGPT的体验之旅。…

使用android studio编译app到自己的手机上运行,却读取不了手机里面的图片

问题描述: 使用android studio编译app到自己的手机上运行,却读取不了手机里面的图片 问题分析: 这个是由于这个app没有申请手机端的 媒体文件访问权限,所以读取不了 解决:(我的是Android 10,新版…

数据结构学习之对单向链表进行快速高效的排序(排序链表)

实例要求:1、给定一个链表的头结点 head ,请将其按升序排列并返回排序后的链表 ;2、链表中节点的数目的范围为 [0, 5 * 104] ;实例分析:1、引入qsort函数和自定义cmp函数解决问题;2、借助自定义指针作为中间…

Android Studio下载gradle反复失败

我的版本:gradle-5.1.1 首先检查设置路径是否正确,参考我的修改! 解决方案 1.手动下载Gradle.bin Gradle Distributions 下载地址 注意根据编译器提示下载,我这要求下载的是bin 而不是all 2.把下载好的整个压缩包放在C:\Users\…

jenkins-cl参数化构建

pipeline片段(对应jenkins-cli -p参数的BRANCHdevelop) parameters {string(name: BRANCH, defaultValue: master, description: Enter the branch name)}stages {stage(Get Code) {steps {script {def branch params.BRANCHcheckout scmGit(branches: …

【Python】使用pyinstaller打包为Windows平台的xxx.exe方法步骤

pyinstaller 是一个用于将 Python 代码打包成独立可执行文件的工具,它可以将 Python 代码打包成 Windows、Linux、Mac 等平台的可执行文件,方便用户在不同环境中运行。 pyinstaller用法: 1.安装pyinstaller库,这里以PyCharm环境为…

Git与VScode联合使用详解

目录 Git与VScode联合使用 方式一 1. 用vscode打开文件夹,如图点击初始化仓库,把此仓库初始为git仓库。 2. 提交文件到本地仓库 3. vscode与github账号绑定 4. 在github中建立远程仓库 5. 本地仓库与远程仓库绑定 方式二 1. 在github上建立远程仓…

Nginx的安装配置和使用

最近有好几个地方用到了nginx,但是一直还没时间记录下nginx的安装、配置和使用,这篇文章可以将这块内容整理出来,方便大家一起学习~ 安装 安装是相对简单一些的,直接使用yum即可。 yum install -y nginx 默认安装位置在/usr/sb…

flutter 打包IOS及常用配置

修改APP名称 项目名字配置是在 ios/Runner/Info.plist 文件中的 dict 下的 CFBundleName testapp 。如下图所示: String里面就可以修改名称 修改项目 (testapp)的 Logo 图标 iOS 项目 Logo的配置是在 ios/Runner/Assets.xcassets/AppIcon.appiconset 文…

单表的查询练习

一、单表查询 素材: 表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等 显示所有职工的基本信息。 mysql8.0 [chap03]>select * from worker; 查询所有职工所属部门的部门号,不显示重复的部门号。 mysq…

mysql进阶-索引基础

目录 1. 概念-索引是什么? 2. 索引的数据结构(索引模型) 2.1 二分查找: 2.2 二叉查找树(BST Binary Search Tree): 2.3 平衡二叉树(AVL Tree Balanced binary search trees) 2.4 多路平衡查找树(B Tree Balanced…

青动CRM-E售后 售后工单CRM系统 erp系统 带前端小程序全开源可二开

应用介绍 一款基于FastAdminThinkPHP和uniapp开发的CRM售后管理系统,旨在助力企业销售售后全流程精细化、数字化管理,主要功能:客户、合同、工单、任务、报价、产品、库存、出纳、收费,适用于:服装鞋帽、化妆品、机械机…

C# 基础入门

第二章 C# 语法基础 2-1 C# 中的关键字 关键字,是一些被C#规定了用途的重要单词。 在Visual Studio的开发环境中,关键字被标识为蓝色,下图代码中,用红方框圈出的单词就是关键字。 关键字 class ,这个关键字的用途是…

test Property-based Testing-04-junit-quickcheck

拓展阅读 开源 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息) 开源 Junit performance rely on junit5 and jdk8.(java 性能测试框架。性能测试。压测。测试报告生成。) junit-quickcheck:基于 JUnit 风格的属性驱动测试库 junit-qu…

瑞_Java开发手册_(一)编程规约

文章目录 编程规约的意义(一)命名风格(二)常量定义(三)代码格式(四)OOP 规约(五)日期时间(六)集合处理(七)并发…

「Vue3面试系列」Vue 3.0中Treeshaking特性有哪些?举例说明一下?

文章目录 一、是什么二、如何做Vue2 项目Vue3 项目 三、作用参考文献 一、是什么 Tree shaking 是一种通过清除多余代码方式来优化项目打包体积的技术,专业术语叫 Dead code elimination 简单来讲,就是在保持代码运行结果不变的前提下,去除…

基于JavaWeb的酒店管理系统

基于JavaWeb的酒店管理系统 文章目录 基于JavaWeb的酒店管理系统系统介绍技术选型成果展示源码获取账号地址及其他说明 系统介绍 基于JavaWeb的酒店管理系统是为酒店打造的管理平台,其主要功能有管理员登陆、客房预订、客房入住、房间管理、数据查询(预订单查询、入…

差分算法模板

差分算法模板 一维差分一维insert函数(构造差分数组和实现区域加数操作)一维差分模板题 二维差分二维insert函数(构造差分数组和实现区域加数操作)二维差分模板题 一维差分 差分主要是计算出某个区域段的数分别加上一个数 先给定一个原数组a:a[1], a[2], a[3], a[n]…

datavrap-各种各样的条形图(含详细操作步骤)

静态条形图:正确设置数据即可,导出的图形不会随着时间变化 最普通的静态条形图 黑色系风格的静态条形图 动态条形图:导出的图形会随着时间变化 普通的动态条形图 带数字滚动效果的动态条形图 简单的Top排行榜动态条形图 格式更丰富的Top排行榜…