51学通信技术论坛

 找回密码
 立即注册
搜索
查看: 4079|回复: 0
打印 上一主题 下一主题

关于OSPF协议的常见问与答 [复制链接]

Rank: 9Rank: 9

懒

跳转到指定楼层
楼主
发表于 2012-9-23 23:19:10 |只看该作者 |倒序浏览
一键分享 一键分享
本帖最后由 爱卫生 于 2012-9-23 23:28 编辑

本文信息来自华为公司。

2        OSPF FAQ

2.1        OSPF是否很难懂?

A:前面提到过,OSPFv2(RFC 2328)算是RFC 0001-3000最重要最复杂的协议之一了,其中的细节描述非常之多而细微繁杂。我曾经对比过RFC的文件大小,可能只有一个关于新千年的非技术文档比它要大点了。相对起来,OSPF确实比较复杂。但绝对不是非常难以掌握。如同其它Internet核心技术一样,它是非常有趣和有挑战性的;同样,一般的了解和配置都是易于掌握的,也就是说如果你不开发或测试OSPF,那么你所需要达到的程度还是很容易实现的。但作为一个开发或测试OSPF模块的人员,你必须对其中所有的细节都非常精通,而这确实需要些时间的积累。好在目前的资料和积累都非常多了,深入了解OSPF已经是件相对5年前容易多的事情了。至少,如果你能不去参考文档能回答本文几乎所有的FAQ,那么你确实对OSPF算的上相当的精通了。


2.2        为什么新路由器启动后我不能配置OSPF?

A:很简单,一上来是不能配置OSPF的,因为OSPF运行是需要一个确定的Router ID作为路由器标志的,这个东西对于OSPF来说非常重要,在OSPF的各类协议报文中都要用到。所以,要么你在OSPF中明确指定Router ID,要么配置一个以上的三层接口让OSPF模块计算出一个可以供OSPF协议使用的Router ID,这样才能启动OSPF进程。


2.3        OSPF的Router ID如何配置,缺省是什么?

A:VRP3.0和IOS一样,如果没有显示配置OSPF Router ID(很遗憾,VRP3.0的OSPF没有命令配置,但在MPLS/BGP VPN环境下,对于OSPF多进程是起进程的时候就同时一条命令配置Router ID),简单的说我们采用如下策略:1.如果有loopback接口配置了,就选IP地址数值最大的loopback地址;2.如果没有配置loopback接口地址,就选IP地址数值最大的物理接口地址。 VRP3.x在全局模式下通过配置 router id来配置OSPF的Router ID,这样OSPF多进程如果不指定的话,用同一个Router ID了。我们可以在启动OSPF进程时同时指定Router ID,如 ospf 100 router-id 1.1.1.1 需要注意的是,如果当前OSPF进程正在运行,Router ID即使是重新手工配置或计算都不会马上生效,而需要OSPF进程重新启动才会生效。这个要求是合理的,因为Router ID对OSPF协议来说太重要,不可能在OSPF保持邻居不断的情况下更新。


2.4        为什么引入的两条静态路由不能同时发布?

A:这个是VRP3.0的历史遗留问题,不支持RFC 2328 Appendix E,一直没有很好解决。实际上一般情况下静态路由都可以正确发布的,但对于类似于RFC 2328 Appendix E情况,由于OSPF type 5 LSA的ID是以这些网段的地址来标识的,每一类型的LSA是以产生该LSA的路由器ID、LSA的序列号以及所承载的网段的网络地址这三个信息的组合作为其关键值进行区分的。所以同一台路由器产生的或者引入外部路由而生成的这些LSA,对于那些网段地址一样、而掩码信息不一样的路由,将不能进行区分。例如对于静态路由20.20.0.0/16和20.20.0.0/24的引入将只会生成一个LSA,其中必有一条路由因不能引入而被丢弃。OSPF的RFC 2328附录E推荐了一种改进的方法,很可惜VRP3.0并不支持,在多个项目中也暴露出这个问题。

更详细的总结请参考测试中心周迪整理的文档:OSPF附录E及相关问题与规避措施,文档URL如下:http://tech.huawei-3com.com/article.php/1003


2.5        为什么我配置两个区域,从这两个区域学到的路由总的开销相等,为什么不能形成ECMP(等价路由)?

A:按协议标准,在RFC 2328 Section 16.8.  Equal-cost multi path中规定OSPF要形成等价路由必须有如下的条件:1.涉及的是同一区域;2.优先级和总的开销一致。很多情况下大家忽略了第一个条件。对于Intra或Inter Area的路由,协议并没有非常明确的规定,在多区域各种比较条件相同的情况下到底选择哪一条,VRP3.0的选择条件也并非选择后面发布的一条。但对于type 5的外部路由,RFC 2328 Section 16.4.  Calculating AS external routes中明确规定,when there are multiple least cost routing table entries the entry whose associated area has the largest OSPF Area ID (when considered as an unsigned 32-bit integer) is chosen。也就是最终选择经过的Area ID大的那条路由作为优先。不过需要注意的是,很多实现都没有严格按照这个来做的。对于Cisco IOS来说(以IOS 12.3(10)T为例),无论是区域间路由,还是AS外部路由,都会形成等价路由,这应该是与协议不符的。更详细的总结可以参考tech网站的相关文档:关于OSFP不同区域负载分担的问题,URL在:http://tech.huawei-3com.com/article.php/913


