
2016.8.30 第2次修订
华为OSPF理论知识详解(二)
华为OSPF理论知识详解(一):http://www.023wg.com/lypz/100.html
8、OSPF邻居状态机
OSPF共有8种状态机,分别是:Down、Attempt、Init、2-way、Exstart、Exchange、Loading、Full。
1、Down:
邻居会话的初始阶段,表明没有在邻居失效时间间隔内收到来自邻居路由器的Hello数据包。
2、Attempt(尝试连接):
该状态仅发生在NBMA网络中,表明对端在邻居失效时间间隔(dead interval)超时后仍然没有回复Hello报文。此时路由器依然每发送轮询Hello报文的时间间隔(poll interval)向对端发送Hello报文。
3、Init:
收到Hello报文后状态为Init。
4、2-way:
收到的Hello报文中包含有自己的Router ID,则状态为2-way;如果不需要形成邻接关系则邻居状态机就停留在此状态,否则进入Exstart状态。
5、Exstart(预启动):
开始协商主从关系,并确定DD的序列号,此时状态为Exstart。
6、Exchange(交换、传输):
主从关系协商完毕后开始交换DD报文,此时状态为Exchange。
7、Loading:
DD报文交换完成即Exchange done,此时状态为Loading。
8、Full:
LSR重传列表为空,此时状态为Full。
9、OSPF邻接关系建立
初始状态下,所有OSPF接口的邻居状态都是down,没有与任何设备建立邻居关系,更没有建立邻接(邻居关系不等于邻接关系)关系。
整个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并添加到邻居列表中。
然后在Dead Interval超时前以组播方式向所连接网段中的所有直接连接的OSPF设备发送一个封装了自己路由ID和R1路由ID的hello报文。
当R1收到来自R2的hello报文后发现里面有自己的路由ID,则将收到来自R2报文的接口转为2-way状态,同时从收到的报文中获取R2的路由ID并添加到邻居列表中,在Dead Interval超时前以组播方式向所连接的网段中所直连接的OSPF设备发送封装了自己的路由ID 和R2路由ID 的hello报文。
当R2再次收到来自R1的hello报文,发现里面有自己的路由ID后,将收到来自R1报文的接口转换成2-way状态。这是R1和R2建立双向2-way邻居关系。
通过以上4步(两次握手)建立起邻居关系,进入主从关系确立阶段。
2、主从关系确立阶段
在双方都进入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状态。
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接口间整数建立完全邻接关系。
10、OSPF LSA类型
OSPF是一种典型的链路状态路由协议,缺省情况下每个路由器通过向邻居发送LSA(Link State Advertisement,链路状态通告)来彼此交换并保存整个网络的链路状态信息,从而掌握全网拓扑结构,并独立计算路由。
划分区域后,OPSF设备收集其所在网络上各个设备的的链路状态信息,并生成链路状态数据库(LSDB),然后OSPF设备根据SPF(Shortest Path First,最短路径优先)路由算法独立算出到达任意目的地的路由。
所以不同的OSPF设备所发送的LSA的用途和可以通告的范围各不相同。OSPF LSA类型示例图
1、Router-LSA(Type1)
每个设备都会产生,描述了该设备直连链路状态和开销,在所属的区域内传播。
2、Network-LSA(Type2)
由DR(Designated Router,指定路由)产生,描述本网段的链路状态(即DR所在网段网络掩码和该网段内有哪些设备),在所属的区域内传播。
3、Summary-Network -LSA(Type3)
由ABR产生,ABR将自己所在区域的Type1和 Type2转换成Type3,来描述区域间的路由信息(包括缺省路由),可以在整个AS内泛洪,但不能泛洪到 Totally STUB(完全末梢)和NSSA(非纯末梢)区域。
4、Summary- ASBR -LSA(Type4) 由ABR产生,描述到其它各区域ASBR的路由,通告给除本ASBR所在区域的其他相关区域,仅可向普通区域泛洪,不能泛洪到 STUB、NSSA、 Totally STUB、Totally NSSA区域。 |
5、External- AS-LSA(Type5),也称为Autonomous system external LSA
由ASBR产生,描述到AS外部的路由,通告到所有的区域(除了STUB、NSSA、 Totally STUB、Totally NSSA区域)。
6、LSA(Type6)
用于OSPF组播
7、NSSA LSA(Type7)
由NSSA或Totally NSSA区域的ASBR产生,描述到AS外部的路由,仅在NSSA(非纯末梢)或Totally NSSA区域内传播。
8、Opaque LSA(Type9/Type10/Type11)
Opaque LSA提供用于OSPF的扩展的通用机制。其中:
Type9 LSA仅在接口所在网段范围内传播。用于支持GR的Grace LSA就是Type9 LSA的一种。
Type10 LSA在区域内传播。用于支持TE的LSA就是Type10 LSA的一种。
Type11 LSA在自治域内传播,目前还没有实际应用的例子。
OSPF理论知识详解(三):http://www.023wg.com/lypz/106.html



本文地址:http://www.023wg.com/lypz/102.html
版权声明:若无注明,本文皆为“Swiers思唯网络博客”原创,转载请保留文章出处。

