不懂OSPF,你就千万别点开这篇文章。

点开的小友对OSPF应该都是有点了解的吧,自认为对OSPF的认知,能打80分吗?

口说无凭,老杨先来安排五道题,测试一下你的水平:

  • OSPF中的五种报文,哪几种有重传机制,哪些没有?为什么?

  • 怎么利用OSPF中的LSA 信息去描述一个区域的拓扑?

  • OSPF对于不同的网络类型和路由信息是怎么描述的,怎么使用SPF 算法的?

  • 在OSPF 区域中,如果一边启用STUB 区域。一边启用NAAS 区域。他们能正常建立邻居关系吗?为什么?

老杨曾在之前的文章和5分钟知识点中提及过OSPF这个协议,但一直没有细细讲过。

相关链接:

如果大家都只用BGP协议,世界会变成怎么样?

每天5分钟 | 网工路由基础(4)OSPF协议

OSPF是一种基于链路状态的路由协议,也是专为 IP 开发的路由协议,直接运行在 IP 层上面。它从设计上保证了无路由环路。除此之外,IS-IS也是很常见的链路状态协议。

为什么会出现OSPF?

作为目前主流的IGP协议,OSPF主要是为了解决RIP的三大问题而出现的,比如:收敛很慢、容易产生路由环路以及可延展性差等。

OSPF路由协议的应用面非常广,认可度也很高,毕竟的确是好用的。

像教育,金融,运营商,企业、医疗等行业,不论组网模型是复杂还是简单,也无论设备数量和路由条目有多少,OSPF都能很好的满足对应的需求。

所以,在网络部署IGP协议的时候,很多网工都会优先考虑用OSPF组网。

用归用,但一部分网工对于OSPF的理解还是不够深刻。

为了让对OSPF有一定了解的网络工程师,更加全面、深入的理解OSPF,老杨收集了50个关于OSPF的经典问题,字数10000+,建议先转发收藏进你的朋友圈,每天看一点。

相信全部看完的你一定比之前更加理解OSPF,也更好的能运用到日常工作中。

01 在OSPF 中,为什么第三类 LSA 传播超过一个区域,路由信息就会被修改?它不是使用 SPF 算法么?如果这样,那么它和 RIP 的 DV 算法有啥区别?

因为传播超过一个区域之后,路由信息就会改变,而路由信息在OSPF 中,包括防环等作用,这也是RIP 与OSPF 本质的区别。

在RIP 中,由于采用DV 算法,当报文传递过后会改变路由信息,因此也就存在环路。而在OSPF 中,第三类LSA 也是这样。由此,RFC规定,所有区域必须要与骨干区域相连接。但在我们实际组网中,经常碰到非骨干区域与骨干区域不能相互连接,由此RFC 定义了虚连接。

02 虚连接为什么能保证第三类LSA 的路由信息不被修改?

从狭义的角度来说,一条虚连接是属于区域零的一条虚拟链路,因此他也就能保证第三类LSA 的路由信息不被修改。

03 虚连接是怎样使用SPF 算法的?准确的说,虚连接是怎么确定他报文的目的地址的?

每个虚连接都要生成两颗最短路径树(第一棵为本地区域的最短路径树,第二棵为虚连接邻居的最短路径树)计算虚连接最短路径树之后,本地路由器会通过查找对端最短路径树,并通过对端的router-id 来标示。

那么,虚连接到达本地路由器的始发端口的IP 地址,即为本地路由器发给对端虚连接邻居的协议报文的目的IP 地址。

04 为什么OSPF在默认情况下引入外部路由,生成的是第2类而不是第一类LSA?

在外部第一类LSA 中,第一类LSA 比第二类的可信度要高,并与ospf 使能的路由有可比性,而第二类LSA 可靠性比较低,与ospf自动使能的路由也没啥可比性。

举个例子:第一类就相当于ospf 自己的孩子,而第二类就相当于从外面进来的客人。所以,从外面引入的是孩子还是客人?

在选路原则中,一类要永远要比二类优先及时是前者COST 要高,其实我们在看书的时候,关注他的只是COST 值计算不同,而更重要的概念多数人都没有搞清楚。

