OSPF建立邻居、邻接关系 学习笔记

Ospf中路由器之间存在两种连接关系:邻居关系和邻接关系。本博文将详细介绍这2种关系建立及工作原理。

如果两台路由器之间共享一条公共数据链路(两台路由器中间没有其它路由器,或者两台路由器之间存在虚连接),并且成功协商了hello包中所指定的参数,那么它们就成为邻居。如果两个邻居之间需要同步LSDB,那么它们之间需要建立邻接关系。如果两个路由器之间建立了邻接关系,那么它们的LSDB一定是同步的。LSA只在存在邻接关系的路由器之间传递。

那么邻居关系和邻接关系怎么建立呢?邻居关系通过hello报文来建立。Hello报文中包含如下一些内容:

1、始发路由器的router-id

2、始发路由器接口的area-id

3、始发路由器接口的地址掩码

4、始发路由器接口的authentication type和authentication message

5、始发路由器接口的hello-interval

6、始发路由器接口的router dead-interval

7、路由器优先级

8、指定DR和BDR

9、标识可选性能的5个标志位

10、始发路由器的所有有效neighbor router-id(始发路由器接收到了它们的hello报文)

以两台路由器之间建立邻居关系为例:

1、R1发送hello报文(组播或者单播,链路层类型来定),neighbor字段为空

2、R2收到hello报文,为R1建立一个邻居数据结构,并把R1的邻居状态置为init,然后向R1发送hello报文,neighbor字段中包含R1的rougerID,表示自己收到了R1的hello报文。

3、R1收到R2的hello报文之后,为R2建立一个邻居数据结构,并把邻居状态置为2way,然后向R2发送hello报文,报文的neighbor字段中包含R2的routerID。

4、R2收到R1的hello报文后,把R1的邻居状态置为2way

至此,邻居关系就建立起来了,邻居路由器之间会按时发送hello报文进行保活,如果hello报文超时,那么该路由器就会宣告这里邻居失效。

所有路由器之间都达到2way状态后,它们会根据网络类型判断是否需要选举DR和BDR,如果需要的话就开始选举DR和BDR。

邻居路由器之间会判断是否需要建立邻接关系,怎么判断呢?

1、 如果是point-to-point链路,需要建立邻接关系

2、 如果是point-to-multipoint链路,需要建立邻接关系

3、 如果网络类型是虚链路,需要建立邻接关系

4、 本地路由器是网段上的DR,需要建立邻接关系

5、 本地路由器是网段上的BDR,需要建立邻接关系

6、 邻居路由器是网段上的DR,需要建立邻接关系

7、 邻居路由器是网段上的BDR,需要建立邻接关系

如何建立邻接关系呢?

其实邻接关系的建立过程中就顺带把LSDB同步了。过程如下:

建立邻接关系使用下面三种协议报文:

Hello报文type1、数据库描述数据包type2、链路状态请求报文type3、链路状态更新报文type4、链路状态确认报文type5

1、RT1的一个连接到广播类型网络的接口上激活了OSPF协议,并发送了一个HELLO报文(使用组播地址224.0.0.5)。由于此时RT1在该网段中还未发现任何邻居,所以HELLO报文中的Neighbor字段为空。

2、RT2收到RT1发送的HELLO报文后,为RT1创建一个邻居的数据结构,并且将RT1的邻居状态机置为Init。RT2发送一个HELLO报文回应RT1,并且在报文中的Neighbor字段中填入RT1的Router id,表示已收到RT1的HELLO报文。

3、RT1收到RT2回应的HELLO报文后,为RT2创建一个邻居的数据结构,并将邻居状态机置为Exstart状态。下一步双方开始发送各自的链路状态数据库。

为了提高发送的效率,双方需先了解一下对端数据库中那些LSA是自己所需要的(如果某一条LSA自己已经有了,就不再需要请求了)。方法是先发送DD报文,DD报文中包含了对本地数据库中LSA的摘要描述(每一条摘要可以惟一标识一条LSA,但所占的空间要少得多)。由于OSPF直接用IP报文来封装自己的协议报文,所以在传输的过程中必须考虑到报文传输的可靠性。

