OSPF防环文档

news2024/11/26 20:31:37

OPSF在区域内会产生俩类LSA:Router LSA ,Network LSA

路由器以自己为树根构建最短路径树 ,这里的最短路径树按两步形

成,第一步,仅考虑路由器和传输网络之间的连接。通过 Dijkstra 算法,根据链路状态数据库的子集形成树。第二步,考虑末节网络连接, 作为叶子加入树。

区域内部OSPF对网络是通过Router LSA ,Network LSA来描述网络的,最终路由器收到LSA构建出LSDB。

  LSDB通过描述一个有向线段图来描述网络拓扑结构,该有向图的端点有三种类型:路由器节点,Stub网段和Transit网段

Router LSA使用Link ID,Data,Type和Metric描述一条链路

类型有四种

  Stub网段表示该网段只有数据入口,例如一个Loopback接口就是一个Stub网段。

此胶片描述了路由器节点和Stub网段的表示方式。

Cost表示从一个端点到另一个端点的开销,该参数可以在OSPF接口上配置,表示数据离开该接口(出接口)的开销。


 

 Transit网段有能力转发既不是本网段产生的,也不以本网段做为目的地的数据。

有至少两台路由器的广播型网段或NBMA网段就是一种Transit网段。从路由器到所连Transit网段的开销值就是连接到这个网段的接口所配置的开销值。

从一个Transit网段到连接到这个网段的路由器的开销为0。(称为伪节点)

 

在描述点到点接口的Router-LSA中:

  1. 通告一个到邻居路由器的点到点链接,Link ID设置为对端的Router ID,Data设置为本地接口的IP地址;
  2. 通告一个到该点到点网段的Stub连接,Link ID设置为该点到点网段的网络号,Data设置为该点到点网段的网络掩码
  3. 上述两个连接的Cost值均为该点到点接口上的Cost值。

 

LSDB描述两接口处于不同网段的点到点网段的规则如下: 两台路由器经由两条有向线段直接相连,每个方向一条。两个接口的网段被表示成Stub网段。
每个路由器通告一个Stub连接到该路由器所连的网段。

 

 LSDB描述两接口处于同一网段的点到点网段的规则如下: 两台路由器经由两条有向线段直接相连,每个方向一条。连接两个接口的网段被表示成Stub网段。

两个路由器同时通告Stub连接到该PPP网段。

 

  在描述广播型或NBMA型接口的Router-LSA中:

  1. 如果接口状态是Waiting,或者该网段上只有一个运行OSPF的路由器,或者该网段上没有DR,则通告一个通往该网段的Stub链接,Link ID设置为该网段的IP网络号,Link   Data设置为该网段的网络掩码; 其他情况下,通告一个通往该网段的Transit连接,Link ID设置为DR的接口IP地址,Link Data设置为本地接口的IP地址
  2. 连接的开销值为接口的开销。

 

 

 

在描述广播型网段或者NBMA网段的Network-LSA中:

Link State ID设置为DR的接口IP地址。

Net mask设置为该网段的网络掩码。

Link State ID和Net mask做与运算,即可得出该网段的IP网络号。

在该LSA中,还包含一个连接到该网段的路由器列表。

从一个Transit网段到所连接的路由器的连接没有开销。

 

    计算过程 

 

根据上文描述上图拓扑在LSA传递完毕后生成有向图 

 

第一阶段

计算Transit节点,忽略Stub节点,生成一个最短路径树

第二阶段

只计算Stub节点,将Stub网段挂到最短路径树上去

  计算过程中首先初始化最短路径树,RTA将自己做为根节点添加到最短路径树上

 

RTA将自己添加到最短路径树上之后,检查自己生成的Router-LSA,对 于该LSA中所描述的每一个连接,如果不是一个Stub连接,就把该连接 添加到候选列表中,端点ID为Link ID,到根端点的开销为LSA中描述的Metric值。本例中,添加端点4.4.4.4和2.2.2.2。 

将候选列表中到根端点开销最小的端点移到最短路径树上 

 

 

当有新节点添加到最短路径树上的时候,则检查LS ID为新节点的link-id ID的LSA,本例中检查LS ID为2.2.2.2的LSA。

如果LSA中所描述的连接的Link ID在最短路径树上已经存在,则忽略该连接。本例中,Link ID为1.1.1.1的连接被忽略,只有10.3.1.1的连接被添加到候选列表中。到根端点的开销设置为此连接的Metric值(本例中此连接的Metric值为1)与父端点(本例中此连接的父端点为2.2.2.2)到根端点的开销(本例中此开销值为48)之和。

 