05 为什么在ospf 中不能引入静态的缺省? RFC 定义了缺省发布的条件。比如NSSA,stub,他们都会自动生成一条缺省。

06 第三类LSA 和第五类LSA link state id 字段都是描述目的网段的地址,它们之间有什么区别?

三类和第五类的LINK-STATE ID 是一样的,都是描述目的网段的地址,即使他们所有的字段都是一样,但是他们所实现的功能是不能相提并论的。

最关键的是,在LSA 报文头中的类型字段有明显的区别,这两类LSA 的作用定位不同。

三类是描述另一个区域的路由,五类描述的是外部路由。(并且他还有外部一类和外部二类,具体的情看第四个问题)

07 为什么OSPF 中四种网络类型所定义的hello time 和生存时间都不一样?

OSPF 一共定义了四种网络类型,而这四种网络类型,大部分都是针对链路,(点到多点需要手动修改),这也是OSPF 的特点之一,能适应更多不同类型的的网络结构中。

并且,不同的网络类型,邻居生存时间和hello TIME 也随之改变,(并且还可以手动修改),这无不证明此协议的人性化。

08 在广播网络环境下,OSPF如果不同进程不同区域使能,邻居能正常建立起来吗?

不能正常建立,因为OSPF路由器在接受OSPF 报文的时候会验证一些报文是否合法。其检查的内容有:版本号、区域ID、验证方法和验证信息。

09 不同进程,同区域,邻居能正常建立起来吗?

能啊,因为在OSPF的报文中并不需要对进程ID 进行检查,所以邻居能正常建立起来。

10 邻居和邻接有哪些区别?什么情况下才会出现邻居,又是什么情况下才会出现邻接?

OSPF一共有八个状态机,其中,down 2-way FULL 是稳定状态机,其他的都是中转状态。所谓邻居关系,主要是指只要与对端邻居关系建立到2-WAY 就可以了,并且用到的报文只有HELLO。如果建立邻接,就需要进步一交互报文。

他俩之间的区别是,邻居只需要使能就能收到对端的HELLO报文,并且自己在对端的邻居列表里面就可以了。所有网络环境都可以建立邻居关系。

而邻接是在建立邻居关系之上从而交互路由信息的。通常,Drother 之间只需要建立邻居关系。

11 OSPF本身能过滤掉自身产生的LSA 吗?

OSPF本身并没有过滤LSA 的机制。有也只是限定一些范围,比如LSDB 的超载机制。原因很简单,如果能限制的话,SPF 算法肯定要出错的。

12 OSPF一共有多少种LSA 报文类型?

OSPF 一共有十一种LSA 报文类型,作用分别如下:

第一类:描述了区域内部与路由器直连的链路信息 第二类:计入了广播或NBMA 网络网段上所有路由器的router-id(打包一类LSA) 第三类:将所连接区域内部的链路信息以子网的形式传播到相邻区域 第四类:描述的目标网络是一个ASBR 的route-id 第五类:描述到外部AS 路由信息 第七类:NSSA 区域专属LSA,描述道外部AS 的路由信息。 以上这几类是我们常用的 第六类:在组播OSPF协议中使用的组播LSA 第八类:在OSPF域内传播BGP 属性时使用的外部属性LSA 第九类:本地链路范围的opaque 第十类:本地区域范围内的opaque LSA 第十一类:本自治系统范围的opaque LSA

13 OSPF中option 的作用有哪些,分别在哪些情况下置位?

option 这个字段是是OSPF的可选功能。描述路由器所支持所选的功能。一共有五位,格式分别如下:

E 位: 该位描述是否洪泛AS-external-LSA MC 位: 该位描述是否多播扩展OSPF 转发IP 多播包 N/P 位: 该位描述了处理类型7 LSA EA 位: 该位描述了是否按OSPF 外部属性inprogress 的说明忽略还是接收并转发External-Attributes-LSA DC 位: 该位描述了按扩展OSPF 和支持需求电路的说明处理按需链路。

