学习HCIP的day.07

news2024/11/17 12:45:33

目录

7、SPF算法 --- OSPF防环机制

OSPF区域间防环 

OSPF域外防环

基于以上长篇理论总结:


7、SPF算法 --- OSPF防环机制

(1)在同一个区域每台路由具有一致的LSDB

(2)每台路由器以自己为根计算到达每个目标的最短路径(最小cost值)

(3)必须已经区域划分

优势:①域间汇总减少路由条目数量

          ②汇总路由是在所有明细路由均消失后才删除,网络更稳定

          ③区域划分后不同类别的LSA传播范围不同,控制更新量

OSPF计算区域内路由-区域内防环

OPSF在区域内会产生两类LSA:RouterLSA,NetworkLSA
路由器以自己为树根构建最短路径树 ,这里的最短路径树按两步形成,第一步,仅考虑路由器和传输网络之间的连接。通过 Dijkstra 算法,根据链路状态数据库的子集形成树。第二步,考虑末节网络连接,作为叶子加入树。
区域内部OSPF对网络是通过RouterLSA,NetworkLSA来描述网络的,最终路由器收到LSA构建出LSDB。
LSDB通过描述一个有向线段图来描述网络拓扑结构,该有向图的端点有三种类型:路由器节点,Stub网段和Transit网段。
Router LSA使用Link ID,Data,Type和Metric描述一条链路

类型有四种:

TypeLink IDData
Point-to-Point邻居的Router ID该网段上本地接口的IP地址
TransNetDR的接口IP地址该网段上本地接口的IP地址
StubNet该Stub网段的IP网络地址该Stub网段的网络掩码
Virtual虚连接邻居的Router ID去往该虚连接邻居的本地接口的IP地址

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描述两接口处于不同网段的点到点网段的规则如下:
1、两台路由器经由两条有向线段直接相连,每个方向一条。
2、两个接口的网段被表示成Stub网段。
3、每个路由器通告一个Stub连接到该路由器所连的网段。

LSDB描述两接口处于同一网段的点到点网段的规则如下:
1、两台路由器经由两条有向线段直接相连,每个方向一条。
2、连接两个接口的网段被表示成Stub网段。
3、两个路由器同时通告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,他们使用的防环机制是一致的。

OSPF域外防环

利用type-4 LSA防环
当一台OSPF路由器将外部路由引入OSPF域后,它就成为了一台ASBR,被引入的外部路由以Type-5 LSA在整个OSPF域内泛洪。一台路由器使用Type-5 LSA计算出路由的前提是两个,其一是要收到Type-5 LSA,其二是要知道产生这个Type-5 LSA的ASBR在哪里。与ASBR接入同一个区域的路由器能够根据该区域内泛洪的Type-1 LSA及Type-2 LSA计算出到达该ASBR的最短路径,从而计算出外部路由。而其他区域的路由器就没有这么幸运了,因为ASBR产生的Type-1 LSA只能在其所在的区域内泛洪,所以才需要Type-4 LSA。因此其他区域的路由器在获取Type-4 LSA后便能计算出到达ASBR的最短路径,进而利用该ASBR产生的Type-5 LSA计算出外部路由。Type-5 LSA将会被泛洪到整个OSPF域,表面上看,它本身并不具有什么防环的能力,但是实际上,它并不需要,因为它可以依赖Type-1 LSA及Type-4 LSA来实现防环。

基于以上长篇理论总结:

过程:基于本地LSDB(1/2类LSA)生成有向图,然后基于有向图来进行最短路径树生成,关注本地LINK-ID的LSA,开始基于该LSA内提及到点到点或传输网络信息再查看link-id递归到下一条信息;基于所有点到点和传输网络信息生成最短路径树主干;然后用树中每台设备的末梢网络信息补充路由表,完成收敛;

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

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

相关文章

Java泛型,数组和方法返回类型 - 协变,逆变和不变

首先,让我们通常理解一下子类型规则是什么。 协变vs逆变vs双变vs不变 编程语言可能有支持以下子类型规则的特性: 协变 允许用超类型替换子类型。 逆变 允许用子类型替换超类型。 双变 同时是协变和逆变。 不变 不允许上述任何替换。 让我们看看Java支持哪…

Intellij IDEA 如何删掉插件

在 Intellij IDEA 的配置中,找到插件选项。 在插件选项中,选择需要删除的插件,然后在右侧的对话框中选择 uninstall 就可以了。 卸载以后,可能不会要求重启,为了安全起见,还是重启下你的 IDE 吧。

C++容器详解

什么是容器 首先,我们必须理解一下什么是容器,在C 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器。很简单,容器就是保存其它对…

Flutter控件之文本Text封装

Flutter控件之基类Widget封装 上篇文章,我们简单针对Widget做了一个基类封装,拓展出了很多常见又易用的属性,比如宽高,内外边距等等,很方便的为接下来的各个基础组件的封装,提供极大的便利,在上…

虚拟机启动时出现“已启用侧通道缓解”的解决方法

