相关文章推荐
烦恼的手术刀  ·  万年青怎么养才茂盛?能够开花吗?_手机搜狐网·  5 月前    · 
欢乐的小虾米  ·  《红楼梦》主题曲,王立平想启用业余歌手陈力, ...·  1 年前    · 
近视的炒面  ·  54岁的布登霍尔泽,走到今天这一步,午夜梦回 ...·  1 年前    · 
不爱学习的墨镜  ·  鲁晓明:“老伴”的多元选择——老龄社会婚姻规 ...·  1 年前    · 
淡定的鸡蛋  ·  居里夫人后人追忆钱三强:他是我父母学生中地位 ...·  1 年前    · 
小百科  ›  精!万字15图详解OSPF路由协议开发者社区
路由协议 报文交换 链路状态路由协议 路由 ospf
温文尔雅的砖头
1 年前
作者头像
网络工程师笔记
0 篇文章

精!万字15图详解OSPF路由协议

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > 网络工程师笔记 > 正文

精!万字15图详解OSPF路由协议

发布 于 2021-06-23 00:48:40
1.3K 0
举报

上帝视角

OSPF出现背景

如上图就是一张简单的OSPF协议网络,那么为什么会出现OSPF协议呢?

开放式最短路径优先OSPF(Open Shortest Path First)协议是IETF定义的一种 基于链路状态的内部网关路由协议 。

为什么会出现OSPF?:因为 RIP是一种基于距离矢量算法的路由协议 ,存在着

  • 收敛慢;
  • 易产生路由环路;
  • 可扩展性差,最大只能支持15跳。

OSPF的出现很好地解决了上述3个问题,那么 OSPF是如何解决上述3个问题的呢 ?我们一起来看下。

什么是OSPF协议?

OSPF是一种基于链路状态的路由协议,它从设计上保证了无路由环路。

那么什么是链路状态协议?

如果说距离矢量路由协议提供的是 路标 ,那么链路状态路由协议提供的就是 地图 。 每个运行链路状态协议的路由器上都有一张完整的网络图。

就好比你有一张地图怎么还会迷路?运行 链路状态协议 的每一台路由器都会有一张地图库从而避免了环路。

链路状态协议工作原理

每台运行 链路状态路由协议 的路由器都 了解整个网络的链路状态信息(地图) ,这样才能计算出到达目的地的 最优路径 。

1、LSA泛洪:

运行 链路状态路由协议 的路由器都会进行 链路状态公告LSA (Link State Advertisement)泛洪 ,LSA中包含了路由器已知的接口状态、接口IP地址、掩码、开销和网络类型等信息。

通俗点讲就是每台路由器都会将 一些关于自己,关于本地直连链路以及这些链路的状态和关于所有直连邻居的信息 传送给相邻的其他路由器。

2、建立LSDB:

收到LSA的路由器都可以根据LSA提供的信息建立自己的 链路状态 数据库 LSDB(Link State Database) 。

通俗点讲就是每台路由器都会收到网络中其他的路由器发送过来的LSA信息,这些所有的LSA信息构成了LSDB。这里需要注意的是当网络稳定后,网络中的所有设备应该是有相同的LSDB的。

3、建立最短路径树:

运行OSPF协议的路由器在LSDB的基础上使用 SPF算法 进行运算,建立起到达每个网络的 最短路径树 。

4、路由计算:

通过最短路径树得出到达目的网络的最优路由,并将其加入到IP路由表中。

常见的链路状态协议有:

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

IS-IS :中间系统到中间系统协议

OSPF协议特点

OSPF支持区域的划分,区域内部的路由器使用SPF最短路径算法保证了区域内部的无环路;

A、为什么划分区域?

划分OSPF区域可以 缩小路由器的LSDB规模 ,减少网络流量。

区域内的详细拓扑信息 不向其他区域发送, 区域间传递的是抽象的路由信息 ,而不是详细的描述拓扑结构的链路状态信息。

