OSPF---开放式最短路径优先协议
1. OSPF描述
OSPF协议是一种链路状态协议。每个路由器负责发现、维护与邻居的关系,并将已知的邻居列表和链路费用LSU报文描述,通过可靠的泛洪与自治系统AS内的其他路由器周期性交互,学习到整个自治系统的网络拓扑结构;并通过自治系统边界的路由器注入其他AS的路由信息,从而得到整个Internet的路由信息。每隔一个特定时间或当链路状态发生变化时,重新生成LSA,路由器通过泛洪机制将新LSA通告出去,以便实现路由的实时更新。
这样,每台路由器都收到了自制系统中所有路由器生成的LSA,这些LSA的集合组成了LSDB(链路状态数据库),这样所有的OSPF路由器都维护一个相同的描述自治系统内部结构的数据库。
1.1基本概念
- 协议使用范围----IGP
- 链路状态型协议----传递拓扑
- 传递真实掩码信息----无类别路由协议
- OSPF版本
- OSPFv1
- OSPFv2----IPv4
- OSPFv3----IPv6
- 使用SPF算法
- OSPF传递的是LSA信息(链路状态通告)
- OSPF更新方式
- 触发更新
- 周期链路状态刷新-----30min
- OSPF更新地址---组播
- 224.0.0.5/224.0.0.6
- OSPF开销值===参考带宽/实际带宽(参考带宽默认为100Mbps)——针对于接口而言
- OSPF进行跨层封装----基于IP协议进行封装,协议号89
1.2 优点
- 支持在多条等代价路由之间的负载均衡;
- 支持路由信息交换的认证;
- 可用作大型自治系统的内部路由协议。
- OSPF采用SPF算法计算路由,从算法上保证了不会产生路由环路
- OSPF不限制网络规模,更新效率高,收敛速度快
2. OSPF数据报文
2.1总体概述
- Hello报文
- 用来周期性发现、建立、保活OSPF邻居关系。
- 进行DR、BDR选举
- hello time:10S发送一次hello报文,来确认邻居的存在
- 如果一个dead time时间没有收到邻居发送给自己的hello报文,则认为邻居不存在
- time一般为hello时间的四倍,默认情况下为40S。
- Router-ID------RID
- 全域唯一,标识路由器的身份
- 使用IP地址的表示形式
- 配置方式:
- 1、手工配置:满足上面两条规则即可。
2、自动配置:路由器默认优选最大环回IP地址,没有环回则选择最大物理IP地址。
注意:
启动OSPF进程前,必须有接口IP地址。若有,则在第一次启动OSPF进程时,选择第一个配置的IP地址作为RID值。- 在思科中,若没有IP,则OSPF启动失败。在华为中,RID会设定为0.0.0.0。
- 华为逻辑:在第一次启动设备时,选择第一个UP的接口的IP作为全局RID。之后按照国际标准执行。
- DBD报文
- 数据库描述报文
- 携带路径信息的摘要信息----为了避免重复更新和减少更新量。
- LSR报文
- 链路状态请求报文
- 根据DBD中的信息,请求获取未知的链路信息(LSA信息)
- LSU报文
- 链路状态更新报文
- 携带有真正的LSA信息的数据包
- LSAck报文
- 链路状态确认报文
2.2 OSPF头部信息
3. OSPF七种邻居状态机
- down----关闭状态-----一旦启动了OSPF协议,则发出hello报文,进入下一状态
- init-----初始化状态----当收到的hello报文中,存在本地RID值时,进入下一状态
- 2-way-----双向通讯状态-----------邻居关系建立的标志。
- 条件匹配:匹配成功则进入下一阶段,失败则停留在邻居关系。
- exstart----预启动状态-----使用未携带信息的DBD报文进行主从关系选举,RID大的为主
- exchange-----准交换----使用携带目录信息的DBD包进行目录共享
- loading-----加载状态-----邻居间使用LSR/LSU/LSACK三种报文来获取完整的拓扑信息
- full----转发状态----拓扑信息交换完成后进入该状态-----邻接关系建立的标志。
注:
Attempt状态---尝试状态---------仅在NBMA网络中会出现,当设备启动后,从down切换到该状态,尝试向外发送hello报文,当成功发送后,进入到init状态。
3.1条件匹配
目的:减少网络中LSA信息的重复更新及资源消耗
- 设备接口角色
- 指定路由器------DR
- 备份指定路由器-----BDR-----BDR是指备用的 DR
- 其他路由器----DRother
- 选举规则:
- 1. 优先级,默认为1 范围:0-255,越大越优,当优先级为0时 放弃选举
- 2. 对比设备RID,越大越优
- 选举范围
- 一个广播域,进行一次条件匹配。
- 选举规则:
组播地址:
1、DRother发送时使用224.0.0.62、DR/BDR接收224.0.0.6,发送224.0.0.5
- 角色之间的关系
- DR与BDR----邻接
- DR与DRother---邻接
- BDR与DRother---邻接
- DRother与DRother----邻居
- OSPF条件匹配的情况
- 在以太网网络中-----必须进行条件匹配
- 在点到点网络中-----不需要进行条件匹配
- 条件匹配是属于非抢占模式-------一旦选举成功,不会因为新加入的设备而重新选举,若需要 重新选举,则重启OSPF
4. OSPF七种接口状态机
- Down:接口的初始状态。表明此时接口不可用,不能用于收发流量。
- Loopback:设备到网络的接口处于环回状态。环回接口不能用于正常的数据传输,但可以通过Router-LSA进行通告。因此,进行连通性测试时能够发现到达这个接口的路径。
- Waiting:设备正在判定网络上的DR和BDR。在设备参与DR和BDR选举前,接口上会启动Waiting定时器。在这个定时器超时前,设备发送的Hello报文不包含DR和BDR信息,设备不能被选举为DR或BDR。这样可以避免不必要地改变链路中已存在的DR和BDR。仅NBMA网络、广播网络有此状态。
- P-2-P:接口连接到物理点对点网络或者是虚拟链路,这个时候设备会与链路连接的另一端设备建立邻接关系。仅P2P、P2MP网络有此状态。
- DROther:设备没有被选为DR或BDR,但连接到广播网络或NBMA网络上的其他设备被选举为DR。它会与DR和BDR建立邻接关系。
- BDR:设备是相连的网络中的BDR,并将在当前的DR失效时成为DR。该设备与接入该网络的所有其他设备建立邻接关系。
- DR:设备是相连的网络中的DR。该设备与接入该网络的所有其他设备建立邻接关系。
5. OSPF工作过程
- OSPF协议启动后,路由器A向本地所有运行了OSPF协议的直连接口,使用组播地址224.0.0.5发送hello报文
- 该hello报文中携带了本地的全域唯一的RID值
- 以及自己已经知晓的邻居的RID(通过接收其他邻居的hello包来获取邻居的RID)
- 当对端路由器B接收hello报文中存在本地RID数值(路由器A),则进入2-way状态,且将与邻居的关系加入到邻居表中
- 此时,A与B建立邻居关系,并生成邻居表
- 邻居关系建立后,邻居之间进行条件匹配,匹配失败则停留在邻居关系,仅使用hello报文保活
- 若匹配成功,则可以开始建立邻接关系
- 开始建立邻接关系,首先使用未携带数据的DBD报文进行主从关系选举,主设备先进入下一个状态,从设备先发送下一个报文。之后使用DBD报文来共享LSA摘要信息。之后双方通过LSR、LSU、LSAck报文完成未知LSA的获取过程
- 完成本地数据库的搭建----LSDB
- 基于本地数据库中的LSA信息,通过算法SPF,计算出有向图和最短路径树,并计算所有到达所有节点的路由信息,将计算出的路由信息加载到OSPF路由表中
- 此时,路由器完成路由收敛工作
- 基于OSPF路由表以及其他协议路由表,共同选择出最优路由,并将最优路由加载到全局路由表中,以供后续指导数据包的转发过程
- 最后,使用hello报文进行周期保活,并且每30min进行一次链路状态刷新
6. OSPF基本配置
1.启动OSPF协议,配置进程号(仅具有本地意义),手工配置RID值
- 若没有配置RID值,则设备自动生成(环回接口最大IP>物理接口最大IP)
- [r1]ospf 1 router-id 1.1.1.1
2.划分区域
- [r1-ospf-1]area 0
3. 宣告:激活接口,发布拓扑或路由
- 宣告网段
- 范围宣告
- [r1-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.255
- 反掩码:32位二进制,使用点分十进制表示,由连续0+连续1
- 精准宣告---推荐
- [r1-ospf-1-area-0.0.0.0]network 12.0.0.1 0.0.0.0
- OSPF邻居表
- [r2]display ospf peer ---查看OSPF邻居
- [r2]display ospf peer brief ----查看OSPF邻居简表
- OSPF数据库表
- [r2]display ospf lsdb -----查看OSPF数据库表
- OSPF路由表
- [r2]display ospf routing ---查看OSPF路由表
- OSPF优先级====10
- 重置OSPF进程
- [r2]reset ospf 1 process
6.1 OSPF扩展配置
- 修改OSPF默认参考带宽
- [r2-ospf-1]bandwidth-reference 10000 -----修改参考带宽,两端均需要修改
- 修改接口优先级,从而干涉条件匹配
- [r1-GigabitEthernet0/0/0]ospf dr-priority 10 -----在接口修改优先级
- [r1-GigabitEthernet0/0/0]ospf dr-priority 0 ---优先级修改为0,代表放弃选举
- 手工汇总
- [r2-ospf-1-area-0.0.0.0]abr-summary 192.168.0.0 255.255.252.0
- 必须在ABR上配置
- 汇总的明细路由来源在那个区域,进入那个区域进行配置
- 缺省路由
- 在边界设备上
- [r1-ospf-1]default-route-advertise -----非强制性下发,要求边界路由器中存在缺省路由才可以下发
- [r1-ospf-1]default-route-advertise always -----强制性下发,不要求本地存在缺省路由
- 静默接口
- 不接受也不发送OSPF报文,与RIP的静默接口不同。
- [r3-ospf-1]silent-interface GigabitEthernet 0/0/1
- 接口认证
- [r1-GigabitEthernet0/0/0]ospf authentication-mode ?
- md5 Use MD5 algorithm -----MD5认证
- null Use null authentication -----不认证----OSPF默认情况
- simple Simple authentication mode ------简单认证----明文认证
- [r1-GigabitEthernet0/0/0]ospf authentication-mode md5 1(编号) cipher 123456
- 加快收敛
- [r3-GigabitEthernet0/0/0]ospf timer hello ? -------一端修改,另一端必须修改,若不修改,则会导致邻居关系无法建立。
INTEGER<1-65535> Second(s)
7. OSPF区域化结构
- OSPF为了适应大中型网络环境,进行了结构化部署------区域划分
- 区域划分的特点
- 区域内部传递拓扑信息,区域间传递路由信息。
- 区域划分是基于路由器接口的。
- 区域编号----32bit
- 区域0-----骨干区域
- 非骨干区域----非0区域
- 区域划分规则
- 所有的非骨干区域都必须和骨干区域直接相连----星型拓扑
- 骨干区域唯一
- 区域边界路由器----ABR
- 同时属于多个区域,且至少有一个接口属于骨干区域。
- 在骨干区域中至少存在一个活跃的邻居。
区域划分目的:为了减少OSPF域中LSA的数量
如果一台路由器的多个接口分别接入到了多个不同的区域,则该设备会为每一个区域单独维护一套LSDB。
要求:
1、OSPF要求域中的所有非骨干区域(区域ID不为0)都必须与Area0相连。
2、骨干区域不能被分割。
OSPF区域结构部署规则的必要性
ABR设备规则:
- 至少连接两个区域
- 连接的区域中至少有一个是区域0
- 在区域0中至少存在一个活跃的邻居
ABR功能:传递区域间路由信息
OSPF为了保证所有工程师遵循两条区域划分规则,作出如下规定:
-
非骨干区域之间不允许直接相互发布区域间路由信息。---因为不存在ABR设备。
-
从非骨干区域收到的路由信息,ABR能接收但不会使用这条路由信息-----OSPF的区域水平分割机制(从一个区域学习到的路由信息,不能再传递回该区域)。
OSPF有如下规定:
- 对于伪ABR设备,不允许转发区域间路由信息。
- 对于真是ABR设备:
- 可以将直连的非骨干区域的区域内路由信息传递给骨干区域
- 可以将直连的骨干区域的区域内路由信息传递给非骨干区域
- 能够将自己从骨干区域学习到的域间路由信息传递给非骨干区域
路由器角色
- 内部路由器---IR---所有接口都接入同一个OSPF区域
- 骨干路由器---BR---接入Area0的路由器
- 区域边界路由器---ABR
- AS边界路由器---ASBR
- 工作在OSPF自治系统的边界,负责将OSPF域外的路由引入到本OSPF域中。
- 设备连接在不同的AS,且具有活跃的邻居。
- 该设备执行了重发布操作。
相关文章:
OSPF---开放式最短路径优先协议
1. OSPF描述 OSPF协议是一种链路状态协议。每个路由器负责发现、维护与邻居的关系,并将已知的邻居列表和链路费用LSU报文描述,通过可靠的泛洪与自治系统AS内的其他路由器周期性交互,学习到整个自治系统的网络拓扑结构;并通过自治系统边界的路…...
云数据仓库Snowflake论文完整版解读
本文是对于Snowflake论文的一个完整版解读,对于从事大数据数据仓库开发,数据湖开发的读者来说,这是一篇必须要详细了解和阅读的内容,通过全文你会发现整个数据湖设计的起初原因以及从各个维度(架构设计、存算分离、弹性…...
Redis中是如何初始化服务器的?
初始化服务器 一个Redis服务器从启动到能够接受客户端的命令请求,需要经过一系列的初始化和设置过程,比如初始化服务器状态,接受用户指定的服务器配置,创建相应的数据结构和网络连接等等 初始化服务器状态结构 初始化服务器的第…...
深度学习训练过程中,常见的关键参数和概念讲解
深度学习训练过程中的关键参数和概念对于构建、理解和优化模型至关重要。以下是一些最常见的参数和概念,以及它们的简要解释: 1. 学习率(Learning Rate) 学习率是优化算法中最重要的参数之一,它控制着权重调整的幅度…...
如何提高小红书笔记的收录率?
在小红书平台上,笔记的收录率是衡量一篇笔记是否受欢迎和有价值的重要因素。为了提高笔记的收录率,有几个关键点需要注意: 1.内容不涉及广告 在发布笔记前要先确保笔记内容不包含任何形式的广告或推广信息。小红书平台对于广告性质的内容有…...
思通数科:利用开源AI能力引擎平台打造企业智能搜索系统
在信息爆炸的时代,如何高效地管理和检索海量数据已成为企业和个人面临的一大挑战。思通数科 StoneDT 多模态AI能力引擎平台,以其强大的自然语言处理(NLP)、OCR识别、图像识别和文本抽取技术,为用户带来了前所未有的智能…...
Nginx配置其实很简单
Nginx配置其实很简单 不管作为前端还是后端,我们工作中或多或少得接触反向代理,比如代理静态页面或者文件、代理接口解决跨域、配置https、配置缓存和负载等等。而这些需求的实现,我们肯定能接触到Nginx,即使我们使用Caddy等等其它代理方式,但也肯定知道Nginx的存在。如果…...
Redis中的serverCron函数(一)
serverCron函数 Redis服务器中的serverCron函数默认每隔100毫秒执行一次,这个函数负责管理服务器的资源,并保持服务器自身的良好运转。 更新服务器时间缓存 Redis服务器中有不少功能需要获取系统的当前时间,而每次获取系统的当前时间都需要…...
python保存中间变量(学习笔记)
python保存中间变量 原因: 最近在部署dust3r算法,虽然在本地部署了,也能测试出一定的结果,但是发现无法跑很多图片,为了能够测试多张图片跑出来的模型,于是就在打算在autodl上部署算法,但是由…...
CTF wed安全(攻防世界)练习题
一、Training-WWW-Robots 进入网站如图: 翻译:在这个小小的挑战训练中,你将学习Robots exclusion standard。网络爬虫使用robots.txt文件来检查它们是否被允许抓取和索引您的网站或只是其中的一部分。 有时这些文件会暴露目录结构,…...
计算机网络链路层
数据链路 链路是从一个节点到相邻节点之间的物理线路(有线或无线) 数据链路是指把实现协议的软件和硬件加到对应链路上。帧是点对点信道的数据链路层的协议数据单元。 点对点信道 通信的主要步骤: 节点a的数据链路层将网络层交下来的包添…...
VUE3——reactive对比ref
从定义数据角度对比: 。ref用来定义:基本类型数据 。reactive用来定义:对象(或数组)类型数据。 。备注:ref也可以用来定义对象(或数组)类型数据,它内部会自动通过 reactive 转为代理对象。 从原理角度对比: 。ref通过 object.defineProperty()的 get 与set 来实现响应式(数据劫…...
广场舞团系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)
本项目包含可运行源码数据库LW,文末可获取本项目的所有资料。 推荐阅读100套最新项目持续更新中..... 2024年计算机毕业论文(设计)学生选题参考合集推荐收藏(包含Springboot、jsp、ssmvue等技术项目合集) 目录 1. 系…...
经典永不过时 Wordpress模板主题
经得住时间考验的模板,才是经典模板,带得来客户的网站,才叫NB网站。 https://www.jianzhanpress.com/?p2484...
QT布局管理和空间提升为和空间间隔
QHBoxLayout:按照水平方向从左到右布局; QVBoxLayout:按照竖直方向从上到下布局; QGridLayout:在一个网格中进行布局,类似于HTML的table; 基本布局管理类包括:QBoxLayout、QGridL…...
Yolo 自制数据集dect训练改进
上一文请看 Yolo自制detect训练-CSDN博客 简介 如下图: 首先看一下每个图的含义 loss loss分为cls_loss, box_loss, obj_loss三部分。 cls_loss用于监督类别分类,计算锚框与对应的标定分类是否正确。 box_loss用于监督检测框的回归,预测框…...
vlan间单臂路由
【项目实践4】 --vlan间单臂路由 一、实验背景 实验的目的是在一个有限的网络环境中实现VLAN间的通信。网络环境包括两个交换机和一个路由器,交换机之间通过Trunk链路相连,路由器则连接到这两个交换机的Trunk端口上。 二、案例分析 在网络工程中&#…...
day4 linux上部署第一个nest项目(java转ts全栈/3R教室)
背景:上一篇吧nest-vben-admin项目,再开发环境上跑通了,并且build出来了dist文件,接下来再部署到linux试试吧 dist文件夹是干嘛的? 一个pnpn install 直接生成了两个dist文件夹,前端admin项目一个…...
学会这几点,是搭建产品知识库的关键
现如今,企业都特别看重产品知识库,因为有了它,企业就能更好地管理产品信息,提升客户服务水平,还能帮企业做决策。但是,搭建一个好用、高效的产品知识库,也难倒了不少人。下面,我们一…...
MySql 常用的聚合函数总结
MySQL 中的聚合函数用于对一组数据进行计算,并返回单个值作为结果。以下是常用的 MySQL 聚合函数的总结及其功能描述: 1. COUNT() 功能:用于计算指定列或表中的行数。 语法: COUNT(*) COUNT(expression) 示例: SELECT …...
Charles for Mac 强大的网络调试工具
Charles for Mac是一款功能强大的网络调试工具,可以帮助开发人员和测试人员更轻松地进行网络通信测试和调试。以下是一些Charles for Mac的主要特点: 软件下载:Charles for Mac 4.6.6注册激活版 流量截获:Charles可以截获和分析通…...
【数据结构】优先级队列——堆
🧧🧧🧧🧧🧧个人主页🎈🎈🎈🎈🎈 🧧🧧🧧🧧🧧数据结构专栏🎈🎈🎈&…...
【力扣】45.跳跃游戏Ⅱ
45.跳跃游戏Ⅱ 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i j] 处: 0 < j < nums[i]i j < n 返回到达 n…...
containerd使用了解
containerd使用了解 yum安装 [rootvm ~]# curl -o /etc/yum.repos.d/docker.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo [rootvm ~]# yum list | grep containerd containerd.io.x86_64 1.6.28-3.1.el7 doc…...
gateway 分发时若两个服务的路由地址一样,怎么指定访问想要的服务下的地址
1.思路 在使用Spring Cloud Gateway时,如果两个服务的路由地址相同,可以通过Predicate(断言)和Filter(过滤器)的组合来实现根据请求的不同条件将请求分发到不同的服务下的地址。 使用Predicate进行路由条件…...
【LeetCode】三月题解
文章目录 [2369. 检查数组是否存在有效划分](https://leetcode.cn/problems/check-if-there-is-a-valid-partition-for-the-array/)思路:代码: [1976. 到达目的地的方案数](https://leetcode.cn/problems/number-of-ways-to-arrive-at-destination/) 思路…...
云手机:实现便携与安全的双赢
随着5G时代的到来,云手机在各大游戏、直播和新媒体营销中扮演越来越重要的角色。它不仅节约了成本,提高了效率,而且在边缘计算和云技术逐渐成熟的背景下,展现出了更大的发展机遇。 云手机的便携性如何? 云手机的便携性…...
fast_bev学习笔记
目录 一. 简述二. 输入输出三. github资源四. 复现推理过程4.1 cuda tensorrt 版 一. 简述 原文:Fast-BEV: A Fast and Strong Bird’s-Eye View Perception Baseline FAST BEV是一种高性能、快速推理和部署友好的解决方案,专为自动驾驶车载芯片设计。该框架主要包…...
Collection与数据结构链表与LinkedList(三):链表精选OJ例题(下)
1. 分割链表 OJ链接 class Solution {public ListNode partition(ListNode head, int x) {if(head null){return null;//空链表的情况}ListNode cur head;ListNode formerhead null;ListNode formerend null;ListNode latterhead null;ListNode latterend null;//定义…...
05 | Swoole 源码分析之 WebSocket 模块
首发原文链接:Swoole 源码分析之 WebSocket 模块 大家好,我是码农先森。 引言 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。它允许客户端和服务器之间进行实时数据传输。 与传统的 HTTP 请求-响应模型不同,WebSocket 可以保持…...
郑州做网站托管/漯河搜狗关键词优化排名软件
我现在无法对其进行严格测试,但是从我发现的结果来看,以下方法可能有效:SQL语句SELECT rownum : rownum 1 rownum, t.*FROM ((SELECT t.id, t.name, c.company AS owner, t.creation_date AS date, t.notesFROM tool t, client cWHERE t.id_customer 15AND t.tras…...
云速成美站做网站好吗/近一周热点新闻
小编典典 看起来webcolors将允许您执行以下操作: rgb_to_name(rgb_triplet,spec ’css3’) 将存在于rgb()颜色三元组中的3元整数转换为其对应的归一化颜色名称(如果存在);…...
大兴网站开发网站建设哪家好/推广员是做什么的
一 包:库单元 假设我们存在两个类名相同的类,如果没有一定的措施对其进行区分,就会无法区别到底使用的是哪一个类。因此java引入了包来进行名字空间管理。 包(类库)包含有一组类,这些类在单一的名字空间之下被组织在了一起。例如…...
西安做网站设计的公司/百度搜索排行
网关,网关工作原理是什么?网关_1顾名思义,网关(Gateway)就是一个网络连接到另一个网络的“关口”。大家都知道,从一个房间走到另一个房间,必然要经过一扇门。同样,从一个网络向另一个网络发送信息,也必须经过一道“关…...
玄武模板网站制作品牌/网络营销师官网
其实循环生成css都是定义一个数组,然后遍历生成,主要在于各个语言的调用方式不一样. 这里使用的rem作为基准单位,也可以用px或者其他 _variable.scss文件 // 文件名以下划线开头表示被引用文件,引用时不用加下划线和后缀名//定义…...
济南疫情最新通报/西安企业seo外包服务公司
一、继承 1.什么继承 继承是一种创建新类的方式,新建的类可以继承一个或多个父类(python支持多继承),父类又可称为基类或超类,新建的类称为派生类或子类。 2.为什么要有继承 子类会“”遗传”父类的属性,从…...