2.6        为什么有的Stub区的ABR没有正确产生确省路由?

A:在某些特定组网下(主要是Area 0只采用loopback接口,没有形成邻居),STUB区的ABR没有产生缺省路由。看来这样的组网方式还是有些市场,我对你发现的问题感到很遗憾,这其实是出了网上问题几方讨论后的一个妥协结果。实际上我个人认为,目前的处理并非很有道理。更详细的总结可以参考tech网站的相关文档:为什么STUB区的ABR没有产生确省路由?,URL在:http://tech.huawei-3com.com/article.php/822


2.7        ABR确切定义是什么?是否在路由器上配置了两个以上的区域就是ABR?

A:非常遗憾,RFC 2328给出的ABR定义如下: Area border routers: A router that attaches to multiple areas.  Area border routers run multiple copies of the basic algorithm, one copy for each attached area. Area border routers condense the topological information of their attached areas for distribution to the backbone. The backbone in turn distributes the information to the other areas. 这里并没有给出ABR非常严格的定义。导致一些厂商的实现不一致,而ABR的功能又如此重要。但在RFC 2328中 3.1. The backbone of the Autonomous System 中有描述:The OSPF backbone always contains all area border routers. 反过来,ABR必须属于骨干区。如果你一个路由器只配置了Area 2,Area 3而没有接口属于骨干区,肯定就不能算是ABR了。对于ABR的比较严格或比较有效的定义,可以参考:RFC 3509 :Alternative Implementations of OSPF Area Border Routers。,这个文档正式了RFC 2328对ABR定义不严格导致的一些问题,提出了更严格的两种定义方法。目前的VRP3.0对ABR定义如下:1.配置多个区域;2.不但要求要有骨干区的接口,而且还要有邻居在骨干区域形成。


2.8        OSPF没有路由,甚至邻居都不能形成Full关系,最常见的原因是什么?

A:原因很多。但最常见的是如下几种情况: 1.        OSPF网络类型是NBMA的,但你忘记在OSPF协议模式下配置邻居了; 2.        OSPF网络类型是NBMA的,你配置了邻居,但在诸如Frame relay的map语句中忘记加broadcast关键字了,导致协议报文不能到达对方; 3.        OSPF邻居的hello及dead interval值不一致; 4.        在Stub或NSSA区域,有些路由器没有配置成Stub或NSSA; 5.        OSPF验证配置错误; 6.        OSPF Router ID有问题,可能和某个其它路由器一样了; 7.        OSPF链路两端的网络类型不一致; 8.        OSPF链路两端的MTU相差比较大,尤其注意和比较老的IOS实现互通时(需要在其接口下配置OSPF忽略MTU检查或修改MTU); 9.        该网络根本就没有启动OSPF; 10.        区域号不一致;链路的网络地址不一致,注意检查两边的mask; 11.        ip unnumbered的地址借用接口一般也要注意对端也需要配置为ip unnumbered; OSPF的排错不是几句话就能写的很全面的,建议参考专门的Troubleshooting OSPF,Cisco Networker 2004的最新文档在http://tech.huawei-3com.com/article.php/162


2.9        有什么好的办法知道OSPF出了什么问题?

A:其实很简单,也是必须知道的。调试开关是需要打开的,其中最有效,最常用的就是debugging ospf event(IOS对应命令为debug ip ospf event)!它能让你对OSPF的大部分问题看的一目了然。当然它也不是万能的,它是在正确接收OSPF报文的基础上才能有相应的错误事件。如果没有看到任何动静,建议打开OSPF的所有报文调试开关,看看报文的收发是否正常。


2.10        我配置了Frame Relay或X.25,为什么OSPF不能形成邻居呀?

A:这个是大家经常犯的错误,甚至对于一些比较熟悉OSPF的工程师而言。请注意,一般来说,在跑Frame Relay,X.25,ATM等封装类型的链路上,OSPF缺省的网络类型是NBMA的,这时候要注意两个事情:一是别忘记在OSPF配置模式下配置OSPF邻居;二是别忘记了在映射IP地址的时候别忘记加入broadcast选项,以便让广播或组播报文正常收发。


2.11        OSPF如何自动计算接口cost的?

A:VRP和IOS一样,当链路接口没有明确配置OSPF cost的时候,cost按配置的基值除以接口带宽来计算。这个基值缺省为100M,例如10M的链路,cost缺省是100/10=10。显然当运行OSPF的路由器存在多个速率不同的1000M以上的高速接口时候,如果接口没有明确赋予OSPF cost,按缺省公式自动计算的cost将都为1,不能反映链路速率。这个时候IOS是有一个auto-cost reference-bandwidth的命令,来调节基准值的,但要注意,整个OSPF路由域都要对应调整。因此,最好的方法,还是在网络做好规划,手工对链路接口的cost赋值。需要注意的是VRP规定,对于链路速率小于等于2K的,按2K计算;大于等于100M的,按100M计算。而对于loopback口,由于是虚拟的接口,VRP在某些版本(比如新的AR46)上cost缺省和IOS一样是1,更多的版本(比如老的NE系列)是1562,我记得很早前我就反馈过应该设置为1。而且对于100/10M自适应的以太网接口,在VRP3.3下,100M端口cost是1,但是如果将强制为10M (Speed 10),cost还是1,天啦,世界真奇妙。


