HASH表介紹:算法
在交換機內部,每建立一個聚合組時,底層同時建立對應該聚合組的一個hash表,該表存在於交換芯片上,詳情見互聯網相關文章。負載均衡
交換機負載均衡轉發原理:
雖然底層有了一張HASH表,那麼究竟是怎麼利用這張表的呢?
1)工程師設定端口成員與HASH算法,如SIP、DIP、SIP+DIP、SIP+DIP+SP+DP等。
2)交換機根據成員生成HASH表,根據算法提取報文中相應內容。
3)使用特定HASH值的計算方法,把提取的內容計算出一個10bits的值。
4)找到底層HASH表項中該值對應的出端口。
5)把報文從這個出端口轉發出去。
HASH值的計算方法:
xor是異或運算,即兩個值不相同,則異或結果爲真;反之,爲假。不一樣爲1,相同爲0。
一、SIP(源IP)
1)SIP xor 0 獲得一個32bit的值.
2)而後做高16bits和低16bits的xor.
3)再用16bits的15-12bits與11-8bitsxor,將獲得的4bits替換到11-8bits,獲得12bits右移2位獲得10bits的hash值
注:10bits的值必然是0-1023裏的一個數,該index對應的interface是多少,就從該接口轉發出去。(相同的IP必然是相同的hash值)
二、DIP(目的IP)
同SIP
三、SIP+DIP(源IP+目的IP)
1)DIP xor SIP獲得一個32bits的值。
2)而後做高16bits和低16bits的xor。
3)再用16bits的15-12bits與11-8bitsxor,將獲得的4bits替換到11-8bits,獲得12bits右移2位獲得10bits的hash值。
四、SIP+DIP+SP+DP(源地址 + 目的地址 + 源端口 + 目的端口)
1)SIP xor DIP獲得32bit的值value1
2)hashtemp1的低16bits xor SP 獲得32bit的hashtemp2
3)hashtemp2 的低 16bit xor DP 獲得 32bit 的hashtemp3
4)而後做高16bits和低16bits的xor
5)再用16bits的15~12bits和11~8bits xor,將獲得的4bits替換到11~8bits,獲得12bits右移2位獲得10bits的hash值ide