<转;OSPF OE2和OE1外部路由详解(主要解释了下OE2为什么没默认负载均衡,赞下)
Posted Wi-Fi研习者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了<转;OSPF OE2和OE1外部路由详解(主要解释了下OE2为什么没默认负载均衡,赞下)相关的知识,希望对你有一定的参考价值。
从OSPF的ASBR重分发的外部路由,会生成OE1和OE2的两类路由在OSPF区域中进行传递。 cisco默认的外部路由的类型是OE2.默认的metric=20,不会根据链路的cost进行累加。 而OE1必须要经过手工指定以后才能在OSPF区域内进行传递。在该文档中会把OE1和OE2通过实验都详细验证一次,然后看看区别在哪里,最后还有一个关于OE2路由的问题是forward metric,这个知识点很少用到,但是需要了解。算是一个高级知识点吧。 好了,下面来看看OE1和OE2的区别。 下面是实验拓扑图:(实验配置就不提供了,这里主要阐述原理,在看这个文档之前至少需要了解清楚ospf的基本配置) 这个拓扑图中,首先介绍一下情况。R1在area 0骨干区域,R2是ABR,分别连接R1和R3,R3在Area 10中,R4是ASBR,后面的网络是EIGRP. 在这样的情况下,如果在R4上面的配置为: 注意黄色的配置,把无类的eigrp 100重分发到OSPF 1中,那么R4就会将以5类LSA扩散到OSPF的所有区域。最后R1上面也会收到相关的路由消息,最后把路由表同步过来,在R1上面show ip route就可以看到到172.16.0.0/16的路由。(关于1-5类的LSA实验详解请参考http: //361531.blog.51cto.com/351531/687142) 最后在R1上面可以看到收到3条OE2的路由。 这里可以看到在R1上面,有3条OE2的路由,E2--OSPF external type 2. 我们可以看到每条路由的cost都是20.不会因为经过了3跳以后就累加进路由去。 也就是说,外部路由E2类型是cisco默认的类型,如果不手动指定,那么一直都会以2类的路由进行扩散。 再来看看OE1.需要在R4上面做手工指定的配置才能将默认的OE2转换成OE1: 下面看看R4的配置变更,需要用到命令metric-type 1. 这里特别手工指定了metric-type=1.那么一会就回更新路由类型到R1,R1再show ip route的时候,应该会发现到达172.16.0.0的所有三条路由的类型全部变成了OE1. 最后再仔细看看,OE1的时候,耗费一栏是23,也就是说,20+1+1+1=23,把三段链路的耗费做了一个总和最后加上20. 这里再补充一个知识点,如果想让耗费增加,是在学习路由的方向,也就是对应R1/R2/R3的入方向做ip cost xxx才能有效增加总耗费。 根据上面拓扑图的原理,这里来进行验证一下,首先在R3的F1/0修改cost为2 最后到R1上面看看相关的OE1的路由: 三条OE1的路由耗费全部都变成了24. 下面是关于OE2的一个高级点的知识点,forward metric的概念。看看下面的拓扑图: 在这个拓扑图中,请注意R6和R4的network的网段,完全一样。 让我们带到问题来验证这个问题: 两个ASBR分别都起了三个loopback接口,并且三个loopback接口完全一样,那么根据我们上面所提到的OE2的原则,外部重分布进OSPF的路由总是20,并不会累加ospf区域内的链路的cost,在这种极端的情况下,如果R6和R4都是用的cisco默认的OE2路由到R1的话,那么在R3上面是否会负载均衡呢? 让我们先用实验说话,再说明forward metric的作用。 把实验环境搭建好以后,在R6和R4用相同的充分发命令不带metric-type.两台ASBR通过OE2路由通告给area 0的R1. 那么根据OE2的原理,不会累加耗费,所以两个ASBR传递给R3的路由应该都是20才对,又根据ospf的原理,根据链路耗费来进行选录,如果耗费相同,那么R3上面应该show ip route 172.16.0.0的时候应该是负载均衡才对。 结果是这样的吗? 首先看R6和R4的配置: R6: hostname R6 ! interface Loopback0 ip address 60.60.60.60 255.255.255.255 ! interface Loopback1 ip address 172.16.1.1 255.255.255.0 ! interface Loopback2 ip address 172.16.2.1 255.255.255.0 ! interface Loopback3 ip address 172.16.3.1 255.255.255.0 ! interface FastEthernet0/0 ip address 6.1.1.2 255.255.255.0 duplex full ! router eigrp 100 network 172.16.1.0 0.0.0.255 network 172.16.2.0 0.0.0.255 network 172.16.3.0 0.0.0.255 no auto-summary ! router ospf 1 router-id 60.60.60.60 log-adjacency-changes redistribute eigrp 100 subnets network 6.1.1.0 0.0.0.255 area 10 network 60.60.60.60 0.0.0.0 area 10 ! R4: hostname R4 interface Loopback0 ip address 40.40.40.40 255.255.255.255 ! interface Loopback1 ip address 172.16.1.1 255.255.255.0 ! interface Loopback2 ip address 172.16.2.1 255.255.255.0 ! interface Loopback3 ip address 172.16.3.1 255.255.255.0 ! interface FastEthernet1/0 ip address 3.1.1.2 255.255.255.0 duplex full speed auto ! router eigrp 100 network 172.16.1.0 0.0.0.255 network 172.16.2.0 0.0.0.255 network 172.16.3.0 0.0.0.255 no auto-summary ! router ospf 1 router-id 40.40.40.40 log-adjacency-changes redistribute eigrp 100 subnets network 3.1.1.0 0.0.0.255 area 10 network 40.40.40.40 0.0.0.0 area 10 ! 最后在R3上面看看两条耗费相同的路由通告过来,是否形成了负载均衡的局面: 通过实验证明并没有形成负载均衡,那么这里的172.16.0.0的路由最终到底是在R4上面还是在R6上面呢? 通过traceroute发现居然是R4: 这里你可以反复验证,绝对目的地是R4.而不可能是R6,除非R4的172.16.0.0的路由down了,不通告了,那么才能轮到R6. 为什么会这样呢? 这个是因为OE2的路由中,当碰到这样的极端问题的时候,还会有一个东西叫forward metric. 在这种极端情况下,R1/R2/R3还是会看哪里的耗费小,对于到目的地只有一条路径的时候,那么那个20始终是20的耗费,如果有多条路径可以同时到达对端,这时候OE2会看哪条链路的总耗费小。 对于R1来说,要到R4,总耗费为3(这里forward metric不需要加上20),而如果要到R6的话,总耗费需要4(这里forward metric不需要加上20). 所以最终只会选择R4走最短路径。这是ospf的一个原理的特征。 说了那么多,在哪里可以看forward metric这个东西呢? 现在在R1上面: 这里可以看到,管理距离110,耗费cost20,类型为2类external,最后一个就是forward metric.是3. 下面我还专门traceroute了一下。路径是R1->R2->R3->R4. 好,我再做一个实验。请参考拓扑图,我把R4的F1/0 shutdown.这个时候R1只能学到172.16.0.0网段通过R6学到,让我们看看R1的路由有什么变化。 当shutdown R4的F1/0后,在R1上面show ip route 的话,根本看不出和之前R4正常的时候有什么区别, 耗费还是20.都是通过下一跳R2走的。 但是如果细心的人会发现,show ip route 172.16.1.1这个时候在R1上面发生了细微的变化: 请和上面的show ip route 还有traceroute对比一下,对,就是forward metric从以前的3变成了4. forward metric其实就是在计算OSPF区域内链路的cost耗费总和。 现在R4路由器没有了,所以traceroute到的目的就是R6了。而R6到R1的总链路耗费是4. 说到这里,大家应该都明白了,当有两条链路都可以到目的地的时候,OE2不是我们想象中的那样会坐负载均衡,而是会优先选路。 最后再来一个思考题: 如果在R3上面我们想看到最后show ip route 172.16.0.0的路由表称为负载均衡,我们应该如何设置呢? 答案: 在R3的F1/0设置为ip ospf cost=2.这样就可以负载均衡了。 在R3上面: 最后在R3上面看到的结果就是负载均衡了。 仅仅是一个实例,实际上我一直都有一个疑问,为什么OSPF默认为OE2?既然默认为OE2,耗费都是20,那么就应该在这种情况下默认为负载均 衡,因为ospf比较的就是cost,如果在这种环境下,不负载均衡,那么默认为OE1就可以满足需求,而不需要引入forward metric这个概念。既然引入了OE2,最终不管采用任何手段达到的效果是OE1的默认效果。为什么会这样? 请教了一位CCIE同事,他得结论很经典,RFC就是这样规定的。 呵呵,真的感觉有点脱了裤子放屁----多此一举了....... 大家可以一起分享一下这个设计的看法....... 本文出自 “ hank--我,只关注原理” 博客以上是关于<转;OSPF OE2和OE1外部路由详解(主要解释了下OE2为什么没默认负载均衡,赞下)的主要内容,如果未能解决你的问题,请参考以下文章