绝对绿茶 发表于 2015-5-25 11:34:04

OSPF 邻接关系建立过程(两台路由器)

  RTA的Router ID:1.1.1.1 RTB的Router ID:2.2.2.2
  第1步:初始情况下,邻接关系处于DOWN状态下。然后,RTA开始发送Hello报文。由于当前没有发现任何邻居,因此它的邻居表项是空的,并且DR字段设置为0.0.0.0.
  第2步:RTB接收到RTA发送的Hello报文之后,将RTA添加到自己的邻居表中,同时将RTA的邻居状态设为Init状态。由于RTB的Router ID比RTA的Router ID大,所以在发送的Hello报文中,将DR字段设置为RTB的Router ID。
  第3步:RTA接收到RTB的Hello报文后,在邻居列表中发现了自己的Router ID,因而将邻居表中的RTB的状态修改为2-way。RTA发送Hello报文,其中邻居表中添加RTB的Router ID,将DR的字段设置为RTB的Router ID。
  第4步:RTB收到Hello报文之后,发现了自己的Router ID,从而将路由表中的RTA的状态也修改为2-way状态。如果当前链路上,RTA和RTB都是DRother路由器,它们之间的邻接状态也就停留在2-way状态。如果RTA,RTB有一个是DR/BDR,它们还需要进一步建立邻接关系。
  这以上讲述了两台运行OSPF的路由器建立2-way状态的过程。如果这两台路由器继续承担着DR或BDR的角色,那么它们还需要进一步建立邻接关系。
  第5步:RTA将邻居表中RTB的状态设置为ExStart状态,并且发送一个不包含LSA摘要的DD报文,开始主从关系的协商。该DD报文的序列号由RTA决定,设置为X;I位1,表明是RTA发起的初始化报文;M位被设置为1,表明这不是最后一个DD报文;MS被设置为1,表明RTA首先判断自己是Master路由器。
  第6步:RTB收到RTA的DD报文后,将邻接表中的RTA的状态也设置为ExStart。由于RTB的Router ID值比RTA要大,因此RTB认为自己应该作为Master路由器,所以它发送的DD报文中同样将MS位设置为1,用来表明自己Master路由器的身份。RTB使用的序列号为Y,同时将I位和M位也设置为1,分别表明这是初始化报文以及后续还有更多的DD报文。
  第7步:RTA同意RTB作为Master路由器,因此将MS位设置为0,表明自己的Slave路由器身份,并且采用RTB设置的序列号Y开始发送DD报文。这时的DD报文中LSA摘要。RTA将邻居表中的RTB的状态设置为Exchange。
  第8步:RTB收到RTA发来的DD报文,将邻接表中的RTA的状态修改为Exchange,并采用Y+1的序列号和RTA交换LSA摘要信息。
  RTA和RTB将DD报文中包含的LSA摘要信息,与自己的LSDB相比较。RTB比较之后,若发现所有的LSA信息在LSDB中都存在,则直接进入Full状态。RTA比较之后,若发现LSDB中缺少部分的LSA,则需要向RTB请求这些LSA。(LS Request)
  第9步:RTA将邻接表中的RTB状态设置为Loading,同时向RTB发送LSR报文,请求自己所缺少的LSA。LSR报文中也仅仅包含LSA摘要。
  第10步:RTB收到LSR报文后,将请求的LSA全部内容以一条或者多条LSU报文发送给RTA。
  第11步:RTA将收到的LSA更新放入自己的LSDB,直到所有请求的LSA都获得之后,才将邻居表中的RTB设置为Full。
  到这个时候,完整的邻接关系才算是建立完成。
页: [1]
查看完整版本: OSPF 邻接关系建立过程(两台路由器)