每个区域都有自己的LSDB,不同区域的LSDB是不同的。 路由器会为每一个自己所连接到的区域维护一个单独的LSDB。由于详细链路状态信息不会被发布到区域以外,因此LSDB的规模大大缩小了。

B、OSPF是如何划分区域的呢?

1、 路由器的每个接口可以被划分在一个区域 ,一个路由器可以同时属于多个区域。

2、 Area 0为骨干区域 ,其他区域为非骨干区域。每个非骨干区域都必须连接到骨干区域。

3、运行在区域之间的路由器叫做 区域边界路由器ABR(Area Boundary Router) ,它包含所有相连区域的LSDB。

自治系统边界路由器ASBR(Autonomous System Boundary Router) 是指和其他AS中的路由器交换路由信息的路由器,这种路由器会向整个AS通告AS外部路由信息。

C、为什么SPF算法可以保证区域内无环路?

SPF算法 将每一个路由器作为根(ROOT)来计算其到每一个目的地路由器的距离,每一个路由器根据一个统一的数据库会计算出路由域的拓扑结构图,该结构图类似于一棵树,在SPF算法中,被称为 最短路径树 。 树形是无环路的。

OSPF利用区域间的连接规则保证了区域之间无路由环路。

为了 避免区域间路由环路 ,非骨干区域之间不允许直接相互发布路由信息,所有的非骨干区域间通信都需要借助骨干区域。因此,每个区域都必须连接到骨干区域。

OSPF通过LSA(Link State Advertisement)的形式发布路由;

OSPF依靠在OSPF区域内各设备间交互OSPF报文来达到路由信息的统一;

OSPF报文封装在IP报文内,可以采用单播或组播的形式发送;

OSPF支持触发更新,能够快速检测并通告自治系统内的拓扑变化

OSPF协议router id

Router ID

Router ID是一个32位的值,它 唯一标识了一个自治系统内的路由器 ,可以为每台运行OSPF的路由器上可以 手动配置 一个Router ID,或者指定一个IP地址作为Router ID。

如果没有手动配置Router ID,运行OSPF协议的路由器如何选取Router ID?

1、如果设备存在多个逻辑接口地址,则路由器使用 逻辑接口中最大的IP地址 作为Router ID;

2、如果没有配置逻辑接口,则路由器使用 物理接口的最大IP地址 作为Router ID。

注意:

1、在为一台运行OSPF的路由器配置新的Router ID后,需要在路由器上通过 重置OSPF进程 来更新Router ID。

2、通常建议 手动配置Router ID ,以防止Router ID因为接口地址的变化而改变。

OSPF协议邻居/邻接

邻居(Neighbor):

OSPF路由器启动后,便会通过OSPF接口向外 发送Hello报文 用于 发现邻居 。

收到Hello报文的OSPF路由器会检查报文中所定义的一些参数, 如果双方的参数一致,就会彼此形成邻居关系 。

邻接(Adjacency):

形成邻居关系的双方不一定都能形成邻接关系,这要 根据网络类型 而定。

只有当双方成功交换DD报文,并能交换LSA之后,才形成真正意义上的邻接关系。

OSPF协议网络类型

OSPF协议支持四种网络类型,分别是 点到点网络 , 广播型网络 , NBMA网络 和 点到多点网络 。

1、点到点网络 是指只把两台路由器直接相连的网络。一个运行PPP的64K串行线路就是一个点到点网络的例子。

2、广播型网络 是指支持两台以上路由器,并且具有广播能力的网络。一个含有三台路由器的以太网就是一个广播型网络的例子。

OSPF可以在不支持广播的 多路访问网络 上运行,此类网络包括在hub-spoke拓扑上运行的帧中继(FR)和异步传输模式(ATM)网络,这些网络的通信依赖于虚电路。

