手头有一台 R720 ,BCM5720 的 LOM 网卡,4 口千兆,;交换机是锐捷 S5760C-24GT8XS-X 。
目前的网络配置是 4 个 LOM 口全直连交换机,然后做链路聚合,想的是带宽叠加。
但是现在的问题是经过测速后发现带宽并不能叠加,只是流量会在每次传输的时候随机分配到某一条链路上,看别的地方说链路聚合并不是 1+1=2 ,所以求问为什么无法带宽叠加以及如何能够达到带宽叠加?
交换机侧配置:
服务器侧配置:
1
dhb233 4 天前
一般情况聚合单个链接只能走一个链路,除非改哈希算法,而且还要对端也改才能生效
|
3
pinkbook 4 天前
检查是哪个方向流量只走单条线路。web 交换机没操作过,正常交换机默认链路聚合就可以。服务器给你个配置参考:
bond-mode 4 bond-miimon 100 bond-lacp-rate 1 bond-slaves eth1 eth2 bond-xmit_hash_policy 1 |
4
kenneth104 4 天前
现在这样是没问题的,但你想怎么分流?
https://support.huawei.com/enterprise/zh/doc/EDOC1100301700/6de0b60d |
5
gregy 4 天前
链路聚合如果是一对一的传输,速度就是单网口的物理上线。
如果是一对二的传输,能跑出来 1+1=2 的效果 这种情况多用于服务端向多个客户端提供服务时使用。 想要一对一的传输提速,要么上 2.5G 或者 5G ,要么一步到位直接上 10G ,现在 25G ,40G 的二手交换机也慢慢到可以接受的价格了。 |
6
kenneth104 4 天前
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 地址进行负载分担。 |
7
dhb233 4 天前
@LxnChan 如果 iperf 是多个 socket 的话,那大概是 bond 没有配置 L4 的哈希,服务器上可以用 ip -d link show 看下 bond 的哈希算法,还有 3ad 协商对不对
交换机那边应该没问题,这么基础的配置,不至于只走一条链路。。 |
8
kenneth104 4 天前
交换口运行 LACP ,就是类似于我的#6 情况
L2 : Source XOR Destination MAC address, Vlan ID, Ethertype, Ingress-port 基于来源和目的 MAC ,而且你这 2 个都一样的 要测试,起子接口,软件一直跑,跑 10 个,大概就明白了 由于是 XOR ,也还是有可能会空闲的 |
9
kylezb 4 天前
或许可以试试 Balance-RR ( mode=0 ),也能实现负载均衡和接口故障时自动切换。
|
10
xiaozhaoz 4 天前
网口 bonding 有 0~6 ,7 种模式,你想实现一个链路上行带宽聚合,要用 mode = 0.
mode 0 的风险是包会乱序,如果是 udp 某些业务处理可能有问题。 |
11
LxnChan OP @kenneth104 @gregy 不是一对一提速,我的想法是比如用户 1 、2 访问文件 A ,这样不考虑其他因素单千兆链路下每个用户的带宽不就是 500Mbps 嘛;聚合后我想的是所有访问者共享 4000Mbps 的带宽,然后单线程下每个用户最高应该是 1000Mbps 这样,就是单个服务端向多个客户端提供服务
@dhb233 `ip -d link show`这个执行后输出了很多,这个具体怎么看 |
12
kenneth104 4 天前
就是用户量不够多,足够多的时候,它看着就是均衡的
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 |
13
LxnChan OP @kenneth104 嗯,目前还是测试阶段,不敢推,怕出问题,做聚合本来也是考虑到用户多的时候能均衡一下流量。另外如果一个客户端占满了 1000Mbps ,那此时再来一条连接不就应该分配到别的链路上吗
|
14
kenneth104 4 天前
不是的,分配只遵从你的策略,例如我上面的来源目的 MAC
|
16
LxnChan OP @dhb233 https://bucket.international.wpc.arlxn.top/c9ee97b62495600b49ef7121a9679a0b.png
xmit_hash_policy 是 Layer 2 |
17
dhb233 4 天前
@LxnChan 2 层哈希。。。这你访问哪估计都只能到一个口
命令的话,可以用 ip link set bond0 type bond xmit_hash_policy layer3+4 改,不知道你是怎么配置的 |
18
hackroad 4 天前
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 上。 |
20
hackroad 3 天前
@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] |