ospf状态以及建立过程机制

ospf有七种状态和五种数据包
1.五种数据包:
type1.Hello包:发现邻居
type2.Database Dwscripition :链路状态数据库交互包
type3.Link state Request :请求特定的链路状态信息
type4.link state Update : 发送详细的链路状态信息
type5.link state ack :发送确认报文

七种状态:
down:邻居的初始状态,没有任何交互
init:收到对方发送的hello包,但是还没有建立起邻居关系,双方还暂时不能通信
two-way:此时双方已经发现对方,并且开始双向通信,如果需要更深建立邻接关系,则进入Exstate状态,开启链路状态数据库同步,若否,则保持邻居关系在2-way
Exstate:双方发送DD报文并且选举主从
Exchage:交互包含链路状态的DD报文,描述本地链路状态
loading:相互发送LSR,且发送LSU通告LSA
full:两台路由器LSDB同步

详细的抓包过程:

ospf显示exstart ospf处于exchange_ospf

1.Down状态: rt1和rt2没有任何交互

2.init初始化状态:

ospf显示exstart ospf处于exchange_路由器_02

ospf显示exstart ospf处于exchange_路由器_03

且hello包里包含了自己的router-id以及对端的router-id
3.2-way状态:
此时的rt1和rt2已经建立了邻居关系,双方能进行通信,如果进行邻接关系建立,则进入下一阶段建立

双方通过组播的方式发送hello包,在收到对方的hello包后,双方都知道对方的存在,状态变成Exstrat

4.Exstrat状态
此时路由器是邻居关系,要想有更深的关系就需要通过DD报文来继续后面的关系建立,这里DD报文一共发送了五次,下面我们一层一层来看
DD报文的交互是选择两个路由器谁是master,谁是slever,但是这个选大小不是选举DR和BDR(这个要注意)

1.10.1.1.1(router-id:1.1.1.1)发送报文给10.1.1.2(router-id:2.2.2.2),并告诉他,我才是老大

ospf显示exstart ospf处于exchange_ospf显示exstart_04

2.然后10.1.1.2也发了一个包,告诉对面,他才是老大

ospf显示exstart ospf处于exchange_ospf显示exstart_05

3.此时的10.1.1.1妥协了,把自己的DBD设置成了NO

ospf显示exstart ospf处于exchange_ospf_06

4.rt2页更改了自己的状态,变成to-way,但是,rt2没有妥协,依旧是yes状态

ospf显示exstart ospf处于exchange_路由器_07

5.这时候,rt2已经真正成为master了,所以rt1会产生一个negotiation-Done事件,并且状态从Exstrat变成Exchange状态

6.rt1会再重新发送一个包,给rt2的LSDB摘要信息,然后rt2的状态也会变成Exchange状态

5.Exchange交互状态:

rt1和rt2会互相交互LSU和LSR报文,相互交互详细的链路状态数据库

ospf显示exstart ospf处于exchange_ospf显示exstart_08

6.loading状态:

rt1会通过组播的方式发送给rt2一个LSU请求,然后rt2会以单播的方式回复rt1

rt2也会通过组播的方式发送LSU请求给rt1

rt1会发送一个LSR报文,在LSR报文里包含了拓扑信息

ospf显示exstart ospf处于exchange_ospf显示exstart_09

7.full建立完成状态:

通过组播和单播的方式双方进行了LSA报文的交互,rt1和rt2状态变成full状态,此时邻接关系建立完成

ospf显示exstart ospf处于exchange_路由器_10