OSPF路由协议详解---通俗易懂!

server/2025/3/18 5:07:24/

目录

一、基本概念

1.概念

2.特点

3.相关术语

Router-ID

度量值

ABR与ASBR

二、报文

1.格式

2.报文

三、邻居建立过程

三张表

8状态

​编辑四、DR与BDR选举

选举规则

五、网络类型

六、LSA

OSPF%E7%9A%84%E7%89%B9%E6%AE%8A%E5%8C%BA%E5%9F%9F%E5%8F%8A%E9%98%B2%E7%8E%AF%E6%9C%BA%E5%88%B6-toc" name="tableOfContents" style="margin-left:0px">七、OSPF的特殊区域及防环机制

作用:

要求:

防环机制:

OSPF%E7%9A%84%E8%B7%AF%E5%BE%84%E9%80%89%E6%8B%A9-toc" name="tableOfContents" style="margin-left:0px">八、OSPF的路径选择

九、面试常问问题


一、基本概念

1.概念

开放式最短路径优先OSPF(Open Shortest Path First)是一种链路状态协议,具有路由变化收敛速度快、无路由环路、支持变长子网掩码(VLSM)和汇总、层次区域划分等优点,基于IP协议89号(协议号)

2.特点

  • 基于链路状态的路由协议

  • 支持层次化的网络设计

  • 支持可变长子网掩码(VLSM)

  • 快速收敛

  • 无环路设计

  • 支持多路径负载均衡

  • 强大的认证机制

  • 灵活的度量值设置

  • 支持多种网络类型

  • 路由优先级为10(优先级值越低表示优先级越高)

  • 采用组播的方式更新

(224.0.0.5表示所有运行OSPF的设备都属于该组,224.0.0.6表示DR与BDR属于该组)

3.相关术语

Router-ID

(非抢占式)

RID用于OSPF域中唯一的标识

RID的优先级顺序

①手工配置RID(优先级最高)

②无手动配置最大回环口的IP地址(因为回环接口稳定而物理接口状态可能受实际环境up/down)

③无回环口接口则选举最大的物理接口IP地址

度量值

ospf使用cost(开销)作为度量值,路由协议继优先级之后根据开销来选择路径。

10^8(100Mbit)/接口带宽=接口开销,所有的接口开销总和=接口开销

(根据上面公式可知接口带宽越大接口开销越小,路径越优)

ABR与ASBR

区域边界路由器ABR

ABR路由器至少有一个接口是属于骨干区域的,而且必须为每一个与之相连的区域维护不同的链路状态数据库,另一个接口连接非骨干区域、

自治边界路由器ASBR

只要一台OSPF路由器引入了外部路由的信息,它就成为ASBR

骨干区域

area0

非骨干区域

非area 0

AS

OSPF Area用于标识一个OSPF的区域。

二、报文

1.格式

OSPF通用报文格式
字段名长度(字节)功能描述
Version1OSPF协议版本,目前为2(OSPFv2)或3(OSPFv3)。
Type1报文类型,标识报文的种类(Hello、DD、LSR、LSU、LSAck)。
Packet Length2整个OSPF报文的长度,包括OSPF头部。
Router ID4发送该报文的路由器的ID。
Area ID4报文所属的区域ID,0表示骨干区域。
Checksum2校验和,用于检测报文在传输过程中是否出错。
AuType2认证类型,标识使用的认证方式(0:无认证,1:简单密码,2:MD5)。
Authentication8认证信息,根据AuType字段的不同,可以是密码或MD5摘要。

2.报文

Hello:hello报文

作用:用来发现、建立、维护邻居之间的关系

参数:区域、hello time(10s)、Dead time(40s)、优先级、认证类型、组播地址

DBD:数据库的摘要(LSA信息)

作用:用于向邻居通告自己所知道LSA摘要信息

参数:

LSR:链路状态请求包

作用:根据收到的DBD报文之后,设备会向邻居发送LSR,告诉邻居之间需要哪些LSA相关信息

LSU:链路状态更新包

