关于OSPF建立邻居的问题?

关于OSPF建立邻居的问题?,第1张

多路访问网络中,如果不选举DR和BDR,那么每两个运行ospf的路由之间都要建立邻接关系,这样整个网络链路将有大量的ospf数据,网络的性能就不会很好,当选举了DR和BDR后,其他的路由器只需要与DR和BDR建立邻接关系,DROTHER之间只需要建立邻居关系就可以了,这里区别邻接(关系达到FULL)和邻居(关系达到TWO-WAY)两个词。至于子网掩码,掩码不同就不是一个子网,这样直连就不通怎么建邻居呢,还有同一个区域的链路状态数据库必须保持一致,如果掩码不同LSA就会有不同,2类LSA带掩码的。

整个ospf协议关系建立分4个主要阶段:

1、邻居发现阶段:

以P2P和广播类型网络中设备为例如下图1

图1  OSPF邻接关系建立示意图

首先,当R1的ospf接口启动路由进程后,会以组播方式向所连接的同网段所有直连的ospf设备发送一个hello报文。此时因为R1没有与其他设备建立邻居关系,不知道其他设备的路由器ID,所以此hello报文中只封装了自己ospf路由区域的路由ID。

当R2收到来自R1的hello报文后,将收到来自R1报文的接口转换为init状态,同时R2从接收到的hello报文中获取R1的路由ID并添加到邻居列表中。

然后在deadinterval超时前以组播方式向所连接网段中的所有直接连接的ospf设备发送一个封装了自己路由ID和R1路由ID的hello报文。

当R1收到来自R2的hello报文后发现里面有自己的路由ID,则将收到来自R2报文的接口转为2-way状态,同时从收到的报文中获取R2的路由ID并添加到邻居列表中,在deadinterval超时前以组播方式向所连接的网段中所直连接的ospf设备发送封装了自己的路由ID 和R2路由ID 的hello报文。

当R2再次收到来自R1的hello报文,发现里面有自己的路由ID后,将收到来自R1报文的接口转换成2-way状态。这是R1和R2建立双向2-way邻居关系。

通过以上4步(两次握手)建立起邻居关系,进入主从关系确立阶段。

2、主从关系确立阶段

也就是DR/BDR的选举。在双方都进入2-way后,各自通过hello报文进行DR/BDR选举。

DR和BDR是由同一网段中所有路由器根据路由优先级和路由器ID选举出来的,只有hello报文中Rtr Pri(优先级)字段大于0 的路由器才具有选举资格。

在与一个或多个邻居之间都进入2-way之后,本地路由器对每个邻居发来的hello包中的优先级、DR、BDR域进行检查。此时,所有路由器都宣称自己为DR(将自己的接口地址置于hello包DR字段中),也都宣称自己为BDR。(将自己的接口地址置于hello包BDR字段中)

DR字段中优先级最高的路由器被宣告为DR,如果优先级一样,则拥有最高路由器ID的邻居被选为DR。

BDR字段中优先级最高的路由器被宣告为BDR,如果优先级一样,则拥有最高路由器ID的邻居被选为BDR;如果没有任何路由被选为BDR,则拥有最高优先级的非DR邻居路由器被选为BDR,如果优先级相同,则最高路由ID者被选为BDR。

进入exstart(预启动)状态后,双方路由器开始以DD报文进行交互,确定双方的主从关系(不是DR与BDR),确定用于数据交换的初始DD报文的序列号,以保证路由器得到的永远是最新的链路状态信息。

通过双方的路由器ID来确定主从关系,路由器ID大的为主设备。确定好主从关系后,从设备以主设备的DD报文序列号向主设备发送DD报文,并转换自己接收DD报文的接口为exchange状态;主设备收到从设备DD报文后也将收到DD报文的接口转换为exchange状态。

本摘自重庆网管博客ospf章节:>

3、数据库同步阶段

主设备开始向从设备发送带有LSA header字段的报文,对从设备进行数据更新。当主设备向从设备发送最后一个DD报文时,将接收DD报文的接口转换为loading状态;当从设备收到最后一个DD报文时也将收到报文的接口转换为loading状态。