2.12        OSPF的P2P网络类型,一定要求两端的IP地址在同一网段吗?

A: 很多人都认为,只有地址借用的P2P链路是不用检查是否在同一网段的。实际上VRP的实现中,在OSPF P2P网络类型的前提下,如果链路层协议封装为PPP,配置不同的网段地址,是可以形成Full并正确路由的;但如果链路层协议封装为HDLC或其它协议,则不能形成邻居。差别在于,PPP可以协商到对端的IP地址,不用额外的操作也有对端的路由。顺便说一句的是,OSPF广播网络,NBMA,P2MP等其它网络类型,是要求严格检查邻居的IP地址是否和自己接收接口在同一网段的。进一步的了解是,事实上在较老的OSPF标准RFC 1583 OSPFv2中,从Point-to-point的接口描述中(老的实现方式成了OSPF 2328 Section 12.4.1.1 Describing point-to-point interfaces中的Option 1了)是可以看出,其设计的初衷就是为了支持P2P链路上不管其链路层封装类型,都可以支持两端链路不在同一子网中。


2.13        RFC 2328中规定在Router LSA中描述P2P接口时,我们采用的是哪个Option?

A: 对于Router LSA描述P2P网络产生的Stub network时,VRP采用的是Option 2,和Cisco IOS一致。Option 1描述的是对端的IP地址加32bit的掩码(延续RFC 1583);Option 2描述的是本端的子网网段加上其掩码。需要注意的是,这样如果P2P接口两端不在同一网络上,学习到对端P2P接口路由的总的cost计算是本接口的cost加上了对端接口的cost了,看起来有些怪异。


2.14        OSPF的NBMA网络类型,一定要求是Full mesh的吗?

A:可能受一些培训资料的影响,比如广为流传的李劲松OSPF讲座,大家都认为OSPF的NBMA网络类型从L3的角度看来必须是Full Mesh直接可达的,否则就不可以配置成NBMA。事实上不是如此,只要保证你的DR,BDR和所有的邻居L3直接可达就行了。虽然DR选举并不确定,但你可以通过设置其它路由器的优先级为0来取消它的选举权。这时候路由信息的交换表面上是正确的,但下一跳可能被直接设置成了非DR,除非特别配置如FR在同一DLCI的映射,路由依然不通;而且从健壮性的角度看来,我们建议,当你打算配置OSPF NBMA网络的时候,还是在Full Mesh也就是所有参与的路由器都直接可达的条件下配置。


2.15        我在配置OSPF的P2MP网络类型时,怎么学到了对方的接口IP地址的32bit掩码的路由?

A: 你比较细心,注意到配置P2MP网络类型和其它网络类型,路由表的不同之处。RFC 2328关于Router LSA产生描述P2MP接口时候规定:产生一个type 3的link(stub网络),Link ID是路由器自己的接口IP地址;Link Data设置为:0xffffffff(全1的mask,表示主机路由),cost设置为0。于是在形成Full的邻居关系后,对方将利用此Router LSA,计算出一条代表连入P2MP网络的接口的IP地址的主机路由。进一步,如果你熟悉较老的OSPF标准RFC 1583的话,这实际上是保持了它在Router LSA中对Point-to-point的接口描述。


2.16        OSPF链路两端配置不同的网络类型,能否形成Full关系?

A:看起来很奇怪的问题,其实比较有意思。很多人的第一感觉就是:两端的了链路网络类型都不一样,哪能形成邻居关系呢?其实不然。OSPF协议并没有规定,要去严格检查链路的网络类型,链路的网络类型最重要的描述也是在type 1 LSA中,形成邻居的关系条件检查并没有去检查它。仔细阅读协议并做实验,你会发现不少情况下,比如两台路由器以太网连接,一端保持缺省的广播网络类型,一端配置成OSPF P2P网络类型,肯定是可以形成邻居,并交换LSDB达到Full状态的。但很奇怪的事情是:到达Full状态了,为什么学不到路由呢?其实答案很简单,OSPF路由器需要LSDB来构建SPT(Shortest Path Tree),由于LSDB的数据库是脱节有问题的(在我的Router LSA中,我认为你是个广播邻居;而在你的Router LSA中认为我应该是个P2P邻居),根本无法构建正确的SPT, SPF算法也无法计算出正确的路由。


2.17        OSPF的type 5的外部路由中的Forwarding Address有什么用?是如何填写的?

