当前位置: 首页 > 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; }高斯求和…...

信息论基础第二章阅读笔记

信息很难用一个简单的定义准确把握。 对于任何一个概率分布&#xff0c;可以定义一个熵&#xff08;entropy&#xff09;的量&#xff0c;它具有许多特性符合度量信息的直观要求。这个概念可以推广到互信息&#xff08;mutual information&#xff09;&#xff0c;互信息是一种…...

Content-Type的取值

接口发送参数、接收响应数据&#xff0c;都需要双方约定好使用什么格式的数据&#xff0c;例如 json、xml。只有双方按照约定好的格式去解析数据才能正确的收发数据。而 Content-Type 就是用来告诉你数据的格式&#xff0c;这样我们才能知道怎么解析参数。 常见的 Content-Typ…...

【趣味JavaScript】5年前端开发都没有搞懂toString和valueOf这两个方法!

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;web开发者、设计师、技术分享博主 &#x1f40b; 希望大家多多支持一下, 我们一起进步&#xff01;&#x1f604; &#x1f3c5; 如果文章对你有帮助的话&#xff0c;欢迎评论 &#x1f4ac;点赞&#x1…...

Python中的接口是什么?

在Python中&#xff0c;接口是一种约定或协议&#xff0c;用于定义类应该实现哪些方法或属性。接口并不会提供实际的实现&#xff0c;而是只定义了类应该具有哪些方法和属性的签名。 Python中的接口通常通过抽象基类&#xff08;Abstract Base Class&#xff0c;简称ABC&#…...

自学WEB后端01-安装Express+Node.js框架完成Hello World!

一、前言&#xff0c;网站开发扫盲知识 1.网站搭建开发包括什么&#xff1f; 前端 前端开发主要涉及用户界面&#xff08;UI&#xff09;和用户体验&#xff08;UX&#xff09;&#xff0c;负责实现网站的外观和交互逻辑。前端开发使用HTML、CSS和JavaScript等技术来构建网页…...

从C语言到C++:C++入门知识(1)

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关C语言的相关知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通 数…...

服务器(Windows系统)自建filebrowser网盘服务器超详细教程

需要依赖&#xff08;工具&#xff09; 轻量服务器&#xff08;云服务器&#xff09;一台 —— 环境Windows Server 2019filebrowser安装包&#xff08;https://github.com/filebrowser/filebrowser/releases&#xff09; 下载安装filebrowser 进入链接下载&#xff1a;https:/…...

扩展欧几里得

扩展欧几里得算法 求 a x b y d axbyd axbyd 的一组解&#xff0c; d gcd ⁡ ( a , b ) d \gcd(a,b) dgcd(a,b)。 辗转相除递归求解。 假设已经求出 b x ( b m o d a ) y d bx (b \bmod a)y d bx(bmoda)yd 的一组解。 a x b y b x ′ ( b m o d a ) y ′ b x …...

MySQL 事务介绍 (事务篇 一)

什么是事务&#xff1f; 事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 注意点&#xff1a;默认MySQL的事务是自动提交…...

nvm nodejs的版本管理工具

nvm 全英文名叫 node.js version management&#xff0c;是一个 nodejs 的版本管理工具&#xff0c;为了解决 nodejs 各种版本存在不兼容现象可以通过他安装和切换不同版本的 nodejs。 一、完全删除之前的 node 和 npm 1. 打开 cmd 命令窗口&#xff0c;输入 npm cache clean…...