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

路由器基础(五): OSPF原理与配置

        开放式最短路径优先 (Open   Shortest   Path    First,OSPF)  是一个内部网关协议 (Interior    Gateway     Protocol,IGP),用于在单一自治系统(Autonomous   System,AS) 内决策路由。OSPF 适合小型、中型、较大规模网络。OSPF 采用Dijkstra的最短路径优先算法 (Shortest Path Firs, SPF) 计算最小生成树,确定最短路径。OSPF 基于IP, 协议号为89, 采用组播方式交换OSPF包。OSPF的组播地址为224.0.0.5 (全部OSPF路由器)和224.0.0.6 (指定路由器)。OSPF使用链路状态广播 (LinkState Advertisement,LSA) 传送给某区域内的所有路由器。

一、AS

        自治系统 (AS) 是指使用同一个内部路由协议的一组网络。Internet 可以被分割成许多不同的自治系统。换句话说, Internet 是由若干自治系统汇集而成的。每个AS 由一个长度为16位的编码标识,由Internet地址授权机构 (Internet Assigned Numbers Authority,IANA)  负责管理分配。AS编号分为公有AS  (编号范围1~64511)和私有AS (编号范围64512~65535),公有AS编号需要向IANA申请。

二、IGP

        内部网关协议 (Interior Gateway Protocol,IGP) 在同一个自治系统内交换路由信息。IGP的主要目的是发现和计算自治域内的路由信息。IGP使用的路由协议有RIP、OSPF、IS-IS等。

三、EGP

        外部网关协议 (Exterior Gateway Protocol,EGP) 是一种连接不同自治系统的相邻路由器之间交换路由信息的协议。EGP使用的路由协议有BGP

四、IGP EGPAS三者关系

六、链路状态路由协议

        链路状态路由协议基于最短路径优先 (SPF) 算法。该路由协议提供了整网的拓扑视图,根据拓扑图计算到达每个目标的最优路径;当网络变化时触发更新,发送周期性更新链路状态通告,不是相互交换各自的整张路由表。

        运行距离矢量路由协议的路由器会将所有它知道的路由信息与邻居共享,当然只是与直连邻居共享。

链路状态和距离矢量路由协议对比:

距离矢量路由协议

链路状态路由协议

发布路由触 发条件

周期性发布路由信息

当网络扑拓变化时,发布路由信息

发布路由信 息的路由器

所有路由器

指定路由器(Designated Router, DR)

发布方式

广播

组播

应答方式

不要求应答

要求应答

支持协议

RIP、I GRP、BGP(增 强型距离矢量路由协议)

OSPF、IS-IS

 七、区域 (Area)

        OSPF 是分层路由协议,将网络分割成一个“主干”连接的一组相  互独立的部分,这些相互独立的部分称为“区域” (Area),   “主 干”部分称为“主干区域”。每个区域可看成一个独立的网络,区 域的OSPF 路由器只保存该区域的链路状态。每个路由器的链路状态数据可以保持合理大小,计算路由时间、报文数量就不会过大。

八、OSPF的5类报文

        OSPF 使用IP包头封装5类报文,用来交换链路状态广播 (Link State Advertisement,LSA)

        注意: LSA 本身不是OSPF 的消息,而是一类数据结构,存放在路由器的链路状态库 (Link-State  DataBase,LSDB) 中,并可包含在LSU 消息中进行交换。LSA包括有关邻居和通道成本的信息。接收路由器用LSA 维护其路由选择表。

LSA类型

产生者

传播区域

描述

LSA1(Router LSA)

所有路由 器

只在所描述的区 域内泛洪

描述某区域内路由器端口链 路状态的集合

LSA 2(Network LSA)

DR或BDR

只在DR、BDR所  属的区域内泛洪

描述广播型网络和NBMA络,包含了该网络上所连接 路由器Route ID列表

LSA3(Network

summary LSA)

ABR

通告给其他相关 区域

区域内所有网段的路由信息

