我在伺服器(802.3ad,第 2 層,因此基於來源 MAC 和目標 MAC)和交換器之間配置了 LACP。
最近,我發現網路對等點的入口流量正在使用一個介面 (eth3),而同一網路對等點的出口流量正在使用另一個介面 (eth1)!
這是正常行為嗎?
查看內核文件(https://www.kernel.org/doc/Documentation/networking/bonding.txt,xmit_hash_policy 部分):我不這麼認為。但我必須承認我迷失了,真的迷失了...
這是我的設定:
我的伺服器上的綁定配置
root@server:~# cat /proc/net/bonding/bond1
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2 (0)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 200
Down Delay (ms): 200
802.3ad info
LACP rate: fast
Min links: 0
Aggregator selection policy (ad_select): stable
Active Aggregator Info:
Aggregator ID: 2
Number of ports: 2
Actor Key: 17
Partner Key: 8
Partner Mac Address: 2c:23:3a:6a:c5:fe
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 6
Permanent HW addr: b0:83:fe:d9:93:a0
Aggregator ID: 2
Slave queue ID: 0
Slave Interface: eth3
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 6
Permanent HW addr: b0:83:fe:d9:93:a2
Aggregator ID: 2
Slave queue ID: 0
交換器的配置 (HPE 5130):
<switch> display link-aggregation load-sharing mode interface Bridge-Aggregation 8
Bridge-Aggregation8 load-sharing mode:
Layer 2 traffic: packet type-based sharing
Layer 3 traffic: packet type-based sharing
<switch>display link-aggregation verbose Bridge-Aggregation 8
Loadsharing Type: Shar -- Loadsharing, NonS -- Non-Loadsharing
Port Status: S -- Selected, U -- Unselected,
I -- Individual, * -- Management port
Flags: A -- LACP_Activity, B -- LACP_Timeout, C -- Aggregation,
D -- Synchronization, E -- Collecting, F -- Distributing,
G -- Defaulted, H -- Expired
Aggregate Interface: Bridge-Aggregation8
Aggregation Mode: Dynamic
Loadsharing Type: Shar
Management VLAN : None
System ID: 0x8000, 2c23-3a6a-c5fe
Local:
Port Status Priority Oper-Key Flag
--------------------------------------------------------------------------------
GE1/0/8 S 32768 8 {ABCDEF}
GE2/0/8 S 32768 8 {ABCDEF}
Remote:
Actor Partner Priority Oper-Key SystemID Flag
--------------------------------------------------------------------------------
GE1/0/8 2 255 17 0xffff, b083-fed9-93a0 {ABCDEF}
GE2/0/8 1 255 17 0xffff, b083-fed9-93a0 {ABCDEF}
我嘗試更改交換器上的負載平衡模式,但沒有任何改變。
謝謝!
答案1
使用 LACP 或靜態綁定,每一方都可以自行決定如何路由流量。
交換器通常會套用 SA/DA 方案 - 它們對來源位址和目標位址的低三或四位進行雜湊處理,並將其用作 LAG 連接埠索引。更簡單的交換器僅使用 MAC 位址,更複雜的交換器僅使用 IP 位址(如果存在),甚至與 TCP/UDP 連接埠結合使用。
目的是讓單一流始終使用相同的連接埠組合,這樣幀就不會亂序。
單獨使用 MAC 位址會導致兩台主機(或路由器)之間的所有流量始終使用相同的連接埠組合。
使用 IP 位址允許在路由器之間分配流量,或使您能夠選擇(輔助)IP 位址來優化流量,並且 IP/連接埠組合自動負載平衡不同的連接(儘管不一定是最佳的)。
因此,到主機的入口流量由交換器控制,出口流量由主機控制。這很容易導致兩個方向使用不同的連接埠。不過它並不痛。