问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

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

创作时间:
作者:
@小白创作中心

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

引用
CSDN
1.
https://blog.csdn.net/2403_83112422/article/details/146315993

OSPF(开放式最短路径优先)是一种链路状态路由协议,广泛应用于大规模网络中。本文将从基本概念、报文格式、邻居建立过程、DR与BDR选举、网络类型、LSA、特殊区域及防环机制、路径选择等多个方面,详细解析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通用报文格式字段名 长度(字节) 功能描述
Version 1 OSPF协议版本,目前为2(OSPFv2)或3(OSPFv3)。
Type 1 报文类型,标识报文的种类(Hello、DD、LSR、LSU、LSAck)。
Packet Length 2 整个OSPF报文的长度,包括OSPF头部。
Router ID 4 发送该报文的路由器的ID。
Area ID 4 报文所属的区域ID,0表示骨干区域。
Checksum 2 校验和,用于检测报文在传输过程中是否出错。
AuType 2 认证类型,标识使用的认证方式(0:无认证,1:简单密码,2:MD5)。
Authentication 8 认证信息,根据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的特殊区域及防环机制

作用:

  • 可以对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的路径选择

区域内>区域间>区域外

九、面试常问问题

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

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

两端的网络类型不一致时,会不会建立邻居?能建立邻居,路由是否正常?
NBMA只能与NBMA建立full邻接关系,与其他网络类型都无法建立FULL的邻居关系;
broadcast与P2P,能建立full邻接关系,但不能正常计算路由;
broadcas与 P2MP,通过修改hello/dead timer可以建立 full邻接关系,但也不能计算路由;
P2P与P2MP,通过修改hello/dead timer可以建立full 邻接关系,路由计算也正常

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)报文同步链路状态信息。

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

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

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

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

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号
OSPF路由协议详解---通俗易懂!