LSA 4(ASBR

Summary LSA)

ABR

通告给除AS BR 所在区域的其他 相关区域

描述到ASBR的路由

LSA5(Autonomous

System

External LSA)

ASBR

通告到所有的区 域(除了Stub  域和NSSA区域)

描述到AS外部的路由

 (1)Hello

        Hello 用于发现邻居,保证邻居之间keepalive,      NBMA网络上  选举指定路由器 (DR)  备份指定路由器 (BDR)  Hello   文的发送间隔时间是10秒,默认无效时间间隔是Hello时间间隔的4 倍,即如果在40秒内没有从特定的邻居接收到这种分组,路由器就 认为那个邻居不存在了。 Hello 包应该包含:源路由器的RID源路 由器的Area ID源路由器接口的掩码、源路由器接口的认证类型和 认证信息、源路由器接口的Hello包发送的时间间隔、源路由器接口的无效时间间隔、优先级、 DR/BDR接口IP 地址、五个标记位、源路由器的所有邻居的RID Hello 组播地址为224.0.0.5

(2)数据库描述 (DD DBD) 消息

        用来交换每个LSA 的摘要版本, 一般出现在初始拓扑交换中,这样路由器可以获悉邻接路由器的LSA 列表并用于选择主从关系。 LSA描述了路由器的所有链路、接口、路由器的邻居及链路状态信息。

(3)链路状态请求 (LSR) 消息。

        请求一个或多个LSA,  告知邻接路由器提供LSA的详细信息给发送路由器。

(4)链路状态更新 (LSU) 消息。

        包含LSA 的详细信息, 一般用来响应LSR 消息。

( 5 )       (LSAck)  

        用来确认已收到LSU 消息。

        上述消息可以支持路由器发现邻接路由器 (Hello),  学习其本身链路状态库 (LSDB)  中没有的LSA(DD),    请求并可靠交换LSA(LSR/LSU),    监测邻接路由器是否发生拓扑改变。
        LSA每30分钟重传1次。

九、OSPF 工作流程

        (1)启动OSPF 进程的接口,发送Hello 消息。

        (2)交换Hello 消息建立邻居关系。

        (3)每台路由器对所有邻居发送LSA 

        (4)路由器接收邻居发过来的LSA 并保存在LSDB 中,发送一个LSAcopy给其他邻居。

        (5)LSA 泛洪扩散到整个区域,区域内所有路由器都会形成相同LSDB

        (6)当所有路由器的LSDB 完全相同时,每台路由器将以自身为根,使用最短路径算法算出到达每个目的地的最短路径。

        (7)每台路由器通过最短路径构建出自己的路由表,包含区域内路由(最优)、区域间路由、 E1外部路由和E2外部路由。

十、BRBDR选举

        在DR BDR 出现之前,每一台路由器及其所有邻居成为全连接的OSPF邻接关系,关系数为n×(n-1)/2   在多址网络中,路由器发出的LSA从邻居的邻居发回来,导致网络上产生很多LSA的复制,所以基于这种考虑产生了DR BDR 网段中的所有路由器都从DR BDR 交换信息,而不是彼此交换信息。 DR BDR 将信息转交给其他所有路由器,用DR BDR 方式的连接数为2×(n-1)。

DR/BDR的选举过程:

        (1)选举路由器必须进入双向会话 (Two-way)    状态,优先级别必须大于0(优先级为0,则不参与选举)。

        (2)选举优先级最高的路由器为DR,  次优的为BDR。

        (3)如果优先级相同,则选举Router-id 最大的路由器。

        (4)如果DR/BDR已经存在,而又有新的OSPF路由器加入,即使该路由器优先级最高,也不剥夺现有DR/BDR 的角色。

        (5)如果DR失效,则BDR接管DR, 并重新激活一个新BDR选举进程。

十一、OSPF选举Router-id 的规则

        (1)手动配置的Router-id为首选。

        (2)用所有loopback 中最大的IP作为Router-id。

        (3)用所有活动物理接口中最大的IP作为Router-id   (用作Router-id 的接口不一定非要运行OSPF协议)。

