当前位置: 首页 > news >正文

十分钟理解OSPF路由协议

十分钟理解OSPF路由协议

    • 1.RIP的缺陷
      • 以跳数为度量值
      • 最大跳数为15
      • 更新路由表采用全更新
      • 收敛速度慢
    • 2.RIP与OSPF比较
    • OSPF概述
      • 运行OSPF协议之前
      • 运行OSPF协议之后
    • 3.OSPF协议工作过程
      • 1.发现邻居
      • 2.建立邻接关系
      • 3.传递链路状态信息
      • 4.计算路由
    • 4.OSPF分区域管理

有RIP协议,为什么还需要OSPF?

1.RIP的缺陷

以跳数为度量值

在开始之前我们先回忆一下RIP协议,RIP协议是以跳数作为度量值,这是它的缺陷。如下图:RIP协议会从上面64Kbs到达10.2.0.0,但是很明显下面的带宽1Gbps,下面应该更快,但是因为下面有3跳,上面只有2跳。

在这里插入图片描述

最大跳数为15

在这里插入图片描述

更新路由表采用全更新

在这里插入图片描述

收敛速度慢

2.RIP与OSPF比较

摘要RIPOSPF
协议距离矢量路由协议链路状态路由协议
度量值基于跳数选择最优路径基于链路开销选择最优路径
路由表更新每隔30s向邻居广播自己的整个RIP路由表触发更新或每隔30分钟向邻接路由器发送链路状态信息的摘要,增量更新机制

OSPF概述

  • 工作于IP层之上,IP协议号为89

  • 组播地址224.0.0.5发送协议包

  • 基本思想:每个路由器将其已知的链路状态信息告诉邻居,收敛以后,网络上每个路由器全网的链路状态相同的认识。然后,每台路由器根据了解到的全网链路状态,独立计算路由。

如下图:R1和R2之间运行了OSPF

在这里插入图片描述

运行OSPF协议之前

  1. 对于R1来说,R1知道自己有两个直连接口,分别是:GE/0/1,10.0.0.0/24,开销是1G。GE/0/0,20.0.0.0/24,开销是1G。R1最初也只知道这么多信息。
  2. 对于R2来说也是一样的,R2知道自己有两个直连接口网段分别是:GE/0/1,30.0.0.0/24,开销是1G。GE/0/0,20.0.0.0/24,开销是1G,R2最初也只知道这么多信息。

运行OSPF协议之后

R1和R2会相互交流,交流方式是R1会问R2我知道的链路信息是GE/0/1-10.0.0.0/24和GE/0/0-20.0.0.0/24,你对哪个感兴趣?

R2查看自己的链路信息,20和30段我已经有了,但是我不知道10段,我想知道10段的信息,于是R1就把10段完整的信息发给了R2。这样R2就会学到10段的链路信息。同样的R1对R2说我想知道30段完整的信息,于是R2就把10段的信息发给了R1,这样R1就会学到30段的链路信息。

最终的结果就是:R1就会知道在这个网络中还有一个路由器R2,并且这个网络中有3个网段分别是10,20,30,30段直连在R2上面。同样R2也会知道全网信息。

3.OSPF协议工作过程

1.发现邻居

  • 通过组播发送hello包
  • 所有邻居都可能跟自己交换链路状态信息

在这里插入图片描述

相互发送hello包,hello包中有他们建立邻居所需的必要参数,相互收到hello包确认参数符合之后,那他们会相互认定对方是自己的邻居。并且把自己的邻居信息存到自己的邻居表。那邻居有什么作用呢?正如我们上面所说的第二点所有邻居都可能跟自己交换链路状态信息。那为什么是可能?接着往下看

2.建立邻接关系

  • 只有建立邻接关系的邻居路由器才会交换链路状态信息
  • 不是跟所有邻居都建立邻接关系
  • 在网络中选举DR和BDR,网络内所有路由器只与DR和BDR建立邻接关系
  • 广播型网络中会选DR和B DR,PPP网络中不会选举DR和BDR

为什么要选DR和BDR?

如下左图,5台设备两两交换链路信息,需要交换10次。这种效率太低。