14 ospf 中的LSA 报文头,分别在五中报文类型中包含LSA 报文头哪些信息?

包括了LSA 头部信息、Ls 类型、LS ID、advertising(此LSA 生存者)、 LSR 以及LS ID 和此LSA 生存者。

LSU:完整的LSR 和具体的链路信息。 LSACK:LS 类型。LS ID,生存此路由信息和LS 系列号。

15 OSPF 在进程重启,为什么邻居能快速的建立起来,而不是像创建进程一样需要等待那么长时间?

OSPF的邻居存活时间是40 秒,在路由器之前成功建立邻居正常的情况下,一边重启进程,而另一边邻居还正常的存活在邻居表中。

但是当这边重启好了,发送HELLO 的时候,对端也即转到INIT 状态,并且所有的状态,只需要交互一个报文就行了。

所以,重启进程,比普通建立的更快,也就是说,等对端的四十秒过后,再重启进程,那么他们又得重新互发HELLO,又得经过七个状态机才能建立邻接状态。

16 OSPF一直提示LSA disabled,为什么会产生这种情况?

导致这种情况的原因是:当LSA 的老化时间结束时,LSA 他会在LSDB 表里面移除掉,或者此LS 的始发者发送消息flooding 掉。

但在正常的情况下,当邻居正常建立来,并且建立到邻接状态时,他会自动更新LSA 的信息,并且用LS Age 和LS 系列号,来区分那条LSA更新,并在LSDB 表中更新最新的LSA。

既然LSA 出现down 的情况,那么,首先得把问题定位在邻居是否正常建立起来,并且能正常交互报文(LSU LS ACK)具体的请看后面OSPF常见报文错误代码。

17 OSPF卡在init 状态机,这样的情况是怎么引发的?

卡在状态机上有以下这些可能:

OSPF 陷入ATTEMPT,仅对neighbor 语句的NBMA 网络有效。(陷入ATTEMPT是指一台路由器试图通过发送它的HELLO 来联系邻居但是它没有收到响应)

原因

(1)错误配置neighbor:NBMA 上的单播连通性断了,可能是由错误的DLCI,访问列表或转换单播的NAT 引起的。

(2)OSPF 陷入INIT:INIT 状态表示路由器收到来自邻居的HELLO 分组,但是双向通信并没有建立。

  • 一方访问列表阻止了HELLO;

  • 一方的多播能力失效(一个交换机故障);

  • 仅在一方启用了认证;

  • 一方的HELLO 在第2层丢失了。

(3)OSPF 陷入2-WAY 双向状态是指路由器在HELLO 分组的邻居字段中见到了自己的路由器ID。 类似于所有路由器的优先级都为0,则不会发生选举,所有路由器停留在双向状态中。某些情况下是正常状态。

(4)OSPF 陷入EXSTART/EXCHANGE 在EXSTART 或EXCHANGE 状态的OSPF 邻居正处于尝试交换DBD(数据库描述)分组的过程中。

  • 不匹配的接口MTU

  • 邻居上重复的路由器ID

  • 无法用超过特定MTU 长度进行PING

  • 断掉的单播连通性,它可能是因为错误的DLCI,访问列表或转换单播的NAT

(5)OSPF 陷入LOADING 邻居没有应答或邻居的应答从未到达本地路由器,路由器也会陷入LOADING 状态。原因大概率是不匹配的MTU错误的链路状态请求分组。

18 为什么OSPF与BGP在重分布的时候,OSPF 路由的下一跳不确定,就会导致选路错误?

这是由BGP 的环路引起的。在双出口的BGP 中。如果BGP 里面宣告或学习到的路由都一样,建议修改preferred-value 值。把环路取消。然后再做重分布。

19 OSPF 跟STP 结合组网,一般会遇到哪些问题?

一个协议的所有功能都包含在报文中,报文中的某个字段置位,也就是这个协议的功能开启,不管OSPF与那个协议结合组网,只要不影响OSPF 的报文收和发就可以了。