A:和RIPv2,EIGRP,BGPv4等其它比较“聪明”的路由协议一样,OSPF type 5 LSA中的Forwarding Address(以下简称FA)的作用是通告本路由域内部路由器如何能到达Type5 LSA描述的引入的AS外部网络的更快捷的下一跳,以免内部路由器在广播网络上以自己为下一跳路由到自己,自己再转发到同一广播网络上的外部路由域的路由器上,而产生“额外”的一跳。 ASBR引入外部路由产生的Type 5 LSA中,FA可能是0,也可能是非0的很遗憾,RFC 2328并没有明确规定FA如何填写,这个也是很多人不熟悉的地方。VRP3.0的实现是很早前在我的建议下参考Cisco IOS的实现修改大致类似的。规则如下:如果ASBR引入路由,但OSPF没有在这些路由的下一跳接口上启动(enable),FA设置为0.0.0.0。而在满足如下所有条件的情况下FA设置为非0.0.0.0: 1.        OSPF在ASBR的下一跳接口被启动; 2.         ASBR的下一跳接口没有被设置为被动接口(大家都知道VRP叫silent interface,IOS就passive了) 3.        ASBR的下一跳接口不是OSPF P2P或P2MP类型的; 4.        ASBR的下一跳接口地址落在OSPF协议配置的network命令范围内除此之外,其它情况FA都填为0.0.0.0。必须一提的是:在RFC 2328 ,section 16.4 (Calculating AS external routes)中说明: "If the forwarding address is non−zero,look up the forwarding address in the routing table. The matching routing table entry must specify an intra−area or inter−area path; if no such path exists, do nothing with the LSA and consider the next in the list." 很早期的VRP是有问题的,我建议过修改。如果没有太多的改变的话,目前的实现依然没有完全检查是否有“intra−area or inter−area path”,而是检查是否有OSPF路由(包括了OSPF ASE路由)。关于OSPF FA,建议阅读tech网站上提供的 :The Effects of the Forwarding Address on Type 5 LSA Path Selection 及Common Routing Problem with OSPF Forwarding Address。


2.18        OSPF路由聚合是否可以跨区域聚合?

A:先看一个网上问题,简单示意的OSPF网络拓扑,area 1——area0-area2,area1中三条路由:10.1.0.0/16,10.2.0.0/16,10.3.0.0/16,在area1和area0之间的ABR没有配置聚合(将上述三条聚合成10.0.0.0/8),但在area0和area2之间的ABR配置聚合却不生效。这就是跨区域的聚合问题,这个表现是否正确呢?仔细看下RFC 2328 12.4.3 Summary-LSAs中的描述,我们可以知道ABR产生type 3 LSA时,如果是inter-area,就直接处理,产生相应的type 3 LSA,而不需要考虑配置的range,而在考虑intra-area路由的时候,才要去考虑配置的聚合!所以,这个网上问题是用户的理解问题,不应该是问题。即使能这样聚合,这样做的结果是更多的LSA传到骨干区域,为网络的不稳定带来隐患


2.19        为什么我的路由在cost比较小的情况下没有优选通过Backbone的?

A:一般资料上都没有提到按RFC 2328实现的OSPF必须有个“RFC1583Compatibility”的选项(不过很遗憾,VRP3.0没有这个配置选项,让人怀疑是否是按RFC 2328实现的)。RFC 2328规定,如果“RFC1583Compatibility”是disable的话,路由如果可以经过普通区域和骨干区域同时学习到,而且总的开销相同,是会优选普通区域的。主要的考虑也是为了减轻骨干区的压力。这是个很细节的地方。


2.20        我可以在以太网上配置OSPF网络类型为P2P或NBMA等类型吗?

A:可以的。但除非你有必要并且清楚修改缺省网络类型的后果,不要轻易去改它。初学者可能会认为OSPF中的广播网络,点对点等网络类型,必须是链路层对应也是广播或点对点的。实际上那只是个参考模型而已,与物理介质和链路层协议无关。


2.21        OSPF网络规划时,一个区域到底最好是支持多少个路由器?

A:很多文档,包括RFC 2328作者J. Moy本人在其大作《OSPF:Anatomy of an Internet Routing Protocol》中都建议,最好每个区域不要多于50个路由器。其实我们可以看下,那些文档和这本书是在90s年代成文的。那时候路由器CPU处理速度,内存大小都与当今主流的设备能力不可同日而语。测试表明,200台路由器一个区域都可以非常快速的收敛。个人认为,50台路由器的经验值应该修改了。否则OSPF vs. IS-IS的争论中,OSPF单区域只能支持相对少的多的路由器数目会成为受攻击的弱点。


2.22        我配置了区域需要MD5认证,是否本区域的每条链路都要配置认证?

A:很遗憾,VRP3.0目前是这么要求的,你必须保证该区域的所有链路都要配置MD5认证。而IOS早在12.08就支持每接口认证了。


2.23        OSPF如何过滤接收的路由呀?