将候选列表中到根端点的开销最小的端点移动到最短路径树上,本例中,将10.3.1.1移到最短路径树上。 

 

 

检查LS ID为最新添加节点的端点ID的LSA,本例中检查LS ID为10.3.1.1的LSA。

在所描述的连接中,忽略2.2.2.2,将3.3.3.3和4.4.4.4添加到候选列表中。从Transit网段到所连路由器的开销为0。

如果在候选列表中出现两个端点ID一样但是到根端点的开销不一样的端点,则删除到根端点的开销大的端点。

 

将候选列表中到根端点的开销最小的端点移动到最短路径树上,本例中,将3.3.3.3移到最短路径树上 

检查LS ID为最新添加节点的端点ID的LSA,本例中检查LS ID为3.3.3.3 的LSA。

本例中,没有新端点被添加到候选列表中。

将候选列表中到根端点的开销最小的端点移动到最短路径树上,本例中,将4.4.4.4移到最短路径树上。

检查LS ID为最新添加节点的端点ID的LSA,本例中检查LS ID为4.4.4.4 的LSA。

本例中,没有新端点被添加到候选列表中。

如果在此时候选列表为空,则计算最短路径树的第一阶段结束。

 

检查每个路由器端点的Router-LSA,计算Stub网段。

本例中,首先检查RTA的Router-LSA,共有三个Stub网段

OSPF区域间防环

Type-3 LSA及Type-4 LSA的防环

1.OSPF要求所有的非0区域必须与骨干区域直接相连,区域间路由需经由骨干区域中转。

OSPF要求所有的非0区域必须与骨干区域直接相连,区域间(Inter-Area Route)路由需经由骨干区域中转。这个要求使得区域间的路由传递不能发生在两个非0的区域之间,这在很 大程度上规避了区域间路由环路的发生,也使得OSPF的区域架构在逻辑上形成了一个类似星型的拓扑,如下图所示。

2.ABR只能够将其所连接的区域的区域内部路由注入到Area0,但是可以将区域内部路由及 区域间的路由注入到非0常规区域。ABR从非骨干区域收到的Type-3 LSA不能用于区域间路由的计算。

OSPF对ABR有着严苛的要求,区域间的路由传递的关键点在于ABR对Summary LSA的处理。

在上图中,如果R3是一台普通的OSPF路由器(不是ABR),例如当它与R2没有OSPF邻居关系 时,它会根据R4在Area2中泛洪的Type-3 LSA计算出1.1.1.0/24路由并将路由加载进路由表中。但是当R3与R2建立起OSPF邻接关系后,R3在Area0中就有了一个活跃的全毗邻连接,此 时如果它把描述1.1.1.0/24路由的Type-3 LSA再注入回Area0,那么就会带来潜在环路的风险,如下图所示:

因此当一台ABR在非Area0的区域中收到Type-3 LSA时,虽然它会将其装载进LSDB,但是该路由器不会使用这些Type-3 LSA进行路由计算,当然它更不会将这些Type-3 LSA再注入回Area0中。

这里有一个有意思的细节,就是如果R3连接R2的接口虽然激活了OSPF(而且属于Area0), 但是不与R2形成邻接关系(例如R2连接R3的接口不激活OSPF),那么此时R3其实并不算是 严格意义上的ABR(虽然它产生的Type-1 LSA中B-bit会被置位,但是它在Area0中并没有全毗邻的邻居),因此它会将Area2内收到的Type-3 LSA用于区域间路由的计算,所以在R3的路由表中能看到1.1.1.0/24的区域间路由(下一跳为R4),但是一旦R2-R3之间的邻接关系 建立起来,R3将不能再使用R4下发的Type-3 LSA计算路由,而仅能使用从Area0中收到

的、R 2下发的Type-3 LSA进行区域间路由计算,所以此时R3路由表中1.1.1.0/ 24路由的下一跳为R2,而且即使这条路径的Cost要比从R4走更大(例如将R3连接R   2的接口Cost调大),R3也始终不会走R4到达1.1.1.0/24,除非R2挂掉,或者R2-R3丢失邻接关系。这个现 象在思科、华为的真机上验证过了,两者均是如此实现。