如下右图中我们可以选举一个组长,只需要将所有的链路信息教给组长DR,组长进行汇总然后下发汇总后的路由表即可。一个组长单点故障,我们再选一个副组长BDR,组长挂了副组长来顶替,这样就更可靠。目的是啥?**“只与DR和BDR建立邻接关系”**尽可能的减少邻接关系的数量,说白了就是交换的次数,从而提高了交换链路状态信息的效率。

在这里插入图片描述

第四点:广播型网络中会选DR和B DR,PPP网络中不会选举DR和BDR

我们普通的网络一般都是广播型的网络,如下图:R1和R2之间使用的串口相连,我确定了R1和R2之间的广播域只有两个接口,不会有第三个接口出现,所以这种点对点的网络是不需要DR和BDR 的。

在这里插入图片描述

3.传递链路状态信息

  • 每台设备都有一个LSDB(Link State Database,链路状态数据库

  • LSDB中每一条就是LSA(Link State Advertisement,链路状态公告):描述链路状态信息,例如网络中某台路由器的编号是什么,其直连的网段是什么,开销是多少等

在这里插入图片描述

如何交换链路状态信息?

  • 触发更新每隔30分钟更新一次。触发更新:如果网络发生变化,不需要等到30分钟周期,立刻向邻居发送信息。
  • 增量更新机制,只发邻居需要的LSA
  • 收敛以后,区域内所有路由器具有相同的LSDB。这个LSDB能体现全网的链路状态(该网络中有哪些路由器,各自编号是什么,每台路由器直连的网段是什么,开销是多少)

4.计算路由

如下图:刚开始所有路由器都只知道自己直连的信息,当他们通过交换信息收敛之后,所有路由器上的LSDB都是相同的,所有的路由器都知道全网的信息,相当于上帝视角。

在这里插入图片描述

4.OSPF分区域管理

在这里插入图片描述

为什么要分区域管理?

因为OSPF在收敛的时候,每个路由器的LSDB都是相同的,并且这个LSDB可以体现出全网的状态 。当全网中路由器的数量增多,链路增多,每台设备需要维护的LSDB数量就非常多,会占用设备大量的内存,并且在收敛时占用大量的带宽资源,所以在这种情况下采用了分区域管理。

  • 区域内的路由器只需要学到区域内的路由信息,即同一个区域内路由器才会建立邻居关系,交换LSA。收敛后同一个区域内所有设备具有相同的LSDB,这个LSDB反映了本区域内的链路状态,再计算区域内的路由;

  • 区域边界路由器同时具备所在多个区域的路由信息,不同区域之间,由区域边界路由器ABR直接转发路由

  • 每个区域有一个ID,ID是32位二进制,可以表示为一个十进制数,也可以表示为点分十进制形式。例如:区域0等价于区域0.0.0.0;区域1等价于区域0.0.0.1。

  • 骨干区域——区域0

  • 所有非骨干区域间通信都要通过骨干区域0转发

  • 如果网络中有不同的ospf区域,肯定有个区域是区域0.

相关文章:

十分钟理解OSPF路由协议

十分钟理解OSPF路由协议 1.RIP的缺陷以跳数为度量值最大跳数为15更新路由表采用全更新收敛速度慢 2.RIP与OSPF比较OSPF概述运行OSPF协议之前运行OSPF协议之后 3.OSPF协议工作过程1.发现邻居2.建立邻接关系3.传递链路状态信息4.计算路由 4.OSPF分区域管理 有RIP协议,…...

Python 编程基础 | 第一章-预备知识 | 1.4、包管理工具

一、包管理工具 1、pip简介 pip是Python自带的包管理器,它可以帮助我们安装、升级和卸载Python包。Python包是一组Python模块,它们可以提供各种功能,例如数据分析、Web开发、机器学习等等。pip可以让我们轻松地安装这些包,以便我…...

delphi中使用CADVCL 10.0 Enterprise控件解析DXF文件生成图片保存到本地

使用案例demos中GettingStarted案例 修改OnClick方法 更换代码 varvDrawing: TsgCADDXFImage;I: Integer;vEnt: TsgDXFEntity;vDXFImage:TsgCADImage;Bitmap: TBitmap;jpg: TJpegImage; beginvDrawing : TsgCADDXFImage.Create;vDrawing.LoadFromFile(d:\Entities.dxf);for …...

Hazelcast系列(三):hazelcast管理中心

系列文章 Hazelcast系列(一):初识hazelcast Hazelcast系列(二):hazelcast集成 Hazelcast系列(三):hazelcast管理中心 目录 前言 平台搭建 测试 其他 参考 总结 前言 前面,我们通过几种配置方式(Hazelcast系…...

QT 绘画功能的时钟

.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPaintEvent> #include <QDebug> //信息调试类 #include <QPainter> #include <QPixmap> //图像引擎类 #include <QTime> #include <QTimer> …...

设计模式之道-模板方法模式

文章目录 模板方法模式简介作用模板方法模式的缺点模板方法模式的应用场景业务场景开源框架中的应用 对比回调和Hook模式关于组合优先于继承 关于设计模式乱用的现象 模板方法模式 简介 模板方法模式是一种行为型设计模式&#xff0c;该设计模式的核心在于通过抽象出一套相对…...

头哥的实践平台的Linux文件/目录管理

一 Linux 文件/目录管理 1.本关的编程任务是补全右侧代码片段中Begin至End中间的代码&#xff0c;具体要求如下&#xff1a; 新创建两个文件空文件file1和file2。 删除系统已存在的两个文件oldFile1和oldFile2。 #!/bin/bash#在以下部分写出完成任务的命令 #***********begi…...

软件测试基本常识

【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程&#xff0c;刷完面试就稳了&#xff0c;你也可以当高薪软件测试工程师&#xff08;自动化测试&#xff09; 一、测试用例的编写 1.在测试中最重要的文档&#xff0c;他是测试工作的核心&#xff0c;是一组在测试时…...

Xmake v2.8.3 发布,改进 Wasm 并支持 Xmake 源码调试

Xmake 是一个基于 Lua 的轻量级跨平台构建工具。 它非常的轻量&#xff0c;没有任何依赖&#xff0c;因为它内置了 Lua 运行时。 它使用 xmake.lua 维护项目构建&#xff0c;相比 makefile/CMakeLists.txt&#xff0c;配置语法更加简洁直观&#xff0c;对新手非常友好&#x…...

Serverless 数仓技术与挑战(内含 PPT 下载)

近期&#xff0c;Databend Labs 联合创始人张雁飞发表了题为「Serverless 数仓技术与挑战」的主题分享。以下为本次分享的精彩内容&#xff1a; 主题&#xff1a; 「Serverless 数仓技术与挑战」 演讲嘉宾&#xff1a; 张雁飞 嘉宾介绍&#xff1a; Databend Labs 联合创始人…...

九牧小牧携手国家队!一场“中国卫浴“和“中国体育”的双向奔赴

文 | 螳螂观察 作者 | 余一 1990年中国第一次举办了综合性国际体育大赛——北京亚运会&#xff0c;来自37个国家和地区&#xff0c;共计6578人的体育代表团参加了那届亚运会&#xff0c;一首《亚洲雄风》成为无数人记忆中的经典。 2023年杭州亚运会于近日正式拉开了帷幕&…...

crypto:Quoted-printable

题目 解压文件后可得到提示文本 好了这个没接触过&#xff0c;参考别的大佬wp QP为可打印字符编码&#xff0c;根据加密方式任何一个8位的字节值可编码为3个字符&#xff1a;一个等号“”后跟随两个十六进制数字&#xff08;0–9或A–F&#xff09;表示该字节的数值。 利用网…...

【六级】作文模板-议论文-问题解决

视频来源&#xff1a; https://www.bilibili.com/video/BV1vK4y1e7A6/?spm_id_from333.880.my_history.page.click&vd_sourcefb8dcae0aee3f1aab700c21099045395 1、前言 两类作文&#xff1a; 议论文 &#xff08;how to 问题解决型&#xff09; what 某种现象 漫画 &…...

leetcodetop100 (22) 反转链表

给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表 简单的用一个动态数组Arraylist记录&#xff0c;然后倒序遍历赋值给一个新的链表&#xff0c;这种空间复杂度是o(n),估计需要优化。 采用双指针&#xff1b; 我们可以申请两个指针&#xf…...

RabbitMQ配置文件_修改RabbitMQ MQTT的1883端口

Centos离线安装RabbitMQ并开启MQTT Docker安装rabbitMQ RabbitMQ集群搭建和测试总结_亲测 Docker安装RabbitMQ集群_亲测成功 rabbitmq.conf 默认没有配置文件,可以手动创建: /etc/rabbitmq/rabbitmq.conf # # RabbitMQ broker section # ## Related doc guide: https://…...

【Graph Net学习】LINE实现Graph Embedding

一、简介 LINE (Large-scale Information Network Embedding,2015) 是一种设计用于处理大规模信息网络的算法。它主要的目标是在给定的大规模信息网络中学习高质量的节点嵌入&#xff0c;并尽量保留网络中信息的丰富性。其具体的表现为在一个低 维空间里以向量形式表示网络中的…...

docker安装使用xdebug

docker安装使用xdebug 1、需要先安装PHP xdebug扩展 1.1 到https://pecl.php.net/package/xdebug下载tgz文件&#xff0c;下载当前最新稳定版本的文件。然后把这个tgz文件放到php/extensions目录下&#xff0c;记得install.sh中要替换解压的文件名&#xff1a; installExtensio…...

(1) ESP32获取图像,并通过电脑端服务器显示图像

目录 一、所需器件工具 二、客户端与服务器进行UDP通信 1、客户端代码 2、服务器端代码 3、效果展示 三、客户端拍照&#xff0c;通过UDP传输到服务器进行显示 1、客户端获取图像并UDP传输 2、电脑端服务器显示图像 3、效果展示 四、代码链接 一、所需器件工具 1.ESP3…...

乐鑫科技全球首批支持蓝牙 Mesh Protocol 1.1 协议

乐鑫科技 (688018.SH) 非常高兴地宣布&#xff0c;其自研的蓝牙 Mesh 协议栈 ESP-BLE-MESH 现已支持最新蓝牙 Mesh Protocol 1.1 协议的全部功能&#xff0c;成为全球首批在蓝牙技术联盟 (Bluetooth SIG) 正式发布该协议之前支持该更新的公司之一。这意味着乐鑫在低功耗蓝牙无线…...

1.算法——数据结构学习

算法是解决特定问题求解步骤的描述。 从1加到100的结果 # include <stdio.h> int main(){ int i, sum 0, n 100; // 执行1次for(i 1; i < n; i){ // 执行n 1次sum sum i; // 执行n次} printf("%d", sum); // 执行1次return 0; }高斯求和…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库&#xff08;uthash库&#xff09;提供对哈希表的操作&#xff0c;文章如下&#xff1a; C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

OD 算法题 B卷【正整数到Excel编号之间的转换】

文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的&#xff1a;a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开&#xff0c;快捷键也不好用&#xff0c;当看到 Cursor 升级后&#xff0c;还是蛮高兴的 1. 下载 Cursor 下载地址&#xff1a;https://www.cursor.com/cn/downloads 点击下载 Linux (x64) &#xff0c;…...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

Kafka主题运维全指南:从基础配置到故障处理

#作者&#xff1a;张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1&#xff1a;主题删除失败。常见错误2&#xff1a;__consumer_offsets占用太多的磁盘。 主题日常管理 …...

Tauri2学习笔记

教程地址&#xff1a;https://www.bilibili.com/video/BV1Ca411N7mF?spm_id_from333.788.player.switch&vd_source707ec8983cc32e6e065d5496a7f79ee6 官方指引&#xff1a;https://tauri.app/zh-cn/start/ 目前Tauri2的教程视频不多&#xff0c;我按照Tauri1的教程来学习&…...

高抗扰度汽车光耦合器的特性

晶台光电推出的125℃光耦合器系列产品&#xff08;包括KL357NU、KL3H7U和KL817U&#xff09;&#xff0c;专为高温环境下的汽车应用设计&#xff0c;具备以下核心优势和技术特点&#xff1a; 一、技术特性分析 高温稳定性 采用先进的LED技术和优化的IC设计&#xff0c;确保在…...