A:首先要清楚OSPF是基于链路状态的路由协议,与D-V算法的路由协议不一样,它为了保证拓扑关系的一致性——这也是OSPF路由无环路的重要条件,没有那么轻易能过滤路由并不扩散。不过你可以在OSPF的配置下,利用distribute-list in来过滤路由。但要注意的是:千万不要以为你的OSPF数据库中没有该路由的LSA记录,实际上OSPF进程是算出了该路由,只是路由管理未将其加入到路由表中;还有很重要的一点是该路由对应的LSA依然会扩散,也就是说它的邻居路由器还是会有这条路由的。值得注意的是distribute-list out只能在引入发布配置的外部路由时过滤用。 IOS有:neighbor database-filter的命令,它不过是在冗余连接的情况下限制从某个接口向邻居发送,过滤掉产生的重复多余的LSAs,减少协议报文流量对网络的影响和路由器对协议报文的处理。类似IS-IS的mesh-group的处理。 OSPF还有一个新的特性,OSPF ABR Type 3 LSA过滤。该特性将ABR的能力扩展,使其能在OSPF区域间发布Type 3 LSAs的时候进行过滤。本特性可以限制仅允许满足某些前缀的报文从一个区域发送到另一个区域,这种类型的区域路由过滤可以应用到某个特定区域,对入区域、出区域或两者同时都可以进行控制。可惜VRP3.0是没有实现。


2.24        OSPF如何将一个区域的某条路由隐藏起来,不发布到其它区域?

A:这个问题,很多人都想当然以为用过滤列表就可以解决问题。事实上,当你知道OSPF如何过滤路由的话,你就知道不可能的。一个小把戏是,你在这个区域的ABR上配置路由聚合,聚合范围不变,比如10.1.0.0/16这个网段的路由,依然聚合成10.1.0.0/16,关键的是,聚合的语句后面有个no-advertise选项,它将帮助你不发布到骨干区,更不会发布到另外的区域去了。还有一个笨方法就是,在禁止发布的区域每个路由器用过滤列表禁止该路由加入到路由表中去。如果你关注OSPF的新发展特性的话,你可能会知道有一个OSPF ABR Type 3 LSA 过滤特性将ABR的能力扩展,使其能在OSPF区域间发布Type 3 LSAs的时候进行过滤。本特性可以限制仅允许满足某些前缀的报文从一个区域发送到另一个区域,这种类型的区域路由过滤可以应用到某个特定区域,对入区域、出区域或两者同时都可以进行控制。


2.25        为什么我和Cisco的OSPF做互操作的时候,Cisco路由器明明配置了引入了静态路由,VRP OSPF这边没有收到?

A:恩,土的很,Cisco这回。如果配置的静态路由不是按类的,而是带有子网的——基本都是如此的——在IOS的OSPF中只配置redistribute static是引入不了静态路由的,你必须加个subnet的关键字,整个命令是redistribute static subnet。很多人忽略了,应该说是根本不知道IOS也有这么土的时候,希望新的版本能改正。


2.26        我在接口上配置了主从IP地址,OSPF是否可以以从地址建立OSPF邻居关系?

A:很遗憾,由于实现复杂度的关系,OSPF不允许以从地址建立OSPF邻居关系,而只能以接口的主地址建立邻接关系。其实其它一些协议也是如此实现的。但如果你将从地址接口的网络加入到了OSPF的配置中,它肯定是可以发布相应的路由的。需要注意的是,主从地址可以是可以配置在同一网段中。


2.27        OSPF的virtual link是否很有用处?

A:从协议的角度上来看,OSPF的虚连接Virtual Link非常有用,一是可以将不与骨干区域直接物理连接的区域连接起来,让它能正常路由,这在一些网络的合并中比较有用;二是可以提高网络的可靠性,让骨干区不至于轻易断开而不能正常路由(RFC 2328中的例子)。但坦白的说,实际的应用中虚连接缺很少用到,我的记忆中华为VRP的OSPF协议在网络中大量应用,但几乎没有网络用到v-link。原因很简单:一般来说,网络的规划比较合理,不会让一些区域与骨干区断开物理连接,在国内网络合并而不重新全部规划的情况也非常少;二是大家也经常不会想用v-link来增加骨干区域的健壮性。无论如何,作为OSPF的一个重要特性,对OSPF虚链路,你都应该了解。


2.28        为什么两个路由器背对背一条链路连接,我将接口shut down了,查看链路状态数据库,对端原来的LSA还在?

A:为什么不在呢?OSPF规定,只有LSA的始发者才能Flooding掉自己发布的LSA,唯一的通路都down了,LSA的Flooding自然不能更新过来了,但我自己产生的Router LSA会更新描述新的链路状态,即使你这条LSA在我的数据库中,都不会参与SPF计算,会随着时间老化。


2.29        .OSPF的virtual link上MD5验证的配置为什么总是不通?

A:对于VRP3.0来说,这也是一个比较常见的问题。事实上假设OSPF的v-link是在区域2,你不能只在v-link配置的时候配置MD5认证,由于v-link的链路是属于骨干区域的,你首先要使能骨干区(Area 0)的MD5认证。


2.30        如果配置Virtual link的cost,需要注意什么?

A:需要注意,这个cost是不能超过RFC规定的最大值65535的,否则不能建立v-link。


2.31        OSPF常用的LSA type怎么没有看到类型6呢?是否还有其它类型的?