作用:邻居接收到从邻居发送来的LSR,根据LSR,将邻居需要的完整LSA内容全部发送

LSAck:链路状态确认包

作用:对邻居发送过来的LSU进行确认

三、邻居建立过程

三张表

邻居表:存放邻居的相关信息

当发送的hello报文被对方发现并确认之后,则将其加入到邻居表中

条件:地址以及掩码要一致、hello time、dead time要一致、区域要一样、认证类型要一样、特殊区域要一样

这个时候邻居关系two-way状态

设备通过了hello报文的交互,但可能并未开始交互LSA信息,只有当邻居之间交换LSA信息之后,邻居关系才为full状态

拓扑表:存放每台设备对整个拓扑的认知(称为链路状态数据库--LSDB)

路由表:存放从拓扑表中通过SPF计算出来的最优路径

8状态

①down:

没有收到其他的hello报文

②init:初始化状态(单向通信)

接口刚启用OSPF,往组播224.0.0.5发送hello报文,接收到邻居发送的hello报文,但邻居并收到自己发送的hello报文

③two-way:邻居状态(双向通信)

在组播地址中收到邻居发送的hello报文并且对方已经添加了自己网段RID的hello报文(即邻居之间均收到对方发送的hello报文),这时候进行DR/BDR的选举

④exstart:预启动状态

选举主从关系为了确定在exchange状态有序发送DBD报文

(若两端的MTU不一致会卡在这个状态)

⑤exchange:交换状态

互相交换机DBD(数据库摘要信息),建立各自的拓扑表

⑥loading:加载状态

请求对方的LSA全部信息,交互LSR、LSU、LSAck

⑦full:邻接状态

建立邻居关系,达到LSDB同步

⑧attempt(特殊):尝试状态

只有可能出现非广播多路访问环境中,想要建立OSPF的邻居关系,但不知道发数据包发给谁

报文及状态过程:

四、DR与BDR选举

OSPF中,多路访问网络(如以太网)上可以有多个路由器互连。为了减少网络中的广播流量,OSPF引入了DR和BDR的角色。DR负责向所有非DR/BDR路由器发送和接收链路状态更新(LSU),而BDR则是DR的备份,当DR失效时,BDR会自动接管DR的职责。

DR(Designated Router):在一个多路访问网络中,DR是唯一负责与其他路由器交换链路状态信息的路由器。它会将接收到的链路状态更新(LSU)转发给所有非DR/BDR的路由器,从而减少网络中的广播流量。
BDR(Backup Designated Router):BDR是DR的备份,当DR失效时,BDR会立即接管DR的职责,确保网络的正常运行。

(非抢占式)

举个栗子:

老师布置作业之后,每个人都要将作业讲给老师,老师还有其他班的学生很不方便。这时候出现了班长(DR),所以学生将作业交给班长,如果班长有事,那就将作业交给学习委员(BDR),这样就不会使作业乱传了。

选举规则

①比较接口优先级,大的优先
②以太网环境优先级默认为1,串行链路默认为0
③优先级一样,比较RID,RID大的优先

五、网络类型

六、LSA

LSA:Link State Advertisement,链路状态通告,路由器发出的关于网络结构的通告,描述了链路或接口的状态及每条链路的成本

链路状态数据库(LSDB)由LSA组成

LSA的老化时间为3600s,更新时间为1800s

区域内:

区域间:

OSPF%E7%9A%84%E7%89%B9%E6%AE%8A%E5%8C%BA%E5%9F%9F%E5%8F%8A%E9%98%B2%E7%8E%AF%E6%9C%BA%E5%88%B6" name="%E4%B8%83%E3%80%81OSPF%E7%9A%84%E7%89%B9%E6%AE%8A%E5%8C%BA%E5%9F%9F%E5%8F%8A%E9%98%B2%E7%8E%AF%E6%9C%BA%E5%88%B6">七、OSPF的特殊区域及防环机制

