ospf基础

ospf 概述:

什么是ospf

  • 开放式最短路径优先协议,一种最受欢迎的动态路由协议
  • 版本:ospfv2(ipv4)和ospfv3(ipv6)
  • ospf位于OSI参考模型的第三层,数据封装在ip报头的后面
  • 协议号:89
  • 场景:适用于中大型网络规模,常见的场景有:政企网(层次化的网络架构)、数据中心内部(用于实现把不同的网段打通)
  • 作用:便于大型网络中对路由的管理和维护

ospf 工作原理:

  • 建立邻居:邻居表
  • 同步数据库:数据库
  • 计算路由表:路由表,ospf协议路由表

报文类型:

  • Hello报文:用于发现、建立、维护、断开邻居关系
  • DD报文:用于描述数据库摘要信息(LSA头部信息)
  • LSR报文:请求自己数据库中没有的LSA信息
  • LSU报文:根据对方的请求信息,更新LSA给对方
  • LSACK报文:收到对方的更新LSA信息后,进行确认

hello报文的字段

  • Network Mask-------子网掩码:默认情况下,两个建立ospf邻居的路由器,互联接口的掩码必须相同
  • Hello Interval-------hello时间间隔/hello计时器/hello时间:就是发送这个hello报文的路由器,默认情况下,hello时间为10秒,两台路由器想要建立连接,hello时间必须相同
  • Option-------特殊标记位:不通的区域类型,标记位也不一样,想要建立连接,标记位也必须相同
  • Router Priority-------DR优先级,用于DR选举:如果两台想要建立ospf邻居的路由器,都在互联接口上配置DR为0,那么这俩路由器都不会参与DR选举,邻居就无法建立,邻居状态就会卡在two-way
  • Router Dead Interval-------Dead时间/死亡时间:默认情况下,是hello时间的4倍=40秒。dead时间会随着hello时间的变化而变化,但还是hello时间的4倍
  • Designated Router:DR:指定路由器
  • Backup Designated Router:BDR:备份制定路由器
  • Active Neighbor:活跃的邻居,认可的邻居

ospf区域:

  • 区域分层:ospf适用于大型网络,采用分层设计,划分为骨干区域和非骨干区域
  • 骨干区域:区域号为0,即为骨干区域
  • 非骨干区域:区域号不为0
  • 非骨干区域必须与骨干区域直接“相连”,实现区域之间的互通

ospf区域的表示

  • 通过十进制表示,例如:1、2、3等
  • 通过点分十进制表示,例如:0.0.0.0、0.0.0.1、0.0.0.2等

为什么要引入区域

  • 原因:只有一个区域的不足,如果只有一个区域,公司内所有路由器都要同步数据库
    不足:
  • 数据报文非常多,所以设备压力大, 带宽占用多
  • 由于数据报文多,所以同步数据库非常慢,占用时间多
  • 由于数据库非常大, 所以计算路由慢,所以计算出来的路由表也非常大
  • 由于路由表非常大,路由器转发数据的时候, 查路由表时会让设备压力大(CPU占用高),查表慢,最终导致,数据转发慢,公司网络性 能差

引入多个区域的优势:

  • 只有同一个区域内的路由器才需要同步数据库,不同区域的路由不需要同步数据库
  • 所以同步数据库的设备少, 数据报文就少,设备压力也小,也不过多浪费带宽3)由于数据报文少,所以数据库最终就小
  • 数据库小,数据库同步的速度就快,计算路由就快5)数据库小,最终路由表也小,转发数据的速度就快,公司的网络质量就好

无法建立邻居的原因?

  • 两台设备的router-id 不能相同,如果相同无法建立邻居
  • 两台设备互联接口的区域号必须相同,如果不同,无法建立邻居
  • 两台设备的互联的接口,需要能够ping 通(三层互通),如果三层不通,无法建立邻居关系
  • 两台路由器的接口的IP地址的子网掩码必须一致,才可以建立邻居关系(p2p除外)
  • 两台路由器接口的Hello 时间必须一致,才能建立邻居关系
  • 两台路由器接口的Dead时间必须一致,才能建立邻居关系
  • 两台路由器的优先级不能全为0 (全为0可以建立邻居,无法建立邻接)
  • 认证类型必须相同(才能建立邻居关系)
  • 认证密码必须相同(才能建立邻居关系)
  • 特殊标记位必须相同(才能建立邻居关系)即:特殊标记位:E位和N位要相同