OSPF定义了两种支持多路访问的网络类型: 非广播多路访问网络(NBMA) 和 点到多点网络(Point To Multi-Points) 。

3、NBMA: 在NBMA网络上,OSPF模拟在广播型网络上的操作,但是每个路由器的邻居需要手动配置。NBMA方式要求网络中的路由器组成全连接。

缺省情况下,OSPF认为帧中继、 ATM的网络类型是NBMA。

4、P2MP: 将整个网络看成是一组点到点网络。对于不能组成全连接的网络应当使用点到多点方式。

注意:

现网中遇到的大部分属于 点到点网络 和 广播型网络, 因为帧中继、 ATM网络基本已经淘汰了。

DR&BDR选举

为减小 广播型网络 和 NBMA网络 中OSPF流量,OSPF会选择一个指定路由器(DR)和一个备份指定路由器(BDR)。

选举DR&BDR的条件:

每一个含有 至少两个路由器 的 广播型网络 和 NBMA网络 都有一个DR和BDR。在 点到点网络 和 P2MP 不需要选举 DR&BDR。

DR&BDR的工作原理

1、当指定了DR后,所有的路由器都与DR建立起邻接关系, DR成为该广播网络上的中心点 ;

2、 BDR在DR发生故障时接管业务 ,一个广播网络上所有路由器都必须同BDR建立邻接关系。

为什么需要选举DR&BDR?

1、DR和BDR可以 减少邻接关系的数量 ,从而减少链路状态信息以及路由信息的交换次数,这样可以节省带宽,降低对路由器处理能力的压力。

2、一个既不是DR也不是BDR的路由器只与DR和BDR形成邻接关系并交换链路状态信息以及路由信息,这样就 大大减少了大型广播型网络和NBMA网络中的邻接关系数量 。

DR&BDR的选举

在 邻居发现完成 之后,路由器会根据 网段类型 进行 DR选举 。

1、在广播和NBMA网络上,路由器会 根据参与选举的每个接口的优先级 进行DR选举。

优先级取值范围为0-255,值越高越优先。缺省情况下,接口优先级为1。如果一个接口优先级为0,那么该接口将不会参与DR或者BDR的选举。

2、如果优先级相同时, 则比较Router ID ,值越大越优先被选举为DR。

为了给DR做备份,每个广播和NBMA网络上 还要选举一个BDR 。BDR也会与网络上所有的路由器建立邻接关系。

为了维护网络上邻接关系的稳定性,如果网络中已经存在DR和BDR,则 新添加进该网络的路由器不会成为DR和BDR,不管该路由器的Router Priority是否最大 。如果当前DR发生故障,则当前BDR自动成为新的DR,网络中重新选举BDR;如果当前BDR发生故障,则DR不变,重新选举BDR。这种选举机制的目的是为了保持邻接关系的稳定,使拓扑结构的改变对邻接关系的影响尽量小。

例子:

在没有DR的广播网络上,邻接关系的数量可以根据公式n(n-1)/2计算出,n代表参与OSPF的路由器接口的数量。

如图所示,所有路由器之间有6个 邻接关系 。本例中使用DR和BDR将邻接关系从6减少到了5,RTA和RTB都只需要同DR和BDR建立邻接关系,RTA和RTB之间建立的是邻居关系。

此例中, 邻接关系数量的减少效果并不明显。但是,当网络上部署了大量路由器时,比如100台,那么情况就大不一样了 。

OSPF协议5种报文

OSPF直接运行在 IP协议之上 ,使用IP协议号 89 。

运行OPSF协议的路由器 通过5种报文的交互从邻居状态达到邻接状态 ,完成LSA的泛洪,使网络的路由器LSDB达到一致,每个路由器按照自己LSDB根据SPF算法计算路径,生成最优路由加入路由表。

下面我们一起看下这个五种报文类型,每种报文都使用相同的OSPF报文头。

