我已经在服务器(802.3ad,layer2,因此基于源 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 /端口组合可以自动对不同的连接进行负载平衡(但不一定是最佳的)。
因此,主机的入站流量由交换机控制,出站流量由主机控制。这很容易导致两个方向使用不同的端口。不过这并没有什么坏处。