专业认证

关注公众号 jb51net

关闭
IT专业知识 > 专业认证 >

华为HCIP认证学习笔记 - OSPF协议基础详解

咸鱼13

本文讲述了华为HCIP认证OSPF协议。分享给大家供大家参考,具体如下:
 

OSPF协议基础


◉ 链路状态路由协议OSPF

在这里插入图片描述
所谓Link State(链路状态)指的就是路由器的接口状态。

路由信息传递与路由计算分离
OSPF作为链路状态路由协议,不直接传递各路由器的路由表,而传递链路状态信息,各路由器基于链路状态信息独立计算路由。

基于SPF算法
所有路由器各自维护一个链路状态数据库。邻居路由器间先同步链路状态数据库,再各自基于SPF(Shortest Path First)算法计算最优路由,从而提高收敛速度。

以“累计链路开销”作为选路参考值
在度量方式上,OSPF将链路带宽作为选路时的参考依据。“累计带宽”是一种要比“累积跳数”更科学的计算方式。

◉ OSPF的工作过程

在这里插入图片描述
OSPF的路由计算过程


OSPF基本工作原理

◉ 邻居建立过程

Router ID

在这里插入图片描述
用于在自治系统中唯一标识一台运行OSPF的路由器,每台运行OSPF的路由器都有一个Router ID。

Router ID是一个32位的无符号整数,其格式和IP地址的格式是一样的。

OSPF的路由器Router ID重新配置后,可以通过重置OSPF进程来更新Router ID。

Router ID选举规则

发现并建立邻居 - Hello报文

OSPF路由器之间在交换链路状态信息之前,首先需要彼此建立邻居关系,通过Hello报文实现。

Hello报文的作用

OSPF邻居建立过程

状态含义

邻居建立过程

因为邻居都是未知的,所以Hello报文的目的IP地址不是某个特定的单播地址。邻居从无到有,OSPF采用组播的形式发送Hello报文(目的地址224.0.0.5)。

发现并建立邻居 - 手动建立

在这里插入图片描述
OSPF支持通过单播方式建立邻居关系。

对于不支持组播的网络可以通过手动配置实现邻居的发现与维护。

当网络规模越来越大或者设备频繁更新,相关联的OSPF路由器都需要更改静态配置,手动更改配置的工作量变大且容易出错。除了特殊场景,一般情况下不适用手动配置的方式。

OSPF路由器之间建立邻居关系是为了同步链路状态信息。


◉ 链路状态信息

OSPF路由器同步的是最原始的链路状态信息,而且对于邻居路由器发来的链路状态信息,仅作转发。最终所有路由器都将拥有一份相同且完整的原始链路状态信息。

每台运行OSPF协议的路由器所描述的信息中都应该包括链路的类型、接口IP地址及掩码、链路上的邻居、链路的开销等信息。

路由器只需要知道目的网络号/掩码、下一跳、开销(接口IP地址及掩码、链路上的邻居、链路的开销)即可。

网络类型 - P2P网络

P2P网络连接了一对路由器,广播、组播数据包都可以转发。

P2P网络的例子:两台通过PPP(Point-to-Point Protocol)链路相连的路由器网络。

网络类型 - 广播型网络

在这里插入图片描述
广播型网络支持两台及两台以上的设备接入同一共享链路且可以支持广播、组播报文的转发,是OSPF最常见的网络类型。

广播型网络的例子:通过以太网链路相连的路由器网络。

同时因为一个广播型网络中存在多台设备,邻居关系建立以及链路信息同步方面,OSPF都有对应的特性来减少同一网络多台设备带来的不利影响。

网络类型 - NBMA网络

与广播型网络不同的是NBMA网络默认不支持广播与组播报文的转发。在NBMA网络上,OSPF模拟在广播型网络上的操作,但是每个路由器的邻居需要手动配置。

NBMA(non-broadcast multiple access)型网络的例子:通过全互连的帧中继链路相连的路由器网络。

在现在的网络部署中,NBMA网络已经很少了。

网络类型 - P2MP网络

将一个非广播网络看成是一组P2P网络,这样的非广播网络便成为了一个点到多点(P2MP)网络。在P2MP网络上,每个路由器的OSPF邻居可以使用反向地址解析协议(Inverse ARP)来发现。P2MP可以看作是多个P2P的集合,P2MP可以支持广播、组播的转发。

没有一种链路层协议默认属于P2MP类型网络,也就是说必须是由其他的网络类型强制更改为P2MP。常见的做法是将非完全连接的帧中继或ATM改为P2MP的网络。

OSPF的度量方式

在这里插入图片描述
OSPF在计算接口的cost时,cost=参考带宽/实际带宽,默认参考带宽为100M。当计算结果有小数位时,只取整数位;结果小于1时,cost取1。