A:Type 1 LSA:Router LSA;Type 2 LSA:network LSA;Type 3 LSA:summary LSA;Type 4 LSA:asbr-summary LSA;Type 5 LSA:AS-external-LSA;Type 7 LSA:NSSA AS-external-LSA的定义大家可能都比较熟悉了,这里没有必要介绍。原来的OSPF报文编码不是基于TLV的,要扩展OSPF的功能只能扩展其LSA类型了。其实type 6 LSA为group-membership-LSA,是在MOSPF中用于标识组播组成员用的,可惜MOSPF基本被淘汰。Type 8 LSA为external-attributes-LSA,用做将BGP路由引入到OSPF中互操作,保留BGP的AS路径等信息,遗憾的是完全实现的非常少,VRP,IOS都不支持。值得一提的是RFC 2370中定义了重要的LSA类型:Opaque LSA,将OSPF的能力进一步提升,允许采用类似TLV的结构。OSPF流量工程等应用就是基于Opaque LSA扩展能力的。其中LSA Type 9为只在本链路范围扩散的Opaque LSA;LSA Type 10为只在本区域范围扩散的Opaque LSA;LSA Type 11为类似Type 5 LSA在本AS范围内扩散的Opaque LSA。


2.32        在一个Stub区域,有两个ABR,它们产生的缺省路由,不会让它们互相指向,形成路由环路吗?

A:不会形成环路的。当一个STUB区域中的ABR接收到同一区域ABR发出的默认路由LSA的时候,它只会将其放到LSA Database里,而不会计算出路由,这样就避免了两个ABR缺省路由相互指向形成环路。这其实也是VRP OSPF一个血的教训修改的结果。


2.33        在一个NSSA区域,有两个ABR,它们都会将type 7 LSA转换成type 5 LSA吗?

A:不会的。按RFC 1587:OSPF NSSA Option的规定,在NSSA区域有多个ABR时,只有最大的Router ID的ABR将type 7 LSA负责转换为type 5 LSA。


2.34        当一条路由既有type 5 路由又有type 7的时候,我们优选哪个?

A:OSPF路由的优先级从高到低的次序是:Intra-Area>Inter-Area>type 5 AS-External>type 7 AS-External。在这种情况下,应该优选的是type 5路由。注意,对代表同一子网的路由来说,首先比较的是路由优先级才是总的cost。 2.35        OSPF DD报文中的Interface MTU是否有用?两端是否一致才能形成Full? A:在RFC 2328中对DD报文的Interface MTU规定是要填入本链路的MTU大小的(v-link只好填为0),而且要求如果收到对方的DD报文中的Interface MTU大于本端的,这个DD报文就要被丢弃,那么邻居状态就会停留在“Exchange start”下。事实上以前的IOS实现确实检查比较严格,VRP与其互操作会遇到问题。各主要厂商也意识到这个问题,在IOS后续的版本在接口下增加了ip ospf ignore mtu的命令,忽略对interface MTU的检查,这样并不需要两端链路配置的MTU完全一致,也可以正常达到Full状态,完成数据库同步。当然要注意,两端的MTU不能相差太悬殊。和IS-IS的hello padding要求达到链路MTU-1可以抑制样,这也是协议追求完美和现实应用的妥协。


2.36        OSPF LSA中的TOS字段做什么用的?

A:本来的意图是希望做Qos Routing用的,简单的说就是对于不同的TOS值,链路可以配置不同的cost,以实现基于TOS的路由,即目的网络相同但不同TOS值的IP报文做不同的路由。但在RFC 2328中取消了这个应用,只支持TOS 0,也就是只基于目的IP地址的路由。但值得注意的是,从Cisco Networker 2003开始,到Networker 2004出现专门的MultiTopology Routing专题。很明显的,由于Qos这几年的兴起,Cisco IOS也再考虑重新利用TOS字段,来做Qos Routing。感兴趣的同事可以看下该文档。


2.37        OSPF的收敛速度到底是多少?如何能调整加快收敛?

A:大家都说OSPF快速收敛,但具体要给个数据,却一时找很多人要都没有给出,只能重新测试。按Spirent标准的OSPF Route Reconvergence测试方法,在为FT提供的数据,两个小组的测试数据比较接近。当网络拓扑规模为20个结点,100条路由的情况下,用Agilent的Router Tester在spf-schedule-interval为1s时候,收敛速度为2140.9 ms;spf-schedule-interval 为10s时候,收敛速度为7108.4 ms。这个网络规模比较小,数据仅供参考。事实上,对OSPF来说网络变化影响路由收敛主要由如下几个因素组成:1.侦测对端链路down,邻居失效;2.新的LSA 产生并Flooding;3.LSDB同步更新,重新进行SPF计算新路由重新下发到FIB。个人认为在标准的OSPF Route Reconvergence测试方法中,如果STU是单个设备的话就会忽略了1,2的时间测试,收敛时间并不是非常准确。为了加快OSPF的收敛速度,VRP3.0可调整的选项比较少:1.邻居的hello和dead间隔时间;2. spf-schedule-interval(缺省5秒),缩短两次SPF算法运行的间隔时间;3. 减少接口下配置ospf trans-delay,加快LSA的flooding速度。IOS提供了相对丰富的多的微调选项,尤其是i_SPF算法,能较大的改进收敛速度。


