Dell Unity:如何變更 LACP 中繼或繫結負載平衡演算法 (Dell 可修正)
Summary: 對於透過 LACP 中繼或搭接的 Unity SP 寫入,連結聚合控制通訊協定 (LACP) 流量會保持平衡,但在傳送讀取要求的回應時,流量不會平衡。
Symptoms
在某些網路條件和環境下,預設演算法可能預設為使用單一介面。
例如:
當源 MAC 位址相同時(即使用路由器時),MAC 將始終相同,用於傳輸的埠將始終相同。
此外,在特殊情況下,不同的 MAC 也可能導致相同的值。
例如,如果 MAC 始終以偶數(0、2、4、6、8、A、C 或 E)結尾,並且 LACP 中繼或綁定中有兩個埠,則哈希計算也會每次將流量定向到同一埠。
LACP 中繼或綁定顯示流量不平衡,使用單個介面而不是均勻地使用所有介面。
您可以在生產網路上 (透過網路交換器 SysAdmins),或在 Unisphere 的「系統 >效能」底下查看圖形網路顯示器來確認。
netstat -i' 服務外殼中的輸出。
Cause
Unity 上的 LACP 使用第 2 層作為其預設的「xmit_hash_policy」。
使用 第 2+3 層 作為“xmit_hash_policy”旨在提供比單獨第 2 層更平衡的流量分佈,尤其是在需要第 3 層網關設備才能到達大多數目的地的環境中。
參考:https://www.kernel.org/doc/Documentation/networking/bonding.txt
Layer2 使用硬體 MAC 位址和數據包類型 ID 欄位的 XOR 來生成哈希。
公式為
hash = source MAC XOR destination MAC XOR packet type ID slave number = hash modulo slave count.
第 2+3 層 使用第 2 層和第 3 層協定資訊的組合來生成哈希。
雜湊是使用硬體 MAC 位址和 IP 位址的 XOR 組合產生。
公式為
hash = source MAC XOR destination MAC XOR packet type ID hash = hash XOR source IP XOR destination IP hash = hash XOR (hash RSHIFT 16) hash = hash XOR (hash RSHIFT 8) And then hash is reduced modulo slave count.
第 2 層和第 2+3 層都符合 802.3ad 規範。
Resolution
若為 Unity OE 代碼 4.3 及更新版本:
變更 xmit_hash_policy 與 svc_network_bond 令。
Dell Unity™ 系列 4.3 版:服務命令技術備註 - 第 74 頁。
用法:
svc_network_bond [-h|--help] -d <device> {-s -o <option> -v <value>} {-g [-o <option>]}
語法類似於以下範例:
service@(none) spb:~> svc_network_bond -s -d bond23 -o xmit_hash_policy -v 2
的可接受值 xmit_hash_policy 是:
0 或 layer2 預設 設定
此參數使用硬體 MAC 位址的 XOR 來產生雜湊。
1 或第 3+4 層 使用 上層協議資訊(如果可用)生成哈希。
這允許流向特定網路對等體的流量跨越多個從站,儘管單個連接不會跨越多個從站。
2 或第 2+3 層 使用 第 2 層和第 3 層協定資訊的組合來生成哈希 - 模式 2 或第 2+3 層演演演算法符合 802.3ad 規範。
若為 Unity OE 代碼 4.2.3.9670635 及更舊版本:
請聯絡 Dell 客戶服務,並參考此 KBA 號碼。
適用於 Unity OE 代碼 5.3.x 或更新版本
進行變更時,不需要使用服務殼層,也不需要重新開機。
以下是在我們實驗室xmit_hash_policy中設定 Unity 陣列的範例。
此 Unity 陣列配置了稱為 bond22 的 LACP 中繼。
使用服務帳戶透過 SSH 進入 Unity 陣列。
首先,檢查其xmit_hash_policy的設置。
# svc_network_bond --get --device bond22 -o xmit_hash_policy INFO: Selected device: bond22 INFO: Option to show: xmit_hash_policy INFO: Execution code: 0 xmit_hash_policy=0 #
接著,將 xmit_hash_policy 設為 2
# svc_network_bond --set --device bond22 -o xmit_hash_policy -v 2 INFO: Selected device: bond22 INFO: Option to modify: xmit_hash_policy INFO: Requested value: 2 WARNING: Do you want to proceed? [yes/no]: yes <<<<<< sometimes y works and sometimes it fails on the first attempts. Retry then. INFO: Execution code: 0 INFO: Option 'xmit_hash_policy' has been successfully changed. #
# svc_network_bond --get --device bond22 -o xmit_hash_policy INFO: Selected device: bond22 INFO: Option to show: xmit_hash_policy INFO: Execution code: 0 xmit_hash_policy=2 #
Additional Information
netstat 和 arp 需要啟用 Service Shell。
範例 'netstat -i' 輸出,顯示綁定的成員,可用於確定是否正在對流量進行哈希處理。
在此示例中,“bond20”(LACP 綁定)由介面“eth20”和“eth21”組成。
請注意“TX-OK”列中的差異,該列表示來自 Unity 的出站流量。
21:12:03 service@(none) spb:~> netstat -i Kernel Interface table Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg bond20 9000 0 101724658 0 11 0 126087418 0 0 0 BMmRU cmin0 9000 0 14341258 0 0 0 11301712 0 0 0 BMRU eth2 1500 0 0 0 0 0 0 0 0 0 BMU eth3 1500 0 0 0 0 0 0 0 0 0 BMU eth10 1500 0 0 0 0 0 0 0 0 0 BMU eth11 1500 0 0 0 0 0 0 0 0 0 BMU eth12 1500 0 0 0 0 0 0 0 0 0 BMU eth13 1500 0 0 0 0 0 0 0 0 0 BMU eth20 9000 0 52249885 0 1 0 38317 0 0 0 BMsRU eth21 9000 0 49474773 0 10 0 126049101 0 0 0 BMsRU eth22 1500 0 0 0 0 0 0 0 0 0 BMU eth23 1500 0 0 0 0 0 0 0 0 0 BMU eth_int 9000 0 14341055 0 0 0 11301598 0 0 0 BMRU eve_br0 1500 0 16 0 0 0 3656 0 0 0 BMRU lo 65536 0 963282566 0 0 0 963282566 0 0 0 LRU mgmt 1500 0 1405994 0 64 0 360538 0 0 0 BMRU mgmt_vdev 1500 0 356150 0 64 0 326216 0 0 0 BMRU srm 1500 0 135650 0 64 0 5 0 0 0 BMRU vetheve1 1500 0 16 0 0 0 3647 0 0 0 BMRU
「arp」在 service shell 上的範例輸出,顯示每個 IP 位址的 MAC 位址 (HWaddress)。
這些應有所不同,LACP 才能在多個物理埠上準確負載平衡流量。
有幾個介面必須按您正在使用的介面進行篩選。
使用
'ip addr' 找到「Iface“,指派給您要調查的 IP 位址。
19:23:33 service@(none) spa:~> arp Address HWtype HWaddress Flags Mask Iface 10.98.25.61 ether 00:25:b5:02:01:fc C bond20 10.98.25.60 ether 00:25:b5:02:00:1c C bond20 10.98.25.70 ether 00:25:b5:02:00:dc C bond20 10.98.25.63 ether 00:25:b5:02:01:8c C bond20 10.98.25.65 ether 00:25:b5:02:01:6c C bond20 10.98.25.62 ether 00:25:b5:02:01:dc C bond20 10.98.25.64 ether 00:25:b5:02:01:9c C bond20 10.98.25.67 ether 00:25:b5:02:01:0c C bond20 10.98.25.66 ether 00:25:b5:02:01:7c C bond20 10.98.25.59 ether 00:25:b5:02:00:0c C bond20 peer ether 8e:92:80:4d:2d:02 C eth_int 10.98.25.69 ether 00:25:b5:02:00:fc C bond20 10.98.25.1 ether 00:08:e3:ff:fd:90 C bond20 10.98.25.68 ether 00:25:b5:02:01:1c C bond20