但我们需要注意的是,STP 在收敛的时候,会导致端口阻塞,正常的流量是没有办法通过,那么这样就会造成OSPF 的报文没有办法正常交互,并且会出现一些莫名其妙的现象(比如邻居频繁的UP ,DOWN, UP DOWN,)导致。

还有在交互报文的时候,会莫名其妙的卡在一些状态机上,这些,只有等STP 收敛好,让OSPF 正常交互报文才能一一排除。

20 OSPF 与BGP组网会遇到哪些问题?

大家都知道,BGP 和OSPF 都是第四层的协议,但是BGP 对TCP 有依赖性,而OSPF 对IP 也有一定的依赖性。

(这里解释一下,OSPF使能一个网段后,如果这个网段存在,那么就以组播地址224.0.0.5(广播环境下),针对这个网段发送HELLO 报文,那么如果这个网段不存在呢?那么HELLO 是不可能发送的。大家想想,如果IP 正常的话,肯定无条件使能这个网段,但是IP 地址是DOWN 的情况下,OSPF 还继续发HELLO 包吗?)

我之前说过,OSPF在正常的情况下,不管与什么协议结合一起组网,只要满足他基本的条件,那么邻居和邻接,肯定能正常建立,但BGP 对TCP 有依赖性,换句话说,只有OSPF 正常建立邻接关系,BGP 才能正常交互OPEN 相关的一些报文。

所以,如果OSPF与BGP 一起组网,首先得检查OSPF 相关的设置于错误,然后再检查BGP。

21 OSPF 与IPSEC 一起组网时,一般会遇到哪些问题?

这两个协议相互独立,但是,ipse 和cospf 也不是百分之百兼容(ipsec不兼容组播)。这也就注定,在一些正常的环境下,ipsec 是没有办法载荷ospf 的HELLO 包的。

但是这两个协议结合在一起,如果说一个问题都没有,那也不可能。在这里的话,我将针对以下这些问题做一些解答:

(1)Ipsec 在特定的情况下,能正常载荷ospf 吗?

为什么不能呢?ipsec 除了对组播不支持,单播支持的还算完美的,ospf 又不是所有的报文目的都是组播,其中,NBMA 虚连接等,都是使用单播为目的地址,只要是在单播的环境下。

(2)Ipsec 就能正常载荷数据(加密)那换过来,ospf 能载荷IPSEC 的数据么?

为OSPF 不是像IPSEC 或GRE 那样能载荷,IPSEC就是利用ospf 自动发现的路由作为remote 地址。如果OSPF 得网络中加入IPSEC 这块,一般是因为必须需求,否则一般人是不会这么做的。

因为IPSEC 相对静态,只能点到点,你配置一个OSPF 邻居,就要手动加上一条IPSEC,并且还不能以组播地址为目的地。

22 OSPF区域怎样划分才合理?

答:OSPF细划分区域是很有必要的,现在的路由器的性能越来越强大,但区域该怎么划分才合理,才能把OSPF 最大最优?

这无疑是跟着路由器的性能和拓扑环境走。OSPF虽然只会将最优的路由安装在路由表中,但是,在OSPF 数据库里面,所有的LSA 都会存在,如果网络的直径大起来,最无疑是对OSPF 一个挑战。

根据网络大爬虫中OSPF FAQ 50作者的观点, RFC 的作者在早期推荐过,一个区域最好不超过50 台路由器但那是在90 年代写的,那时候的路由跟现在的性能已经不在是相同的一个档次了。

23 在什么情况下ospf error的OSPF Router ID confusion 数值会增加? 这条错误,相信大家再熟悉不过了。ospf router-id 冲突,RFC 规定,ospf 的router-id在整个AS 中唯一,而router-id 又起着防环的作用。

关于ROUTER-ID 冲突,这边总结出三种情况:

第一种:区域内router-id 冲突。

这种情况大家遇到的最多(骨干区域与骨干区域,非骨干区域与非骨干区域。区域内,)导致的后果是,OSPF 不能正常建立邻居,那么自然不能正常交互LSA 信息。

第二种:区域间的route-id冲突。