作用:

  • 可以对OSPF路由域进行优化,可以过滤区域内部的不需要的路由信息
  • 加快OSPF区域内部收敛
  • 降低路由器的资源消耗

要求:

  • 骨干区域不能配置为特殊区域
  • Stub区域不能有ASBR存在,除非这台ASBR也是ABR必须存在至少一个ABR
  • 特殊区域是邻居建立成功的条件之一,要求同一个区域中的所有路由器都必须配置为特殊区域
  • 虚链路不能透传特殊区域

Stub区域:(末梢区域)

作用:过滤LSA4、LSA5两类外部路由,并且ABR会向区域内自动下发一条默认路由

Totally Stub区域:(完全末梢区域)

作用:在Stub区域的基础上继续过滤,过滤掉LSA3区域间的路由,并且ABR会向区域内自动下发一条默认路由

NSSA区域:(非末梢区域)

作用:过滤掉LSA4、LSA5的外部路由,自己产生的LSA4和LSA5不过滤,而是变成新的LSA7,ABR不会向区域内部下发一条默认路由

Totally NSSA区域:(完全非末梢区域

作用:在NSSA区域的基础上,过滤掉LSA3区域间的路由,并且ABR会向内部自动下发一条默认路由

防环机制:

区域内:(LSA1/2)

100%无环、SPF算法

区域间:(LSA3/4)

要求非骨干区域必须与骨干区域直连,非骨干区域之间不能直连

ABR设备从某个区域学习到LSA3路由信息不会再发送到该区域中

区域外:(LSA5)

FA地址(转发地址)OSPF的区域外防环机制通过FA地址(Forwarding Address)实现,FA地址用于指示外部路由的下一跳地址。ASBR的某个接口满足FA地址生成条件,因此FA地址被设置为该接口的IP地址。

FA地址为0.0.0.0时,流量通过ASBR转发;

FA地址为非0.0.0.0时,流量直接转发到FA地址指定的设备。

条件:FA地址的生成需要满足接口类型为广播与非广播多路、不能是被动接口,FA地址所在接口需通告进OSPF

示例:

OSPF%E7%9A%84%E8%B7%AF%E5%BE%84%E9%80%89%E6%8B%A9" name="%E5%85%AB%E3%80%81OSPF%E7%9A%84%E8%B7%AF%E5%BE%84%E9%80%89%E6%8B%A9">八、OSPF的路径选择

区域内>区域间>区域外

九、面试常问问题

1.

mtu在哪里协商,是怎么协商的?如果协商不通过,会出现什么问题?

exstart阶段会进行协商。(华为默认不协商。报文中 MTU的字段填充为O)MTU协商规则:对方 DD 报文中 mtu 字段的值<=接收报文接口的 mtu 值。如果协商不通过会导致邻接关系停留在 exstart状态,无法建立full的邻接关系。

2.

为什么MA网络需要比较掩码?

如果在MA 网络中掩码不一致也能建立邻居关系,会导致DR无法正确描述当前MA网络的路由信息。

3.

两端的网络类型不一致时,会不会建立邻居?能建立邻居,路由是否正常?

NBMA只能与NBMA建立full邻接关系,与其他网络类型都无法建立FULL的邻居关系; 

broadcast与P2P,能建立full邻接关系,但不能正常计算路由;

broadcas与 P2MP,通过修改hello/dead timer可以建立 full邻接关系,但也不能计算路由;

P2P与P2MP,通过修改hello/dead timer可以建立full 邻接关系,路由计算也正常

4.

MA网络中DRother只和DR/BDR建立邻接关系,这一机制是如何实现的?

DRother只与DR和BDR建立全邻接关系(Full Adjacency)。DRother之间不会建立全邻接关系,而是保持2-Way状态。在Hello报文中,路由器会列出已知的DR和BDR。DRother通过Hello报文确认DR和BDR的身份。当DRother收到DR或BDR的Hello报文时,会将邻居状态从Init转换为2-Way。DRother与DR/BDR建立邻接关系后,会通过DD(Database Description)报文(单播)LSR(Link State Request)报文LSU(Link State Update)报文同步链路状态信息。

5.

为什么NBMA无法和其他网络类型建立邻居关系?

因为 NBMA 是通过手动、单播的方式发现邻居、发送hello 报文的,而其他网络类型即使配置了peer,也不会单播的发送hello 报文。

6.

以太网链路将网络类型改为P2P,接口不在同一网段是否能建立OSPF邻接关系?

可以,因为P2P是以DIP:224.0.0.5发送OSPF的hello报文的,而只要宣告进OSPF进程中的接口就等于加入了这个组,所以 AR1和AR2 接口即使不在同一网段,也能建立邻居关系,同时也能学习到路由。但是无法互访,因为底层链路是以太网链路,不同网段互访需要有路由以及相应的2层封装。

7.

为什么Area0不能配置成特殊区域?

特殊区域都会过滤5类LSA,如果Area0可以配置成特殊区域,那么将导致Area0和某些区域可能不存在外部路由而无法访问外部网络。

面试题来源于原文链接:https://blog.csdn.net/atmxs/article/details/142520462


http://www.ppmy.cn/server/175869.html

相关文章

不同路径

一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路径&#xff1f; 示例 …

【从零开始学习计算机科学】软件工程(三)需求工程

【从零开始学习计算机科学】软件工程(三)需求工程 需求工程好的需求应具备的特征:需求工程(Requirement Engineering, RE)起始导出需求讨论会头脑风暴调查问卷场景分析法实地考察原型法精化协商规格说明确认需求管理需求工程 设计和开发一个计算机软件时,如果软件解决的…

判断字符串是否为回文(信息学奥赛一本通-1146)

【题目描述】 输入一个字符串&#xff0c;输出该字符串是否回文。回文是指顺读和倒读都一样的字符串。 【输入】 输入为一行字符串&#xff08;字符串中没有空白字符&#xff0c;字符串长度不超过100&#xff09;。 【输出】 如果字符串是回文&#xff0c;输出yes&#xff1b;否…

基于单片机的智能电表设计(论文+源码)

1 系统整体方案设计 本课题为基于单片机的电子式单项智能电表&#xff0c;在此设计如图2.1所示的系统总体架构&#xff0c;其采用STM32单片机作为主控制器&#xff0c;搭配外设HLW8032模块实现对电压&#xff0c;电流&#xff0c;功率因数&#xff0c;电能消耗等参数进行检测&…

数据结构(一)——绪论

一、数据结构的研究内容 1.数据的各种逻辑结构和物理结构&#xff0c;以及他们之间的相应关系 2.存储结构的方法&#xff0c;对每种结构定义相适应的各种运算 3.设计出相应的算法 4.分析算法的效率 二、数据结构的基本概念 1.数据&#xff08;data&#xff09;&#xff1a…

Redis 的特点

高性能&#xff1a; 数据存储在内存中&#xff0c;读写速度极快。单线程模型避免了多线程的竞争&#xff0c;简化了设计。 丰富的数据结构&#xff1a; 支持字符串、哈希、列表、集合、有序集合等多种数据结构&#xff0c;适应不同场景。 持久化&#xff1a; 提供 RDB 和 AOF…

【每日学点HarmonyOS Next知识】状态栏字体、生命周期、自定义对话框屏幕中间、透明度、tab居中

1、HarmonyOS 单页面如何控制状态栏字体颜色&#xff1f; 状态栏字体颜色可通过设置statusBarContentColor修改&#xff0c;参考文档如下&#xff1a; https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5 参考代码&#xff1a; import…

ASP.NET Webform和ASP.NET MVC 后台开发 大概80%常用技术

本文涉及ASP.NET Webform和ASP.NET MVC 后台开发大概80%技术 2019年以前对标 深圳22K左右 广州18K左右 武汉16K左右 那么有人问了2019年以后的呢&#xff1f; 答&#xff1a;吉祥三宝。。。 So 想继续看下文的 得有自己的独立判断能力。 C#.NET高级笔试题 架构 优化 性能提…