一、七种OSPF邻居状态机:
—–init——初始状态:此状态在接受和发送OSPF–hello包,hello包目的IP地址为224.0.0.5,IP头部里面TTL:.1;其中hello包内容包含;自己的RID,邻居ID,DR地址,BDR地址、接口优先级、hello包发送间隔时间10秒、hello包死亡超时时间40秒等
—–2-WAY——双向邻接状态:(当我收到邻居发来的hello,这个hello包里面邻居ID字段是我自己的RID,则我当前状态为2-way状态) 在此状态下如果链路类型为广播的话开始选举DR和BDR,选举DR和BDR的时候有一个40秒等待时间,当40秒后这个链路还没有选举出来DR或者BDR我当前接口就会变成DR
—–EXSTART——信息交换初始状态:发送空的 LSDBD 数据库摘要信息,确定主从关系(防止产生冲突) 和 LSA的序列号范围(路由),谁是主谁先发送LSDBD数据库摘要信息,谁是主采用谁的序列号 ; 谁的RID大谁为主设备;【①(简易理解就是对方都有一个仓库,仓库对应有一个清单,互相发送清单。双方对应看看对方没有的东西,然后买一份对方缺失的东西送给对方,同步信息。)||| ② 链路每发生一次变化,都会产生 LSA,给自己的OSPF邻居通告。而且新产生的LSA序列号要 +1,一代表最新的,发给对方,对方一看,收到的LSA序列号改变了,他就意味着,我现在收到的LSA比刚才收到的LSA更新,所以就替换了老的 LSA,LSA序列号高的替换低的。】
—–exchange——信息交换状态:同步数据库LSDBD LSR LSU LSACK【双方发送完hello报文后,会相互发送LSDBD报文(相当于以上所说的清单),然后每台路由器会检查自己的拓扑表中还缺失哪条条目(检查仓库缺失的物品),发现对方有的东西我没有。这时候才会发送LSR来请求缺失的条目,对方收到LSR请求之后,雇一个卡车,这个卡车就是LSU,再这个卡车里面我存放缺失的东西,就是LSA(代表缺失的路由信息),对方通过LSACK来回复已经收到了,并表示感谢。】
—— 通俗理解:{ 数据库摘要信息:张三和李四两人互相交换交通路径信息;张三告诉李四我知道去往上海的路怎么走,李四告诉张三我知道去往南京的路怎么怎么走,但是都没有告诉对方去往南京或者上海路径的详细信息,这就是数据库摘要信息;—LSDBD;里面包含LSA头部摘要信息;可以把LSA简单理解为路由;仅仅简单告诉对方我知道这个路由,但是没有告诉你去往这个路由的详细信息,你如果想要获取给我发LSR请求,我给你回LSU,LSU里面包含了详细的LSA信息,你收到我给你的LSU,需要给我回应一个LSACK确认信息
当张三发现自己不清楚去往南京怎么走的时候,会请求李四把去往南京的详细路径信息发过来,包括:路径开销,几条路径可达等;当张三之前知道去往南京怎么走的时候怎么处理:会比较LSDBD里面的序列号:序列号数值越大越代表此路径为最新路径
–LSR
李四收到张三的请求会给张三发送去往南京的详细路径回应(LSU)。
张三收到回应后要给李四发送确认信息以代表我收到了感谢(LSACK)
详细的路径信息由LSA来表示 }
—–loading状态——信息加载状态:通过exchange第一次同步没有完成所有的数据同步动作,在进行LSR\LSU\LSACK同步行为,直到完全同步。为loading状态
—–full——完全邻接状态:直到双方的拓扑数据库达到一致,这时候每台路由器会以自己为根,运行SPF算法,计算最佳路由,构建路由表。
—–down—— 邻居关系关闭状态:超过40秒没有收到邻居的hello包 ; 认证失败、区域类型不一致…..
数据库同步完成,每台路由器以自己为树根,运行SPF算法,计算去往所有树枝的最短路径,把最短路径放进自己的路由表;说白了数据库就是想要建立一个当前网络详细的地图,数据库等于地图;ospf路由协议其本身是没有环路的;
————————————————————————————————————————————————————————
二、邻居状态机图解:
————————————————
三、OSPF协议收敛情况:
1.1 手工收敛 clear ip ospf process
1.2 触发式增量更新,这个路由器有三个接口启用了OSPF,有其中一个接口出现了故障(链路变化),会立即产生 LSA 进行通告。
1.3 每30分钟会针对LSA重新泛洪一次,就是说:谁产生的这个LSA,谁负责在30分钟重新产生一次这个LSA并且泛洪;
————————————————