这种冲突,必定是在多区域的情况下才会产生,不然怎么叫区域间冲突?这个导致的后果就是路由时有时无,两个冲突的路由器学到的路由,在路由表里,一下有,然后又消失了,然后又出现了。

第三种:虚连接router-id 冲突。

这种情况最明显,导致的后果跟第一种情况差不多,虚连接无法正常建立,(区域间冲突的一种)Router-id 冲突,概念性的就这三种,当然,区域内,区域间,如果细分的话,有十几种,遇到此问题时,整理下思路,OSPF 的ROUTER-ID 冲突相对来说是比较好定位与排除的。

24 在什么情况下,OSPF bad versio数值会增加?

OSPF的版本出错,或OSPF版本字段损坏。

解决办法:检查下OSPF 版本是否配置正确。然后重启下OSPF 进程就可以了。

25 在什么情况下,OSPF bad area ID 数值会增加?

区域ID 配置错误时。如果是在骨干区域与非骨干区域(区域零和非骨干区域冲突),那么在骨干区域的路由器上,OSPF bad area ID 会增值,而在非骨干区域他显示的是虚连接增值OSPF bad virtual link。但如果都是非骨干区域,两边的路由器都是OSPF bad area ID增值。

26 在什么情况下会OSPF bad virtual link数值升序?

OSPF 虚连接错误,只要是非骨干区域与骨干区域不连续,都会出现此错误:

(1)如果是非骨干区域并没有骨干区域(例如,区域1-2 -3 这样) 但在同一个网段中,那么会出现OSPF bad area ID 升值,因为OSPF区域针对的是网段和接口,并不是针对路由器。

(2)OSPF 虚连接是建立在正常的OSPF 邻居之上的,所以,在虚连接DOWN 的情况下先检查OSPF邻居是否正常。

(3)OSPF并不能跨区域建立虚连接,在上面的问题中,我已经描述过虚连接建立的过程,如果是跨区域,那OSPF的目的地址,固然确定不了,既然目的地址确定不了,那么报文肯定不能正常发送。

27 在什么情况下,OSPF bad authentication key数值会增加?

有必要说一句,MSR-20-21,所实现的OSPF 验证,如果一旦在区域内启用OSPF 验证,那么接口就必须要与区域内使用同一种验证模式才能正常加密ospf 报文。

如果接口跟区域内不一致的话(包括区域内启用MD5,而接口下使用的是simple,或者区域内启用验证,接口下不启用,),他是不会发送HELLO 报文的。

因为区域内与接口不匹配或协商的字段不一致,那么它的OSPF 报文会出错的,就算发出去了也是不完整的。并且它在OSPF中的error 不会提示任何代码出错的(因为都没报文发出去,他那什么去检测出错)。

回到题目,OSPF验证方式有两种,一种是在接口下启用验证,一种是在OSPF区域内启用,既然它必须严格要求区域与接口使用的是同一种验证模式(如MD5 或simple)那么此字段升值,肯定是两边接口下的KEY 出错咯。

28 在什么情况下OSPF Neighbor state low 会升值?

此数值会跟着链路的震荡依次升序。如:邻居UP,DOWN,或者链路不稳定时。

29 在什么情况下,OSPF interface down 会升值?

此数值在使能OSPF之后,其链路会进入到一个端口状态(比如,DR,或BDR)。如果此链路不稳定,经常UP,DOWN。那么此数值就会根据UP,DOWN 的次数而升值此项。

30 在什么情况下, HELLO: Netmask mismatch 数值会升值?

OSPF在除点到点和虚连接的情况外,都必须严格匹配network mask 字段,这是验证一个HELLO 是否合法的方式。如果合法,就继续交互报文,建立邻居,反之,则丢弃报文,那么此字段升值,肯定是两边接口的掩码不一致,

31 在什么情况下,HELLO: Dead timer mismatch 字段会升值?

补充一下验证hello 是否合法的方法:

(1)如果接受端口类型是广播型,或NBMA 型,那么所接受的端口中的NETWORD MASK字段必须和接收端口的网络掩码一致,如果端口类型为点到点,或虚连接,那么将忽略此字段。