当主设备发送完DD报文后,从设备开始依据所接收的DD报文中的LSA header字段检查自己的LSDB,如果没有,从设备会以LSR报文向主设备发出更新请求;当主设备收到从设备发送来的LSU会向从设备发送对应的LSA;从设备收到主设备的LSU报文后会以LSAck报文进行确认。

在DD报文交换中,主从角色不是固定的,因为双方都可能没有对方的LSA,或者一方的LSA的版本更新,双方都可以向对方发送LSR报文请求更新。

4、完全邻接阶段

当双方的LSDB完全同步后,双方均转为FULL状态,双方OSPF接口间整数建立完全邻接关系。

ABR:抛开Virtual Link来说,这个路由器必须也属于area 0和另外一个区别。
ASBR:只要引入外部路由就是ASBR
所以充当ABR同时也可以充当ASBR
内部路由器也就是Internal Route,即所有接口都属于同一个OSPF区域。在OSPF中只有一种情况,就是Virtual Link不过是由两个ABR通过IGP形成的点到点的连接。而不是内部路由器。
可以假设两个不同区域的内部路由器相连,由于area id不同,在形成邻居关系的时候就会失败,邻居必要条件就是area id要一致的。邻居(Neighbor)形不成就不用考虑邻接(Adjacency)关系了,也就不存在路由互通。
也不知道打了这么说明白没,呵呵,有问题就hi我吧,或补充一下再讨论