​​​​​​​3.ABR不会将描述一个Area内部的路由信息的Type-3 LSA再注入回该区域中。

实际上,OSPF区域间路由的传递行为,很有点距离矢量路由协议的味道。以下图为例,在Area1中,R1及R2都会泛洪Type-1 LSA、Type-2 LSA,两台路由器都能够根据这些LSA计算 区域内路由,而R2作为ABR还担负着另一个责任,就是向Area0通告区域间的路由,实际上 它是向Area0中注入用于描述Area1内路由的Type-3 LSA,而这些Type-3 LSA是不会发回Area1的——是的,类似水平分割行为对吧?接下来R3利用这些Type-3 LSA计算出了区域间的路由,并且为Area2注入新的Type-3 LSA用于描述区域间的路由,而这些Type-3 LSA同样的不会被注入回Area0。

R2 在向Area0通告Type-3 LSA,为每条区域间路由携带上Cost值,这个值就是它自己到达各个目标网段的Cost,而R3收到这些Type-3 LSA并计算路由时,路由的Cost就是在R2所通告的Cost值的基础上,加上R3自己到R2的Cost值,然后,R3向R4通告这些区域间的路由时也 携带者自己到达目标网段的Cost,而R4到达目标网段的Cost则是在R3的通告值基础上累加 自己到R3的Cost——典型的距离矢量行为。

Type-4 LSA实际上与Type-3 LSA都是Summary LSA,只不过一个是Network Summary LSA——用于描述网段路由,另一个则是ASBR Summary LSA——用于描述ASBR,他们使用的防环机制是一致的。

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

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

相关文章

FebHost:瑞士.CH域名注册介绍

瑞士,一个位于欧洲心脏地带的多元文化国家,不仅以其精准的钟表和迷人的巧克力闻名于世,还因其独特的国家代码顶级域名“.ch”在互联网上占有一席之地。与全球广泛使用的通用顶级域名(gTLDs)如“.com”、“.org”或“.n…

sqli-labs(宽字节less-33,二次less-24,update less-17,堆叠less-38)pikachu(insert,delete)

目录 宽字节 less-33 具体使用 sqlmap爆破宽字节 二次注入 less-24 靶场运用: update注入 less-17 具体使用: insert注入 pikachu演示 具体使用 delete注入 pikachu演示 堆叠注入 less-38 宽字节 less-33 宽字节注入是利用 mysql 的一个特性&…

访问elasticsearch集群提示ERROR 新增es数据失败,后台日志返回413 Request Entity Too Larg

一、背景: 在运维paas云平台时有研发反馈客户端访问elasticsearch服务偶发性的出现报错,提示报错如下: ERROR 1 --- [io-8407-exec-35] c.j.b.c.c.e.s.ElasticOperateServiceImpl : 新增es数据失败 二、问题分析: 报错日志内容核…

【Machine Learning系列】带你快速学习十大机器学习算法

前言 机器学习算法是一类用于从数据中学习模式和规律的算法。这些算法可以通过训练样本的输入和输出来推断出模型的参数,然后用于预测新的未知数据。 文章目录 前言机器学习算法1. 线性回归算法 Linear Regression2. 支持向量机算法(Support Vector Machine,SVM)3. …

实战-edusrc漏洞挖掘-接口未授权访问

0x01系统初探 通过fofa对大学进行搜索 fofa:host"edu.cn" && status_code"200"在随意的翻阅查看时,发现访问xxx.edu.cn登录页面会优先访问登录后的页面,再跳转至登录页面。盲猜应该是前端校验,可以通过…

Netty 入门应用之Http服务WebSocket