ospf防环计划

  • 区域防环:非骨干区域一定要跟骨干区域相连
  • 域间防环:ABR只会将3类LSA转发到骨干区域
  • LSA3类防环:ABR如果从非0区域接收到1个3类LSA,是不允许发送到0区域的
  • 自带防环机制:SPF算法 使用Dijkstra算法计算出到达每个目标网络的最短路径树,这个最短路径树基于成本(cost)来确定最佳路径,
    自然避免了环路的产生

ospf路由角色

  • 骨干路由器:路由器只要有一个接口在骨干区
  • 区域内路由器:路由器的所有接口都在同一个区域
  • ABR(区域边界路由器)同时连接着骨干区域和非骨干区域的路由器
  • ASBR(自治系统边界路由器)具有产生外部路由能力的路由器

ospf 7种状态机

  • Down :发送hello报文
  • Init:接受到邻居发来的hello报文,但是该hello报文中没有自己的router-id
    (为什么卡在init状态:单点故障)
  • Two-way:接收到hello报文中,有自己的router-id
    (为什么卡在two-way状态:DR优先级为0,不参与DR选举)
  • Exstart:交互第一个DD报文,确认主从关系,保证传输可靠
  • Exchange:交互数据库描述信息
    (为什么卡在exstart、exchange状态:MTU最大传输单元,一般是1500字节,值不一致)
  • loading:数据库同步
  • Full:完全邻接状态
  • 还有一种非广播状态:import(不常见)

ospf 网络类型

  • 广播类型(Broadcast):数据链路层协议为以太网时,ospf默认的网络类型为广播
  • 非广播类型(NBME):当链路层协议是fr(帧中继)时,ospf运行在这个网络环境中,默认使用NBME网络类型(不常见)
  • 点到点(p2p):数据链路层运行的协议为PPP或HDLC时,默认为p2p
  • 点到多点(p2mp):多个点到点(不常见)

DR与BDR

为什么要有DR/BDR

  • 共享网络中,邻接关系数量多,重复发送协议报文(DD、LSR、LSU、LSACK),占用网络资源,数据库同步慢

DR的作用

  • 减少邻接关系,降低设备负担
  • 加快数据库同步

DR的选举原则

  • 比较接口优先级,越大约优, 默认优先级为1,如果优先级相同
  • 则比较Router-id,越大越优
  • 哪个接口先配置OSPF,哪个接口会成为DR

DR的特点

  • 不能抢占
  • 每个网段中DR只有一个,BDR可以没有,DR必须有一个,如果没有DR,邻居将会一直卡在Two-way状态,无法建立邻接,无法full
  • 当DR优先级为0时,不参加DR选举,直接变成DR-other

路由器的接口角色

  • DR:指定路由器
  • BDR:备份指定路由器
  • DR-Other
    注意:DR 是接口的概念,不是路由器的概念,我们可以说这个接口是不是DR或者BDR,不能说这个路由器是不是DR路由器或者BDR路由器。

链路状态数据库(LSDB)

  • 作用:存储各种类型的LSA
  • LSA概念:链路状态通告信息
  • LSA作用:计算路由的原材料,相当于土豆(LSA),用土豆来制作土豆丝(路由),好比在OSPF中就用LSA来计算路由

LSA分类:

  • 1类LSA:Router-LSA
  • 2类LSA:Network-LSA
  • 3类LSA:Network-summary-LSA
  • 4类LSA: ASBR-summary-LSA
  • 5类LSA:AS-external-LSA 7类LSA:NSSA LSA

ospf 三种表

邻居表

邻居表

数据库

数据库

路由表

路由表

ospf LSA解析

