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.6

2、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设备规则:

  1. 至少连接两个区域
  2. 连接的区域中至少有一个是区域0
  3. 在区域0中至少存在一个活跃的邻居

ABR功能:传递区域间路由信息

OSPF为了保证所有工程师遵循两条区域划分规则,作出如下规定:

  • 非骨干区域之间不允许直接相互发布区域间路由信息。---因为不存在ABR设备。

  • 从非骨干区域收到的路由信息,ABR能接收但不会使用这条路由信息-----OSPF的区域水平分割机制(从一个区域学习到的路由信息,不能再传递回该区域)

OSPF有如下规定:

  1. 对于伪ABR设备,不允许转发区域间路由信息。
  2. 对于真是ABR设备:
  • 可以将直连的非骨干区域的区域内路由信息传递给骨干区域
  • 可以将直连的骨干区域的区域内路由信息传递给非骨干区域
  • 能够将自己从骨干区域学习到的域间路由信息传递给非骨干区域

路由器角色

  • 内部路由器---IR---所有接口都接入同一个OSPF区域
  • 骨干路由器---BR---接入Area0的路由器
  • 区域边界路由器---ABR
  • AS边界路由器---ASBR
    • 工作在OSPF自治系统的边界,负责将OSPF域外的路由引入到本OSPF域中。
      1. 设备连接在不同的AS,且具有活跃的邻居。
      2. 该设备执行了重发布操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/785408.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

掼蛋游戏规则

1、牌型&#xff1a;单牌、对牌、三张牌、三带二、顺子、同花顺、钢板&#xff08;例&#xff1a; 222333、444555&#xff09;、炸弹&#xff08;4涨以上相同的牌&#xff09;、三连对 2、牌大小&#xff1a;大王&#xff0c;小王&#xff0c;级牌&#xff0c;A&#xff0c;…

从学习海底捞到学习巴奴,中国餐饮带洋快餐重归“产品主义”

俗话说“民以食为天”&#xff0c;吃饭一向是国人的头等大事&#xff0c;餐饮业也是经济的强劲助推力。新世纪以来&#xff0c;餐饮业不断讲述着热辣滚烫的商业故事。 2006年&#xff0c;拥有“必胜客”、“肯德基”等品牌的餐饮巨头百胜集团&#xff0c;组织两百多名区域经理…

太阳能光伏发电应用场景有哪些?

随着全球能源结构的转型和环保意识的提升&#xff0c;太阳能光伏发电作为一种清洁、可再生的能源形式&#xff0c;其应用场景正日益广泛。下面&#xff0c;我们将详细探讨太阳能光伏发电的主要应用场景。 首先&#xff0c;工业领域是太阳能光伏发电的重要应用领域。工业厂房通常…

EasyCVR视频汇聚平台海康Ehome2.0与5.0设备接入时的配置区别

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

Nessus【部署 01】Linux环境部署漏洞扫描工具Nessus最新版详细过程分享(下载+安装+注册+激活)

Nessus最新版详细部署过程分享 1. 获取激活码2.主程序下载安装启动2.1 下载2.2安装2.3 启动 3.许可证及插件3.1 许可证获取3.2 插件安装 4.安装总结 Nessus官方网站&#xff1a; https://www.tenable.com/products/nessus/nessus-essentials 及介绍&#xff1a; 国际数据公司&…

编程语言 MoonBit 本周有超多重磅更新等你来探索:expect 测试添加 inspect 函数,还有……

MoonBit 更新 1. expect 测试添加 inspect 函数 expect 测试添加针对 Show 接口的 inspect 函数&#xff0c;签名如下&#xff1a; pub fn inspect(obj: Show,~content: String "",~loc: SourceLoc _,~args_loc: ArgsLoc _ ) -> Result[Unit, String]⚠️ 此…

C++函数重载引用

函数重载 自然语言中&#xff0c;一个词可以有多重含义&#xff0c;人们可以通过上下文来判断该词真实的含义&#xff0c;即该词被重载了。比如&#xff1a;以前有一个笑话&#xff0c;国有两个体育项目大家根本不用看&#xff0c;也不用担心。一个是乒乓球&#xff0c;一个是男…

Mybatis(3) web项目

web项目 1、准备2、分析3、 MyBatis对象作用域以及事务问题4、问题 实现一个转账系统 1、准备 ①准备一个web模块 在这里使用了maven archetype&#xff0c;选择web 之后会生成 一个web模块&#xff0c;但是不同的版本可能不同&#xff0c;在这里我就没有java和resources目录&…