(2)所接受的hello 报文中的hellointerval 字段必须和接收端口的配置一致。

(3)所接收的HELLO 报文中routerdeadinterval 字段必须和接收端口的配置一致。

(4)所接收hello 报文中的OPTIONS 字段中的E-bit,必须和相关区域的配置一样。那么再回到此代码,毋庸置疑,肯定是两边的router deadinterval 字段不一致,才会升值。(此问题一般都是手动更改接口下的ospf router dead )

32 在什么情况下HELLO: Neighbor unknown会升值?

在hello 包的邻居(Neighbor)字段匹配错误的时候。

33 在什么情况下,DD: Unknown LSA type会升值?

在路由器在数据库同步时,收到未知的LSA 类型的时候。

34 在什么情况下LS ACK: Bad ack会升值?

OSPF 在大概这种情况下发送LSACK 信息:

(1)OSPF 在刚确定建立邻接关系的时候,邻居状态到loading 的时候,收到对方发送的LSU 报文后,回复LS ACK,邻居状态机并转换到FULL 状态,此LSACK 的作用是确保信息传输的可靠性,并对以接受的LSA 进行确认。 (2)如果LSA 的LS 时限等于MaxAge,而且路由器的连接状态数据库中没有该LSA 的实例,而且路由器的邻居都不处于Exchange 或Loading 状态,那么此时的路由器过发送一个LSAck 包到发送的邻居来确认收到该LSA,或丢弃该LSA,并从LSU 包中取得下一个(如果存在)

再回到我们这个问题中:RFC2328 规定,理洪泛之前,要对所接收到的LSAck 包进行很多一致性检查。特别需要与特定的邻居相关联。如果所关联的邻居状态小于Exchange,则丢弃该LSAck 包。

35 在什么情况下LS UPD: LSA checksum bad字段会升值?

在RFC2328 中会,准确来说,会对每个包含在LSU 包中的LSA,进行下面的步骤:

(1)确认LSA 的LS 校验和。如果校验和无效,丢弃该LSA,并从LSU 包中取得下一个。 (2)检查LSA 的类型。如果LS 类型为未知,丢弃该LSA,并从LSU 包中取得下一个那么根据以上的规则,再看此问题,可以很明显的看出来,LSU 在检查效验和,一但在此步骤发生错误,那么OSPF 中的error 中的LS UPD: LSA checksum bad 升值。

36 OSPF 在什么情况下,OSPF bad packet字段会升值?

在OSPF 非法报文的情况下。

在上面的错误中已经介绍了各种报文验证合法的错误。这里的非法指的是,此报文已经通过了OSPF 中的报文头验证,但包中的某些字段过长,导致OSPF进程或路由器无法识别。

37 在什么情况下,OSPF bad checksum 会升值?

在RFC2328 中,定义checksum。 从OSPF 包头开始,除了64 位的验证域外,整个包的标准IP 校验和。该校验和作为16 位1 补足校验和而计算包中除验证域外的所有16 位字。

如果包的长度不满足16 位字,就在校验和前加上一个字节的0 来补足。校验和也被作为正确性验证的一部分因为效验和也被作为正确性验证的一部分。所以,当效验和出错了,此字段也就跟着升值。

38 在什么情况下,OSPF drop on unnumbered interface 字段会升值?

当某个地址借用接口上丢弃的OSPF 报文数的时候。

39 在什么情况下,OSPF bad authentication type升值?

区域内验证类型不一致,导致项升值,区域验证一共有两种,一种是MD5 一种是simple,此字段升值后,检查下区域内配置的验证模式,两端是否一样。

40 在什么情况下,OSPF packet too small 会升值?

当ospf 报文没有正常封装,或者封装的包太小的时候。

41 在什么情况下,OSPF transmit error 会升值?

当传输出错的的OSPF 报文数的时候。

42 在什么情况下,OSPF unknown neighbor会升值?

未知的OSPF 邻居,在广播网络环境下,当一个接口修改Dead 值的时候。

由于DEAD值必须要跟HelloInterval 必须相同,否则就会出错,但是修改了此值之后,首先在OSPFERROR 中HELLO: Dead timer mismatch 此项升值。