Netty实现Http服务 主要的变化是在初始化器中引入了新的编解码器 一些创建的类作用和Netty HelloWorld的小demo一样我这里就不再次重复了 1、Http服务端代码 public class HttpServer {public static void main(String[] args) {// 创建Reactor// 用来管理channel 监听事件 …

氮气柜温湿度含氧量控制及联网监测功能介绍

氮气柜主要用于存储对氧气敏感的物料,如精密电子元器件、金属材料、化学品、药品、IC芯片等。通过持续充入氮气,降低柜内氧气含量至安全水平,从而抑制氧化反应的发生,保护物料免受氧化损害。 氮气柜可以通过氧浓度传感器来实现对柜…

【TI毫米波雷达】MMWave SDK:UART串口数据发送时的数据丢失、出错及避坑配置,Polling方法和Write方法的使用避坑

【TI毫米波雷达】MMWave SDK:UART串口数据发送时的数据丢失、出错及避坑配置,Polling方法和Write方法的使用避坑 文章目录 BUG复现Polling方法和Write方法的使用避坑串口配置避坑附录:结构框架雷达基本原理叙述雷达天线排列位置芯片框架Demo工…

手术麻醉信息管理系统源码 网格编辑、麻醉质控指标

目录 什么是手术麻醉信息管理系统 满足医院等级评级需求 满足电子病历评级需求 满足科室需求 术前 1、患者术前评估/诊断 2、术前讨论制定手术方案 3、手术准备 4、术前准备 术中 1、送手术室 2、麻醉前 3、手术 术后 1、手术结束 2、术后监护 3、术后随访 什…

龙蜥社区「人人都可以参与开源」——体验开源成为“开源人“

龙蜥社区「人人都可以参与开源」体验开源——让更多的人了解开源! 龙蜥社区开源概述:龙蜥社区开源的探索过程:龙蜥社区收获总结:AtomGit评测:服务设计上:功能结构上:安全设计上: AtomGit测评总结: 龙蜥社区开源概述: 在追求技术的路上少不了…

Netty学习——高级篇2 Netty解码技术 备份

接上篇:Netty学习——高级篇1 拆包 、粘包与编解码技术,本章继续介绍Netty的其他解码器 1 DelimiterBasedFrameDecoder分隔符解码器 DelimiterBasedFrameDecoder 分隔符解码器是按照指定分隔符进行解码的解码器,通过分隔符可以将二进制流拆分…

将扁平数据转换为树形数据的方法

当遇到了好多扁平数据我们都无从下手?不知道如何处理? 家人们 无脑调用这个函数就好了 接口请求回来以后 调用这个函数传入实参就可以用啦~ // 树形菜单函数 function GetTreeData(data) {let TreeData [];let map new Map(); //存在id,对应所在的内…

大厂Java笔试题之判断字母大小写

/*** 题目:如果一个由字母组成的字符串,首字母是大写,那么就统计该字符串中大写字母的数量,并输出该字符串中所有的大写字母。否则,就输出* 该字符串不是首字母大写*/ public class Demo2 {public static void main(St…

功能测试_验证某城市电话号码的正确性

案例:验证某城市电话号码的正确性 功能测试_等价类设计用例: 步骤: 1:明确需求:电话号码是否正确 2:划分等价类:有效等价类、有效取值、无效等价类、无效取值 3:提取数据编写用例:用例编号…

4.9QT

完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面 如果账号和密码不匹配&#xf…

vite+react+ts+scss 创建项目

npm create vitelatest输入项目名称选择react选择typescript swc WC 通过利用 Rust 编写的编译器,使用了更先进的优化技术,使得它在处理 TypeScript 代码时能够更快地进行转换和编译。特别是在大型项目中,SWC 相对于传统的 TypeScript 编译器…

液冷是大模型对算力需求的必然选择?|英伟达 GTC 2024六大亮点

在这个以高性能计算和大模型推动未来通用人工智能时代,算力已成为科技发展的隐形支柱。本文将重点探讨算力的演进,深入分析在不同领域中算力如何成为推动进步的基石;着眼于液冷如何突破算力瓶颈成为引领未来的先锋,对液冷散热的三…

探索RAG:加强问答能力的新技术

文章目录 1. RAG是什么?1.1 技术简介1.2 挑战与解决方案1.3 RAG技术构成1.4 应用与前景 2. RAG架构详解2.1 典型的RAG应用有两个主要组件2.2 从原始数据到答案的完整流程 3. RAG在实际应用中的案例 1. RAG是什么? 1.1 技术简介 Retrieval Augmented Ge…

设计模式学习笔记 - 设计模式与范式 -行为型:9.迭代器模式(上):相比直接遍历集合数据,使用迭代器模式有哪些优势?

概述 上篇文章,我们学习了状态模式。状态模式是状态机的一种实现方式。它通过将事件触发的状态转移和动作执行,拆分到不同的状态类中,以此来避免状态机类中的分支判断逻辑,应对状态机类代码的复杂性。 本章,学习另外…

【千帆平台】百度智能云千帆AppBuilder应用探索益智游戏之猜物小游戏

欢迎来到《小5讲堂》 这是《千帆平台》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 背景AppBuilder控制台创建应用设置应用自动配置随机生成AI生成应…