在RIP等距离向量路由协议中,路由信息的交互是通过周期性地传送整张路由表的机制来完成的,该机制使距离向量路由协议无法高效地进行路由信息的交换。在OSPF协议中,为了提高传输效率,在进行链路状态通告(LSA)数据包传输时,使用包含LSA头(Head)的链路状态数据库描述数据包进行传输,因为每个LSA头中不包含具体的链路状态信息,它只含有各LSA的标识(该标识唯一代表一个LSA),所以,该报文非常小。邻接路由器间使用这种字节数很小的数据包,首先确认在相互之间哪些LSA是对方没有的,而哪些LSA在对方路由器中也存在,邻接路由器间只会传输对方没有的LSA。对于自己没有的LSA,路由器会发送一个LS Request报文给邻接路由器来请求对方发送该LSA,邻接路由器在收到LS Request报文后,回应一个LS Update报文(包含该整条LSA信息),在得到对方确认后(接收到对方发出的LS ACK报文),这两台路由器完成了本条LSA信息的同步。
由此可见,OSPF协议采用增量传输的方法来使邻接路由器保持一致的链路状态数据库(LSDB)。
小结
综上所述,我们可以归纳出在OSPF协议中使用到的五种协议报文,并简单介绍了它们的作用,我们作个简单的小结:
◆ Hello报文,通过周期性地发送来发现和维护邻接关系;
◆ DD(链路状态数据库描述)报文,描述本地路由器保存的LSDB(链路状态数据库);
◆ LSR(LS Request)报文,向邻居请求本地没有的LSA;
◆ LSU(LS Update)报文,向邻居发送其请求或更新的LSA;
◆ LSAck(LS ACK)报文,收到邻居发送的LSA后发送的确认报文。
OSPF协议采用的特殊机制
指定路由器和备份指定路由器
在OSPF协议中,路由器通过发送Hello报文来确定邻接关系,每一台路由器都会与其他路由器建立邻接关系,这就要求路由器之间两两建立邻接关系,每台路由器都必须与其他路由器建立邻接关系,以达到同步链路状态数据库的目的,在网络中就会建立起n×(n-1)/2条邻接关系(n为网络中OSPF路由器的数量),这样,在进行数据库同步时需要占用一定的带宽。
为了解决这个问题,OSPF采用了一个特殊的机制:选举一台指定路由器(DR),使网络中的其他路由器都和它建立邻接关系,而其他路由器彼此之间不用保持邻接。路由器间链路状态数据库的同步,都通过与指定路由器交互信息完成。这样,在网络中仅需建立n-1条邻接关系。备份指定路由器(BDR)是指定路由器在网络中的备份路由器,它会在指定路由器关机或产生问题后自动接替它的工作。这时,网络中的其他路由器就会和备份指定路由器交互信息来实现数据库的同步。图4是选举指定路由器前后网络中的邻接关系对比。
图1 邻接关系对比
要被选举为指定路由器,该路由器应符合以下要求:
◆ 该路由器是本网段内的OSPF路由器;
◆ 该OSPF路由器在本网段内的优先级(Priority)>0;
◆ 该OSPF路由器的优先级最大,如果所有路由器的优先级相等,路由器号(Router ID)最大的路由器(每台路由器的Router ID是唯一的)被选举为指定路由器。
满足以上条件的路由器被选举为指定路由器,而第二个满足条件的路由器则当选为备份指定路由器。
指定路由器和备份指定路由器的选举,是由路由器通过发送Hello数据报文来完成的。
OSPF协议中的区域划分
OSPF协议在大规模网络的使用中,链路状态数据库比较庞大,它占用了很大的存储空间。在执行最小生成数算法时,要耗费较长的时间和很大的CPU资源,网络拓扑变化的概率也大大增加。这些因素的存在,不仅耗费了路由器大量的存储空间,加重了路由器CPU的负担,而且,整个网络会因为拓扑结构的经常变化,长期处于“动荡”的不可用的状态。
OSPF协议之所以能够支持大规模的网络,进行区域划分是一个重要的原因。
OSPF协议允许网络方案设计人员根据需要把路由器放在不同的区域(Area)中,两个不同的区域通过区域边界路由器(ABR)相连。在区域内部的路由信息同步,采取的方法与上文提到的方法相同。在两个不同区域之间的路由信息传递,由区域边界路由器(ABR)完成。它把相连两个区域内生成的路由,以类型3的LSA向对方区域发送。此时,一个区域内的OSPF路由器只保留本区域内的链路状态信息,没有其他区域的链路状态信息。这样,在两个区域之间减小了链路状态数据库,降低了生成数算法的计算量。同时,当一个区域中的拓扑结构发生变化时,其他区域中的路由器不需要重新进行计算。OSPF协议中的区域划分机制,有效地解决了OSPF在大规模网络中应用时产生的问题。
OSPF协议使用区域号(Area ID)来区分不同的区域,其中,区域0为骨干区域(根区域)。因为在区域间不再进行链路状态信息的交互(实际上,在区域间传递路由信息采用了可能导致路由自环的递归算法),OSPF协议依靠维护整个网络链路状态来实现无路由自环的能力,在区域间无法实现。所以,路由自环可能会发生在OSPF的区域之间。解决这一问题的办法是,使所有其他的区域都连接在骨干区域(Area 0)周围,即所有非骨干区域都与骨干区域邻接。对于一些无法与骨干区域邻接的区域,在它们与骨干区域之间建立虚连接。
结束语
本文对OSPF动态路由协议的主要原理和特性作了简单的介绍,没有涉及到自治系统(AS)以外的路由及路由聚合。
OSPF协议采用路由器间建立和维护邻接关系,维护链路状态信息数据库,采用最短生成树算法,避免了路由自环。同时,又采用了一些特殊的机制,保证了它在大规模网络中的可用性。
邻居关系为双方只交互HELLO报文,不交互链路状态数据库,而邻接关系就要交互所有的信息,邻居和邻接的区分主要是用在以太网(广播型)网络中,需要选举一个中心节点,叫做DR,即这个以太网所有设备都要和DR交互所有信息,而彼此之间至交互hello报文,数据库的同步由DR定时广播链路状态数据库,这么做的目的主要是减少以太网中需要交互的链路状态数据库的数量
认证是在两台路由器之间建立邻居时用到的。
ospf的认证信息是封装在hello报文里的,如果两个路由器封装的认证信息不一样,就不能建立ospf邻居。
ping的通,跟ospf认证没有关系。
ping用的是icmp协议,icmp报文封装到ip里。
ospf的报文则是直接封装到ip里。
他们的机制是不同的。
希望能帮到你,如果不理解,可以追问。
1Down:此状态还没有与其他路由器交换信息。首先从其ospf接口向外发送hello分组,还并不知道DR(若为广播网络)和任何其他路由器。发送hello分组使用组播地址224005。
2Attempt: 只适于NBMA网络,在NBMA网络中邻居是手动指定的,在该状态下,路由器将使用HelloInterval取代PollInterval来发送Hello包
3Init: 表明在DeadInterval里收到了Hello包,但是2-Way通信仍然没有建立起来
4two-way: 双向会话建立,而RID彼此出现在对方的邻居列表中。(若为广播网络:例如:以太网。在这个时候应该选举DR,BDR。)
5ExStart: 信息交换初始状态,在这个状态下,本地路由器和邻居将建立Master/Slave关系,并确定DD Sequence Number,路由器ID大的的成为Master
6Exchange: 信息交换状态,本地路由器和邻居交换一个或多个DBD分组(也叫DDP)。DBD包含有关LSDB中LSA条目的摘要信息)。
7Loading: 信息加载状态:收到DBD后,将收到的信息同LSDB中的信息进行比较。如果DBD中有更新的链路状态条目,则向对方发送一个LSR,用于请求新的LSA。
8Full: 完全邻接状态,邻接间的链路状态数据库同步完成,通过邻居链路状态请求列表为空且邻居状态为Loading判断。
以上就是关于对于OSPF协议中路由器之间的邻接关系(adjacency),你有什么理解全部的内容,包括:对于OSPF协议中路由器之间的邻接关系(adjacency),你有什么理解、两台运行OSPF的路由器交换了hello数据包,形成邻接关系,接下来将会做什么、OSPF的认证问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)