交换LSDB的基本规则规定,只有那些处于Full状态的路由器之间才能够交换 LSA.
在MA网络中如果不使用DR的话,所有路由器的邻接关系都必须是full状态。
1:在一个有n个路由器的网络中,会形成(n*(n-1))/2邻居关系。
2:邻居间LSA的泛洪扩散混乱,相同的LSA会被复制多份,
这样的工作效率显然是很低的,很消耗资源的
选举DR后
在多访问网段中,每台路由器都只与DR和BDR路由器形成Full状态的邻居关 系。 DR和BDR与网段中的所有路由器都建立Full状态的邻居关系,它们彼此之间也 建立Full状态的邻居关系。如果DR或BDR需要发送一条更新,它只需要向组播IP地址224.0.0.5直接发送一个LSU,其中包含更新的LSA,这个组播组表示所有OSPF 路由器。这个多访问网段中的所有其他OSPF路由器将会收到这个LSU,并回向发出 这个LSU的路由器返回一个单播LSAck包,表示它已经收到了这个LSU
在多访问网络中,一台路由器如果既不是DR,也不是BDR,那么它只会与DR 和BDR建立Full状态的邻居关系。如果这种路由器需要发送一条更新,它会把LSU包发送到组播IP地址224.0.0.6,这个组播组表示所有OSPF DR路由器,其中只包含DR和BDRo.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也不是BDR时,我们称它为 DROther路由器。 DR和BDR会与链路上所有其他路由器形成完整的邻接关系,也就 是说在数据库交换过程完成后,它们之间会稳定在Fu11状态。但两台DROther路由器 之间并不会形成完整的邻接关系;它们会停止在2 ̄way状态.这种状态意味着两台路由器的 Hello参数相匹配,双向可见性确认成功,但它们之间无须直接同步它们的LSDB,因 为当DR存在时,它们会直接与DR进行LSDB同步.
■ 邻居:两台路由器共享相同的数据链路,交换Hello消息,并且Hello消息中 的特定参数必须相匹配。
■ 邻接(完整的邻接关系):两台邻居之间直接执行完整的DD和LSU包交换 过程。
二:DR的选举
DR是在邻居之间发送DD包并进人ExStart邻居状态之前完成选举。 当一台OSPF路由器与接口上连接的第一个邻居达到了2-Way状态,表示它已经从邻居那里至少收到了一个Hello包,并且在这个收到的Hello包中看到了自已的RID.如果这些Hello包中指明DR是0.0.0.0一表示还没有选举出DR一那么路由器会 在尝试选举DR前等待一段时间.这种情况通常发生在故障恢复后的LAN中。 OSPF 路由器等待一段时间,是为了让这个子网中的所有路由器在故障发生后,有时间完 成初始化,从而让所有路由器都能够准备好进行DR选举;否则,第一台开始动作 的路由器将总是会成为DR (等待的这段时间称为等待时间,这个时间值设置的与失 效计时器相同)。
如果路由器收到的Hello包中已经列出了DR的BDR,那么路由器就无需 在开始选举过程之前等待一段时间了。
DR/BDR的选举遵循一下规则
1: 所有OSPF优先级设置为1-255 (包括1和255)的路由器都有资格成为DR或BDR, OSPF优先级设置为0的路由器不参与DR,BDR选举
2:每台路由器都根据从网段中其他邻居那里收集到的数据,在本地执行DR选 举;而且选举算法能够保证所有路由器的选举结果相同。
3:在等待时间段(等待的时间长度自动设置为接口上的失效计时器长度)内,每 台路由器都通过监听自已收到的Hello包,收集网段中其他邻居的优先级和 RID,而且也把自已的优先级和RID加人这个比较列表中。不过在等待阶段,路由器并不会声称自已就是DR或BDR,它会在发出的所有Hello包中指出还没有选举DR和BDR(Hello包中的DR和BDR字段设置的IP地址是0.0.0.0)
4: 如果在等待阶段,路由器从一个邻居那里收到了一个声称邻居自已是BDR的Hello包(表示DR和BDR已经选举出来,并且BDR仍正常工作),或者如果有一个邻居声称它自已是DR,但Hello包中的BDR地址是空的(表示DR 已经选举出来,但网络中没有BDR),这时路由器会马上执行DR/BDR选举 过程。否则就要等待接口上的等待计时器超时。
5:在选举过程中,路由器只会选举邻居的Hello包中还没有明确指明RID的 角色(同时选举DR和BDR,或者只选举BDR)。路由器会检查它在等待 期间收集到的优先级和RID列表,将拥有最高优先级的路由器选举为DR (如果DR还没有选举出来的话),将拥有次高优先级的路由器选举为BDR (如果BDR还没有选举出来的话)。如果有多台路由器通告了相同的最高 或次高优先级,且仍需要选举出DR或BDR的话,就以最高RID来进行 选择。(思科默认优先级是1)
6: 在选举结束后,如果一台新路由器连接人网,或者一台现有的路由器提高了 它的优先级,它们是不能挤掉现有的DR,让自已成为DR (或BDR)的
7:当选举出DR,且DR失效后, BDR将成为DR,网段中的所有路由器会重新选举BDR.
在特殊环境下。不同的路由器可能会选举出不同的DR/BDR。这是当邻居路由器发送的hello包中携带不同的DR/BDR。当出现这种情况时。DR/BDR选举中的不抢占规则就不再起作用了(因为这样路由器就无法选 出相同的DR/BDR了) ,所有路由器会再次进人选举过程
三:OSPF的网络类型