HCIA笔记7--OSPF协议入门

文章目录

      • 0. 路由分类
      • 1. OSPF介绍
        • 1.1 概念
        • 1.2 报文类型
      • 2. 邻接关系的建立
        • 2.1 邻居关系的建立
        • 2.2 邻接关系的形成
        • 2.3 ospf状态机
      • 3. DR与BDR
        • 3.1 为什么要有DR和BDR?
        • 3.2 DR和BDR的选举原则
      • 4. ospf的配置
        • 4.1 内部优先级
      • 5. 问题
        • 5.1 三层环路如何解决?
      • Ref

0. 路由分类

  1. 直连路由
  2. 静态路由:需要管理员手动配置的路由
  3. 动态路由
    • IGP(internal Gateway Protocol)内部网关协议,运行在AS内部;主要协议有:RIP、OSPF、ISIS、EIGRP(思科)
    • EGP(External Gateway Protocol)外部网关协议,运行在AS之间

1. OSPF介绍

OSPF: Open Shortest Path First 开放最短路径优先

1.1 概念

LSA: Link State Advertcment; 链路状态通告,主要包含了网段信息。
LSDB:Link State DataBase, ospf路由器中来存储链路状态信息的数据库。
RID: router ID, 在ospf网络中唯一标识一台路由器。

主要工作流程:
在这里插入图片描述
ospf路由器通过将LSA信息泛洪,获得整个ospf网络的链路状态信息,进而形成各自的LSDB。根据形成了的LSDB,使用SPF算法生成一颗最短路径树;最终通过路由计算,比较路由表中的表项,添加到路由表中。

1.2 报文类型
  1. hello报文
  2. DD(Database Description)报文
  3. LSR(Link State Request)报文
  4. LSU(Link State Update)报文
  5. LSACK(Link State Acknowledgment)报文

2. 邻接关系的建立

在ospf网络中,两个路由器间要完成LSA信息的交互,首先就要先进行邻接关系的建立。

邻接关系的建立分为两个阶段:

  1. 邻居关系的建立
  2. 邻接关系的形成
2.1 邻居关系的建立

在这里插入图片描述

邻居关系的建立是通过hello 报文完成的。

  1. 路由器A向路由器B发送Hello报文,报文中表明自己并没有发现B。
  2. 路由器B收到报文后意识到邻居A的存在,在发往路由器A的报文中声明这一点。路由器B的状态由Down变为Init。
  3. 路由器A收到路由器B的报文,自己意识到了邻居的存在。在B发来的报文中B意识到A的存在。A直接进入2-way状态。但A需要再发一个Hello报文, 在报文中声明自己知道了B邻居的存在。
  4. 路由器B收到报文,知道路由器A了解到自己的存在。路由器B进入2-way状态。

Hello报文除了负责邻居关系的建立,还负责维护邻居关系(保活)。
Hello报文10s发送一次(Hello Time), 如果在40s内没有收到对端的Hello报文,则认为邻居关系失效,变为Down状态。

2.2 邻接关系的形成

邻接关系的形成分为两个阶段,第一阶段主要是获取LSDB的目录,相互之间了解缺少对方的哪部分报文;第二阶段进行真正的LSA链路数据表项之间的请求交换。

第一阶段开始,会发送两个空的DD报文进行主从选举,RID大的成为主路由器。选举完成之后,开始交互真正的DD报文,真正报文在交互过程中,从路由器的DD报文序列号使用主路由器发过来的序列号,主路由器的DD报文序列号使用从路由器的序列号加一。这样一种确认的机制叫作隐式确认,它保证了DD报文之间交互的可靠性。
在这里插入图片描述
第二阶段就是真正的链路信息交换了,这里用到的是显示确认机制。

从路由器向主路由器发送LSR(链路信息请求)报文,主路由器发送带有链路信息LSU(链路信息更新)报文给从路由器;最后从路由器收到LSU后再发给主路由器对于这一条链路信息的确认LSACK报文。

不断重复上面的过程,直到从路由器跟主路由器的LSDB同步了。

在这里插入图片描述

2.3 ospf状态机

在这里插入图片描述