一类LSA

  • 类型:Router-LSA
  • 名字:一类LSA的名字取自:生成这条LSA的路由器的router-id
  • 通告路由器:生成这条LSA的路由器的router-id
    区域内每一台路由器都会生成一条描述自己的一类LSA
  • 特点:每一个运行ospf的路由器都会在自己所属的区域生成一条用来描述自己拓扑信息和网段信息的一类LSA
  • 传播范围:仅仅在区域内传播
  • 作用:用来计算域内路由
    一类LSA是路由用来自我介绍的
    介绍两类信息:拓扑信息+网段信息
    拓扑信息:我是谁,我的邻居是谁,我用哪个接口连接着我的邻居
    网段信息:我的接口ip地址段,我的接口掩码,我的cost值

二类LSA

  • 类型:Network-LSA
  • 名字:二类LSA的名字取自:DR接口的ip地址
  • 通告路由器:DR接口所在路由器的router-id
  • 传播范围:仅仅在区域内传播
  • 作用:辅助一类LSA,计算域内路由
    完善DR-IP地址段的掩码信息:
    完善DR-IP地址段的拓扑信息

三类LSA

  • 类型:Network-summary-LSA (sum-net)
  • 名字:三类LSA的名字取自:区域之间网段的名字
  • 通告路由器:本区域ABR的router-id
  • 传播范围:仅仅在区域内传播,不跨区域传播
  • 特点:三类LSA在传播过程中,每经过一个ABR设备,三类LSA的通告路由器就会发生变化,变成所经过的那台ABR设备的router-id
  • 作用:计算域间路由
    区域内的ABR设备将由一类和二类LSA计算出来的域内路由,变成三类LSA放进相邻的区域
    目的:实现区域和区域之间的互联互通

四类LSA

  • 类型:ASBR-summary-LSA
  • 名字:四类LSA的名字取自:ASBR的router-id
  • 通告路由器:本区域ABR的router-id
  • 传播范围:仅仅在区域内传播
  • 特点:四类LSA在传播过程中,每经过一个ABR设备,LSA的通告路由器就会发生变化,变成所经过的那台ABR设备的router-id
    最初的那条4类LSA是由和ASBR在同一个区域的ABR生成的后续的4类的LSA是由本区域的ABR生成的
  • 作用:四类LSA是用来通告ASBR的,辅助5类LSA计算外部路由
    四类LSA在不同的区域传递ASBR的router-id
    带你去找ASBR,目的就是为了配合5类LSA,计算外部路由

五类LSA

  • 类型::AS-external-LSA
  • 名字::五类LSA的名字取自:引入外部路由的网段的名字
  • 通告路由器:ASBR的router-id
  • 传递范围:整个0SPF网络
  • 作用:用于通告外部路由(用于计算外部路由)
  • 特点:ASBR生产5类的LSA
    五类的LSA可以传输到OSPF网络中的任何地方,在传输的过程中,LSA没有发生任何变化
    五类LSA不属于任何一个区域

七类LSA(引入的外部路由生成的7类LSA)

  • 类型:NSSA-LSA
  • 名字:引入的外部网段的名字
  • 通告路由器:ASBR的router-id
  • 作用:通告外部路由–计算外部路由
  • 传递范围:仅仅在NSSA内部传播
  • 特点::
    NSSA的ABR设备会把这条七类的LSA改成五类的LSA,
    整个0SPF网络泛洪-让其他区域的设备能够学习到这条五类LSA
    从而计算出网段的路由,实现多公司之间的互联互通

特殊区域

stub区域:末梢区域

作用:

  • 保护一个区域不受来自外部链路不稳定的影响
  • 缩减数据库规模(让数据库里的LSA变少)–设备压力小
    缩减路由表规模(让路由表里的路由条目变少)–设备压力小
    降低设备负载压力

如何实现:

  • 不学习4类和5类LSA
  • 只学习1类,2类,3类LSA

出现新问题:

  • 不学习4类和5类SA,就无法计算出ospf外部路由
  • 没有外部路由,如何和A公司的PC3互联互通呢?

