ospf hello时间和dead_路由协议OSPF学习笔记分享(2)

1、OSPF的邻居

邻接关系的建立都是靠Hello包来完成的,hello包是每经过一个hello-interval发送一次,但是在NBMA网络中,路由器每经过poll interval发送一次给down的邻居(在非广播的网络中是不会给down的邻居发送hello的)

OSPF邻居的有限状态机:

a36877b176e880d0b01a986be011d279.png

1、down:初始状态,没有收到来自邻居的hello包,在NBMA网络poll interval时间发送一次hello给邻居。

2、attempt:只用于NBMA网络,邻居有效。(收到邻居的hello)

3、init:(收到了来自邻居的hello)标识着自身邻居表创立完成。

4、2-way:(在邻居的hello包中看见了自己的router id)多路访问网络选取DR/BDR才能往下进行,其他网络无条件往下继续。标识着邻居的邻居表建立完成。

5、exstart:(协商主从后才能往下进行)router id大的为Master,确定DBD的序列号。主先发DBD,从后发DBD。

6、exchange:交换DBD,也向邻居发送LSR来请求新的LSA。DBD交换完。

7、loading:发送LSR请求最新的LSA,收到新的LSA,对比LSA的序列号(如果LSDB相同,往下)

8、full:完全邻接。同步完成计算最短路径,加载路由表。

导致邻接关系建立不起来的可能原因:

1、卡在down,网络类型与二层网络类型条件不匹配、有ACL阻挡、hello和dead时间不一致、区域ID不一致、认证错误、特殊区域类型不一致、RID相同。

2、卡在2-way,多路访问网络不能选举DR/BDR,即priority都为0.

3、卡在exstart,链路两端MTU设置不同,二层MTU,三层MTU。可以用ip ospf mtu=ignore忽略

4、卡在exchange ,LSA格式不兼容。

2、建立一个邻接关系

在邻接关系建立过程中OSPF需要使用3种类型的数据包:LSR/LSU/DBD

DBD数据包非常重要,它携带了源路由器LSDB中的所有LSA的描述信息(头部)。这些信息可以让路由器判定

LSDB中LSA是否最新,是否完整。

DBD数据包有3个重要位:I(initial)位、M(more)位、MS(Master/slave)位、M(more)位、MS(Master/slave)

I位:置1说明发送的是第一个DBD包。

M位:置1说明发送的不是最后一个DBD包。

M/S位:置1说明源路由器为主,0为从。

更新数据包传送的所有LSA必须单独进行确认,确认后从 链路状态重传列表 删除它们。

显示确认:回送发送一个LSAck来确认收到那个LSA包。

隐式确认:回送包含那个LSA拷贝信息的更新数据包。

主路由器控制着数据库的同步过程。

由于从路由器必须确认每个收到的DBD数据包,因此从路由器总是最先得知同步完成。

51a9e1323def883bd6202e7c78062be8.png

1、R1首先有效,发送hello给R2。由于没有任何邻居,所以邻居列表为空,

DR/BDR为0.0.0.0

2、R2收到R1的hello后,将R1置为init,并发hello给R1,邻居列表加上R1的Router id,并且DR/BDR为自己接口地址。

3、R1收到R2 hello 看到自己Router id,于是2-way,然后到ExStart,R1发空的DBD,序列号为X,I=1,M=1,MS=1,声明自己为主。

4、R2收到DBD后将R1置为Exstart,响应一个DBD,序列号为Y,R2的Router id 更高,它把MS=1,声明自己为主。

5、主从协商完,R1将R2置为Exchange,发送给DBD给R2,序号为Y。MS=0,M=1,I=0

6、R2收到了这个DBD后,将R1置Exchange,发DBD给R1,序列号为Y+1.这个DBD包含了lin state summary list中的LSA头部。

7、R1收到后,返回一个序列号相同的DBD,直至R2发出最后一个DBD,M=0。

8、Exchange状态完成,但是R1请求列表中还有LSR,所以进入loading

9、R2收到最后一个DBD后,将R1置为Full,因为R2请求列表为空了。

10、R1发送LSR,R2发送LSU,过程直到R1请求列表为空,R1把R2也转换到Full

3、OSPF LSA泛洪

泛洪需要采用2种数据包,LSU和LSAck

  • 每个LSU和LSAck都可以包含多个LSA,LSA的发送是可靠的,所以必须对每个LSA进行确认,分:显示确认和隐式确认。
  • router发送一个LSA时,会把这个LSA拷贝放进链路状态重传列表。每隔rxmtintervla时间重传一次,直到收到ACK
  • 延时确认,多个LSA通告可以用一个LSAck确认。广播链路上来自多个router的LSA可以通过一个组播LSAck确认。
  • 直接确认,立即发送并且单播确认。两种情况产生:1 收到重复的LSA,2 LSA老化时间达到最大生存时间。
  • 序列号,当Max sequence number时候,源路由器扩散这个提前老化LSA,重新在泛洪一个initial sequence number包
  • 校验和,校验除Age字段的整个包。LSDB中的LSA每5分钟校验一次。
  • 老化时间(0-3600s)当一台路由器想把LSA删除,就会设置LSA最大生存时间。只有源路由器才能将LSA老化。

收到相同的LSA如何判断哪个是最新的?

1、先比序列号, 序列号大的为新。

2、序列号相同,比校验和,有最大的无符号校验和的LSA新

3、校验和相同,比老化时间,LSA有最大生存时间的老化时间它就是最新的LSA。

4、如果LSA老化时间的差别多于15m(MaxAgeDiff),那拥有较小老化时间的LSA是最新

5、如果还无法区分,那么LSA就是相同的。

声明:本网站发布的图片均以转载为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。本站原创内容未经允许不得转载,或转载时须注明出处:华清信安

来源:公众号网络工程师阿龙

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值