3. DR与BDR

DR(Designated Router): 指定路由器
BDR(Backup Designated Router): 备份指定路由器
DR other: 非DR各BDR的其他路由器

3.1 为什么要有DR和BDR?

对于没有DR和BDR的网络中,要知道整个网络的链路信息,两两路由器之间就需要形成邻接关系。

如果网络中有n台路由器,在没有DR和BDR的网络中, 则需要建立n(n-1)/2对邻接关系;而如果是在DR和BDR的网络中,其他路由器只需要各DR和BDR之间建立邻接关系,只需要建立2n-3对邻接关系即可。

而建立邻接关系的第二阶段会进行LSDB的交换,这部分报文比较大会浪费链路带宽;因此对DR other 之间的路由器只需建立邻居关系而不交换路由信息,因此可以大大节省链路带宽。
在这里插入图片描述

3.2 DR和BDR的选举原则

如果DR由于某种故障而失效,则网络中的路由器必须重新选举DR,并与新的DR同步。这需要较长的时间,在这段时间内,路由的计算有可能是不正确的。

为了能够缩短这个过程,OSPF提出了BDR(Backup Designated Router)的概念。BDR是对DR的一个备份,在选举DR的同时也选举出BDR,BDR也和本网段内的所有路由器建立邻接关系并交换路由信息。当DR失效后,BDR会立即成为DR。由于不需要重新选举,并且邻接关系已建立,所以这个过程非常短暂,这时还需要再重新选举出一个新的BDR,虽然一样需要较长的时间,但并不会影响路由的计算。

DR和BDR的选举原则:

  1. 首先比较优先级,优先级范围0~255, 优先级数值越大越优先。
  2. 如果优先级相同,则比较RID, RID越大越优先。
  3. 如果网络中新增一台优先级更高的路由器,其不会被选为新的DR路由器, DR不能被抢夺,我们称之为DR的稳定性原则。
  4. 如果一台DR故障,则BDR直接成为新的DR, 然后在DR other中再选举一个新的BDR。
  5. 如果一台路由器的优先级为0,则路由器不具备选举权,它一定是DR other路由器。
  6. DR和BDR基于接口选举,基于网段选举。

4. ospf的配置

在这里插入图片描述

ospf进程号,这里只使用进程1

ospf 1 route-id 1.1.1.1

ospf是分区域的,区域0是核心区域。

area 0

直连网段宣告

network 10.1.12.0 0.0.0.255
network 192.168.1.0 0.0.0.255

ospf在接口宣告了网段信息后就会向相应的直连网段发送Hello报文,开始邻居关系的建立。

精确宣告

network 10.1.12.2 0.0.0.0

还可以在接口下进行宣告

ospf enable area 1

查看ospf邻居信息

display ospf peer brief

查看ospf接口信息

display ospf interface g0/0/1

ospf的hello时间是能改的, 但一般不改。两台路由器之间hello时间不同无法建立邻居关系。

ospf timer hello

修改优先级

ospf dr-priority 0
4.1 内部优先级

如上面的图所示,如果路由器AR1与AR2之间有两条路由;一条是ospf的路径(10.1.12.0/24),另外一条是静态路由(10.1.21.0/24)。

如果我们将静态路由的优先级设置为10,也就是与ospf的默认优先级一致。我们会发现最终路由表上的是ospf的这条路径。

这是因为路由器在比较完前缀和外部优先级后,继续比较内部优先级,

这所谓的内部优先级其实就是协认的默认优先级的大小。

ospf的默认优先值为10,静态路由的默认优先值为60,因此ospf更优先,因此加入路由表的是ospf的路径。

更加具体的在前面的路由器工作原理那里有提及,在这里实际解释内外优先级。内部优先级就是协议默认优先级,外部优先级就是可以配置的优先级。
在这里插入图片描述
在这里插入图片描述

5. 问题

5.1 三层环路如何解决?
  1. IP报文中有TTL字段,每次经过一个路由器都会减去一;TTL值为0的时候,路由器就会丢弃该包
  2. 路由协议设计也会防止环路的产生。比如ospf会通过SPF算出到目标网段的路径,另一方面ospf有区域划分,非核心区域之间不直接相连也能阻止环的产生。

