发布网友 发布时间:2022-05-29 20:02
共5个回答
热心网友 时间:2023-11-18 06:11
最近我也在学OSPF,我来详细说一下建立方式
OSPF的更新方式:
一、发现阶段
A先发送一个简单的hello包给B。
此时为Init阶段(能接受对方的消息,但是不确定对方是否能接受自己的消息)
B拆开hello包发现里面并没有自己的RID,于是返还一个RID给对方,并且里面有自己的RID,也有A的RID
A拆开包后发现有自己的RID,还有B的RID,很高兴,再发送个hello包回去,里面包含了双方的RID
这时互相为2 Way状态(确定可以互相发送消息,但是不确定能不能建立邻里关系)
那么发现阶段就结束了。
二、DD交换阶段
初步交换DD(包含LSA头部)如果需要DR选举,那么就是这个阶段了,在40秒内(4倍hello时间)选举完毕,如果已经完成了DR/BDR竞选,那么就直接更从选举结果(不抢占)
此时为Exstart状态(说明双方可见,邻居建立也没问题,在进行DD交换,顺便选举DR/BDR)
A交给B,DD数据包(LSA头部)简单的说,这是一个路由表的目录,并不能够直接形成路由表。
B交给A,DD数据包,这里A先交给B还是B先交给A是没有顺序说法的。
互为Exchange(DR/BDR已经选举完毕了,在建立LSA列表,准备从其他路由中下载这些路由列表)
注:DD:数据库描述,主要用于交换LSA头部
三、双FULL状态
如果A没有B发过来的LSA中的某个路由,那么它就会发送LSR(链路状态请求包),B会返还一个LSU(链路状态更新包),A再返还一个LS Ack来表示自己已经收到了这个消息。
此时为Loading状态(下载更新完整的LSA,没有完成就会一直这样)
B也会做相同的动作来下载LSA头部中所没有的路由,请求A返还。
最终双方都会处于FULL状态(LSA都下载完毕,从Loading或者Exchange转变来)
后续如果说B的路由增加了,那么它的LSA也会增加,这时会以触发更新的形式来发送一个LSU到组播地址224.0.0.5如果是DRother,就会发送到224.0.0.6。
(值得注意的是,组播224.0.0.5是DR/BDR负责发送LSU的地址,每个区域内的路由都会单播一个LSA Ack来作为回应。
而DRother要更新,就发送给224.0.0.6,这是一个只有DR/BDR才监听的组播地址,后续LSU依旧由DR/BDR负责从224.0.0.5来发送LSU,而更新这条路由的DRother不需要回复LSA Ack)
总结:初步OSPF交流时,会发送全部的相关路由,互相交换、下载自己所需要的所有路由条目,之后会以部分更新的形式来更新自己的路由!
热心网友 时间:2023-11-18 06:11
ospf发送的是LSU包含LSA,不发路由表也不发路由,OSPF靠的就是LSA来搞计算路由,就是其他路由器发送LSA给你的时候,要你这台路由器自己去算metric来计算路由,所以比eigrp慢,别人eigrp都是算好的。热心网友 时间:2023-11-18 06:12
ospf不是DV型的 发LSA DV型(EIGRP RIP等)才发路由表 EIGRP是增量更新热心网友 时间:2023-11-18 06:13
ospf是增量更新,不是发整个路由表到邻居。热心网友 时间:2023-11-18 06:13
OSPF只发链路状态,也就是LSA,路由器接到更新后,自己根据算法计算路由