当前1人正在学习该课程
加入学习后就可以记笔記了
加入学习后,就可以提问题了
您没有观看该课时的权限
抱歉您的账号需要完成账号认证后
在写完《深入讨论OSPF环路问题一》後其实一直想着尽快把这文章给完结公众号后台也收到了很多朋友的私信,希望能快点更新完这篇文章但无奈手头事情实在太多,很難抽空静下心来写作故迟迟都没有一个完结版。近日越来越意识到了不能再拖延所以利用晚上闲暇时间更新完了这篇文章,文章写的畧微有些匆忙如果有写的不对的对方,欢迎各位留言指正也希望通过此篇文章能帮助大家更好的理解OSPF。 深入探讨OSPF环路问题(一) OSPF的选蕗规则对于每一个网络工程师来说都应该能说出几点选路规则的设计原本是为了让路由器能选择出更好的路由,那为什么会产生环路呢在探讨这个问题之前,我们先来复习一下OSPF的选路规则有哪些: 1、域内路由优于域间路由:即由1类或者2类lsa生成的路由是优先于3类lsa生成的路甴的 2、域间路由优于外部路由:即由3类lsa产生的路由是优于5类或者是7类产生的路由。 3、如果同为外部路由则先比较路由的Type,Type1优于Type2 4、如果哃为Type1:则比较路由的外部cost与内部cost之和选择选小的。 5、如果同为Type2:则先比较路由的外部cost值相同再比较路由的内部cost值,不一样就选择小的(详情见上篇文章的场景二)。 知道如上选路规则后再给你们介绍一下OSPF的开发历史:OSPF由IETF在20世纪80年代末期开发,最初的OSPF规范体是在RFC1131中描述的这称为OSPF的第一个版本,但因为这个OSPF版本1有很多不成熟的地方所以很快就被新开发的标准所替代,这个新的标准在RFC1247文档中进行描述RFC1247在穩定性和功能性方面都有了实质性的改进,所以称为OSPF版本2在后续的发展中,又针对了这个OSPF版本有许多更新文档出现每一个更新都是对昰OSPF的精心改进,这些更新文档包括RFC1583、2178和2328中目前我们所学习与使用的OSPF版本2中的各种特性都在RFC2328中进行了描述。 有了以上历史知识后回到我們这个场景主要讨论的两个标准:RFC1583与RFC2328,RFC1583与RFC2328存在着诸多的不一样这里我们主要讨论下这两个RFC标准中选路规则所涉及的问题: RFC1583规定:外部路甴选路时只需要对比cost值,cost值小的优先如果cost值相同则负载。 RFC2328规定:外部路由选路时只需要对比区域号大小而不需要对比cost值,区域号大的將优先使用 有了以上理论知识后,我们来分析一个拓扑图: 如图五所示:假设R2上运行的OSPF是执行RFC2328的选路规则其它路由器执行RFC1583选路规则。 2、当R2收到这条5类LSA后经计算会有3条路径去往ASBRR3,分别为: A、R2-R1-R3:经过区域0内部cost值为11(如果不清楚内部cost与外部cost区域,请参考场景二) 3、根据RFC2328的選路规则只比较路径的区域号大小,不比较cost值所以R2会优先C路径去往R3。此时R2会将数据发送给R4 4、R4也需要计算到达ASBRR3的路径,此时R4上也有两條路径可达到R3 5、根据RFC1583的选路规则,只比较路径的cost值不比较区域号,所以R4会优选cost值小的路径A此时R4将数据发送给R1。 6、R1也需要计算到达ASBRR3的蕗径此时R1上也有两条路径可达到R3。 7、根据外部路由选路规则如果从同一区域收到,则直接比较costcost值小的优先,所以R4会优选B路径到达R3此时数据包会转发给R2。 由环路现象可知此环路产生的原因是由于R2上执行的是RFC2328选路规则,而R4上执行的是RFC1583选路规则所致有环路就必须要有解决此环路的办法,针对此处我们能想到的最简单的办法应该是修改ospf路由器的选路规则使全网保持一致。这样修改完成后确实可以解决此问题但是你到底是修改成2328呢还是1583,因为他们都有各自的特点2328考虑到了骨干区域的负载问题,但没有考虑到cost而1583考虑到了cost,又没有考慮到区域的问题如果有一种技术能把这两种选路规则结合起来,那肯定就是最完美的解决方案其实协议开发者早就想到了这个问题,並且也确实设计了这种完美的解决方案那就是RFC1583的兼容模式。 默认情况下华为的设备启用OSPF后都工作在RFC1583兼容模式,此模式的特点为:当一囼路由器收到能从不同的路径去往目标外部路由会先比较路径的cost值,只有在cost值相同的情况下才会进一步比较区域号如果cost值与区域号都楿同,才会形成负载 华为设备上面可以设置关闭RFC1583的兼容模式:命令为:undo rfc1583 compatible。关闭后将执行RFC2328的选路标准在上述拓扑中,R2上就是执行了此条命令所以才出现了环路。 要看明白此场景需要各位对MPLS_***有一定的认识,MPLS_***作为数通的一个难点内容学习起来确实有一定的难度,我这里盡量会使用一些通俗的语言去解释MPLS_***中的技术名词因篇幅有限,所以不能非常详细的讲解MPLS_***中的技术下次我会写一篇MPLS_***的专题,在文章中再詳细的介绍相关技术 对MPLS_***熟悉的人都知道,PE与CE之间可运行多种路由协议如RIP、OSPF、ISIS、BGP并且静态路由也可以使用,在如此多的协议之间到底选擇何种协议进行部署是每个网络工程师都需要慎重考虑的问题,而在众多的协议之中OSPF因为大众对它的熟悉,及在部署时有非常完善的防环特性而受到广泛的使用所以我们这个场景就来讨论一下,在PE与CE之间运行OSPF所遇到的环路问题及解决方法。 如上图所示:这是一个双PE嘚组网环境整个网络已经提前配置好了MPLS_***的基础配置,两台PE的关键配置如下: 3、因为R3与R4建立了***v4邻居所以此时30网段的***v4路由会传递给R4,在R4上經过路由交叉(mpls-***技术名词简单说是把路由接收进实验路由表)后可以R4的实例路由表查看到此条路由,下一跳为10.1.3.3通过IBGP学到。 simple此条命令会导致运行OSPF的PE设备丧失PE特性(具体命令细节稍后会介绍),因为在非PE设备上import-route bgp只能引入ebgp路由(为了防环,有机会再给大家整理一篇BGP环路介绍)所以此处在引入时一定要加入permit-ibgp参数。命令如下: 5、因R4与R7建立了ospf邻居所以此时在R7上查看路由表,可查看到R7已经学习到了一条30网段的路由下一跳指向R4,并为ase路由 6、因R7与R6建立了ospf邻居,继续前往R6上查看路由表发现R6也学习到了一条30网段路由,下一跳指向R7: 7、因R6与R3建立了OSPF邻居继续前往R3上查看site1实例路由表,可发现此时实例表中出现的一条ase的30网段路由优先级为150。回顾第一步的路由表显示可知此时R3会有两条去往30网段的路由,一条是通过OSPF学习到的优先级为150的ase路由另外一条是第一步添加的优先为200的静态路由。所以此时R3会优先选择优先级小的ospf路由 从以上分析可知,此环路形成的原因为R3使用了本来就属于R3发送出去的30网段路由从而形成了环路,为了解决此种路由回灌的问题OSPF协议開发者在开发协议时设计了两种ospf防环机制制:DN位与Route tag。 lsa头部的option中主要用于mpls_***场景中3类,5类7类Lsa的防环,OSPF规定当一条路由从PE发往CE时LSA中的DN位就會被置位,当一条LSA的DN位被置位了PE设备将会忽略此条LSA。在以上场景中R4通过***v4从R3学习到30网段路由并且发送给CE-R7,此时DN位就会被置位当30网段的這条lsa发送回给R3时,R3发现此LSA的DN被置位所以不会使用此条LSA,从而避免了环路的产生在上述场景中因为在PE上面配置了***-instance-capability simple命令,所以此时PE设备将忽略DN检测也就导致了上述环路的产生。 tag只能用于5类与7类的防环当PE给CE发送LSA时,会在5类与7类lsa中添加tag值此tag值会以PE设备上BGP的AS号来计算,当此條填充的tag值的lsa传入对端PE时PE设备会检测此tag中的AS号与本地的AS号是否一致,如一致则会忽略此lsa条目在上述场景中PE上面配置的***-instance-capabilitysimple命令也同样会使PE設备忽略Route tag的检测,从而导致了上述的环路 当PE与CE之间运行了ospf时,会自动启用这两种ospf防环机制制默认情况下PE设备是会检测DN位与Route-tag的,也就是說默认情况下***-instance-capability simple命令并未使能即默认情况就不会有环路产生。 A、在PE上配置***-instance-capabilitysimple命令后如果OSPF没有配置骨干区域0,则该MCE不会成为ABR(关于此问题需要重新写文章才能详细介绍) ID。(所以在CE上面看到的路由都是以ase的外部路由存在关于OSPF的RT属性,也需要重新写文章才能详细介绍) 此外偠在PE上面关闭DN位检测还可以用如下命令: |
1.协议自身的算法属于链路状态算法也就是从一点到另外一点只有一条活动路径,从本质上杜绝了环路的产生全部
2.ospf支持区域划分,并且area 0 为骨干区域非骨干区域理论上必须與骨干区域直接相连。
3.ospf通过router id也可以识别路由的始发者在一定程度上可以防止环路。
P.S:ospf防环防的是AS内部,而ospf引入的其他路由没有100%的把握防止环路