两例cost不同引起ospf集群流量不均衡

搞过N套ospf集群,流量不均衡基本都是cost值不同引起的。
第一次是我扩容之前的一个集群,原来就2个机器跑ecmp,流量还算是均等。后来考虑到容量上可能会有不足我就扩容了2个机器,结果发现扩容的机器ospf起来后老的2个机器就没有流量了。在核心交换机上查到4个area的cost不同,新的2个机器的cost没有设置是1,然后老的2个机器的cost以前在核心交换机上设置为了1000,让网络的同学帮忙在核心交换机上把新的2个机器的cost也改成1000后恢复,能形成4条ecmp路由。
第二次是我自己新建的一套,集群起来后就看到只有1个机器有流量,把那个机器干掉后其他3个机器的流量基本能均等。因为默认路由是从交换机学习的,所以自己看了一下路由发现有问题的那个机器的metirc 是11 ,而其他的3个机器的默认路由metric都是10001.
route_err

找配合的网络的同学在交换机上看了下,上面没有单独去设置cost,但是确实是只有一条路由的cost是20,而另外一个集群的上联交换机能看到4条cost相同的路由
只有一条路由的:
lsw1
有4条路由的:
lsw2
后来排查后发现是有1个机器的ospf配置里auto-cost reference-bandwidth被注释了。
这个命令的作用是跟进带宽自动计算cost
— OSPF Command: auto-cost reference-bandwidth <1-4294967>
— OSPF Command: no auto-cost reference-bandwidth
This sets the reference bandwidth for cost calculations, where this bandwidth is considered equivalent to an OSPF cost of 1, specified in Mbits/s. The default is 100Mbit/s (i.e. a link of bandwidth 100Mbit/s or higher will have a cost of 1. Cost of lower bandwidth links will be scaled with reference to this cost).

比如我设置的是100000,那么千兆卡的cost计算应该是100,万兆卡的cost就是10了。至于交换机上显示的cost为何是20和10010我没有研究,猜想是可能我这边激活了配置后,对方也有个默认的cost+本地的cost计算后的值。
本地把这个注释取消重新启动后恢复了4条ecmp。

此条目发表在net分类目录。将固定链接加入收藏夹。