问题过程:

    今天配置了一下OSPF,在做到多点重分发的时候出现了一个很奇怪的现象。拓扑图如下:

ospf怎么负载分担 ospf 负载_R3

1.首先把OSPF重分发入RIP,因为是低AD重发布入高AD路由协议,所以不会出现问题。

2.把RIP重分发如OSPF,这时候就有问题了,因为是多点重分发。

    问题如下:

    1.假设我先在R4上重分发RIP进OSPF,那么这时候R1.R2.R3都会收到这条关于5.5.5.0的OE 2的路由条目。

    2.当R3接收到OE2 5.5.5.0的路由条目之后,会把原先的R 5.5.5.0 的路由条目丢弃,把 OE2 5.5.5.0这个路由条目加入路由表,因为OSPF的AD值比RIP的AD值小,这时候R3再把RIP重分发入OSPF,由于没有RIP的路由,所以这个重分发是失败的。

    3.这时候还出现了一个次优路径的问题,大家可以发现,这时候R3去往5.5.5.0的路径是R3-R1-R2-R4-R5

    4.为了解决次优路径的问题,在R3上修改关于5.5.5.0路由的AD值,使得5.5.5.0的路由条目以RIP的形式加入路由表,这样的话R3去往5.5.5.0的路径是R3-R5

ospf怎么负载分担 ospf 负载_OSPF_02

    我将R3上关于RIP 5.5.5.0的路由条目的AD值改为了105,这样它就比OSPF的AD值110要小,所以这时候5.5.5.0的条目在R3上会以RIP的形式存在。

ospf怎么负载分担 ospf 负载_ospf怎么负载分担_03

    5.在R3上重分发,重分发是可以成功的,因为R3有RIP的路由条目了。

    接下来:

        根据我的设想,R3和R4都重分发成功,那么这时候R1和R2都能收到重分发的路由条目,且在没有修改任何值的情况下,重分发入OSPF的路由条目Metric类型为OE2,也就意味着这个Metric值在传递的过程中不会增加,所以这时候R1和R2都可以从R3、R4收到一条Metric值为20的5.5.5.0路由条目,但实际上并没有。。。。

    

ospf怎么负载分担 ospf 负载_ospf怎么负载分担_04

                    设想图

实际结果:

R1路由表,去5.5.5.0往R3走,并没有负载均衡


ospf怎么负载分担 ospf 负载_负载均衡_05

R2路由表,去5.5.5.0往R4走,并没有负载均衡

ospf怎么负载分担 ospf 负载_OSPF_06

我以为是我做错了,然后把R4连接R2的接口DOWN掉,这时候R2去5.5.5.0往R1--R3走

ospf怎么负载分担 ospf 负载_OSPF_07

实际上所有的配置都是没有问题的,问题就在于,OSPF OE2的路由条目不支持负载均衡!!!!

    因为在OSPF OE2的路由条目中,在出现可能需要负载均衡的情况下,会有个forward metric在影响着我们选路。

    怎么看这个forward metric呢,先来看一下R2往R4走的forware metric是多少。为10

    

ospf怎么负载分担 ospf 负载_R3_08

R2往R1走的forward metric为20

ospf怎么负载分担 ospf 负载_负载均衡_09

所以在默认的情况下,R2会选择往R4走


结论:当多条路由的Metric值一样,forward metric不一致时,会选出一条最优的,不做负载均衡,如果metric一致,forward metric也一致,那么可以做负载均衡。


解决方案:

如果我们希望负载均衡怎么办呢?很简单,其实forward metric值就是路由器到ASBR的cost值,即现在R2到R3的cost值为20,所以forward metric为20,R2到R4cost值为10.如果这时候想做负载均衡的话,可以修改R1和R2的接口cost值就可以了,比如把R2—R3的接口cost值改为20等。