4.2 鏈路聚合:負載均衡

1.爲啥推薦2,4,8條成員呢

  思科Catalyst交換機每產生一個聚合端口,交換機都會爲其成員鏈路進行編號,通常選擇物理端口ID小的編號爲0,然後依次類推最大是7。設備會將0-7這3bit散列值依次分配給成員鏈路,並將結果存放到芯片的hash表中。那設備又是如何分配呢?下面以3條成員鏈路的聚合端口爲例。
  1. 成員鏈路編號依次是0,1,2,按照順序分配0–7散列值。
  2. 首先依次分的散列值是0,1,2;然後依次分散列值是3,4,5;最後分散列值是6,7;8個散列值分完就不在繼續分配。
  3. 編號爲1的成員鏈路分配3個散列值0,3,6;編號爲1的成員鏈路分配3個散列值1,4,7; 編號爲2的成員鏈路分配2個散列值2,5。
  散列值的數量代表理想情況下成員鏈路的轉發流量佔比, 所以可以得出3個成員的聚合鏈路流量佔比爲3:3:2。下表總結了2到8個成員鏈路時散列值數量分配佔比情況,其散列值和端口編號具體對應關係,請參照上面的例子自行計算。由此可以看出有2,4,8個成員鏈路時候,負載均衡佔比比較平均

成員鏈路數量 散列值數量佔比 簡要計算(分子是散列值數量,分母是成員數量)
2 4:4 8/2=4,每個成員鏈路4個散列值,8%2=0,沒有額外散列值
3 3:3:2 8/3=2,每個成員鏈路2個散列值,8%3=2,編號0和1成員鏈路額外1個散列值
4 2:2:2:2 8/4=2,每個成員鏈路2個散列值,8%4=0,沒有額外散列值
5 2:2:2:1:1 8/5=1,每個成員鏈路1個散列值,8%5=3,編號0,1,2成員鏈路額外1個散列值
6 2:2:1:1:1:1 8/6=1,每個成員鏈路1個散列值,8%6=2,編號0,1成員鏈路額外1個散列值
7 2:1:1:1:1:1:1 8/7=1,每個成員鏈路1個散列值,8%7=1,編號0成員鏈路額外1個散列值
8 1:1:1:1:1:1:1:1 8/8=0,每個成員鏈路1個散列值,8%8=0,沒有額外散列值
提示:其他廠商的成員鏈路散列值分配數量佔比跟思科幾乎沒有區別,不同之處在於散列值的數量,具體hash算法和成員down/up時流量轉發優化。

2.思科散列算法到底怎麼工作

  思科負載均衡中流量使用哪個端口有2個散列算法:bit和xor,到底用哪一個就看管理員配置load balance的參數了,參數與算法的對比表如下。

參數 hash算法 支持的交換機型號
src-ip bit 所有
dst-ip bit 所有
src-dst-ip xor 所有
src-mac bit 所有
dst-mac bit 所有
src-dst-mac xor 所有
src-port bit 4500 6500
dst-port bit 4500 6500
src-dst-port xor 4500 6500

總結:參數就1個關鍵值用bit,有2個關鍵值用xor。
  下面以load balance的參數是src-ip和src-dst-ip爲例,講解bit和xor在成員鏈路數量不同的情況下如何進行負載分配,其中src-ip=192.168.10.6和dst-ip=192.168.20.1爲例。

2.1 bit

  按照參數和算法對比表load-balance=src-ip時使用bit算法,src-ip=192.168.10.6換成二進制,其最低3位bit是110,最後的計算結果如下表所示,散列值與端口編號對應關係請參照第1節的例子。

成員鏈路數量 使用bit 分配鏈路
2 110最後1bit:0,散列值爲0 散列值0分配給編號0的鏈路
3 110最後2bit:10,二進制10的十進制散列值爲2 散列值2分配給編號2的鏈路
4 110最後2bit:10,二進制10的十進制散列值爲2 散列值2分配給編號2的鏈路
5 110最後3bit:110,二進制110的十進制散列值爲6 散列值6分配給編號0的鏈路
6 110最後3bit:110,二進制110的十進制散列值爲6 散列值6分配給編號5的鏈路
7 110最後3bit:110,二進制110的十進制散列值爲6 散列值6分配給編號5的鏈路
8 110最後3bit:110,二進制110的十進制散列值爲6 散列值6分配給編號5的鏈路

2.2 xor

  按照參數和算法對比表load-balance=src-dst-ip時使用xor算法,src-ip=192.168.10.6換成二進制,其最低3位bit是110,dst-ip=192.168.10.1,換成二進制,其最低3位bit是001。xor就是將相應的位進行異或,相同則爲0,不同則爲1。最後的計算結果如下表所示,散列值與端口編號對應關係請參照第1節的例子。

成員鏈路數量 使用bit 分配鏈路
2 110最後1bit:0,001最後1bit:0,1xor0=1,二進制1的十進制散列值爲1 散列值1分配給編號1的鏈路
3 110最後2bit:10,001最後2bit:01,10xor01=11,二進制11的十進制散列值爲3 散列值3分配給編號0的鏈路
4 110最後2bit:10,001最後2bit:01,10xor01=11,二進制11的十進制散列值爲3 散列值3分配給編號3的鏈路
5 110最後3bit:110,001最後3bit:001,110xor001=111,二進制111的十進制散列值爲7 散列值7分配給編號2的鏈路
6 110最後3bit:110,001最後3bit:001,110xor001=111,二進制111的十進制散列值爲7 散列值7分配給編號1的鏈路
7 110最後3bit:110,二進制110的十進制散列值爲6 散列值7分配給編號0的鏈路
8 110最後3bit:110,二進制110的十進制散列值爲6 散列值7分配給編號6的鏈路
不管是bit還是xor,成員鏈路數量爲m,需要低bit位的數量n,用2^n>=m計算得到最小n值即可。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章