一、DOWN :
双方没有进行任何交互活动。
二、INIT :
收到对方的hello包,但是还没收到含有自己RID的hello包,即对方没有收到自己的hello包。
这个时候发送 hello(224.0.0.5)中DR字段为全零,因为还没有选出 DR。
怎么知道对端有没有收到我的报文呢,通过 Neighbors Seen字段看。
Hello包的参数:
1、自己RID 2、Area ID 3、hello-interval 4、hello-deadinterval 5、网络掩码 6、优先级 7、DR/BDR 8、邻居RID 9、认证信息
只有hello包中的2、3、4、5、9字段一致,才能形成邻居。如有一项不相同的丢弃。
hello 包 ttl 值是 1,在E1中每 10 秒发送一次。因为只是相邻的两台路由器建立关系。Hello包无需穿越路由器到达非直连的路由器。
三、TWO-WAY:
两个OSPF路由器都从对端发来的hello包中发现自己的RID。建立邻邻居关系。
广播网络这个阶段选举DR/BDR。
DR/BDR选举步骤:
step1:根据ospf路由器的接口的优先级选举DR/BDR(每个接口默认的优先级都是1)其中优先级最大的成为DR,次大的成为BDR,其它的都是DR-Other。如果有路由器的pri为0,表示放弃DR/BDR的选举.
priority:1--255 (串口默认没有优先级,因为它默认是POINT_TO_POINT,不需要选举DR/BDR的,可通过sh ip ospf int e0查看)
step2:如果接口的优先级相同,将使用router-id来决定DR/BDR的选举:其中router-id最大的成为DR,次大的成 为BDR,其他的都是DR-other。
先选举BDR,再从BDR中选举DR。
四、EXSTART :
预启动状态,OSPF路由器建立主从关系,然后由主确定一个发送DD的序列号。
选主从原则:RID大的为主。
选主从原因:传输DD之前,先由主确定一个序列号,并且只能有主对序列号进行修改。为确定唯一的DD序列号,让数据可靠到达。因为 ip 是不可靠传输,采用确认+超时重传。
头两个 dd 报文为空,不包含 lsa 的数据,用于协商序列号。这时候都认为自己是主。
五、EXCHANGE:
交换状态。DRother和DR 开始交换数据,主先发送DBD报文,此报文只是一个index(如同一本书的目录)不包含实际的路由数据,从也发送报文,发送主没有的。
DD包信息:
1、I-bit (intial-bit)
标示位,如果置1,则只有1个DD包,如果是子DD包,则置0.
2、M-bit (more-bit)
如置1,表示该DD包不是最后一个。如置0,表示其为最后一个。DD包发送结束。
3、MS-bit (master/slave-bit)
如置1,表示该包为主发的包,置0表示从发的包。
4、DD sequence number
DD包序列号
六、LOADING:
装入状态。从DD 报文中查看那个是自己需要的路由数据,发送LSR 请求发送数据,对端发送LSU,此报文包含所需的全部数据。
LSR信息:
1、 link state type 。总共有11种,但是思科公司未实现全部。
常见:1)router lsa:LID为RID。描述路由器与OSPF区域接口的信息,只在本区域内flooding。
2)network lsa:LID为DR连接该区域的接口IP。有DR产生,描述本区域的路由器信息。是保证在广播网络中只产生一个network lsa 。
3)network summary lsa:LID为目的网络号。由ABR产生,描述其所知道的其他区域网络。
4)asbr las:LID为asba的RID。由ASBR产生,描述自己的位置,使其他路由器可以找到并到达它。
5)as external lsa :LID为外部网络号。由ASBR产生,描述到达外部网络的路由信息。
6)nssa external lsa:LID为外部网络号。由ASBR产生,描述nssa区的直连外部路由。它会被包含到第5类lsa中,以便可以被分发到支持第5类lsa的区域。
2、link id:
不同lsa的link id 不同。
3、 advertising router :
发送lsa的RID。
LSU信息:
数据链路更新包,LAS包含在LSU中。
LSA (数据链路通告,LSA是包含在LSU中的)的传播更新规律 :
Step1:如果本路由器从来没有收到过此LSA,那么路由器就将其加入LSDB,并且转发/泛洪此LSA。
Step2: 如果本路由器,曾经收到描述同一个网络的LSA:
2-1: 如果LSA的序号,与自己已有的相同,则丢弃此LSA。
2-2: 如果LSA的序号,与自己的更新,则同step。
2-3: 如果LSA的序号,比自己的更旧,就将自己较新的LSA发送给源。
七、FULL:
收到LSU报文后发送确认,完成充满状态。
存在DR/BDR时,DR收到LSU后是不发送LSAck的。因为当DR将LSU在该区域内flooding,当发送路由器侦听到该LSA时,就认为是一个确认。
当不存在DR/BDR时,接收路由器发送LSAck。
完成full状态,说明该区域中所有路由都拥有相同的LSDB了。
Full状态是DR/BDR和DRother连接的正常状态。而two-way状态是DRother之间连接的正常状态
从INIT--LOADING 是路由器第一次交换信息的时候才出现,到了 full 以后,如果在有路由变化那么就只发送lsu
完成full状态后。路由器使用spf算法,以自己为根,计算出到达已知网络的最佳路径。
补充:在广播型网络,DRother路由器只能和DR&BDR形成full完全邻接关系,(注意,DRother路由器之间形成two-way部分邻接关系)所以更新报文将发送到224.0.0.6,相应的DR以224.0.0.5泛洪LSA并且BDR只接收LSA,不会确认和泛洪这些更新,除非DR失效 在NBMA型网络,LSA以单播方式发送到DR和BDR,并且DR以单播方式发送这些更新.