为了做到这一点,在DD报文的发送过程中需要确定双方的主从关系。作为Master的一方定义一个序列号seq,每发送一个新的DD报文将seq加一。作为Slave的一方,每次发送DD报文时使用接收到的上一个Master的DD报文中的seq。实际上这种序列号机制是一种隐含的确认方法。如果再加上每个报文都有超时重传,就可以保证这种传输是可靠的。

RT1首先发送一个DD报文,宣称自己是Master(MS=1),并规定序列号为x。I=1表示这是第一个DD报文,报文中并不包含LSA的摘要,只是为了协商主从关系。M=1说明这不是最后一个报文。

4. RT2在收到RT1的DD报文后,将RT1的邻居状态机改为Exstart,并且回应了一个DD报文(该报文中同样不包含LSA的摘要信息)。由于RT2的RouterID较大,所以在报文中RT2认为自己是Master,并且重新规定了序列号为y。

5. RT1收到报文后,同意了RT2为Master,并将RT2的邻居状态机改为Exchange。RT1使用RT2的序列号y来发送新的DD报文,该报文开始正式地传送LSA的摘要。在报文中RT1将MS=0,说明自己是Slave。

6. RT2收到报文后,将RT1的邻居状态机改为Exchange,并发送新的DD报文来描述自己的LSA摘要,需要注意的是:此时RT2已将报文的序列号改为y+1了。

7. 上述过程持续进行,RT1通过重复RT2的序列号来确认已收到RT2的报文。RT2通过将序列号+1来确认已收到RT1的报文。当RT2发送最后一个DD报文时,将报文中的M=0,表示这是最后一个DD报文了

8. RT1收到最后一个DD报文后,发现RT2的数据库中有许多LSA是自己没有的,将邻居状态机改为Loading状态。此时RT2也收到了RT1的最后一个DD报文,但RT1的LSA,RT2都已经有了,不需要再请求,所以直接将RT1的邻居状态机改为Full状态。

9. RT1发送LS Request报文向RT2请求所需要的LSA。RT2用LS Update报文来回应RT1的请求。RT1收到之后,需要发送LS Ack报文来确认。上述过程持续到RT1中的LSA与RT2的LSA完全同步为止。此时RT1将RT2的邻居状态机改为Full状态。

注:

以上过程是两台路由器由相互没有发现对方的存在到建立邻接关系的过程。或者可以理解为网络中新加入一台路由器时的处理情况。当两台路由器之间的状态机都已经达到Full状态之后,如果此时网络中再有路由变化时,就无须重复以上的所有步骤。只由一方发送LS Update报文通知需要更新的内容,另一方发送LS Ack报文予以回应即可。双方的邻居状态机在此过程中不再发生变化。

转自:http://blog.csdn.net/yiluyangguang1234/article/details/50571910

时间: 2024-08-28 15:03:20

OSPF建立邻居、邻接关系 学习笔记的相关文章

假装网络工程师3——ospf的邻居建立条件与虚连接

一.背景说明 ospf作为IGP两大协议之一,有很多值得深挖的地方,仅通过一篇文章远远不够,后续还将通过多章篇幅进行说明. 二.ospf建立邻居的条件 尽管ospf作为一种链路状态协议,每一台路由器是通过lsa报文(其中包含其他路由器直连网段)在本地计算后形成以自己为根的路由表,但出于安全或其他方面的考虑ospf不是会和任意一台路由器建立邻居关系,ospf建立邻居有下面几个前提条件: 1. 直连路由的接口要宣告进同一个区域中(area) 2. 认证类型和认证密码要一致,查看命令 [R1]disp

ccnp学习笔记

1  eigrp是igp(内部网管协议)协议,最大支持100跳,rip最大支持15跳,16跳不可达. 2是高级距离矢量协议(类似链路)(ADV)与rip对比  rip建邻居是纯触发机制端口两端设置为为rip eigrp是先建立邻居,后建立连接关系后邻居表将连接关系装在拓扑表中    进行dlal算法计算后放入路由表, 3eigrp是无泪协议,是高档协议,是不连续子网,发送路由信息支持vlsm cidr 对于ripv2是一个提升,ripv2只支持vlsm,不连续子网必须满足1可以关闭自动汇总2是一