可能是全网最全的OSPF基础知识点汇总,常见考点总结,面试必备
网络小专家大脸鹏
06-19 · 优质科技领域创作者
OSPF作为搞网络的小伙伴最常用的动态路由协议,在工作中经常会用到,同时面试的时候也是经常出现的考点,大脸鹏带大家提炼梳理一下相关知识,以后遇到相关的问题就不怕啦。
源自网络的OSFP拓扑图
一、OSPF基本概念
1、OSPF的全称Open Shortest Path First(开放式最短路径优先),它是一个IGP协议
2、OSPF的核心算法是最短路径优先,这也就意味衡量两点之间路由走向最重要的因素就是路径是否为最短,最短路径由链路开销,路径上经过设备的数目等综合考虑得出
3、OSPF核心算法的名称是迪克斯加算法
4、OPSF通过LSA(Link State Advertisement)来传递路由
5、OSPF的协议号是89
6、OSPF的核心是维护链路状态,因此它的微观单位并不是路由器,而是一条条的链路,这个也是为什么我们启用OSPF协议可以在端口下启用的原因,因为我们是要将端口对应的链路通过OSPF发布维护
二、OSPF的五种报文类型
1、Hello包 主要作用是:发现OSPF邻居,建立和维护邻接关系
2、DBD(Database Description) 检测发送端和接收端的链路状态数据库是否同步
3、LSR (Link state request)链路状态请求
4、LSU (Link state update)链路状态更新
5、LSAck (Link state ack)当收到一个LSU,路由器发送LSAck确认(这也体现了OSPF是一个可靠协议,每一个数据包都被确认)
三、OSPF的状态机
1、Down: OSPF初始状态,还没有开始交换信息。
2、Init: 初始化交换信息,表示自己已经收到了邻居的Hello报文,但是报文中没有列出本路由的Route ID(通常Router-ID是由路由器上激活状态的最大IP地址,一般配置的时候我们也会在路由器上做loopback地址用来当Router-ID),也就是说对方还没有收到本路由发出的Hello报文
3、Two-Way:双方都收到了对方发送的Hello报文,建立了邻居关系。在多路访问的网络中,两个接口状态是DROther的路由器之间将停留在此状态,其他情况将继续转入高级状态。在此状态下的路由器是不能同步路由信息的,想同步路由器信息,必须建立邻接关系。(这里的关键点就是MA网络中,存在不同的身份,下面第四部分会仔细讲)
4、Exstart:准备开始交换阶段,在这个阶段双方通过Hello报文决定主从关系,最高Router-ID的路由器将成为主路由,最先发起交换。主从关系确立后进入下一阶段。
5、Exchange:开始交换阶段,路由器将本地的路由状态数据库(Link state database)用数据库描述(Database Description)报文来描述,然后发给邻路由。如果这个阶段中的路由收到不在其数据库中的有关链路的信息,那么在下一个阶段中将请求对方发送该路由条目的完整信息。
6、Loading:在这个阶段,路由器通过发送链路状态请求(Link-state Request),来向邻居请求一些路由条目的详细信息。邻居会使用链路状态更新包Link-state Update来回复请求,收到邻居的Link-state Update后,再发送LSAck(Link-state-ack)来进行数据包的确认(这个也是OSPF协议是可靠协议的体现)。
7、FULL:完全邻接状态,Loading结束后,路由器之间就变成了"Full adjacency"
四、OSPF的基础知识考点
1、问:多路广播网络中(MA网络),路由器的几种身份
答:三种身份,DR/BDR/DROther
2、问:DR/BDR通过什么选举
答:同一网段中所有的路由器根据路由器优先级、Router ID在HELLO报文发送阶段选举出来的,只有优先级大于0的路由器才具有选取资格
3、问:多路广播网络中(MA网络)的邻接关系
答:所有DROther之间是Two-way状态,所有DROther与BR/BDR之间是Full状态,DR/BDR之间是Full状态
4、问:DR/BDR通信地址
答:MA网络中224006是DR和BDR之间通信的组播地址 非DR和BDR使用224005
5、问:Router-ID(RID)怎么选举
答:RID是一个用来标识路由器的IP地址,可以在OSPF路由进程中手工指定(一般指定为loopback地址);如果没有指定,路由器默认选择回环接口中最高的IP作为RID;如果没有回环地址,路由器使用所有激活的物理接口中最高的IP作为RID。
6、问:OSPF中hello包的间隔时间
答:OSPF在MA网络中hello默认 10s dead time默认40s 在非广播多路访问(NBMA)中 Hello 30s
dead time 120s 都是1:4的关系
7、问:OPSF邻居建立不起来的原因是什么
答:①邻接接口的MTU不一样②都是非0区域③hello deadtime设置不一致④接口掩码不一致
8、问:邻居建立卡在Exchage/Exstart状态是为什么
答:一定是端口MTU设置出了问题
以上就是大脸鹏为大家总结的OSPF基础知识点以及面试常见考点,喜欢的朋友欢迎点赞转发~后续我会为大家带来OSPF不同区域的划分以及ASBR等知识~欢迎关注我,我将为各位提供最详细最接地气的实在网络知识。
专栏
互联网大厂CCIE教网络
作者:网络小专家大脸鹏
59币
20人已购
查看
334阅读
搜索
bgp入门基础知识
ospf基础知识入门
sdn从入门到精通
pmp必背100个知识
bgp入门基础知识大全
ospf思维导图

在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协议采用路由器间建立和维护邻接关系,维护链路状态信息数据库,采用最短生成树算法,避免了路由自环。同时,又采用了一些特殊的机制,保证了它在大规模网络中的可用性。

ospf邻居状态有7种,分别是down init 2way Exstart Exchange Loading Full
路由器A刚启动时,ospf处于down的状态,因为它还没有与其他路由器交换信息。它使用组播地址224005发送hello分组。
所有运行ospf的路由器收到A的hello分组时,将A加入邻居列表中,这是init状态。
收到A的hello的路由器都向A发送单播应答,A收到后,将这些路由器加入邻居列表,所有路由器都建立了双向关系,进入了2way状态。
如果链路类型是广播网络(如以太网),接下来必须选举DR和BDR,选举结束后,路由器处于预启动Exstart状态。
然后交换链路状态数据库摘要,也就是交换DBD,这是Exchange状态。
DBD交换完毕后进入Loading状态,路由器根据DBD发送LSR请求更新链路状态条目,对方用LSU进行响应。至此,双方都学到了路由条目,database完整,就是Full状态。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13409157.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-30
下一篇 2023-07-30

发表评论

登录后才能评论

评论列表(0条)

保存