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

OSPF笔记

OSPF:开放式最短路径优先协议

使用范围:IGP

协议算法特点:链路状态型路由协议,SPF算法

协议是否传递网络掩码:传递网络掩码

协议封装:基于ip协议封装,协议号为89

一,ospf特点

1.ospf是一种典型的链路状态型路由协议

2.传递信息称作LSA,LSA链路状态通告,包含路由信息和拓扑信息

        路由LSA:描述本路由器上接口的路由信息

        拓扑LSA:描述路由器之间的连接状态

3.更新方式:触发更新+30分钟的链路状态刷新

4.更新地址:组播和单播更新,组播地址:224.0.0.5(all spf router)  224.0.0.6(all dr router)

5.支持路由认证

6.支持手工汇总

7.支持区域划分

8.ospf比较消耗设备资源

二,ospf区域

区域划分的意义

        1.减少LSA的数量

        2.减少LSA的传播范围

区域的划分是基于接口的(链路的)

区域的标记:使用32个二进制,类似于ip地址

区域的分类

        骨干区域:区域标记为0或0.0.0.0

        非骨干区域:区域标记不等于0或0.0.0.0

区域设计原则:向日葵型网络结构

        1.ospf网络中必须存在并唯一的骨干区域(单区域除外)

        2.若存在非骨干区域,非骨干区域必须与骨干区域直接相连

        3.非骨干区域之间不允许直接相连相互发布区域间路由

ospf中路由器的角色

        骨干路由器(BR)

        非骨干路由器

        区域边界路由器(ABR):骨干和非骨干之间的路由器

        自治系统边界路由器(ASBR):能够产生5类或7类LSA的路由器,把非ospf路由引入ospf中

三,ospf消息数据包

1.hello数据包

        周期性发送,周期时间10s或30s(根据不同的网络类型默认10s或30s)

        目的:建立并维持ospf邻居关系

2.DBD:数据库描述数据包

        主从选举DBD:比较双方的router-id,router-id大的一方为主(master),小的一方为从(slave);主用于控制LSA的交互

3.LSR:链路状态请求,按照DBD报文的未知LSA头部进行请求

4.LSU:链路状态更新,携带LSA信息

5.LSACK:链路状态确认

四,ospf邻居状态机制

  1. Down(失效)状态:这是初始状态,表示尚未收到邻居的任何信息。
  2. Attempt(过渡)状态:特殊网络条件才有的状态,不支持广播网路
  3. Init(初始化)状态:本路由器已经从邻居收到了 Hello 报文,但报文中未列出本路由器的 Router ID。
  4. 2-Way(双向通信)状态:本路由器在收到的 Hello 报文中看到了自己的 Router ID,表明双方可以双向通信。如果是在广播型网络或 NBMA 网络中,此时还需要选举 DR(指定路由器)和 BDR(备份指定路由器)。
  5. ExStart(预启动)状态:路由器开始协商主从关系,并确定用于交换数据库描述(DBD)报文的初始序列号。
  6. Exchange(交换)状态:路由器使用 DBD 报文来描述自己的链路状态数据库,并向邻居请求缺失或更新的 LSA(链路状态通告)。
  7. Loading(加载)状态:路由器根据收到的 LSR(链路状态请求)报文,向邻居发送 LSU(链路状态更新)报文来提供所需的 LSA 信息。
  8. Full(完全邻接)状态:路由器的链路状态数据库已经与邻居同步,邻居关系建立完成,可以进行路由计算和数据转发。

邻居关系建立条件:

  1. router-id 必须不同每台 OSPF 路由器都需要有唯一的 Router-ID 来标识自己。如果两台路由器的 Router-ID 相同,会导致 OSPF 协议无法正常区分它们,从而无法建立邻居关系。
  2. area ID 相同OSPF 网络被划分为不同的区域,路由器要成为邻居,必须处于相同的区域,这样它们才能共享相同的链路状态信息,以计算准确的路由。
  3. 认证:认证类型(不认证=0 明文认证=1 MD5=2)认证数据:为了保证网络的安全性和数据的完整性,OSPF 支持不同的认证方式。邻居之间的认证类型和认证数据必须匹配,否则无法建立邻居关系。
  4. hello 时间,dead 时间必须一致:Hello 报文用于发现和维护邻居关系,Dead 时间用于判断邻居是否失效。如果这两个时间参数不一致,可能会导致邻居状态的错误判断和不稳定。
  5. 特殊区域标识一致(E(外部路由位)=1 ;N(NSSA 外部路由位)=0 P=0):特殊区域具有特定的属性和路由传播规则,邻居路由器在这些特殊区域标识上必须一致,以确保对路由信息的处理方式相同。
  6. MA 网络中,网络掩码必须一致:在多路访问(MA)网络中,如以太网,网络掩码一致是确保网络地址规划和路由计算的准确性的重要条件。
  7. 必须同时使用单播或组播更新:这确保了邻居之间的更新报文发送方式的一致性,避免因发送和接收方式不同而导致更新报文丢失或无法处理。
  8. 更新源检测(双方的 IP 地址必须在同一网段):只有当更新源(发送更新报文的接口 IP 地址)在同一网段,才能保证它们在逻辑上处于同一网络,从而能够正常通信和建立邻居关系。

 邻居状态下,MA的网络中会选举DR(指定路由器) BDR(备份指定路由器)

