路由器基础(五): 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 、EGP、AS三者关系

六、链路状态路由协议
链路状态路由协议基于最短路径优先 (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外部路由。
十、BR与BDR选举
在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 Ring和FDDI | 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 题目来源:1128. 等价多米诺骨牌对的数量 解法1:暴力 代码: 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所示的状态下,点击单步调试(F7)会继续调试下一行,而如果想结束在函数中的调试,则点击图4③所示的跳出函数,或CtrlF8按键跳出f()函数,程序将会停在图5所示的第11行处。 3.4 …...
企业之间的竞争,ISO三体系认证至关重要!
ISO三体系认证是指ISO 9001质量管理体系认证、ISO 14001环境管理体系认证、ISO 45001(OHSAS18001)职业健康安全管理体系认证。企业(组织)自愿申请、通过ISO三体系认证,并贯彻落实,确实能获益多多。 ISO 9001质量管理体系 我们经…...
node教程(四)Mongodb+mongoose
文章目录 一、mongodb1.简介1.1Mongodb是什么?1.2数据库是什么?1.3数据库的作用1.4数据库管理数据的特点 2.核心概念3.下载安装与启动4.命令行交互4.1数据库命令4.3文档命令 二、Mongoose1.介绍2.作用3.使用流程4.插入文档5.mongoose字段类型 一、mongod…...
作为一个初学者,该如何入门大模型?
在生成式 AI 盛行的当下,你是否被这种技术所折服,例如输入一段简简单单的文字,转眼之间,一幅精美的图片,又或者是文笔流畅的文字就展现在你的面前。 相信很多人有这种想法,认为生成式 AI 深不可测…...
编译支持GPU的opencv,并供python的import cv2调用
下载opencv和opencv_contrib,cmake过程中要下载的一些包可以手动下载配置,如果网络较好,也可以等待自动下载。主要记录的是cmake命令: cmake -D CMAKE_BUILD_TYPERELEASE \-D BUILD_opencv_python3YES \-D CMAKE_INSTALL_PREFIX/…...
Bug记录
那些年写过的很小的bug: Bug1: if args.model IRNN or irnn:# some code这实际上不会按你期望的方式工作。原因在于 ‘irnn’ 是一个非空的字符串,因此它在布尔上下文中被视为 True。所以条件总是为真,而不会考虑 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的外部线路图,以下对图中跟通…...
语义分割 - 简介
语义分割是计算机视觉领域的一项重要任务,旨在将图像中的每个像素标记为对应的语义类别。与传统的图像分类任务不同,语义分割不仅要识别整个图像的类别,还需要对图像中的每个像素进行分类,从而实现对图像的像素级别理解。 语义分…...
ch0_OSI 七层网络协议介绍
目录 概述 1、三网融合的概念 三网:电信网络、有线电视网络、计算机网络 概念:把上述三种网络融合成一种网络 2、计算机网络的定义、分类 定义:计算机网络是将地理位置不同的独立计算机系统,通过传输介质链接起来,…...
超声波俱乐部分享:百度世界大会点燃AI创业者新希望
10月22日,2023年第十三期超声波俱乐部内部分享会在北京望京举行。本期的主题是:百度世界大会点燃AI创业者新希望。 到场的嘉宾有:超声波创始人杨子超,超声波联合创始人、和牛商业创始人刘思雨,中国国际经济交流中心研…...
【项目管理】项目计划中常见影响进度的风险汇总
哈喽,大家好,我是雷工。 在项目实施过程中针对项目进度的计划常常会有各种各样的的风险,相比出了问题去救火与填坑,能够提前预知风险,并提前调整计划,更能有利于项目的如期交付。 以下为项目计划中影响进度…...
Apache HttpClient库编写的Scala程序
Apache HttpClient库编写的Scala下载器程序,用于下载图片。代码如下: 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 看到一篇文章,文章大意是说为什么在循环中不推荐使用 sleep 操作,原因在于线程挂起和唤醒会有很大的性能消耗,并推荐使用 Timer 及 Schedu…...
编程新手的犯错之路
第1名:无尽的if-else陷阱 在我刚刚学习编程的时候,我对if-else语句的使用充满了好奇。我曾经写下了这样一个愚蠢的代码块,用来判断一个数字属于哪个范围: if (number > 1 && number < 10) {// 做一些事情 } else …...
高级 Python:函数
伊利亚拉扎列维奇 一、说明 读完标题后,你可能会问自己一些类似的事情,“Python 中的函数是一个高级概念?如何?所有课程都引入了功能作为语言的基本块。你既是对的,也是错的。 大多数关于 Python 的课程都将函数作为基…...
【学习笔记】[PA2019] Osady i warownie 2
这题好抽象😱 EI 说这题可以转化为对偶图,但是我完全没看懂😅 考虑维护最向右和向下的两条路径,那么不能放的位置就是两条路径的交(感性理解一下) 考虑抽象的描述这条路径, r i r_i ri表示…...
Flask——接口路由技术
接口路由技术 一、Flask 简介1、环境安装:2、一个最小的应用3、两种运行方式 二、定义路由1、普通路由2、动态路由3、限定类型4、地址尾部的“/” 三、请求与响应-请求方法四、请求与响应-处理请求数据1、request的常用属性/方法2、get 请求参数3、json 请求4、表单…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...