Ref

huawei-support

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

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

相关文章

mysql排序问题

mysql 建数据库时,需要指定 字符集 和 排序规则 建表时,也可以指定 也可以指定具体的字段 安照下面的sql顺序执行插入,它们的排序是什么样的? INSERT into test_sort (uid,create_time) VALUE (d,now()) INSERT into test_sort (u…

vulhub复现CVE-2021-44228log4j漏洞

目录 一:漏洞概述 二:漏洞原理 三:漏洞利用 lookup功能: JNDI解析器: ldap服务: RMI: 四:漏洞复现 4.1靶场 4.2dnslog测试 4.3部署jndi-injection-exploit 4.4打开监听端口 4.5触发请…

ip地址获取失败啥意思?ip地址获取失败怎么回事

在日常的网络使用中,我们时常依赖于稳定的IP地址来确保数据的顺畅传输和设备的正常识别。然而,有时我们会遇到“IP地址获取失败”的困扰,这不仅阻碍了我们的网络访问,还可能带来一系列的网络连接问题。那么,IP地址获取…

OpenGL ES详解——多个纹理实现混叠显示

目录 一、获取图片纹理数据 二、着色器编写 1. 顶点着色器 2. 片元着色器 三、绑定和绘制纹理 1. 绑定纹理 2. 绘制纹理 四、源码下载 一、获取图片纹理数据 获取图片纹理数据代码如下: //获取图片1纹理数据 mTextureId loadTexture(mContext, R.mipmap.…

十一、容器化 vs 虚拟化-Docker

文章目录 前言一、Docker 介绍1. 简介2. 应用场景3. 特点4. Docker和虚拟机之间的区别5. 解决痛点1. 解决依赖兼容2. 解决操作系统环境差异3. 小结 二、Docker 架构三、工作流程五、Docker 核心组件及其工作机制1. Docker 客户端(Docker Client)2. Docke…

linux学习笔记01 基础命令

目录 创建 touch 创建文件 (创建但是不打开) vi / vim 创建文件 (创建一个文件并打开) mkdir 创建文件夹 切换目录 cd 查看 pwd 查看当前目录完整路径 ls 查看目录信息 dir 查看目录信息 ll 表示查看目标目录下的信息 ls -a 查看当前目录下的…

【深度学习】深刻理解多模态模型CLIP

CLIP(Contrastive Language-Image Pretraining) 是由 OpenAI 提出的一个多模态模型,旨在学习视觉和语言的联合表示,能够通过图像和文本之间的对比学习来实现图像和文本之间的紧密联系。CLIP 模型可以通过自然语言描述理解和处理图…

mysql时间戳格式化yyyy-mm-dd

格式化到 年月日 # 将时间换成列名就行;当前是秒级时间戳,如果是毫秒的 / 1000即可 # SELECT FROM_UNIXTIME(1602668106666.777888999 / 1000,%Y-%m-%d) AS a; # SELECT FROM_UNIXTIME(列名 / 1000,%Y-%m-%d) AS a; SELECT FROM_UNIXTIME(1602668106.666…

PDFMathTranslate,PDF多语言翻译,批量处理,学术论文,双语对照(WIN/MAC)

分享一个非常实用的PDF文档翻译项目——PDFMathTranslate。作为一个经常逛GitHub的开发者,我总喜欢翻看各种项目附带的论文,虽然大多时候是瞎研究,但却乐在其中。该项目能够完美保留公式、图表、目录和注释,对于需要阅读外文文献的…

爬虫基础之代理的基本原理

在做爬虫的过程中经常会遇到一种情况,就是爬虫最初是正常运行、正常抓取数据的,一切看起来都是那么美好,然而一杯茶的工夫就出现了错误,例如 403 Forbidden,这时打开网页一看,可能会看到“您的IP访问频率太…

鲲鹏麒麟安装Kafka-v1.1.1

因项目需要在鲲鹏麒麟服务器上安装Kafka v1.1.1,因此这里将安装配置过程记录下来。 环境说明 # 查看系统相关详细信息 [roottest kafka_2.12-1.1.1]# uname -a Linux test.novalocal 4.19.148 #1 SMP Mon Oct 5 22:04:46 EDT 2020 aarch64 aarch64 aarch64 GNU/Li…

群控系统服务端开发模式-应用开发-登录退出发送邮件

一、登录成功发送邮件 在根目录下app文件夹下controller文件夹下common文件夹下&#xff0c;修改Login.php&#xff0c;代码如下 <?php /*** 登录退出操作* User: 龙哥三年风水* Date: 2024/10/29* Time: 15:53*/ namespace app\controller\common; use app\controller\Em…

[游戏开发] Unity中使用FlatBuffer

什么是FlatBuffer 官网&#xff1a; GitHub - google/flatbuffers: FlatBuffers: Memory Efficient Serialization LibraryFlatBuffers: Memory Efficient Serialization Library - google/flatbuffershttps://github.com/google/flatbuffers 为什么用FloatBuffer&#xff0c…

MySQL其一,概念学习,可视化软件安装以及增删改查语句

目录 MySQL 1、数据库的概念 2、数据库分类 3、MySQL的安装 4、安装过程中的问题 DataGrip的使用&#xff1a; SQLynx的使用&#xff1a; 5、编写SQL语句 6、DDL语句 7、DML 新增数据&#xff1a; 删除数据&#xff1a; 修改数据&#xff1a; MySQL SQL其实是一门…

05 在 Linux 使用 AXI DMA

DMA简介 DMA 是一种采用硬件实现存储器与存储器之间或存储器与外设之间直接进行高速数据传输的技术&#xff0c;传输过程无需 CPU 参与&#xff08;但是CPU需要提前配置传输规则&#xff09;&#xff0c;可以大大减轻 CPU 的负担。 DMA 存储传输的过程如下&#xff1a; CPU 向…

linux 安装 vsftpd 服务以及配置全攻略,vsftpd 虚拟多用户多目录配置,为每个用户配置不同的使用权限

linux 安装 vsftpd 服务以及配置全攻略&#xff0c;vsftpd 虚拟多用户多目录配置&#xff0c;为每个用户配置不同的使用权限。 linux 安装 vsftpd 服务以及配置全攻略 FTP 是 File Transfer Protocol 的简称&#xff0c;用于 Internet 上的控制文件的双向传输。同时&#xff0…

SQL语句在MySQL中如何执行

MySQL的基础架构 首先就是客户端&#xff0c;其次Server服务层&#xff0c;大多数MySQL的核心服务都在这一层&#xff0c;包括连接、分析、优化、缓存以及所有的内置函数&#xff08;时间、日期、加密函数&#xff09;&#xff0c;所有跨存储引擎功能都在这一层实现&#xff1…

ragflow连不上ollama的解决方案

由于前期wsl默认装在C盘&#xff0c;后期部署好RagFlow后C盘爆红&#xff0c;在连接ollama的时候一直在转圈圈&#xff0c;问其他人没有遇到这种情况&#xff0c;猜测是因为内存不足无法加载模型导致&#xff0c;今天重新在E盘安装wsl 使用wsl装Ubuntu Win11 wsl-安装教程 如…

C#常见错误—空对象错误

System.NullReferenceException&#xff1a;未将对象引用设置到对象的实例 在C#编程中&#xff0c;System.NullReferenceException是一个常见的运行时异常&#xff0c;其错误信息“未将对象引用设置到对象的实例”意味着代码试图访问一个未被初始化或已被设置为null的对象的成…

沁恒CH32V208蓝牙串口透传例程:修改透传的串口;UART-CH32V208-APP代码分析;APP-CH32V208-UART代码分析

从事嵌入式单片机的工作算是符合我个人兴趣爱好的,当面对一个新的芯片我即想把芯片尽快搞懂完成项目赚钱,也想着能够把自己遇到的坑和注意事项记录下来,即方便自己后面查阅也可以分享给大家,这是一种冲动,但是这个或许并不是原厂希望的,尽管这样有可能会牺牲一些时间也有哪天原…