求问链路聚合

3 天前
 LxnChan

手头有一台 R720 ,BCM5720 的 LOM 网卡,4 口千兆,;交换机是锐捷 S5760C-24GT8XS-X 。

目前的网络配置是 4 个 LOM 口全直连交换机,然后做链路聚合,想的是带宽叠加。

但是现在的问题是经过测速后发现带宽并不能叠加,只是流量会在每次传输的时候随机分配到某一条链路上,看别的地方说链路聚合并不是 1+1=2 ,所以求问为什么无法带宽叠加以及如何能够达到带宽叠加?

交换机侧配置:

服务器侧配置:

1440 次点击
所在节点    Linux
20 条回复
dhb233
3 天前
一般情况聚合单个链接只能走一个链路,除非改哈希算法,而且还要对端也改才能生效
LxnChan
3 天前
@dhb233 那问题是 iperf 开多线程看交换机这边也还是只走了一个链路呀
pinkbook
3 天前
检查是哪个方向流量只走单条线路。web 交换机没操作过,正常交换机默认链路聚合就可以。服务器给你个配置参考:
bond-mode 4
bond-miimon 100
bond-lacp-rate 1
bond-slaves eth1 eth2
bond-xmit_hash_policy 1
kenneth104
3 天前
现在这样是没问题的,但你想怎么分流?
https://support.huawei.com/enterprise/zh/doc/EDOC1100301700/6de0b60d
gregy
3 天前
链路聚合如果是一对一的传输,速度就是单网口的物理上线。
如果是一对二的传输,能跑出来 1+1=2 的效果
这种情况多用于服务端向多个客户端提供服务时使用。
想要一对一的传输提速,要么上 2.5G 或者 5G ,要么一步到位直接上 10G ,现在 25G ,40G 的二手交换机也慢慢到可以接受的价格了。
kenneth104
3 天前
Eth-Trunk1's load-balance information:
Load-balance Configuration: SIP-XOR-DIP
Load-balance options used per-protocol:
L2 : Source XOR Destination MAC address, Vlan ID, Ethertype, Ingress-port
IPv4: Source XOR Destination IP address, Source XOR Destination TCP/UDP port
IPv6: Source XOR Destination IP address, Source XOR Destination TCP/UDP port
MPLS: Source XOR Destination IP address, Source XOR Destination TCP/UDP port

节选一下我这默认的端口配置
SIP-XOR-DIP:配置 Eth-Trunk 接口基于源 IP 地址与目的 IP 地址进行负载分担。
dhb233
3 天前
@LxnChan 如果 iperf 是多个 socket 的话,那大概是 bond 没有配置 L4 的哈希,服务器上可以用 ip -d link show 看下 bond 的哈希算法,还有 3ad 协商对不对

交换机那边应该没问题,这么基础的配置,不至于只走一条链路。。
kenneth104
3 天前
交换口运行 LACP ,就是类似于我的#6 情况
L2 : Source XOR Destination MAC address, Vlan ID, Ethertype, Ingress-port

基于来源和目的 MAC ,而且你这 2 个都一样的
要测试,起子接口,软件一直跑,跑 10 个,大概就明白了
由于是 XOR ,也还是有可能会空闲的
kylezb
3 天前
或许可以试试 Balance-RR ( mode=0 ),也能实现负载均衡和接口故障时自动切换。
xiaozhaoz
3 天前
网口 bonding 有 0~6 ,7 种模式,你想实现一个链路上行带宽聚合,要用 mode = 0.

mode 0 的风险是包会乱序,如果是 udp 某些业务处理可能有问题。
LxnChan
3 天前
@kenneth104 @gregy 不是一对一提速,我的想法是比如用户 1 、2 访问文件 A ,这样不考虑其他因素单千兆链路下每个用户的带宽不就是 500Mbps 嘛;聚合后我想的是所有访问者共享 4000Mbps 的带宽,然后单线程下每个用户最高应该是 1000Mbps 这样,就是单个服务端向多个客户端提供服务
@dhb233 `ip -d link show`这个执行后输出了很多,这个具体怎么看
kenneth104
3 天前
就是用户量不够多,足够多的时候,它看着就是均衡的

