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同步
详细的抓包过程:
1.Down状态: rt1和rt2没有任何交互
2.init初始化状态:
且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),并告诉他,我才是老大
2.然后10.1.1.2也发了一个包,告诉对面,他才是老大
3.此时的10.1.1.1妥协了,把自己的DBD设置成了NO
4.rt2页更改了自己的状态,变成to-way,但是,rt2没有妥协,依旧是yes状态
5.这时候,rt2已经真正成为master了,所以rt1会产生一个negotiation-Done事件,并且状态从Exstrat变成Exchange状态
6.rt1会再重新发送一个包,给rt2的LSDB摘要信息,然后rt2的状态也会变成Exchange状态
5.Exchange交互状态:
rt1和rt2会互相交互LSU和LSR报文,相互交互详细的链路状态数据库
6.loading状态:
rt1会通过组播的方式发送给rt2一个LSU请求,然后rt2会以单播的方式回复rt1
rt2也会通过组播的方式发送LSU请求给rt1
rt1会发送一个LSR报文,在LSR报文里包含了拓扑信息
7.full建立完成状态:
通过组播和单播的方式双方进行了LSA报文的交互,rt1和rt2状态变成full状态,此时邻接关系建立完成