[Cloud Networking] OSPF

发布于:2024-06-30 ⋅ 阅读:(12) ⋅ 点赞:(0)

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

1 OSPF Area

为了适应大型网络,OSPF在AS内划分了多个Area,每个OSPF路由器值维护所在区域的完整链路状态信息。划分区域时,会创建一个称为Area 0的中心区域,其他区域始终与Area 0相连。

路由器分类 说明
区域内路由器IR 所连接的网络属于同一个区域,IR只运行一个OSPF协议实例。
主干路由器BBR 主干区域中的路由器
区域之间的路由器 ABR(汇聚IP) 连接到多个AS,且必须连到主干区域,为每个链接Area分别运行一个OSPF协议实例
AS边界路由器 ASBR 与其他AS交换路由信息

在这里插入图片描述
虚拟链路

  • 主干区域必须是联通的,所有区域边界路由器ABR都能通过主干区域到达其他区域边界路由器
  • 如果不满足上面的条件,主干区域可以配置虚拟链路(virtual link)使其变成联通的

下图中 R3 和 R4 在主干区域,但是需要通过Area3才能实现联通。这时,可以在主干区域的R3、R4之间配置一条 virtual link,使得主干区域连续,实际上这条链路是通过N1中的物理连接来进行通信

在这里插入图片描述

2 Route ID / DR / BDR

Router ID 路由器ID,32位无符号整数,默认用loopback接口中最大的IP作为 Router ID。

Name Info
DR Designated Router, 选举Router ID最大的路由为DR
只有DR能代表该网络发送网络的链路状态
BDR Backup Designated Router,选举Router ID第二大的路由为 BDR
DR发生故障的时候,BDR变成DR
DROTHER Not DR nor BDR

在这里插入图片描述

R1> show ip ospf neighbor
Neighbor ID     Pri   State       Dead Time   Address       Interface
192.168.123.2   1   FULL/BDR      00:00:32    192.168.123.2 FastEthernet0/0
192.168.123.3   1   FULL/DR       00:00:31    192.168.123.3 FastEthernet0/0

R3> show ip ospf neighbor
Neighbor ID     Pri   State       Dead Time   Address         Interface
192.168.123.1   1   FULL/DROTHER  00:00:36    192.168.123.1 FastEthernet0/0
192.168.123.2   1   FULL/BDR      00:00:39    192.168.123.2 FastEthernet0/0

R2> show ip ospf neighbor
Neighbor ID     Pri   State       Dead Time   Address         Interface
192.168.123.1   1   FULL/DROTHER  00:00:31    192.168.123.1 FastEthernet0/0
192.168.123.3   1   FULL/DR       00:00:32    192.168.123.3 FastEthernet0/0

3 LSA / OSPF 邻居表 / LSDB / OSPF路由表

LSA (Link State Advertisement)链路状态通告,用于描述链路状态信息,路由器接口的状态信息,例如接口开销、连接的对象。

借用CSDN其他文章中的图 原文链接
在这里插入图片描述

  • 相邻路由器之间周期性发送HELLO报文,以便建立和维护邻居关系
  • 建立邻居关系后,给邻居路由器发送数据库描述报文(DBD),也就是将自己链路状态数据库中的所有链路状态项目的摘要信息发送给邻居路由器
  • 收到数据库描述报文后,若发现自己缺少其中某些链路状态项目,则会发送链路状态请求报文(LSR)。
  • 对方收到链路状态请求报文后,则会将其所缺少的链路状态项目的详细信息封装在链路状态更新报文(LSU)中发送回去
  • 收到链路状态更新报文后,将这些信息添加到自己的链路状态数据库中,随后发回链路状态确认报文(LSACK)

如上,OSPF在传递链路状态信息之前,需要建立 OSPF邻居关系 ,通过hello包文件里,OSPF邻居表显示了OSPF路由器之间的邻居状态,使用 display ospf peer 查看:

在这里插入图片描述

R1 > display ospf peer
	OSPF Process 1 with Router ID 10.0.1.1
			Neighbors
Area 0.0.0.0 interface 10.0.12.1(G1/0/0)'s neighbors
Router ID:10.0.12.1 Address: 10.0.12.2 GR State: Normal
  State: Rull Mode:Nbr is Master Priority:1
  DR: 10.0.12.1 BDR:10.0.12.2 MTU:0
  ...

LSDB(Link State DataBase, 链路状态数据库),用于描述AS内部的拓扑结构。

每个路由器负责发现、维护与邻居的关系,并将已知的邻居和链路费用 LSA报文 描述,通过可靠的泛洪与 AS 内的其他路由器周期性交互,每个 AS 内的路由器收到所有 LSA 并放入自己的 LSDB

每台路由器基于 LSDB,使用 SPF(Shortest Path First,最短路径优先) 算法进行计算,每台路由器都计算出一棵以自己为根、无环的、拥有最短路径的树,这样路由器就已经知道了到达所有网段的优选路径。

边界路由器可以通过距离矢量算法互相传递路由,从而实现整个网络的互联。

每隔一段时间或链路状态发生变化时,重新生成LSA,路由器通过泛洪将LSA通告出去,实现路由实时更新。