介绍

OSPF(Open Shortest Path First)是一种IGP路由协议,Open表示OSPF是一个开放标准协议,由IETF首先为IP制定(RFC1247),现行标准有两个OSPFv2(RFC2328)以及OSPFv3(基于OSPFv2,为IPv6制定,RFC5340)。Shortest Path First表示,OSPF使用了Edsger Dijkstra算法,用于在图中生成最短路径树Dijkstra, E. W. (1959). “A note on two problems in connexion with graphs”. Numerische Mathematik 1: 269–271

OSPF是一种链路状态协议(link state,IS-IS也是链路状态协议),网络中的每个节点都具备全网拓扑。另一种类型的路由协议是距离矢量协议(distance vector),例如EIGRP或者RIP,网络中每个节点同其它节点分享自己拥有的路由表,这导致路由收敛慢)。

OSPF邻居关系

OSPF路由器会自动查找运行OSPF的路由器邻居。使用的方式是发送一个“hello”报文,其中包含subnet mask、已知邻居列表、一些细节诸如hello interval(发送hello报文的间隔)以及router dead interval(认为路由器消失dead的间隔)。hello intervalrouter dead interval以及subnet mask必须两边匹配。如果邻居回复的信息匹配了,邻居关系就建立了。

建立邻居关系肯定是为了进行路由信息交换,这被叫做ADJACENCY。不是每个邻居路由器都会成为adjacent,在multi-access网络中(例如ethernet),只有被选中的router会建立adjacencies。

Adjacencies

一旦adjacency建立了,邻居就会互相分享link state信息,交换的信息格式是一个叫做link state packet(LSP)的报文,LSP发给邻居时叫做Link State Announcements(LSA)。来自邻居的新信息用于 计算网络的新视图(拓扑视图)。在link failure时,需要进行新LSP的flood洪范,router重新计算路由表。

OSPF网络

一个网络中的所有OSPF路由器,和它们直接相连的邻居建立邻居关系。每个router依据链路状态计算各自的路由表。一旦每个路由器都有了相同的网络视图,网络也就收敛了。网络的IGP设计对于确保可扩展性和快速收敛至关重要。通常来说,前缀数量越少,收敛越快。【所以OSPF不适用于大型网络,更适用于中小型网络】

OSPF Area

Area在OSPF中用于网络横向扩展,Area主要是为了适应多种网络类型和拓扑,所有网络必须有一个area 0,也即是default area。一个小型或者中型网络(大约300 routers)可以只使用一个area。

OSPF Links

OSPF有两种类型的Links:

  • point-to-point link:只有一个其他router在链路上,构成point-to-point adjacency。
  • multi-access network(例如ethernet):可能有多个routers在网络上,构成几个adjacencies。

multi-access网络中的OSPF进行scaling优化的方式:选举两个路由器为整个网络发起LSAs,分别叫做Designated Router(DR)和Backup Designated Router(BDR),网络中其它routers要和DR和BDR建立adjacencies关系。

参考