Eth-Trunk1 up up 5.55% 0.64% 0 0
GigabitEthernet1/0/1 up up 5.09% 0.74% 0 0
GigabitEthernet6/0/1 up up 6.02% 0.54% 0 0
Eth-Trunk2 up up 2.95% 1.46% 0 0
GigabitEthernet1/0/2 up up 2.97% 1.53% 0 0
GigabitEthernet6/0/2 up up 2.93% 1.39% 0 0
Eth-Trunk3 up up 0.75% 0.48% 0 0
GigabitEthernet1/0/3 up up 0.86% 0.60% 0 0
GigabitEthernet6/0/3 up up 0.65% 0.37% 0 0
LxnChan
3 天前
@kenneth104 嗯,目前还是测试阶段,不敢推,怕出问题,做聚合本来也是考虑到用户多的时候能均衡一下流量。另外如果一个客户端占满了 1000Mbps ,那此时再来一条连接不就应该分配到别的链路上吗
kenneth104
3 天前
不是的,分配只遵从你的策略,例如我上面的来源目的 MAC
dhb233
3 天前
@LxnChan 主要看 2 个参数吧
xmit_hash_policy 是不是 layer3+4
ad_num_ports 是不是 4 (看起来你的有 4 个口)
LxnChan
3 天前
dhb233
3 天前
@LxnChan 2 层哈希。。。这你访问哪估计都只能到一个口
命令的话,可以用 ip link set bond0 type bond xmit_hash_policy layer3+4 改,不知道你是怎么配置的
hackroad
3 天前
https://konvict.cn/post/duo-wang-qia-ju-he/

1. layer2:使用二层帧头作为计算分发出口的参数,这导致通过同一个网关的数据流将完全从一个端口发送,为了更加细化分发策略,必须使用一些三层信息,然而却增加了计算开销。

使用硬件 MAC 地址的 XOR 来生成 hash 。公式为:

(MACsrc⊕MACdest)% Nslave

该算法会将某个网络对( network peer )上所有的流量全部分配到同一个 slave 上。

2. layer2+3:在 1 的基础上增加了三层的 ip 报头信息,计算量增加了,然而负载却更加均衡了,一个个主机到主机的数据流形成并且同一个流被分发到同一个端口,根据这个思想,如果要使负载更加均衡。

3. layer3+4:可以形成一个个端口到端口的流,负载更加均衡。通过 TCP 及 UDP 端口及其 IP 地址进行 HASH 计算。该策略在可能的时候使用上层协议的信息来生成 hash 。这将允许特定网络对( network peer )的流量分摊到多个 slave 上,尽管同一个连接( connection )不会分摊到多个 slave 上。
LxnChan
2 天前
@dhb233 @hackroad 我是用 nmtui 配置的,没看到哪里能配置哈希算法参数...我先搜搜看,谢谢啦
hackroad
2 天前
@LxnChan
/etc/sysconfig/network-scripts/ifcfg-bond0
配置文件可以这么配
TYPE=Bond
DEVICE=bond0
BOOTPROTO=static
ONBOOT=yes
IPADDR=10.1.22.xxx
NETMASK=255.255.255.0
GATEWAY=10.1.22.1
DNS1=10.1.254.xxx
NAME=bond0
BONDING_OPTS="mode=4 miimon=100 xmit_hash_policy=layer3+4"

如果用 nmcli
就用这个改
nmcli connection modify type bond con-name ${BOND} ifname ${BOND} bond.options mode=${TYPE},xmit_hash_policy=layer3+4

也可以看下这个脚本
https://github.com/arendej/Abashe/blob/master/setup-bond-lacp.sh


最终实现多个口都能有流量进出,下图我是 4 个 10G 做的 bond
[img][/img]

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1088429

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX