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

相关文章

C05S06-Nginx的内置变量和代理

一、常见内置变量 内置变量说明$uri请求的URL,不包括主机和参数$request_uri请求的URL,包括主机和参数$host请求的主机名$http_user_agent客户端信息,浏览器和操作系统$remote_addr客户端IP地址$remote_port客户端端口$server_addr服务端IP地…

mysql排序问题

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

JAVA 图形界面编程 AWT篇(1)

前言 为了应对JAVA课设,小编走上了java的图形界面编程的道路,通过博客分享自己的学习历程,并进行笔记的记录。 AWT(Abstract Window Toolkit)介绍 AWT(抽象窗口工具包)是 Java 最早的图形用户界…

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地址获取…

如何在 Android 项目中实现跨库传值

背景介绍 在一个复杂的 Android 项目中,我们通常会有多个库(lib),而主应用程序(app)依赖所有这些库。目前遇到的问题是,在这些库中,libAd 需要获取 libVip 的 VIP 等级状态&#xf…

非常规使用client-go踩坑记

0x01 背景 编程者总有想偷懒的倾向。至少我的初衷时,尽量复用现有的代码。但有时也会变得弄巧成拙。 这不,最近需要在一个Go服务里添加一个CRD的缓存等待。熟悉k8s的同学都知道,向 kube-apiserver 提交一个更新,到同一个进程中的…

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

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

java引用相关(四大引用类型,软引用避免oom,弱引用表,虚引用和引用队列,可达性分析算法)

1. 什么是引用? 问题:什么是引用?Java中的引用是如何工作的? 答案: 引用 是对象的句柄,用于访问堆内存中的对象。在Java中,引用变量实际上存储的是对象的地址,而不是对象本身。通…

十一、容器化 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 模型可以通过自然语言描述理解和处理图…

android 聊天界面键盘、表情切换丝滑

1、我们在聊天页面时候,往往会遇到,键盘、表情、其他选择切换时候页面会出现掉下来再弹起问题,这是因为,我们切换时候,键盘异步导致内容View高度变化,页面掉下来后,又被其他内容顶起这种很差视觉…

Nginx 缓存系统 proxy_cache详解

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目…

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的开发者,我总喜欢翻看各种项目附带的论文,虽然大多时候是瞎研究,但却乐在其中。该项目能够完美保留公式、图表、目录和注释,对于需要阅读外文文献的…

网络药理学:(待更)Alphafold3和批量分子动力学模拟(Desmond、AutoMD)

批量动力学模拟 注意全都需要在类linux平台上进行 安装Desmond模块: https://github.com/Wang-Lin-boop/Schrodinger-Script 安装AutoMD模块: Wang-Lin-boop/CADD-Scripts: Scripts for virtual screening, cross docking and protein relax using Sc…

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

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

第十七届山东省职业院校技能大赛 中职组“网络安全”赛项资源任务书样题③

第十七届山东省职业院校技能大赛 中职组“网络安全”赛项资源任务书样题③ 模块A 基础设施设置与安全加固(200分)A-1 登录安全加固(Windows, Linux)A-2 Nginx安全策略(Linux)A-3日志监控(Windows)A-4中间件…

鲲鹏麒麟安装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…