接下来,当网段内其他的路由器正常建立邻居而泛洪LS ACK 的时候,此路由(修改了DEAD 值的路由器)收到了其他路由器的一些报文(比如LSACK)。

那么,这些报文对此OSPF(在接口上修改了DEAD)进程来说,是未知的,所以,在这时候,此项就跟着升值了。

43 在什么情况下HELLO: Hello timer mismatch会升值?

在HELLO 包的TIME 值不匹配的时候,全地球网工人都懂,不再讨论。

44 在什么情况下HELLO: Extern option mismatch会升值?

在上面的问题中已经描述过一次,OSPF 在检验一个HELLO 报文是否合法,其检查的字段中有,E-bit,在ospf 特殊区域中比如(NSSA,stub)如果此E-BIT 不匹配。那么ospf 中的ERROR 将会升值此项。

46 在什么情况下DD: MTU option mismatch会升值?

关于这个问题,我们切换到RFC2328 中接收到数据库描述包。如果DD 包中表示IP 包大小的接口MTU 域,大于该路由器接口所能接收的不分片大小,拒绝该DD 包。

否则,如果邻居路由器的状态是: Down: 包应当被拒绝。 Attempt: 包应当被拒绝。 Init: 邻居状态机应当执行事件2-WayReceived,这导致立即变为状态2-Way 或状态ExStart。如果新状态是ExStart,按照下面ExStart 情况的介绍,继续当前包的处理。

2-Way: 包应当被忽略。DD 包仅为建立邻接而使用。 ExStart: 如果接收到的包满足下列一个条件,则邻居状态机需要执行NegotiationDone 事件(这将使状态变为Exchange)。

包的选项域应当被记录在邻居结构的选项域中,包的序号应当是下一个要处理的号码(见下)。

否则,忽略该包。设定了初始(I)、更多(M)和主从(MS)选项位,包的其他部分为空,且邻居路由器标识比自身路由器标识要大。

这时,路由器作为从机/Slave。设定主从位为从,并将邻居数据结构中的邻居DD 序号设定为主机所提出的号码。清除了初始(I)和主从(MS)选项位,且包中的DD 序号等于邻居数据结构中的DD序号(标明为确认),而且邻居路由器标识比自身路由器标识要小。

这时,路由器作为主机/Master Exchange:主机丢弃所收到的重复DD 包;从机收到重复的DD 包时,则应当重发前一个DD 包。

47 在什么情况下DD: Extern option mismatch会升值?

在DD 报文的option 字段出错的时候。根据RFC2328 中定义DD option 的概念如下在交换DD 包时,路由器可以因为功能的不同,而选择不将特定的LSA 转发到邻居。

最后,路由器可以根据LSA 中列出的选项将其排除出路由表的计算,而将流量转发到特定的路由器。

48 在什么情况下LS ACK: Unknown LSA type会升值?

在含有未知类型LSA 的LSACK 报文数的时候。

49 在什么情况下LS REQ: Bad request 会升值?

在请求错误LSA 的LSR 报文数的时候。

50 在什么情况下LS UPD: Received less recent LSA会升值?

在含有不是最新的LSA 的LSU 报文数的时候。

大家都知道,OSPF 是用系列号和LS AGE 来区分一条路由的新衰,当区域内有一台路由器重启时,那么他生成的LSA 信息已经泛洪到别的路由器上去了(描述的是别的链路,他重启对本身这条LSA 信息不会导致任何不良反应,换句话说是本路由器上的LOOK 上也有此路由)

但是,但一台路由器重启过后,区域其他路由器在泛洪此LSA 信息的时候,那么两台路由器此时的LSA 新旧就会发生冲突。

对于别的路由器来说,泛洪的不是最新的LSA。所以,此时的ERROR 在这个时候升值此项。

OSPF的复杂度,真让人感叹,现在回想起来,在H3C 网络之路OSPF专题中开宗明义的第一句话,精通OSPF就太牛了,全国都不到五个人能真正搞懂。

整理:老杨丨8年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值