解决方案:

  • stub区域的ABR会自动生成1条默认的3类LSA
  • 这条默认的3类LSA,会计算出来一条默认的路由
  • 通过这条默认的路由,我们就可以和外部网络通信

配置方法:

  • stub区域的所有设备都要配置stub

stub区域特点:

  • stub 不要5类LSA,,所以stub也绝对不能引入外部路由
  • 骨干区域的路由器,绝对不能做成stub

totally stub 区域: 完全的末梢

作用:

  • 保护一个区域不受来自外部链路不稳定的影响
    保护一个区域不受来自区域间链路不稳定的影响
  • 缩减数据库规模(让数据库里的LSA变少)–设备压力小
    缩减路由表规模(让路由表里的路由条目变少)–设备压力小
    降低设备负载压力

如何实现:

  • 不学习3类,4类和5类L5A
  • 只学习1类、2类LSA

出现新问题:

  • 不学习4类和5类LSA,就无法算出ospf外部路由
  • 没有外部路由,如何跟其他公司互联互通呢?
  • 不学习3类LSA,无法计算出ospf域间路由,没有域间路由,如何和其他区域的网络通信呢

解决方案:

  • totally stub区域的ABR会自动生成1条默认的3类LSA
  • 这条默认的3类LSA,会计算出来一条默认的路由
  • 通过这条默认路由,我们就可以和外部网络通信
  • 通过这条默认的路由,我们还可以和其他区域的网络通信

配置方法:

  • totally stub区域的所有设备都要配置stub
  • 而且totally stub 区域的ABR设备,要配置stub区域
  • 并且告诉ABR设备,不要3类的LSA

totally stub区域特点:

  • totally stub 不要5类LSA,所以totally stub也绝对不能引入外部路由
  • 骨干区域的路由器,绝对不能做成totally stub

nssa区域:

作用:

  • 保护一个区域不受来自外部链路不稳定的影响
  • 缩减数据库规模(让数据库里的LSA变少)–设备压力小
    缩减路由表规模(让路由表里的路由条目变少)–设备压力小
    降低设备负载压力
  • 还可以引入外部路由

如何实现:

  • 不学习4类和5类L5A
  • 只学习1类、2类、3类和7类LSA

出现新问题:

  • 不学习4类和5类LSA,就无法计算出ospf外部路由
  • 没有外部路由,如何和外部公司的PC互联互通呢?

解决方案:

  • NSSA区域的ABR会自动生成1条默认的7类LSA
  • 这条默认的7类LSA,会计算出来一条OSPF外部-默认的路由
  • 通过这条OSPF外部默认的路由,我们就可以和外部网络通信

配置方法:

  • NSSA区域的所有设备都要配置NSSA

NSSA区 域特点:

  • NSSA不要5类LSA,但是也可以引入外部路由,使用7类LSA引入
  • 骨干区域,绝对不能做成NSSA

totally nssa区域:

作用:

  • 保护一个区域不受来自外部链路不稳定的影响
    保护一个区域不受区域间链路不稳定的影响
  • 缩减数据库规模(让数据库里的LSA变少)–设备压力小
    缩减路由表规模(让路由表里的路由条目变少)–设备压力小
    降低设备负载压力
  • 还可以引入外部路由

如何实现:

  • 不学习3类,4类和5类LSA
  • 只学习1类,2类和7类LSA

出现新问题:

  • 不学习4类和5类LSA,就无法计算出ospf外部路由
  • 没有外部路由,如何和A公司的PC3互联互通呢?
  • 不学习3类LSA,无法计算域间路由
  • 没有域间路由,如何与其他区域的网络互通呢?

解决方案:

  • NSSA区域的ABR会自动生成2条默认的LSA
  • 一条是默认的3类LSA:会计算出来一条ospf内部的默认路由
    协议是:ospf,优先级是10
  • 一条是默认的7类LSA:会计算出来一条ospf外部的默认路由
    协议是:ONSSA 优先级是150
  • 有两条默认的LSA,我们使用3类的默认LSA,计算ospf 默认路由。(为什么?因为3类LSA计算ospf内部路由,优先级10,7类LSA计算的ospf外部路由,优先级150,优先级越小越好,所以我们只用3类的默认LSA来计算ospf路由路由,计算出来的这条默认的OSPF内部路由与外部网络通信,与区域间网络通信)