KUKA机器人更改时间和HMI最小化设置

在使用 KUKA 机器人时&#xff0c;示教器上左边有个“表”的图标&#xff0c;点一下就会显示时间。但一般不准&#xff0c;想要更改时间可以通过HMI最小化后进行更改设置。更改时间需要将示教器界面最小化&#xff0c;也就是进入Windows 界面。通过以下步骤可以进行设置&#x…

ThreadLocal的基本使用

一、ThreadLocal的介绍 ThreadLocal 是 Java 中的一个类&#xff0c;它提供了线程局部变量的功能。线程局部变量是指每个线程拥有自己独立的变量副本&#xff0c;这些变量在不同的线程中互不影响。ThreadLocal 提供了一种在多线程环境下&#xff0c;每个线程都可以独立访问自己…

多叉树题目:N 叉树的最大深度

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;N 叉树的最大深度 出处&#xff1a;559. N 叉树的最大深度 难度 3 级 题目描述 要求 给定一个 N 叉树&#xf…

算法6.4-6.6DFS

一个不知名大学生&#xff0c;江湖人称菜狗 original author: Jacky Li Email : 3435673055qq.com Time of completion&#xff1a;2024.03.27 Last edited: 2024.03.27 目录 算法6.4-6.6DFS 第1关&#xff1a;算法6.5采用邻接矩阵表示图的深搜 任务描述 相关知识 编程要求…

2024银行业最新数字化转型的方法与路径

银行业数字化转型是一场由思想到行动、由顶层到基层、由内部到外部的深刻变革&#xff0c; 需要科学方法论的指导。在推动体系性重塑、开放生态建设、业务科技融合、基础设施升 级以及体制机制变革等探索和实践中&#xff0c;银行业逐步形成从顶层设计到数字化能力建设&#xf…

【数据结构】非线性结构---二叉树

1、树 1.1 树的相关概念 节点的度&#xff1a;一个节点含有的子树的个数称为该节点的度&#xff1b; 如上图&#xff1a;A的为6 叶节点或终端节点&#xff1a;度为0的节点称为叶节点&#xff1b; 如上图&#xff1a;B、C、H、I...等节点为叶节点 非终端节点或分支节点&#…

docker部署实用的运维开发手册

下载镜像 docker pull registry.cn-beijing.aliyuncs.com/wuxingge123/reference:latestdocker-compose部署 vim docker-compose.yml version: 3 services:reference:container_name: referenceimage: registry.cn-beijing.aliyuncs.com/wuxingge123/reference:latestports:…

ES6学习之路:迭代器Iterator和生成器Generator

迭代器 一、知识背景 什么是迭代器 迭代器就是在一个数据集合中不断取出数据的过程迭代和遍历的区别 遍历是把所有数据都取出迭代器注重的是依次取出数据&#xff0c;它不会在意有多少数据&#xff0c;也不会保证能够取出多少或者能够把数据都取完。比如斐波那契额数列&#…

openstack云计算(二)——使用Packstack安装器安装一体化OpenStack云平台

初步掌握OpenStack快捷安装的方法。掌握OpenStack图形界面的基本操作。 一【准备阶段】 &#xff08;1&#xff09;准备一台能够安装OpenStack的实验用计算机&#xff0c;建议使用VMware虚拟机。 &#xff08;2&#xff09;该计算机应安装CentOS 7&#xff0c;建议采用CentO…

基于Sermant的全链路灰度发布在汽车行业DMS系统的应用

作者&#xff1a;聂子雄 华为云高级软件工程师 摘要 随着汽车产业的智能升级&#xff0c;DMS系统作为汽车行业的经销管理系统也面临着更加多种多样的业务场景的挑战。借助Sermant&#xff0c;华为云能够为DMS系统提供一整套端到端全链路灰度发布方案&#xff0c;这套方案可以…

深度学习训练中常用的三个基础库tqdmargparseyaml

文章目录 训练常用工具[tqdm][argparse][yaml]tqdm1. 导入tqdm2. 传入可迭代对象快速使用进阶1&#xff1a;通过update()自定义进度条每次更新的步长进阶2&#xff1a;通过set_description和set_postfix自定义进度条内容 Argparse第一步&#xff1a;创建ArgumentParser对象第二…

机器学习在智能音箱中的应用探索与实践:让声音更懂你

&#x1f9d1; 作者简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导…