ospf精典问答50例讲解.docx
《ospf精典问答50例讲解.docx》由会员分享,可在线阅读,更多相关《ospf精典问答50例讲解.docx(13页珍藏版)》请在冰豆网上搜索。
![ospf精典问答50例讲解.docx](https://file1.bdocx.com/fileroot1/2023-1/27/86ffc256-4fad-4a2d-9ef4-a6dd7b26d5ec/86ffc256-4fad-4a2d-9ef4-a6dd7b26d5ec1.gif)
ospf精典问答50例讲解
OSPF你懂多少之经典问题50个
OSPF你懂多少之经典问题50个。
(注:
此文档只适合对OSPF有一定了解的阅读)
1:
在OSPF中。
为什么第三类LSA传播超过一个区域?
路由信息就会被修改呢?
他不是使用
SPF算法么?
如果这样那么他跟RIP的DV算法有啥区别?
答ospf:
因为传播超过一个区域之后。
路由信息就会改变。
而路由信息在OSPF中,包括防
环等作用。
这也是RIP与OSPF本质的区别。
在RIP中。
由于采用DV算法。
当报文传递过
后。
会改变路由信息。
因此也就存在环路。
而在OSPF中。
第三类LSA也是这样。
由此RFC
规定。
所有区域必须要与骨干区域相连接。
但在我们实际组网中。
经常碰到非骨干区域与
骨干区域不能相互连接。
由此RFC定义了虚连接。
2:
说到虚连接。
哪虚连接为什么能保证第三类LSA的路由信息不被修改呢?
答:
从狭义的角度来说。
一条虚连接是属于区域零的一条虚拟链路。
因此他也就能保证第三
类LSA的路由信息不被修改
3:
那虚连接是怎样使用SPF算法的呢?
准确的说。
虚连接是怎么确定他报文的目的地址的?
答:
每个虚连接都要生成两颗最短路径树(第一棵为本地区域的最短路径树。
第二棵为虚连
接邻居的最短路径树)计算虚连接最短路径树之后。
本地路由器会通过查找对端最短路径树,
并通过对端的router-id来标示。
那么虚连接到达本地路由器的始发端口的IP地址即为本地
路由器发给对端虚连接邻居的协议报文的目的IP地址。
4:
为什么ospf在默认情况下引入外部路由生成的是第2类而不是第一类LSA?
你提出了这个问题。
这说明你很细心也很用心。
在外部第一类LSA中。
第一类LSA比第二
类的可信度要高。
并与ospf使能的路由有可比性。
而第二类LSA呢。
可靠性比较低。
与ospf
自动使能的路由也没啥可比性。
这里举个例子。
第一类就相当于ospf自己的孩子。
而第二
类呢。
就相当于从外面进来的客人。
所以,大家说说。
从外面引入的。
是孩子还是客人?
并
且在选路原则中。
一类要永远要比二类优先及时是前者COST要高。
其实我们在看书的时
候。
关注他的只是COST值计算不同。
而更重要的概念多数人都没有搞清楚。
5:
为什么在ospf中不能引入静态的缺省?
答:
RFC定义了缺省发布的条件。
比如NSSA,stub,他们都会自动生成一条缺省。
6:
第三类LSA和第五类LSAlinkstateid字段都是描述目的网段的地址。
哪他们之间有什么
区别?
啊。
网友的力量是无限大的阿。
你真的很会观察生活。
年轻人。
对、三类和第五类的
LINK-STATEID是一样。
都是描述目的网段的地址。
即使他们所有的字段都是一样。
但是
他们所实现的功能是不能相提并论的。
最关键的是。
在LSA报文头中的类型字段。
有明显
的区别。
这两类LSA的作用定位不同。
三类是描述另一个区域的路由。
而五类呢。
描述的
是外部路由。
(并且他还有外部一类和外部二类。
具体的情看第四个问题)
7:
为什么ospf中四种网络类型所定义的hellotime和生存时间都不一样?
答:
OSPF一共定义了四种网络类型,而这四种网络类型,大部分都是针对链路,(点到多
点需要手动修改),这也是OSPF的特点之一,能适应更多不同类型的的网络结构中,并且,
不同的网络类型,邻居生存时间和helloTIME也随之改变,(并且还可以手动修改),这无
不证明此协议的人性化。
8:
ospf如果不同进程不同区域使能。
邻居能正常建立起来么(广播网络环境下)
答:
不能正常建立。
因为ospf路由器在接受OSPF报文的时候会验证一些报文是否合法其
检查的内容有。
版本号。
区域ID,验证方法和验证信息。
9:
不同进程。
同区域。
邻居能正常建立起来吗?
为什么?
能。
因为在ospf的报文中。
并不需要对进程ID进行检查。
所以邻居能正常建立起来。
10:
邻居和邻接有哪些区别?
什么情况下才会出现邻居。
什么情况下才会出现邻接。
答:
OSPF一共有八个状态机。
其中down2-wayFULL是稳定状态机其他的都是中转状态。
所谓邻居关系是指只要与对端邻居关系建立到2-WAY就可以了。
并且用到的报文只有
HELLO,如果建立邻接呢。
就需要进步一交互报文。
需要用到的报文有dd。
Lsrlsulsack
他们两之间的区别是。
邻居只需要使能。
收到对端的HELLO报文。
并且自己在对端的邻居
列表里面就可以了。
所有网络环境。
都可以建立邻居关系。
而邻接呢。
是在建立邻居关系之
上。
从而交互路由信息的。
通常。
Drother之间只需要建立邻居关系。
11:
ospf本身能过滤掉自身产生的LSA吗?
答:
ospf本身并没有过滤LSA的机制。
(原因很简单如果能限制的话。
SPF算法肯定要出错)
有也只是限定一些范围的。
比如LSDB的超载机制。
12:
ospf一共有多少种LSA报文类型?
答:
OSPF一共有十一种LSA报文类型。
他们的作用分别如下。
第一类:
描述了区域内部与路由器直连的链路信息
第二类:
计入了广播或NBMA网络网段上所有路由器的router-id(打包一类LSA)
第三类:
将所连接区域内部的链路信息以子网的形式传播到相邻区域。
第四类:
描述的目标网络是一个ASBR的route-id
第五类:
描述到外部AS路由信息
第七类:
NSSA区域专属LSA。
描述道外部AS的路由信息。
以上这几类是我们常用的
第六类:
:
在组播ospf协议中使用的组播LSA
第八类:
在ospf域内传播BGP属性时使用的外部属性LSA
第九类:
本地链路范围的opaque
第十类:
本地区域范围内的opaqueLSA
第十一:
本自治系统范围的opaqueLSA
13:
ospf中option的作用有哪些?
分别在哪些情况下置位?
Option这个字段是是ospf的可选功能。
描述路由器所支持所选的功能。
一共有五位。
格式分别如下
E位:
该位描述是否洪泛AS-external-LSA,
MC位:
该位描述是否多播扩展OSPF转发IP多播包。
N/P位:
该位描述了处理类型7LSA。
EA位:
该位描述了是否按OSPF外部属性inprogress的说明忽略还是接收并转发
External-Attributes-LSA。
DC位:
该位描述了按扩展OSPF和支持需求电路的说明处理按需链路。
14:
ospf中的LSA报文头。
分别在五中报文类型中包含LSA报文头哪些信息?
答:
DD包括了LSA头部信息。
Ls类型。
LSID,advertising(此LSA生存者)LSR只有
LS类型。
LSID和此LSA生存者。
LSU:
完整的LSR和具体的链路信息。
LSACK:
LS类型。
LSID,生存此路由信息和LS系列号。
15:
OSPF在进程重启。
为什么邻居能快速的建立起来。
而不是像创建进程一样。
需要等待
那么长时间?
答:
ospf的邻居存活时间是40秒,在路由器之前成功建立邻居正常的情况下,一边重启进
程,而另一边邻居还正常的存活在邻居表中,但是当这边重启好了,发送HELLO的时候,
对端也即转到INIT状态,并且所有的状态,只需要交互一个报文就行了,所以,重启进程,
比普通建立的更快,也就是说,等对端的四十秒过后,再重启进程,那么他们又得重新互发
HELLO,又得经过七个状态机才能建立邻接状态。
16:
ospf一直提示LSAdisabled。
为什么会产生这种情况?
答:
导致这种情况的原因是。
当LSA的老化时间结束时。
LSA他会在LSDB表里面移除掉。
或者此LS的始发者发送消息flooding掉,但。
正常的情况下。
当邻居正常建立来。
并且建立
到邻接状态时,他会自动更新LSA的信息。
并且用LSAge和LS系列号,来区分那条LSA
更新。
并在LSDB表中更新最新的LSA,既然LSA出现down的情况。
那么首先得把问题
定位在邻居是否正常建立起来,并且能正常交互报文(LSULSACK)具体的请看后面OSPF
常见报文错误代码。
17:
ospf卡在init状态机哪。
这样的情况是怎么引发的。
?
答:
卡在状态机上。
一般有以下这些可能
.OSPF陷入ATTEMPT
仅对neighbor语句的NBMA网络有效。
陷入ATTEMPT是指一台路由器试图通过发送它的HELLO来联系邻
居但是它没有收到响应。
原因:
错误配置neighbor;NBMA上的单播连通性断了,可能是由错误的DLCI,访问列表或转换单播的
NAT引起的。
2.OSPF陷入INIT
INIT状态表示路由器收到来自邻居的HELLO分组,但是双向通信并没有建立。
原因:
一方访问列表阻止了HELLO;
一方的多播能力失效(一个交换机故障);
l仅在一方启用了认证;
l一方的HELLO在第2层丢失了。
3.OSPF陷入2-WAY
双向状态是指路由器在HELLO分组的邻居字段中见到了自己的路由器ID。
原因:
类似于所有路由器的优先级都为0,则不会发生选举,所有路由器停留在双向状态中。
某些情况
下是正常状态。
4.OSPF陷入EXSTART/EXCHANGE
在EXSTART或EXCHANGE状态的OSPF邻居正处于尝试交换DBD(数据库描述)分组的过程中。
原因:
不匹配的接口MTU
l邻居上重复的路由器ID
l无法用超过特定MTU长度进行PING
l断掉的单播连通性,它可能是因为错误的DLCI,访问列表或转换单播的NAT
5.OSPF陷入LOADING
邻居没有应答或邻居的应答从未到达本地路由器,路由器也会陷入LOADING状态。
原因:
不匹配的MTU
l错误的链路状态请求分组
18:
为什么OSPF与BGP在重分布的时候。
OSPF路由的下一跳不确定,导致选路错误。
答:
这是由BGP的环路引起的。
在双出口的BGP中。
如果BGP里面宣告或学习到的路由都一样,建议修
改preferred-value值。
把环路取消。
然后再做重分布。
19:
OSPF跟STP结合组网,一般会遇到哪些问题。
答:
一个协议的所有功能都包含在报文中,报文中的某个字段置位,也就是这个协议的功能开启,不管OSPF
与那个协议结合组网,只要不影响OSPF的报文收和发就可以了,但,我们需要注意的是。
STP在收敛的
时候,会导致端口阻塞,正常的流量是没有办法通过,那么这样就会造成OSPF的报文没有办法正常交互,
并且会出现一些莫名其妙的现象(比如邻居频繁的UP,DOWN,UPDOWN,)导致,还有在交互报文的时候,
会莫名其妙的卡在一些状态机上,这些,只有等STP收敛好,让OSPF正常交互报文才能一一排除。
20:
OSPF与BGP组网会遇到哪些问题。
答:
大家都知道,BGP和OSPF都是第四层的协议,但是BGP对TCP有依赖性,而OSPF对IP也有一定
的依赖性,(这里解释一下阿,大家对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包的。
但是这两个
协议结合在一起呢。
如果说一个问题都没有,那也不可能,在这里的话,我将针对以下这些问题做一些解
答
Ipsec在特定的情况下,能正常载荷ospf吗?
为什么不能呢?
ipsec除了对组播不支持,单播支持的还算完美
的,ospf又不是所有的报文目的都是组播,其中,NBMA虚连接,等,都是使用单播为目的地址,只要是
在单播的环境下。
Ipsec就能正常载荷数据(加密)
那换过来,ospf能载荷IPSEC的数据么?
为什么能呢?
OSPF不是像IPSEC或GRE那样,能载荷,最多,IPSEC
就是利用ospf自动发现的路由作为remote地址,
所以,ospf结合ipsec,首先要注意OSPF的网络类型,以组播的,是不能成功被IPSEC加密的,最后。
还
有一个致命的缺点,如果OSPF得网络中加入IPSEC这块,如果是因为需求需要,否则一般人是不会这么
做的,因为IPSEC相对静态,只能点到点,你配置一个OSPF邻居,就要手动加上一条IPSEC,并且还不能
以组播地址为目的地。
22:
ospf区域怎样划分才合理?
答:
ospf详细划分区域,是很有必要的,现在的路由器的性能越来越强大,但,区域该怎么
划分才合理,才能把OSPF最大最优呢?
这无疑是跟着路由器的性能和拓扑环境走,ospf虽
然只会将最优的路由安装在路由表中,但是,在OSPF数据库里面,所有的LSA都会存在,
如果网络的直径大起来,最无疑是对OSPF一个挑战,但根据网络大爬虫中OSPFFAQ50
作者的观点,RFC的作者在早期推荐过,一个区域最好不超过50台路由器但那是在90年
代写的(也就是我出生的时候,)哪时候的路由跟现在的,性能已经不在是相同的一个档次了。
现在的路由器性能所肯定不是在50内,当然,由于环境限制,此问题上,本人水平有限,
无法做出更科学。
更理论的解答。
23:
两台路由器通过直连链路,建立OSPF邻居,那么在一边使用P2P,而一边使用P2MP
的情况下,能正常建立到邻接状态么?
答:
肯定是不能的,因为这两个网络类型的hellointerval不一样,而在OSPF进程检查一个hello报文是否
合法,其hellointerval,在检查范围内。
因此两台路由上的hellointerval是不一样的,这样的话,当其中一
台路由器接受到另一台的包时,将会丢弃此HELLO包,因此邻居就不可能正常建立起来。
应广大网友要求,为了让此文档更有价值,剩下的问题,都将从OSPF中error
提取,将最大化OSPFerror中的错误点以及解决方法,在MSR20-21上,OSPF
error一共有29条(每个厂商所实现的OSPF在细节上多多少少有一些误差,本文
档的实验环境,是MSR20-21其因为路由器所实现的误差,本人不将做任何解
释),所以。
此error只代表H3CMSR20-21设备上所实现的OSPFERROR,)。
OSPFProcess1withRouterID1.1.1.1
OSPFPacketErrorStatistics
24:
OSPFRouterIDconfusion39:
OSPFbadpacket
25:
OSPFbadversion40:
OSPFbadchecksum
26:
OSPFbadareaID41:
OSPFdroponunnumberedinterface
27:
OSPFbadvirtuallink42:
OSPFbadauthenticationtype
28:
OSPFbadauthenticationkey43:
OSPFpackettoosmall
29:
OSPFNeighborstatelow44:
OSPFtransmiterror
30:
OSPFinterfacedown45:
OSPFunknownneighbor
31:
HELLO:
Netmaskmismatch46:
HELLO:
Hellotimermismatch
32:
HELLO:
Deadtimermismatch47:
HELLO:
Externoptionmismatch
33:
HELLO:
Neighborunknown48:
DD:
MTUoptionmismatch
34:
DD:
UnknownLSAtype49:
DD:
Externoptionmismatch
35:
LSACK:
Badack50:
LSACK:
UnknownLSAtype
36:
LSREQ:
Emptyrequest51:
LSREQ:
Badrequest
37:
LSUPD:
LSAchecksumbad52:
LSUPD:
ReceivedlessrecentLSA
38:
LSUPD:
UnknownLSAtype
24:
在什么情况下ospferror的OSPFRouterIDconfusion数值会增加
答:
这条错误,相信大家再熟悉不过了,ospfrouter-id冲突,RFC规定,ospf的router-id
在整个AS中唯一,而router-id又起着防环的作用,关于ROUTER-ID冲突,我一共总结出
三种情况,分别如下。
第一种:
区域内router-id冲突,这种情况大家遇到的最多(骨干区域与骨干区域,非骨干区
域与非骨干区域。
区域内,)导致的后果是,OSPF不能正常建立邻居,那么自然不能正常
交互LSA信息咯。
第二种:
区域间的route-id,这种冲突,必定是在多区域的情况下才会产生,不然怎么叫区
域间冲突呢。
他导致的后果,路由时有时无,两个冲突的路由器学到的路由,在路由表里,
一下有,然后又消失了,然后又出现了。
第三种:
虚连接router-id冲突,这种情况最明显,导致的后果跟第一种情况差不多,虚连接
无法正常建立,(区域间冲突的一种)
Router-id冲突,概念性的就这三种,当然,区域内,区域间,如果细分的话,有十几种,
遇到此问题时,整理下思路,OSPF的ROUTER-ID冲突相对来说是比较好定位与排除的。
25:
在什么情况下。
OSPFbadversio数值会增加。
答:
ospf的版本出错。
或者说,ospf版本字段损坏。
解决办法,检查下OSPF版本是否配置
正确。
然后重启下OSPF进程就可以了。
26:
在什么情况下,OSPFbadareaID数值会增加?
答:
区域ID配置错误,如果是在骨干区域与非骨干区域(区域零和非骨干区域冲突),那么
在骨干区域的路由器上,OSPFbadareaID会增值,而在非骨干区域他显示的是虚连接增值。
OSPFbadvirtuallink,但如果都是非骨干区域呢,那么两边的路由器都是OSPFbadareaID
增值。
27:
在什么情况下会OSPFbadvirtuallink数值升序,
答:
OSPF虚连接错误,只要是非骨干区域与骨干区域不连续,都会出现此错误,具体的,
分别如下,
第一:
如果是非骨干区域并没有骨干区域,(例如,区域1-2-3这样),但在同一个网段中,
那么会出现OSPFbadareaID升值,因为ospf区域针对的是网段和接口,并不是针对路由器,
第二:
OSPF虚连接是建立在正常的OSPF邻居之上的,所以,在虚连接DOWN的情况下
先检查ospf邻居是否正常,
第三:
ospf并不能跨区域建立虚连接,在上面的问题中,我已经描述过虚连接建立的过程,
如果是跨区域,那么ospf的目的地址,固然确定不了,既然目的地址确定不了,那么报文
肯定不能正常发送。
28:
在什么情况下OSPFbadauthenticationkey数值会增加。
答:
在这里有必要说下,MSR-20-21,所实现的OSPF验证,如果一旦在区域内启用OSPF验
证,那么接口就必须要与区域内使用同一种验证模式才能正常加密ospf报文,如果接口跟
区域内不一致的话,(包括区域内启用MD5,而接口下使用的是simple,或者区域内启用验
证,接口下不启用,)他是不发送HELLO报文的,因为区域内与接口不匹配或协商的字段
不一致,那么他的OSPF报文会出错的,,就算发出去了也是不完整的。
并且他在ospf中
的error不会提示任何代码出错的,(因为都没报文发出去,他那什么去检测出错),那么回
到我们本题中,ospf验证方式有两种,一种是在接口下启用验证,一种是在ospf区域内启
用,既然他必须严格要求区域与接口使用的是同一种验证模式(如MD5或simple)那么此
字段升值,肯定是两边接口下的KEY出错咯。
29:
在什么情况下OSPFNeighborstatelow会升值?
答:
此数值,会跟着链路的震荡,会依次升序,(如邻居UP,DOWN,或者链路不稳定,)
30:
在什么情况下,OSPFinterfacedown会升值。
答:
此数值,在使能ospf之后,他的链路会进入到一个端口状态(比如,DR,或BDR,),如
果此链路不稳定,经常UP,DOWN。
那么此数值就会根据UP,DOWN的次数而升值此项。
31:
在什么情况下,HELLO:
Netmaskmismatch数值会升值。
答:
ospf在除点到点和虚连接的情况外,都必须严格匹配networkmask字段,这是验证一
个HELLO是否合法,如果合法,就继续交互报文,建立邻居,反之,则丢弃报文,那么
此字段升值,肯定是两边接口的掩码不一致,
32:
在什么情况下,HELLO:
Deadtimermismatch字段升值,
答:
补充一下,验证hello是否合法,分别如下,
第一:
如果接受端口类型是广播型,或NBMA型,那么所接受的端口中的NETWORDMASK
字段必须和接收端口的网络掩码一致,,如果端口类型为点到点,或虚连接,那么将忽略此
字段,
第二:
所接受的hello报文中的hellointerval字段必须和接收端口的配置一致,
第三:
所接收的HELLO报文中routerdeadinterval字段必须和接收端口的配置一致,
第四:
所接收hello报文中的OPTIONS字段中的E-bit,必须和相关区域的配置一样。
那么再回到此代码,毋庸置疑,肯定是两边的routerdeadinterval字段不一致,才会升值,(此
问题一般都是手动更改接口下的ospfrouterdead)
33:
在什么情况下HELLO:
Neighborunknown升值,
答:
hello包的邻居(Neighbor)字段匹配错误,
34:
在什么情况下,DD:
UnknownLSAty