OSPF-1-OSPF的数据库交换(5)
三.LAN中的指定路由器
没有DR概念的话,共享同一条数据链路的一对路由器会形成完整的邻接关系,每对路由器之间都会直接交换它们的LSDB,假设在一个只有6台路由器的LAN中,其中没有DR,那么就会有15条泛洪完整数据库的泛洪流。OSPF可以在LAN或其他多访问网络上使用DR和BDR的概念,通过DR执行泛洪,减少了不必要的冗余LSA交换。
当一台新路由器加入到网络中,它只需与DR进行同步,而无需与所有路由器相互同步,相互同步可能需要多次重复泛洪相同的LSA。因此,在路由器数据库同步的初始阶段,DR/BDR所提供的优化成果才比较明显。
1.DR对LAN的优化
只有处于Full状态的路由器之间才能交换LSA,在多访问网络中每台路由器都只与DR和BDR路由器形成Full状态的邻居关系。DR和BDR与网段中的所有路由器都建立Full状态的邻居关系,它们彼此之间也建立Full状态的邻居关系。如果DR或BDR需要发送一条更新,它只需要向组播IP地址224.0.0.5直接发送一个LSU,其中包含更新的LSA,这个组播组表示所有OSPF路由器。这个多访问网段中的所有其他OSPF路由器返回一个单播LSAck包,表示它已经收到了这个LSU。
在多访问网络中,一台路由器如果既不是DR,也不是BDR,那么它只会与DR和BDRj建立Full状态的邻居关系。如果这种路由器需要发送一条更新,它会把LSU包发送到组播IP地址224.0.0.6,这个组播组表示所有OSPFDR路由器,其中只包含DR和BDR。DR和BDR都会将从LSU种收到的更新LSA保存在它们的LSDB中。然后DR会使用一个新的LSU,携带着同样的更新LSA,通过组播IP地址224.0.0.5发送给网段中的所有OSPF路由器。DR或BDR都不会使用LSAck来确认收到了LSU一虽然它们可以这样做,这种确认也是合法的,但实在是没有这个必要。DR泛洪出去的LSU正是对其已经收到原LSU的最佳确认方式。网段中的其他路由器,包括BDR,但不包括发出原LSU的路由器,都会向DR发送单播LSAck,来确认它们已经收到了DR的LSU。
注:在不存在DR的拓扑中,LSU包通常发往224.0.0.5,这是代表所有OSPF路由器的组播IP地址。
R1通过一个快速以太网接口连接一个网段,网段中还有其他三台路由器,例9-2展示了在R1上使用命令sh ip ospf neighbor后的输出信息。根据这些输出内容,可以看出OSPF RID为8.8.8.8的路由器是DR,OSPFRID为7.7.7.7的路由器是BDR,这两个邻居与Rl的关系都已经稳定在了Full状态。网段中OSPFRID为2.2.2.2的路由器既不是DR,也不是BDR;由于R1自已也不是DR或BDR,因此R1和路由器2.2.2.2的邻居关系稳定在了2-Way状态。
当一条线路上使用了DR,那么路由器的角色最终就会分成DR、BDR、既不是DR也不是BDR的路由器;当一台路由器既不是DR也 不是BDR时,我们称它为DRO砌针路由器。DR和BDR会与链路上所有其他路由器形成完整的邻接关系,也就是说在数据库交换过程完成后,它们之间会稳定在Full状态。但两台DROther路由器之间并不会形成完整的邻接关系;它们会停止在2-Way状态,对于两台DROther路由器来说,停留在2-Way状态是正常现象。这种状态意味着两台路由器的He11。参数相匹配,双向可见性确认成功,但它们之间无须直接同步它们的LSDB,因为当DR存在时,它们会直接与DR进行LSDB同步
为了更好地描述有些邻居之间并不直接交换DD和LSU包的事实,OSPF对邻居和邻接这两个术语做出如下区分。
■邻居:两台路由器共享相同 的数据链路,交换Hell。消息,并且Hell。消息中的特定参数必须相匹配。
■邻接(完整的邻接关系):两台邻居之间直接执行完整的DD和LSU包交换过程。