若需要调整接口cost值有两种方式:

OSPF以“累计cost”为开销值,也就是流量从源网络到目的网络所经过所有路由器的出接口的cost总和,以RTA访问RTC Loopback 1接口192.168.3.3为例,其cost=G1’s cost+G3’s cost。

OSPF的度量方式不仅考虑“跳数”,而且还考虑了“带宽”,选择最优的转发路径。


◉ 报文类型及作用

OSPF协议报文头部

在这里插入图片描述
OSPF有规定的通信标准,使用IP承载其报文,协议号为89。

在OSPF Packet部分,所有的OSPF报文均使用相同的OSPF报文头部:

OSPF报文类型

在这里插入图片描述
Type=1为Hello报文,用来建立和维护邻居关系,邻居关系建立之前,路由器之间需要进行参数协商。

Type=2为数据库描述报文(DD),用来向邻居路由器描述本地链路状态数据库,使得邻居路由器识别出数据库中的LSA是否完整。

Type=3为链路状态请求报文(LSR),路由器根据邻居的DD报文,判断本地数据库是否完整,如不完整,路由器把这些LSA记录进链路状态请求列表中,然后发送一个LSR给邻居路由器。

Type=4为链路状态更新报文(LSU),用于响应邻居路由器发来的LSR,根据LSR中的请求列表,发送对应LSA给邻居路由器,真正实现LSA的泛洪与同步。

Type=5为链路状态确认报文(LSAck),用来对收到的LSA进行确认,保证同步过程的可靠性。

DD、LSR、LSU、LSAck与LSA的关系

OSP报文的功能需求

在这里插入图片描述
OSPF路由器之间为了完成LSA的同步,可以直接把本地所有LSA发给邻居路由器,但是邻居路由器直接同步LSA并不是最好的方式。

更快速、更高效的方式是先在邻居路由器之间传送关键信息,路由器基于这些关键信息识别出哪些LSA是没有的、哪些是需要更新的,然后向邻居路由器请求详细的LSA内容。


◉ LSDB同步过程

OSPF的LSDB同步

状态含义:

LSDB同步过程

从建立邻居关系到同步LSDB的过程较为复杂,错误的配置或设备链路故障都会导致无法完成LSDB同步。为了快速排障,最关键的是要理解不同状态之间切换的触发原因。

OSPF邻居状态机

在这里插入图片描述
这是形成邻居关系的过程和相关邻居状态的变换过程。

LSA头部

LSA是OSPF链路状态信息的载体
在这里插入图片描述
LSA(Link State Advertisement)是路由器之间链路状态信息的载体。LSA是LSDB的最小组成单位,也就是说LSDB由一条条LSA构成的。

所有的LSA都拥有相同的头部,关键字段的含义如下:

LS type,Link State ID和Advertising Router的组合共同标识一条LSA。

LSDB中除了自己生成的LSA,另一部分是从邻居路由器接收的。邻居路由器之间相互更新LSA必然需要一个“通道”。


◉ DR与BDR的选举及作用

DR与BDR作用

DR(Designated Router)即指定路由器,其负责在MA网络建立和维护邻接关系并负责LSA的同步。

DR与其他所有路由器形成邻接关系并交换链路状态信息,其他路由器之间不直接交换链路状态信息。这样就大大减少了MA网络中的邻接关系数量及交换链路状态信息消耗的资源。

DR一旦出现故障,其与其他路由器之间的邻接关系将全部失效,链路状态数据库也无法同步。此时就需要重新选举DR,再与非DR路由器建立邻接关系,完成LSA的同步。为了规避单点故障风险,通过选举备份指定路由器BDR,在DR失效时快速接管DR的工作。

伪节点是一个虚拟设备节点,其功能需要某台路由器来承载,下面将介绍DR/BDR的选举规则。

DR与BDR选举

在这里插入图片描述
选举规则:DR/BDR的选举是基于接口的

邻居与邻接关系

在这里插入图片描述
邻居(Neighbor)关系与邻接(Adjacency)关系是两个不同的概念。OSPF路由器之间建立邻居关系后,进行LSDB同步,最终形成邻接关系。

在P2P网络及P2MP网络上,具有邻居关系的路由器之间会进一步建立邻接关系。

在广播型网络及NBMA网络上,非DR/BDR路由器之间只能建立邻居关系,不能建立邻接关系,非DR/BDR路由器与DR/BDR路由器之间会建立邻接关系,DR与BDR之间也会建立邻接关系。

邻接关系建立完成,意味着LSDB已经完成同步,接下来OSPF路由器将基于LSDB使用SPF算法计算路由。