2.38        是否有什么比较好的OSPF模拟程序可以用于OSPF的测试和细节学习?

A:你可能会想到测试仪器,比如Spirent的SmartBits,AX4000;Agilent的Router Tester,不错,它们确实都有OSPF的模拟程序,但我想他们不是设计用来细致的测试和学习OSPF的,做性能测试的模拟比较好用,而且设备昂贵,不是随手可得到。我认为在华为,最好还是几年前我让宋新娟写的OSPF Tester程序(集成在某个版本的测试平台VTP中)。它可以非常细致的模拟OSPF的所有的状态,协议报文中的字段可以任意填写,几乎可以用来测试OSPF的每个细节。虽然程序有些瑕疵,我还是诚意推荐。有人抱怨OSPF Tester比较难用,其实可能是对OSPF的细节并不非常精通,也并没有足够的诚意和好奇心来深入了解OSPF。在我看来,深入测试或了解OSPF,这个测试程序基本没有什么多余的。此外,较常见的也有OSPF RFC 2328作者J. Moy写的OSPFD程序,但我没有用过。大家可以试下。Linux下也有一些OSPF的模拟程序可以使用。


2.39        在MPLS/BGP VPN环境中,PE-CE之间路由协议用OSPF,站点的区域号编码有什么限制吗?

A:如果按IOS的实现方式,一个起码的要求是,如果某个站点(site)的OSPF有区域0(骨干区)的话,必须保证PE-CE之间的链路也属于区域0。这是由于在MPLS/BGP VPN环境中,实际上OSPF将MPLS区域当作了一个super backbone来处理。VRP也是如此。


2.40        什么是OSPF sham-link,有什么用?

A:在MPLS VPN配置的时候,OSPF经常用来作为PE-CE中间的路由协议,以通过MPLS骨干网络连接VPN内的各站点。虽然OSPF PE-CE之间的连接保证了VPN站点间的连通性,但VPN站点间的backdoor后门链路也应该考虑。如果两个站点属于同一个site,那么经过后门链路的路径总是会被优先选择,因为按OSFP协议规定,intra-area的路径总是优于inter-area路径。因此,必须考虑存在后门链路时,能通过策略来控制路由。如果后门链路只是用来作为备份使用而不参与VPN业务提供服务,缺省的处理流程将不可接受。为了重新通过MPLS VPN骨干区建立站点间的连接,必须在相关PE路由器的入口和出口VRF间建立逻辑的intra-area链路。本特性提供一种解决方案,在两个站点间建立一个假OSPF链路:sham-link,作为intra-area通道,以使得两个站点间的之间的通讯通过MPLS骨干区域,而后门链路作为备份使用。如果两个站点间不存在后门链路,没有必要使用sham-link。


2.41        什么是MOSPF,有什么用?

A:MOSPF就是OSPF的组播路由协议扩展,它允许IP组播路由选择依靠原来的OSPF路由协议及其扩展。MOSPF在J Moy先生的OSPF协议剖析 (OSPF:Anotomy of an Internet Routing Protocol)有较多的描述。支持MOSPF的厂商原先有3Com,Bay,IBM等,但由于其协议的一些限制和Cisco等最主流的厂商不支持,J. Moy先生可能高估了MOSPF的发展。目前在主流的组播路由协议中,MOSPF基本被淘汰,而PIM-SM大行其道。


2.42        OSPF有什么非常好的书和文档可以深入学习?

A:我认为入门的话,听一次精彩的OSPF培训是个很好的方法,对于小文档,最精彩的应该是Cisco的OSPF Database Explanation Guide,再深入点的入门,也就是Jeff Doyle先生大作 Routing TCP/IP volume 1 中的OSPF部分了。但如果你要测试或开发OSPF,很好的参考书有如下,我认为这些基本上是必读的: 1.RFC 2328:OSPF v2 当然,你希望自己是个专业的一流的工程师,作为OSPF v2标准的RFC 2328是必须打印下来仔细读几遍,然后放在案头,随时备查的。 2.        OSPF协议剖析 (OSPF:Anotomy of an Internet Routing Protocol)  John T. Moy