DR选举:

        1.比较优先级(范围:0-255,默认优先级为1,越大越优)

        2.比较各自的router-id,越大越优

注意:1.DR抢占是关闭的 2.DR是一个接口概念 3.优先级范围0-255,数字为0代表不参加选举  4.先选BDR,再升级为DR

主从选举:发生在exstart状态,通过双方router-id进行比较,router-id大的一方为主。发送的主从选举DBD,DBD总包含了MTU值(若双方的MTU值不同,则卡在exstart状态)

router-id选举规则:

        1.手工指定最优先

        2.选举所有逻辑中ip地址最大的

        3.选举所有物理接口ip地址最大的

五,ospf基本配置

开启 OSPF 进程并配置 Router ID:

    ospf 1 router-id 1.1.1.1

其中,“1”是进程号,缺省为 1;“1.1.1.1”是手动配置的 Router ID

配置区域:

    area 0/0.0.0.0

    network 192.168.0.0 0.0.0.255

上述命令将 192.168.0.0/24 网段宣告到区域 0 中,使用反掩码(255.255.255.255 - 掩码)来匹配网段。

常用的 OSPF 配置命令

        修改 Hello 包发送间隔:ospf timer hello 10 ,其中“10”为间隔时间(单位为秒)。

        修改 Hello 包超时间隔:ospf timer dead 40 。

        显示 OSPF 接口信息:display ospf interface g0/0/0 。

        修改 OSPF 接口优先级:ospf dr-priority 100 。

        修改开销(cost):ospf cost 10 ,取值范围为 1 至 65535,缺省为 1。

        调整带宽参考值:bandwidth-reference 100 ,默认为 100Mbps,需在整个 OSPF 网络中统一调整。

        重启 OSPF 进程:reset ospf process 。

ospf三张表:

  1. 邻居表(Neighbor Table):也称为邻居关系表。该表记录了与本地路由器建立了邻居关系的其他路由器的信息,包括邻居路由器的 Router ID、接口地址、状态、Hello 间隔、失效时间等。通过查看邻居表,可以了解到哪些路由器与本地路由器成功建立了邻居关系,以及它们的相关参数和状态。display ospf peer brief可查看

  2. 链路状态数据库(Link State Database,LSDB):存储了本区域内所有路由器的链路状态通告(LSA)。LSDB 中的 LSA 描述了网络的拓扑结构和链路状态信息。每个路由器通过与邻居交换 LSA 来同步 LSDB,确保所有路由器对网络拓扑有一致的认识。display ospf lsdb可查看

  3. 路由表(Routing Table):根据 LSDB 计算得出的最优路由信息表。OSPF 路由器使用 Dijkstra 算法根据 LSDB 中的链路状态信息计算出到达各个目标网络的最短路径,并将这些路由信息放入路由表中,用于数据的转发决策。display ip routing-table protocol ospf 可查看

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 搭建高可用OpenStack(Queen版)集群(十一)之OpenStack集成ceph服务
  • opencv 多线程分块处理
  • FFmpeg源码:packet_alloc、av_new_packet、av_shrink_packet、av_grow_packet函数分析
  • 掌握NPM版本候选锁定:策略、实践与示例
  • 如果你懂开发,我真心劝你来试试网络安全
  • 自由职业四年,我整理了一些建议
  • 【数据结构】堆排序与TOP-K问题
  • Naive UI+vue一些组件的注意事项
  • element plus el-select修改后缀图标
  • 【双向链表】的建立、插入、删除、查找和销毁
  • 量化策略开发步骤系列(3)关键投资组合指标
  • firefly推理和微调qwen
  • Appium基础
  • 背包九讲(动态规划)
  • IO流(完善)
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 10个确保微服务与容器安全的最佳实践
  • Create React App 使用
  • ES6系统学习----从Apollo Client看解构赋值
  • idea + plantuml 画流程图
  • Java超时控制的实现
  • JS学习笔记——闭包
  • Next.js之基础概念(二)
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Vue 动态创建 component
  • Vue 重置组件到初始状态
  • vue脚手架vue-cli
  • XML已死 ?
  • 大快搜索数据爬虫技术实例安装教学篇
  • 基于HAProxy的高性能缓存服务器nuster
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 扑朔迷离的属性和特性【彻底弄清】
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 三分钟教你同步 Visual Studio Code 设置
  • 什么软件可以剪辑音乐?
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 中文输入法与React文本输入框的问题与解决方案
  • Java总结 - String - 这篇请使劲喷我
  • ​Linux·i2c驱动架构​
  • # Maven错误Error executing Maven
  • #Lua:Lua调用C++生成的DLL库
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • (3)STL算法之搜索
  • (4)logging(日志模块)
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (一)RocketMQ初步认识
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (转)EOS中账户、钱包和密钥的关系
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)项目管理杂谈-我所期望的新人
  • .NET6实现破解Modbus poll点表配置文件
  • .net开发引用程序集提示没有强名称的解决办法