HCNP学习笔记之OSPF协议原理及配置2-理解邻居和邻接关系

OSPF是一个动态路由协议,运行OSPF的路由器之间需要交换链路状态信息和路由信息,在交换这些信息之前首先需要建立邻接关系.邻接关系用来交换链路状态及路由信息. 注意:并非所有的邻居关系都可以成为邻接关系,不同的网络类型,是否建立邻接关系的规则也不同. 也就是说链路状态信息只在建立了邻接关系的路由器间传递,这点很生要. 四种网络类型: 1 点对点:两台路由器间仅有一条链路,不需要选举,直接通过hello报文建立邻接关系.这种类型的网络建立邻接关系时端口有不同状态的变化,见下图 各种状态的解释如下

HCNP学习笔记之OSPF协议原理及配置3-邻居关系的建立

OSPF协议的邻居关系是通过交换Hello报文建立的,所以我们先对OSPF的报文的种类,及Hello报文的结构做一了解. 1 OSPF协议有5种协议报文(很重要,后面会依次介绍) Hello报文:用于发现和维护邻居关系,在广播型网络和NBMA网络上Hello报文也用来选举DR和BDR. DD报文:通过携带LSA(链路状态通告)头部信息来描述链路状态摘要信息. LS Request报文:用于发送下载LSA的请求信息,这些被请求的LSA是通过接收DD报文发现的,但是本路由器上没有的. LS Upda

CCIE学习笔记之OSPF

Area area-id default-cost cost 在ABR或ASBR上设置广播到stub,total stub,NSSA的默认路由的开销,默认为1. Router ospf 1 Area 1 default-cost 10 Area area-id nssa no-redistribution 在NSSA区域连接area 0的ABR上,不让此ABR把重发布进此ABR的路由发布进NSSA,而只发布进area 0. Router ospf 1 Area 1 nssa no-redistr

ospf的基础与邻居,邻接关系 --理论

OSPF 路由协议与邻接关系 1 ospf 基础: OSPF路由器根据在AS 中的不同位置,可以分为以下四类: 1. 区域内路由器(Internal Routers) 该类路由器的所有接口都属于同一个OSPF 区域. 2. 区域边界路由器ABR(Area Border Routers) 该类路由器可以同时属于两个以上的区域,但其中一个必须是骨干区域.ABR 用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接. 3. 骨干路由器(Backbone Routers)

CCNP学习笔记3-路由部分--OSPF

ospf                rip                eigrp 分类        IGP 无类 链路状态  IGP 无类 距离矢量  IGP 无类 混合 封装        IP 89                udp520            IP 88 更新地址    224.0.0.5-6         224.0.0.9         224.0.0.10 也可以neighbor指单播 更新方式    定时(30分)完整  完整(30秒定时触发  增

CCNA 学习笔记(六)--路由协议(OSPF)

上面我们已经认识到了RIP(路由信息协议)&EIGRP(增强开内部网关路由协议)后,我们再来认识下面的这个路由协议OSPF(开放式的最短路径优先协议)也有人叫它为 接口敏感型路由协议. OSPF 链路状态协议 (open short path first)开放式最短路径优先协议 下面让我们慢慢的一点一点的去了解OSPF协议吧. 1.OSPF  路由协议是一种典型的链路状态路由协议(link-state). A.OSPF采用的是SPF算法,计算到达目的地最短的路径. B.链路:就是指路由器接口.

OSPF之邻居关系、邻接关系

Ospf中路由器之间存在两种连接关系:邻居关系和邻接关系.本博文将详细介绍这2种关系建立及工作原理. 如果两台路由器之间共享一条公共数据链路(两台路由器中间没有其它路由器,或者两台路由器之间存在虚连接),并且成功协商了hello包中所指定的参数,那么它们就成为邻居.如果两个邻居之间需要同步LSDB,那么它们之间需要建立邻接关系.如果两个路由器之间建立了邻接关系,那么它们的LSDB一定是同步的.LSA只在存在邻接关系的路由器之间传递. 那么邻居关系和邻接关系怎么建立呢?邻居关系通过hello报文来