配置方法:

  • totally NSSA区域的所有设备都要配置NSSA
  • totally NSSA区域的ABR设备,要配置 nssa no-summary:不要3类的LSA

totally NSSA区域特点:

  • totally NSSA 不要5类LSA,但是也可以引入外部路由,使用7类LSA引入
  • 骨干区域绝对不能做成totally NSSA区域

总结:

特殊区域的作用:

  • 保护一个区域不受来自外部链路的影响
  • 缩减 LSDB 和路由表的规模,减少路由信息数量,降低设备压力

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

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

相关文章

(2)双指针练习:复写零

复写零 题目链接:1089. 复写零 - 力扣(LeetCode) 给你一个长度固定的整数数组 arr ,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。 注意:请不要在超过该数组长度的位置写入元素。请对输入…

详解绝对路径和相对路径的区别

绝对路径和相对路径是用于描述文件或目录在文件系统中位置的两种不同方式。 绝对路径(Absolute Path)是从文件系统的根目录开始的完整路径,可以唯一地确定一个文件或目录的位置。在不同的操作系统中,根目录的表示方式可能略有不同…

那些年我与c++的叫板(一)--string类自实现

引子:我们学习了c中的string类,那我们能不能像以前数据结构一样自己实现string类呢?以下是cplusplus下的string类,我们参考参考! 废话不多说,直接代码实现:(注意函数之间的复用&…

【Qt】Qt开源项目

1、Flameshot 截图工具 1.1 简介 Flameshot是一款功能强大但易于使用的屏幕截图软件,中文名称火焰截图。 Flameshot 简单易用并有一个CLI版本,所以可以从命令行来进行截图。 Flameshot 是一个Linux发行版中完全免费且开源的截图工具 1.2 源码 github:https://github.com…

波搜索算法(WSA)-2024年SCI新算法-公式原理详解与性能测评 Matlab代码免费获取

​ 声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~ 目录 原理简介 一、初始化阶段 二、全…

计算机Java项目|Springboot高校心理教育辅导设计与实现

作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简…

ThreadLocal,一次到位

一、定义 ThreadLocal是线程私有变量&#xff0c;用于保存每个线程的私有数据。 那么什么情况下需要进行线程隔离 二、源码分析 public class ThreadLocalTest01 {ThreadLocal<Integer> t new ThreadLocal<>();public void test() {t.set(1);Integer integer…

前馈神经网络FNN、多层感知机MLP和反向传播推导

目录 一、前馈神经网络FNN 激活函数的使用 二、多层感知机MLP MLP的典型结构 多层感知机MLP的特点 和前馈神经网络FNN的区别 三、传播推导 1、前向传播(Forward propagation) &#xff08;1&#xff09;输入层到隐藏层 &#xff08;2&#xff09;隐藏层到输出层 2、…

如何去除字符串两侧的空白字符?

TRIM函数会去掉字符串左侧和右侧的空格&#xff0c;语法是&#xff1a;TRIM(字符串) excel中&#xff0c;TRIM函数能去掉字符串左侧和右侧的空格&#xff0c;它的ASCII码是32。 以下设定一个字符串组合&#xff0c;它的第一个字符中空格&#xff0c;最后一个字符是换行符 &q…

头歌实践教学平台:CG1-v1.0-点和直线的绘制

第3关&#xff1a;OpenGL直线绘制 一.任务描述 根据下面要求&#xff0c;在右侧修改代码&#xff0c;绘制出预期输出的图片。平台会对你编写的代码进行测试。 1.本关任务 理解基本图形元素光栅化的基本原理&#xff1b; 了解和使用OpenGL的生成直线的命令&#xff0c;来验证…

MySQL深入理解MVCC机制(详解)

深入理解MVCC 1、MVCC定义 MVCC:Multi-Version Concurrency Control&#xff0c;多版本并发控制机制。 在mysql中&#xff0c;为了满足事务的四大特性之一的隔离性&#xff0c;就是当前事务中的查询的数据不受其他事务的增删改操作的影响&#xff0c;因此mysql主要是通过这个…

VUE之旅—day2

文章目录 Vue生命周期和生命周期的四个阶段created应用—新闻列表渲染mounted应用—进入页面搜索框就获得焦点账单统计&#xff08;Echarts可视化图表渲染&#xff09; Vue生命周期和生命周期的四个阶段 思考&#xff1a; 什么时候可以发送初始化渲染请求&#xff1f;&#xff…

08 - hive的集合函数、高级聚合函数、炸裂函数以及窗口函数

目录 1、集合函数 1.1、size&#xff1a;集合中元素的个数 1.2、map&#xff1a;创建map集合 1.3、map_keys&#xff1a; 返回map中的key 1.4、map_values: 返回map中的value 1.5、array 声明array集合 1.6、array_contains: 判断array中是否包含某个元素 1.7、sort_a…

Java中的数组、Set、List、Map类型的互相转换总结

序言 数组、Set、List、Map是Java语言非常常用的几种数据类型&#xff0c;他们之间存在着千丝万缕的联系。关于底层的数据结构我这里就不再多说啦&#xff0c;直接从应用出发&#xff0c;总结他们之间的转换方法&#xff0c;并给出推荐方法。 大家可以点赞收藏等到需要的时候…

四、基于Stage模型的应用架构设计

前面我们了解了如何构建鸿蒙应用以及开发了第一个页面&#xff0c;这只是简单的demo&#xff1b;那么如何去设计&#xff0c;从0到1搭建一个真正的应用呢 一、基本概念 1、Stage模型基本概念 Stage模型概念图 AbilityStage&#xff1a;是一个Module级别的组件容器&#xff0…

C语言/数据结构——栈的实现

一.前言 今天我们讲解新的领域——栈。 二.正文 1.栈 1.1栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其允许在固定的一段进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#…

LLama3大模型本地部署 仅需6步完成对话模型本地安装部署。附送可视化ui安装、自定义模型目录,修改模型保存地址,第三方微调模型、中文模型下载地址

本篇分为三部分 一&#xff1a;6步完成llama3大模型本地部署 二&#xff1a;8步完成llama3可视化对话界面安装 三&#xff1a;重设模型文件路径 四&#xff1a;微调模型、中文模型下载资源分享 一、LLama3 大模型本地部署安装 首先去mata官网下载ollama客户端 Ollama 选择合适…

通俗易懂讲乐观锁与悲观锁

浅谈乐观锁与悲观锁 乐观锁和悲观锁是Java并发编程中的两个概念。使用乐观锁和悲观锁可以解决并发编程中数据不一致性、死锁、性能差等问题&#xff0c;乐观锁与悲观锁的实行方式不同&#xff0c;所以其特性也不近相同&#xff0c;下文将详细介绍两者的特性与适用场景。 《熊…

OFDM 802.11a的FPGA实现(十六)长训练序列:LTS(含Matlab和verilog代码)

目录 1.前言2.原理3.Matlab生成长训练序列4.硬件实现5.ModelSim仿真6.和Matlab仿真结果对比 原文链接&#xff08;相关文章合集&#xff09;&#xff1a; OFDM 802.11a的xilinx FPGA实现 1.前言 在之前已经完成了data域数据的处理&#xff0c;在构建整个802.11a OFDM数据帧的时…

【Redis】Redis面试和工作中十有八九会遇到的问题

1. 数据类型 常用的Redis数据类型有5种&#xff0c;分别是&#xff1a; String、List、Set、SortedSet、Hash 还有一些高级数据类型&#xff0c;比如Bitmap、HyperLogLog、GEO等&#xff0c;其底层都是基于上述5种基本数据类型。因此在Redis的源码中&#xff0c;其实只有5种数…