負載均衡(Load-Balancing)是一種轉發數據包的方式,可以讓路由器更好的利用所有的鏈路。負載均衡分爲等價負載均衡(ECMP)和不等價負載均衡(UCMP)兩種。(思科的CEF的負載均衡方式有per-destination和per-packet兩種方式,本文不牽涉這兩種方式的討論)
l 等價負載均衡是指去往目的地的兩條或多條路徑的metric值相同,這些路徑之間以1:1的方式平均的轉發流量。
l 不等價負載均衡是指去往目的地的兩條或多條路徑間的metric值不同,這些路徑之間以一定的比例,將流量轉發出去。
在以前我們學習網絡的時候,知道靜態路由、RIP、OSPF、IS-IS只支持等價負載均衡,EIGRP和BGP既可以支持等價負載均衡,也可以支持不等價負載均衡。但隨着網絡的發展,接口的速率慢慢再提升2.5G、10G、40G、100G、400G速率的板卡都已經出現,板卡的換代不可能一蹴而就,所以同一時間,在網絡中可能會出現不同速率的板卡接口,這時可能就需要設置不一樣的cost值來標識不同的鏈路,等價負載均衡的話,會使某些路徑一直使用,一些路徑做備份(或稱爲低延遲路徑)。所以不等價負載均衡的話,可以更好的利用所有的路徑。
中間系統到中間系統IS-IS是一種內部網關協議,是電信運營商普遍採用的技術。也是SP CCIE的學習中比較重要的路由協議。
下面我們討論在IOS-XR上IS-IS的負載均衡的方法。
實驗拓撲如上圖,每條鏈路的cost值都爲10,在R8上查看R1的路由(10.1.0.1/32)從兩條路徑可以到達,並且metric值相同,都是40,這是等價負載均衡:
查看CEF表中這條路由的負載均衡方式(show cef 10.1.0.1 detail),通過命令輸出可以看到R4和R7是等價的,1:1的關係。
這是IS-IS在IOS-XR的第一種負載均衡方式,也就是基本的等價負載均衡。下面我們來討論下IS-IS第二種的負載均衡方式,使用等價的路徑,但是通過weight來控制流量向直連鏈路發送流量的比例。好,還是相同的拓撲,我們在R8的IS-IS中,將連接R7的鏈路G0/0/0/1口設置weight爲300,連接R4的鏈路G0/0/0/3口設置weight爲200。
這時我們先查看路由表,發現路由表中,路由還是等價的。
下面我們查看cef表(show cef 10.1.0.1 detail)
可以看到:
slot 0,weight 300,normalized_weight 3
slot 1,weight 200,normalized_weight 2
其中slot 0和1跟接口對應;weight 300和200是我們設置的值;normalized_weight是計算出來的,計算的方法爲先找到最大公約數(greatest common divisor (GCD)):
1. 如果GCD不等於1,normalized_weight = weight / GCD;
2. 如果GCD等於1,則normalized_weight = (Path weight/Total weight) * Maximum bucket size;
我們這個配置中,G0/0/0/1配置weight爲300,G0/0/0/3配置weight爲200,所以GCD爲100,那麼G0/0/0/1的normalized_weight爲3,G0/0/0/3口爲2,所以G0/0/0/1口與G0/0/0/3口負載均衡的比例爲3:2,可以看到3個包或流走G0/0/0/1,2個包或流走G0/0/0/3。這個就是第二種負載均衡方式,通過weight來調整等價的兩條或多條路徑的負載均衡比例。weight這個值,不能累加,只能本路由器直連的接口上設置纔能有效。
下面我們來討論第三種負載均衡方式,IS-IS的不等價負載均衡(ucmp)方式。不等價負載均衡指的是兩條或多條路徑的metric不一樣的情況下,負載均衡的比例還是按照weight來計算,如果沒有配置weight,則會根據metric值來計算weight,這次我們討論的是路徑的metric值不一樣,同時配置weight的情況。首先修改下配置,修改G0/0/0/1口的metric爲70,G0/0/0/3口的metric爲170,之前配置的weight值不變,G0/0/0/1口的weight爲300,G0/0/0/2口的weight爲200。
先查看路由表,在R8上可以看到,R1的路由(10.1.0.1)指向R7,因爲從R7走metric爲100,從R4走metric爲200,根據最短路徑的原則,放進路由表的是G0/0/0/1口指向的R7。
查看CEF表(show cef 10.1.0.1 detail),也是相同的結果,指向R7
下面我們在R8的IS-IS中配置ucmp,設置10.1.0.1這條路由可以做不等價負載均衡。
配置完成後,查看路由表,可以看到10.1.0.1這條路由,兩條路徑不等價,也可以做負載均衡:
繼續查看CEF表,可以看到IS-IS可以繼續在兩個接口上以weight的比值按比例的進行負載分擔。
以上是對IOS-XR中IS-IS負載均衡方式的介紹,還有種通過metric值計算weight的方法。
關於骨幹網,超大網絡技術及架構在思科SP CCIE課程中會有更爲詳盡的講解,當下隨着網絡規模的逐漸擴展,大網技術的應用也越來越多,所有網絡工程師都應該在大網的技術和架構上有所研究。不應在用到時纔想起來找視頻和文檔,早做知識儲備纔會有更多職業發展的機會。思科SP CCIE的知識體系是目前最實用的網絡技術方向。