十二、OSPF 网络类型

        OSPF 网络类型分为点到点网络 (Point-to-Point)、 广播型网络(Broadcast) 非广播型 (NonBroadcast     Multiaccess,NBMA)  网络、点到多点网络 (Point-to-Multicast)、  虚链接 (Virtual     Link)

OSPF网络类型

特点

数据传输方式

点到点网络

(Point-to-Point)

有效邻居总是可以形成邻居关系

组播地址为224.0.0.5,该 地址称为AllSPFRouters

点到多点网络

(Point-to-Multicast)

不选举DR/BDR,可看作是多个 Point-to-Point链路的集合

单播(Unicast)

广播型网络

(Broadcast)

选举DR/BDR,所有路由器和 BR/BDR交换信息。DR/BDR不 能被抢占。广播型网络有:以太 网、Token RingFDDI

DR、BDR组播到224.0.0.5 ; DR/BDR侦听224.0.0.6,

该地址称为AllDRouters

非广播型

(NBMA)

没有广播,需手动指定邻居,

Hello消息单播。NBMA网络有 X.25、Frame Relay和ATM

单播

十三、OSPF网络接口COST 

         OSPF 协议中每个接口根据其速率不同,都有一个默认的公式计算的

cost值。

        OSPF 协议中接口的开销计算公式:接口开销=参考带宽/逻辑带宽

        注意: OSPF 的接口带宽默认为100Mbps, 因此Ethernet(100Mbit/s)对应的开销的缺省值是1。

十四、OSPF  配置

        创建OSPF 进程,指定路由器的RouterID, 启动OSPF OSPF 配置的前提。

(1)创建OSPF进程。

system-view                                //进入系统视图

ospf  [process-id|router-id  router-id  ]               //启OSPF 进程,进入OSPF视图

//process-id为进程号,缺省值为1,这个值只有本地意义; router-id router-id 是路由器的ID

area    area-id                                        //进入OSPF 区域视图

//OSPF区域分为骨干区域 (Area 0)  和非骨干区域。骨干区域负责区域之 间的路由,非骨干区域之间的路由信息必须通过骨干区域来转发

network address wildcard-mask [description text] 

//配置区域所包含的网段。其中, description 字段用来为OSPF指定网段配置描述信息

(2)在接口上启动OSPF

system-view                                                     //进入系统视图

interface interface-type interface-number       //进入接口视图

ospf enable [process-id ]area area-id             //在接口上启动OSPF

相关文章:

路由器基础(五): OSPF原理与配置

