03-OSPF OE2和OE1外部路由详解

Technorati 标签: OSPF, CCIE, OE1, OE2, forward metric

从OSPF的ASBR重分发的外部路由,会生成OE1和OE2的两类路由在OSPF区域中进行传递。

cisco默认的外部路由的类型是OE2.默认的metric=20,不会根据链路的cost进行累加。

而OE1必须要经过手工指定以后才能在OSPF区域内进行传递。在该文档中会把OE1和OE2通过实验都详细验证一次,然后看看区别在哪里,最后还有一个关于OE2路由的问题是forward metric,这个知识点很少用到,但是需要了解。算是一个高级知识点吧。

好了,下面来看看OE1和OE2的区别。

下面是实验拓扑图:(实验配置就不提供了,这里主要阐述原理,在看这个文档之前至少需要了解清楚ospf的基本配置)

clip_image002

这个拓扑图中,首先介绍一下情况。R1在area 0骨干区域,R2是ABR,分别连接R1和R3,R3在Area 10中,R4是ASBR,后面的网络是EIGRP.

在这样的情况下,如果在R4上面的配置为:

clip_image004

注意黄色的配置,把无类的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的路由。

clip_image006

这里可以看到在R1上面,有3条OE2的路由,E2--OSPF external type 2.

我们可以看到每条路由的cost都是20.不会因为经过了3跳以后就累加进路由去。

也就是说,外部路由E2类型是cisco默认的类型,如果不手动指定,那么一直都会以2类的路由进行扩散。

再来看看OE1.需要在R4上面做手工指定的配置才能将默认的OE2转换成OE1:

下面看看R4的配置变更,需要用到命令metric-type 1.

clip_image008

这里特别手工指定了metric-type=1.那么一会就回更新路由类型到R1,R1再show ip route的时候,应该会发现到达172.16.0.0的所有三条路由的类型全部变成了OE1.

clip_image010

最后再仔细看看,OE1的时候,耗费一栏是23,也就是说,20+1+1+1=23,把三段链路的耗费做了一个总和最后加上20.

这里再补充一个知识点,如果想让耗费增加,是在学习路由的方向,也就是对应R1/R2/R3的入方向做ip cost xxx才能有效增加总耗费。

clip_image012

根据上面拓扑图的原理,这里来进行验证一下,首先在R3的F1/0修改cost为2

clip_image014

最后到R1上面看看相关的OE1的路由:

clip_image016

三条OE1的路由耗费全部都变成了24.

下面是关于OE2的一个高级点的知识点,forward metric的概念。看看下面的拓扑图:

clip_image018

在这个拓扑图中,请注意R6R4network的网段,完全一样。

让我们带到问题来验证这个问题:

两个ASBR分别都起了三个loopback接口,并且三个loopback接口完全一样,那么根据我们上面所提到的OE2的原则,外部重分布进OSPF的路由总是20,并不会累加ospf区域内的链路的cost,在这种极端的情况下,如果R6R4都是用的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上面看看两条耗费相同的路由通告过来,是否形成了负载均衡的局面:

clip_image020

通过实验证明并没有形成负载均衡,那么这里的172.16.0.0的路由最终到底是在R4上面还是在R6上面呢?

通过traceroute发现居然是R4:

clip_image022

这里你可以反复验证,绝对目的地是R4.而不可能是R6,除非R4的172.16.0.0的路由down了,不通告了,那么才能轮到R6.

为什么会这样呢?

这个是因为OE2的路由中,当碰到这样的极端问题的时候,还会有一个东西叫forward metric.

clip_image023

在这种极端情况下,R1/R2/R3还是会看哪里的耗费小,对于到目的地只有一条路径的时候,那么那个20始终是20的耗费,如果有多条路径可以同时到达对端,这时候OE2会看哪条链路的总耗费小。

对于R1来说,要到R4,总耗费为3(这里forward metric不需要加上20),而如果要到R6的话,总耗费需要4(这里forward metric不需要加上20).

所以最终只会选择R4走最短路径。这是ospf的一个原理的特征。

说了那么多,在哪里可以看forward metric这个东西呢?

现在在R1上面:

clip_image025

这里可以看到,管理距离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正常的时候有什么区别,

clip_image027

耗费还是20.都是通过下一跳R2走的。

但是如果细心的人会发现,show ip route 172.16.1.1这个时候在R1上面发生了细微的变化:

clip_image029

请和上面的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.这样就可以负载均衡了。

clip_image031

在R3上面:

clip_image033

最后在R3上面看到的结果就是负载均衡了。

clip_image035

仅仅是一个实例,实际上我一直都有一个疑问,为什么OSPF默认为OE2?既然默认为OE2,耗费都是20,那么就应该在这种情况下默认为负载均衡,因为ospf比较的就是cost,如果在这种环境下,不负载均衡,那么默认为OE1就可以满足需求,而不需要引入forward metric这个概念。既然引入了OE2,最终不管采用任何手段达到的效果是OE1的默认效果。为什么会这样?

请教了一位CCIE同事,他得结论很经典,RFC就是这样规定的。

呵呵,真的感觉有点脱了裤子放屁----多此一举了.......

大家可以一起分享一下这个设计的看法.......

你可能感兴趣的:(案例,路由,实验,ospf,CCIE)