本书是OSPF协议RFC的作者John T. Moy的力作,包括了OSPF的起源、现状以及未来发展,对OSPF协议的来龙去脉和原理有一个很清晰的阐述。如果想了解OSPF的一种实现和使用OSPF的仿真程序。请看本书的姊妹篇《OSPF协议完全实现》。本书2002年8月由电力出版社出了中文版。我记得我拿到本书的时候,是晚上10点开始看到凌晨4,5点一口气看完的,当然是建立在对OSPF相当熟悉的基础上,收获就是了解了很多OSPF的协议设计思想,而非协议细节。 3.        OSPF网络设计解决方案(第二版)本书全面讲述OSPF网络的设计、配置、管理和疑难解析。全书分为三个部分:第一部分讲述OSPF基本原理,内容包括网络和路由选择基本原理、OSPF简介、OSPF通信;第二部分讲述OSPF路由选择和网络设计,内容包括设计基本原理、路由选择的概念和配置、重发布、汇总;第三部分讲述OSPF的实现、疑难解析及管理,内容包括管理和保护OSPF网络、OSPF疑难解析、OSPF网络中的BGP和MPLS。本书最后的附录部分还提供了关于OSPF的RFC文档资料。 4.   Cisco OSPF 命令与配置手册本书是一本简洁而完整的OSPF命令手册。书中提供了很多示例场景,演示了可在由最少数量的路由器组成的网络环境中实施的每条OSPF命令的正确用法。我一直认为并强调,在华为你所接触到的Internet核心协议技术,Cisco IOS对应的配置手册和命令行手册,你必须精读。以上基本是按RFC 2328 OSPF v2的介绍,如果你想了解OSPF的诸多新的进展的话,请阅读:《OSPF新特性指南 v1.1》,文档URL在:http://tech.huawei-3com.com/article.php/838。不要指望很短的时间内,就真的精通OSPF,在平时的工作中多磨练,多利用前人的经验和总结,你会发现: OSPF is like a box of chocolate,you’d never know what you are going to get……


2.43        i_SPF是个什么东西,有什么用?

A:所谓的i-SPF就是Incremental-SPF,增量SPF算法,是在原来的普通SPF算法改进以空间换时间,以达到加快SPF的计算速度,提高OSPF及IS-IS的收敛速度的目的。核心思想在于当路由变化时判断其对SPF树的影响,对于不涉及SPF树的变化则不需要计算,对于叶结点的增加和删除也可以实现增量计算但有时如一个down掉的链路并不在SPT上时,并不需要重新计算SPF。可以通过在SPT上保存更多的信息如:父亲列表,邻居列表来实现,基于这些增强的信息和变化,SPF再来计算反映变化。VRP3.0未实现,V5和IOS较新的版本都支持。


2.44        支持IPv6的OSPFv3路由协议是否基本和OSPFv2一样?

A:事实上RFC 2740 OSPF for IPv6已经成文很久了。OSPFv3保留了OSPFv2的基本的报文类型,邻居发现维护机制,网络类型,LSA泛洪机制,以及核心的SPF算法。但由于IPv6的地址及其结构的特点,OSPFv3在报文的组成上都做了较大的改变:增加了新的Link LSA,Intra-Area Prefix LSA等LSA类型;IPv6的地址已经不像IPv4那样频繁出现在OSPF协议报文中,协议报文描述的更多是网络拓扑关系,更像是IS-IS那样的PDU组成方式了,协议的扩展性更为灵活。总的来说,差异还是相当大的,但主要的协议思想基本没有改变,有了很好的OSPFv2的基础,如果你对IPv6的机制有一定的了解,OSPFv3还是能很快熟悉的。BTW,需要注意的是,对IPv6的支持,OSPF对应的是OSPFv3,而IS-IS是IS-ISv6。


2.45        OSPF从1998年发布新的v2标准RFC 2328以来,有哪些新特性和发展?

A:其实OSPF不是没有发展变化。从基本的RFC 2328到现在,IOS针对网络应用发布了很多新的特性,我认为,如果你希望自己是个OSPF真正的专家,这些都是应该了解的。很幸运的是我曾经整理了《OSPF新特性指南 v1.1》,文档URL在:http://tech.huawei-3com.com/article.php/838。文档分析了Cisco IOS最新版本IOS 12.3T和12.0S(截止2004-10-28为IOS 12.3(11)T,12.0(29)S)版本做的一些OSPF的新特性,尤其侧重于目前VRP3.0没有实现的特性,可以作为公司同事与时俱进了解OSPF新进展和模块发展规划的参考。其中的某些特性应该在VRP5上已经实现。大家可以继续关注OSPF更多的新的应用和发展,比如OSPF对MTR的支持等(可以参考Cisco Networker 2004中的相关文档)。


2.46        OSPF vs. IS-IS到底谁更好?

A:两年前IS-IS开始在中国大行其道时候很多人问的一个问题。中国电信的技术总结中也多次提到过它。事实上,专门讨论这个问题的文档不少的,最好的可能算Dave Katz,Juniper Networks 写的 IS-IS and OSPF : A Comparative Anatomy了,如果你想了解细节,可以看看。不过最后的结论是:They’re both good protocols. Use the one that makes the most sense to you. 用句很俗的话,OSPF和IS-IS各有优缺点,而且非常近似,如何选择可能确实是个人喜好了。总的来说,在大型的一级运营商网络中,采用IS-IS做IGP的占大多数;而在绝大部分的企业网络中,OSPF是应用最多的IGP。 IS-IS的配置相对OSPF来说简单,不容易出错,比较少耗资源,能支撑更大的网络应该是不争的事实了。

www.gprshome.com: GPRS及移动通信技术学习交流分享平台。
您需要登录后才可以回帖 登录 | 立即注册

站长邮箱|Archiver|51学通信 ( 粤ICP备11025688 )

GMT+8, 2024-5-11 21:40 , Processed in 0.102374 second(s), 12 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部