开放式最短路径优先 (Open Shortest Path First,OSPF) 是一个内部网关协议 (Interior Gateway Protocol,IGP),用于在单一自治系统(Autonomous System,AS) 内决策路由。OSPF 适合小型、中型、较大规模网络。OSPF 采用Dijkstra的最短路径优先算法 (Shortest Pat…...

Leetcode1128. 等价多米诺骨牌对的数量

Every day a Leetcode 题目来源&#xff1a;1128. 等价多米诺骨牌对的数量 解法1&#xff1a;暴力 代码&#xff1a; class Solution { public:int numEquivDominoPairs(vector<vector<int>> &dominoes){int n dominoes.size(), count 0;for (int i 0;…...

Dev-C调试的基本方法2-2

3.3 跳出函数 在图6所示的状态下&#xff0c;点击单步调试&#xff08;F7&#xff09;会继续调试下一行&#xff0c;而如果想结束在函数中的调试&#xff0c;则点击图4③所示的跳出函数&#xff0c;或CtrlF8按键跳出f()函数&#xff0c;程序将会停在图5所示的第11行处。 3.4 …...

企业之间的竞争,ISO三体系认证至关重要!

ISO三体系认证是指ISO 9001质量管理体系认证、ISO 14001环境管理体系认证、ISO 45001(OHSAS18001)职业健康安全管理体系认证。企业&#xff08;组织&#xff09;自愿申请、通过ISO三体系认证&#xff0c;并贯彻落实&#xff0c;确实能获益多多。 ISO 9001质量管理体系 我们经…...

node教程(四)Mongodb+mongoose

文章目录 一、mongodb1.简介1.1Mongodb是什么&#xff1f;1.2数据库是什么&#xff1f;1.3数据库的作用1.4数据库管理数据的特点 2.核心概念3.下载安装与启动4.命令行交互4.1数据库命令4.3文档命令 二、Mongoose1.介绍2.作用3.使用流程4.插入文档5.mongoose字段类型 一、mongod…...

作为一个初学者,该如何入门大模型?

在生成式 AI 盛行的当下&#xff0c;你是否被这种技术所折服&#xff0c;例如输入一段简简单单的文字&#xff0c;转眼之间&#xff0c;一幅精美的图片&#xff0c;又或者是文笔流畅的文字就展现在你的面前。 相信很多人有这种想法&#xff0c;认为生成式 AI 深不可测&#xf…...

编译支持GPU的opencv,并供python的import cv2调用

下载opencv和opencv_contrib&#xff0c;cmake过程中要下载的一些包可以手动下载配置&#xff0c;如果网络较好&#xff0c;也可以等待自动下载。主要记录的是cmake命令&#xff1a; cmake -D CMAKE_BUILD_TYPERELEASE \-D BUILD_opencv_python3YES \-D CMAKE_INSTALL_PREFIX/…...

Bug记录

那些年写过的很小的bug&#xff1a; Bug1&#xff1a; if args.model IRNN or irnn:# some code这实际上不会按你期望的方式工作。原因在于 ‘irnn’ 是一个非空的字符串&#xff0c;因此它在布尔上下文中被视为 True。所以条件总是为真&#xff0c;而不会考虑 args.model 的…...

web3 React dapp中编写balance组件从redux取出并展示用户资产

好啊 上文WEB3 在 React搭建的Dapp中通过redux全局获取并存储用户ETH与自定义token与交易所存储数量中 我们拿到了用户的一个本身 和 交易所token数量 并放进了redux中做了一个全局管理 然后 我们继续 先 起来ganache的一个模拟环境 ganache -d然后 我们启动自己的项目 顺手发…...

BIOS开发笔记 - DDR中的时序参数

通过前一篇文章学习,我们可以大致知道内存条(Module)的组成及SDRAM内部的结构,这一篇再介绍下SDRAM中常见的时序参数以及整个读写操作的流程。 一、外部信号 图1 DDR4的外部线路图 DDR是一种高带宽的传输接口,其外部信号较多,图1是一个DDR4的外部线路图,以下对图中跟通…...

语义分割 - 简介

语义分割是计算机视觉领域的一项重要任务&#xff0c;旨在将图像中的每个像素标记为对应的语义类别。与传统的图像分类任务不同&#xff0c;语义分割不仅要识别整个图像的类别&#xff0c;还需要对图像中的每个像素进行分类&#xff0c;从而实现对图像的像素级别理解。 语义分…...

ch0_OSI 七层网络协议介绍

目录 概述 1、三网融合的概念 三网&#xff1a;电信网络、有线电视网络、计算机网络 概念&#xff1a;把上述三种网络融合成一种网络 2、计算机网络的定义、分类 定义&#xff1a;计算机网络是将地理位置不同的独立计算机系统&#xff0c;通过传输介质链接起来&#xff0c…...

超声波俱乐部分享:百度世界大会点燃AI创业者新希望

10月22日&#xff0c;2023年第十三期超声波俱乐部内部分享会在北京望京举行。本期的主题是&#xff1a;百度世界大会点燃AI创业者新希望。 到场的嘉宾有&#xff1a;超声波创始人杨子超&#xff0c;超声波联合创始人、和牛商业创始人刘思雨&#xff0c;中国国际经济交流中心研…...

【项目管理】项目计划中常见影响进度的风险汇总

哈喽&#xff0c;大家好&#xff0c;我是雷工。 在项目实施过程中针对项目进度的计划常常会有各种各样的的风险&#xff0c;相比出了问题去救火与填坑&#xff0c;能够提前预知风险&#xff0c;并提前调整计划&#xff0c;更能有利于项目的如期交付。 以下为项目计划中影响进度…...

Apache HttpClient库编写的Scala程序

Apache HttpClient库编写的Scala下载器程序&#xff0c;用于下载图片。代码如下&#xff1a; import org.apache.http.HttpHost import org.apache.http.client.HttpClients import org.apache.http.client.methods.HttpHead import org.apache.http.impl.client.CloseableHtt…...

Java 为什么不推荐在 while 循环中使用 sleep() 我悟了

文章目录 前言原因是否正确方案是否合理定时轮询场景事件机制等待和唤醒 个人简介 前言 最近逛 CSDN 看到一篇文章&#xff0c;文章大意是说为什么在循环中不推荐使用 sleep 操作&#xff0c;原因在于线程挂起和唤醒会有很大的性能消耗&#xff0c;并推荐使用 Timer 及 Schedu…...

编程新手的犯错之路

第1名&#xff1a;无尽的if-else陷阱 在我刚刚学习编程的时候&#xff0c;我对if-else语句的使用充满了好奇。我曾经写下了这样一个愚蠢的代码块&#xff0c;用来判断一个数字属于哪个范围&#xff1a; if (number > 1 && number < 10) {// 做一些事情 } else …...

高级 Python:函数

伊利亚拉扎列维奇 一、说明 读完标题后&#xff0c;你可能会问自己一些类似的事情&#xff0c;“Python 中的函数是一个高级概念&#xff1f;如何&#xff1f;所有课程都引入了功能作为语言的基本块。你既是对的&#xff0c;也是错的。 大多数关于 Python 的课程都将函数作为基…...

【学习笔记】[PA2019] Osady i warownie 2

这题好抽象&#x1f631; EI 说这题可以转化为对偶图&#xff0c;但是我完全没看懂&#x1f605; 考虑维护最向右和向下的两条路径&#xff0c;那么不能放的位置就是两条路径的交&#xff08;感性理解一下&#xff09; 考虑抽象的描述这条路径&#xff0c; r i r_i ri​表示…...

Flask——接口路由技术

接口路由技术 一、Flask 简介1、环境安装&#xff1a;2、一个最小的应用3、两种运行方式 二、定义路由1、普通路由2、动态路由3、限定类型4、地址尾部的“/” 三、请求与响应-请求方法四、请求与响应-处理请求数据1、request的常用属性/方法2、get 请求参数3、json 请求4、表单…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

相关类相关的可视化图像总结

目录 一、散点图 二、气泡图 三、相关图 四、热力图 五、二维密度图 六、多模态二维密度图 七、雷达图 八、桑基图 九、总结 一、散点图 特点 通过点的位置展示两个连续变量之间的关系&#xff0c;可直观判断线性相关、非线性相关或无相关关系&#xff0c;点的分布密…...

ThreadLocal 源码

ThreadLocal 源码 此类提供线程局部变量。这些变量不同于它们的普通对应物&#xff0c;因为每个访问一个线程局部变量的线程&#xff08;通过其 get 或 set 方法&#xff09;都有自己独立初始化的变量副本。ThreadLocal 实例通常是类中的私有静态字段&#xff0c;这些类希望将…...

表单设计器拖拽对象时添加属性

背景&#xff1a;因为项目需要。自写设计器。遇到的坑在此记录 使用的拖拽组件时vuedraggable。下面放上局部示例截图。 坑1。draggable标签在拖拽时可以获取到被拖拽的对象属性定义 要使用 :clone, 而不是clone。我想应该是因为draggable标签比较特。另外在使用**:clone时要将…...