1、Hello报文:

  • 最常用的一种报文, 用于发现、维护邻居关系 。
  • 在广播和NBMA(None-Broadcast Multi-Access)类型的网络中 选举指定路由器DR(Designated Router)和备份指定路由器BDR(Backup Designated Router) 。

2、DD报文:

  • 两台路由器进行LSDB数据库同步时, 用DD报文来描述自己的LSDB 。
  • DD报文的内容包括LSDB中每一条LSA的头部(LSA的头部可以唯一标识一条LSA)。LSA头部只占一条LSA的整个数据量的一小部分,所以, 这样就可以减少路由器之间的协议报文流量 。

3、LSR报文:

  • 两台路由器互相交换过DD报文之后,知道对端的路由器有哪些LSA是本地LSDB所缺少的,这时需要 发送LSR报文向对方请求缺少的LSA,LSR只包含了所需要的LSA的摘要信息。

4、LSU报文: 用来向对端路由器 发送所需要的LSA 。

5、LSACK报文: 用来对接收到的 LSU报文进行确认 。

OSPF协议状态机

运行OPSF协议的路由器通过5种报文的交互从邻居状态达到邻接状态,中间可能会经历以下8种状态:

Down: 这是邻居的初始状态,表示没有从邻居收到任何信息。

Attempt: 此状态只在NBMA网络上存在,表示没有收到邻居的任何信息,但是已经周期性的向邻居发送报文,发送间隔为HelloInterval。如果RouterDeadInterval间隔内未收到邻居的Hello报文,则转为Down状态。

Init: 在此状态下,路由器已经从邻居收到了Hello报文,但是自己不在所收到的Hello报文的邻居列表中,尚未与邻居建立双向通信关系。

2-Way: 在此状态下,双向通信已经建立,但是没有与邻居建立邻接关系。这是建立邻接关系以前的最高级状态。

ExStart: 这是形成邻接关系的第一个步骤,邻居状态变成此状态以后,路由器开始向邻居发送DD报文。主从关系是在此状态下形成的,初始DD序列号也是在此状态下决定的。在此状态下发送的DD报文不包含链路状态描述。

Exchange: 此状态下路由器相互发送包含链路状态信息摘要的DD报文,描述本地LSDB的内容。

Loading: 相互发送LSR报文请求LSA,发送LSU报文通告LSA。

Full: 路由器的LSDB已经同步

OSPF协议详细工作原理

结合 OSPF协议的5种报文 和 8种邻居状态机 来一起看下OPSF的工作过程:

1、邻居发现:

运行OSPF协议的路由器会发送 Hello报文 ,用来发现和维持OSPF邻居关系;

Hello报文结构:

Hello报文中的重要字段解释如下:

Network Mask: 32比特,发送Hello报文的接口的网络掩码。

HelloInterval: 16比特,发送Hello报文的时间间隔,单位为秒。 默认是10S。

Options: 8比特,标识发送此报文的OSPF路由器所支持的可选功能。

可选项:

  • E:允许Flood AS-External-LSAs
  • MC:转发IP组播报文
  • N/P:处理Type-7 LSAs
  • DC:处理按需链路
 
推荐文章
烦恼的手术刀  ·  万年青怎么养才茂盛?能够开花吗?_手机搜狐网
5 月前
欢乐的小虾米  ·  《红楼梦》主题曲,王立平想启用业余歌手陈力,可没有一个人支持_ ...
1 年前
近视的炒面  ·  54岁的布登霍尔泽,走到今天这一步,午夜梦回时他是否会后悔 ...
1 年前
不爱学习的墨镜  ·  鲁晓明:“老伴”的多元选择——老龄社会婚姻规则多元论- 民事法学 ...
1 年前
淡定的鸡蛋  ·  居里夫人后人追忆钱三强:他是我父母学生中地位最特殊的一个-新华网
1 年前
Link管理   ·   51好读   ·   Sov5搜索   ·   小百科
小百科 - 百科知识指南