📅  最后修改于: 2020-11-10 05:56:28             🧑  作者: Mango
OSPF代表开放式最短路径优先。它是一种广泛使用并受支持的路由协议。它是一个域内协议,这意味着它在区域或网络内使用。它是在单个自治系统中设计的内部网关协议。它基于链路状态路由算法,其中每个路由器都包含每个域的信息,并基于此信息确定最短路径。路由的目的是学习路由。 OSPF通过了解整个网络中的每个路由器和子网来实现。每个路由器都包含有关网络的相同信息。路由器通过发送LSA(链路状态通告)来学习此信息的方式。这些LSA包含有关每个路由器,子网的信息以及其他网络信息。 LSA被泛洪后,OSPF将信息存储在称为LSDB的链接状态数据库中。主要目的是使有关LSDB中每个路由器的信息相同。
OSPF将自治系统划分为区域,该区域是网络,主机和路由器的集合。就像互联网服务提供商一样,互联网将其划分为不同的自治系统以便于管理,而OSPF进一步将自治系统划分为区域。
区域内存在的路由器将路由信息泛洪到该区域
在区域中,还存在特殊路由器。特殊路由器是存在于区域边界的那些路由器,这些特殊路由器称为区域边界路由器。该路由器汇总有关某个区域的信息,并与其他区域共享该信息。
自治系统内的所有区域都连接到骨干路由器,这些骨干路由器是主区域的一部分。主要区域的作用是在不同区域之间提供通信。
可以通过三个步骤来解释OSPF的工作原理:
步骤1:第一步是成为OSPF邻居。在同一链路上运行OSPF的两个连接路由器会创建邻居关系。
步骤2:第二步是交换数据库信息。成为邻居后,两个路由器相互交换LSDB信息。
步骤3:第三步是选择最佳路线。一旦彼此交换了LSDB信息,路由器便会根据SPF的计算选择要添加到路由表的最佳路由。
在建立关系之前发生的第一件事是每个路由器都选择路由器ID。
路由器ID(RID):路由器ID是唯一标识网络上每个路由器的数字。路由器ID的格式为IPv4地址。设置路由器ID的方法很少,第一种方法是手动设置路由器ID,另一种方法是让路由器自行决定。
路由器选择设置路由器ID的逻辑如下:
点对点连接的两个路由器或连接的多个路由器可以通过OSPF协议进行通信。仅当两个路由器彼此发送HELLO数据包时,这两个路由器才相邻。当两个路由器都收到HELLO数据包的确认时,它们将进入双向状态。由于OSPF是链路状态路由协议,因此它允许在路由器之间创建邻居关系。只有当两个路由器属于同一子网,共享相同的区域ID,子网掩码,计时器和身份验证时,它们才能成为邻居。 OSPF关系是路由器之间形成的关系,以便它们彼此了解。如果两个路由器中的至少一个是网络中的指定路由器或备用指定路由器,或者通过点对点链路连接,则这两个路由器可以是邻居。
链接基本上是一种连接,因此两个路由器之间的连接称为链接。
OSPF中有四种链接类型:
以下是OSPF消息格式的字段:
OSPF中有五种不同类型的数据包:
让我们详细讨论每个数据包。
1. Hello包
Hello数据包用于创建邻居关系并检查邻居的可达性。因此,当需要在路由器之间建立连接时,会使用Hello数据包。
2.数据库说明
建立连接后,如果邻居路由器是第一次与系统通信,则它将有关网络拓扑的数据库信息发送给系统,以便系统可以相应地更新或修改。
3.链接状态请求
路由器发送链路状态请求,以获取指定路由的信息。假设有两个路由器,即路由器1和路由器2,并且路由器1想知道有关路由器2的信息,因此路由器1将链路状态请求发送到路由器2。当路由器2收到链路状态请求时,则它将链接状态信息发送到路由器1。
4.链接状态更新
路由器使用链路状态更新来通告其链路状态。如果任何路由器要广播其链路状态,则使用链路状态更新。
5.链接状态确认
链路状态确认通过强制每个路由器在每次链路状态更新时发送确认,使路由更可靠。例如,路由器A将链接状态更新发送到路由器B和路由器C,然后作为回报,路由器B和C将链接状态确认发送到路由器A,以便路由器A知道两个路由器已收到链接状态更新。
运行OSPF协议的设备状态如下:
在进入“提取”状态之前,OSPF选择一个路由器作为“指定路由器”,并选择另一台路由器作为“备份指定路由器”。这些路由器不是类型,但它们是路由器的属性。在广播网络的情况下,路由器选择一个路由器作为指定路由器,并选择另一个路由器作为备用指定路由器。指定路由器和备用指定路由器的选择是为了避免网络中的洪泛并最大程度地减少邻接数。它们充当在所有路由器之间交换路由信息的中心点。由于点对点链接是直接连接的,因此不选择DR和BDR。
如果未选择DR和BDR,则路由器会将更新发送给所有相邻的邻居,从而导致网络泛洪。为避免此问题,选择了DR和BDR。每个非DR和非BDR仅将更新发送给DR和BDR,而不是与网段中的其他路由器交换更新。然后,DR将网络拓扑信息分发到同一区域中的其他路由器,而BDR替代DR。 BDR还从所有路由器接收路由信息,但它不分发该信息。仅在DR失败时才分发信息。
非DR和非BDR使用多播地址224.0.0.6将路由信息发送到DR和BDR。 DR和BDR将路由信息发送到多播地址224.0.0.5。
根据以下规则,选择DR和BDR:
让我们通过一个例子来了解这种情况。
在上图中,选择R1作为DR,而选择R2作为BDR,因为R1具有最高的路由器ID,而R2具有第二高的路由器ID。如果R4与系统之间的链接失败,则R4仅更新R1和R4有关其链接失败的信息。然后,DR更新所有有关更改的非DR和非BDR,在这种情况下,除了R4之外,只有R3可用作非DR和非BDR。