系列文章目录 Hypervisor launch failed centos7配置ssh免密登陆完成,进行ssh登陆时出现”代理承认未能使用密钥签名“ 解决pip更新的代码 文章目录 系列文章目录 一、问题描述 二、启用了侧通道缓解的虚拟机可能会出现性能下降 (79832&#xff0…

Linux系统vim查看文件中文乱码

Linux系统查看文件-cat中文正常显示 vim中文乱码 1、背景2、环境3、目的4、原因5、操作步骤5.1、修改vim编码配置 6、验证 1、背景 服务器部署业务过程中查看文件内容,使用cat 命令查看中文正常显示,使用vim命令查看显示中文乱码 cat 查看 vim 查看 …

陶哲轩宣布主持白宫生成式AI工作组,李飞飞、Hassabis发表演讲

来源 | 新智源 ID | AI-era 【导读】最近,「数学天才」陶哲轩表示,自己将领导白宫生成式人工智能工作组,就当前AI评估并收集意见。在陶哲轩看来,加入工作流的ChatGPT在数学专业领域中,并没有太多增值。 近来&#xf…

Redis主从复制、哨兵、cluster集群原理+实验

Redis 主从复制 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。 默认情况下,每台Redis服务…

Fluent局部坐标系(曲线坐标系)

1 概述 在某些模型中,利用局部坐标系可极大的方便模型设置,例如对弯曲的多孔板设置多孔介质属性、设置各向异性的材料属性等。 2 创建坐标系 通过树状菜单中“curvilinear coordinate system”可创建曲线型局部坐标系。 右键点击“新建”,在如…

Linux 安装redis

一、概述 官网:https://redis.io/ Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保持在磁盘…

基于静态和动态特征融合的语音情感识别层次网络

题目Hierarchical Network based on the Fusion of Static and Dynamic Features for Speech Emotion Recognition时间2021年期刊\会议ICASSP 基于静态和动态特征融合的语音情感识别层次网络 摘要:许多关于自动语音情感识别(SER)的研究都致…

【集群划分】基于kmeans的电压调节的集群划分【IEEE33节点】

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

HTTP/HTTPS协议详解

目录 一. HTTP详解 ✅1.1 概念 ✅1.2 HTTP的协议格式 1.2.1 HTTP请求体格式: 1.2.2 HTTP响应体格式: ✅1.3 HTTP请求方法 ✅1.4 认识请求报头 ✅1.5 HTTP请求过程 ✅1.6 认识状态码 二. HTTPS详解 ✅2.1 HTTPS简介 ✅2.2 HTTPS加密过程 TCP/UDP是位于传…

d3d(Direct X)中的com技术详解

本文不会对Com进行非常详细的分析 因为这个技术分析起来难度还是非常大的 要想真正弄懂还是非常困难的 我只会针对d3d中使用到的com技术和comptr技术进行说明 所以看完本文后 可以熟练使用d3d中使用到的相应技术 comptr类似于c11中的智能指针,用于管理com对象的生命周期,所以我…

深度学习基础篇之卷积神经网络(CNN)

一、CNN的基本结构 首先我们来看CNN的解百纳结构,一个常见的图像识别CNN模型如下图: 从图中可以看出最左边的图像就是模型的输入层,在计算机中就是若干个矩阵,这点与DNN类似。 接着是卷积层(Convolution Layer&…

rtmp协议

目录 1 rtmp格式 2 header 3 chunk data 1 rtmp格式 Real Time Messaging Protocol(实时消息传送协议协议)是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的私有协议。 在RTMP协议中信令和媒体数据都称之为Message,包含Mess…

Intellij IDEA 提示 Thrift Support 支持不兼容

最近升级 Intellij IDEA 后老提示 Thrift Support 不兼容。 后来看了下这个插件已经不少时间没有更新了,也一直不知道这个插件是干什么 用的, 后来看了下,这个插件是: Thrift是一种接口描述语言和二进制通讯协议,它被…

【031】基于Vue的学生宿舍管理系统课设(含源码、数据库、运行教程

前排提示:项目源码已放在文末 基于VueSpringbootmysql员工考勤管理系统(多角色登录、请假、打卡) 开发环境:SpringbootMysqlVueNodejsMavenJDK1.8+redis 技术栈:spring-boot、mysql、mybatis-plus 数据库: 源码、…

Centos7单机部署Flink13.6及测试FinkCDC同步MySQL

一、背景 公司CDH6.3.2里面的版本是Flink1.12.0。而因为FlinkCDC2.0.0只支持Flink1.13.0以后,版本不匹配,所以只能升级版本。但是升级版本是个大工程,要编译、要parcel制作工具,而且是生产环境的升级,没办法因为要测试…

初识Spring MVC框架,Spring MVC工作原理

Java EE三层架构 在Java EE开发中,系统经典的三层架构包括表现层、业务层和持久层。三层架构中,每一层各司其职,表现层(Web层)负责接收客户端请求,并向客户端响应结果;业务层( Service层)负责业务逻辑处理…