求问链路聚合 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
LxnChan
V2EX    Linux

求问链路聚合

  •  
  •   LxnChan
    lxnchan 2024-11-11 10:56:14 +08:00 2836 次点击
    这是一个创建于 386 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    交换机侧配置:

    服务器侧配置:

    20 条回复    2024-11-12 18:34:29 +08:00
    dhb233
        1
    dhb233  
       2024-11-11 11:02:15 +08:00
    一般情况聚合单个链接只能走一个链路,除非改哈希算法,而且还要对端也改才能生效
    LxnChan
        2
    LxnChan  
    OP
       2024-11-11 11:10:23 +08:00
    @dhb233 那问题是 iperf 开多线程看交换机这边也还是只走了一个链路呀
    pinkbook
        3
    pinkbook  
       2024-11-11 11:13:00 +08:00
    检查是哪个方向流量只走单条线路。web 交换机没操作过,正常交换机默认链聚合就可以。服务器给你个配置参考:
    bond-mode 4
    bond-miimon 100
    bond-lacp-rate 1
    bond-slaves eth1 eth2
    bond-xmit_hash_policy 1
    kenneth104
        4
    kenneth104  
       2024-11-11 11:15:55 +08:00
    现在这样是没问题的,但你想怎么分流?
    https://support.huawei.com/enterprise/zh/doc/EDOC1100301700/6de0b60d
    gregy
        5
    gregy  
       2024-11-11 11:18:39 +08:00
    链路聚合如果是一对一的传输,速度就是单网口的物理上线。
    如果是一对二的传输,能跑出来 1+1=2 的效果
    这种情况多用于服务端向多个客户端提供服务时使用。
    想要一对一的传输提速,要么上 2.5G 或者 5G ,要么一步到位直接上 10G ,现在 25G ,40G 的二手交换机也慢慢到可以接受的价格了。
    kenneth104
        6
    kenneth104  
       2024-11-11 11:22:00 +08:00
    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
        7
    dhb233  
       2024-11-11 11:36:34 +08:00
    @LxnChan 如果 iperf 是多个 socket 的话,那大概是 bond 没有配置 L4 的哈希,服务器上可以用 ip -d link show 看下 bond 的哈希算法,还有 3ad 协商对不对

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

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

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

    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
        13
    LxnChan  
    OP
       2024-11-11 15:48:37 +08:00
    @kenneth104 嗯,目前还是测试阶段,不敢推,怕出问题,做聚合本来也是考虑到用户多的时候能均衡一下流量。另外如果一个客户端占满了 1000Mbps ,那此时再来一条连接不就应该分配到别的链路上吗
    kenneth104
        14
    kenneth104  
       2024-11-11 15:49:28 +08:00
    不是的,分配只遵从你的策略,例如我上面的来源目的 MAC
    dhb233
        15
    dhb233  
       2024-11-11 16:32:03 +08:00
    @LxnChan 主要看 2 个参数吧
    xmit_hash_policy 是不是 layer3+4
    ad_num_ports 是不是 4 (看起来你的有 4 个口)
    LxnChan
        16
    LxnChan  
    OP
       2024-11-11 17:40:39 +08:00
    dhb233
        17
    dhb233  
       2024-11-11 20:10:02 +08:00
    @LxnChan 2 层哈希。。。这你访问哪估计都只能到一个口
    命令的话,可以用 ip link set bond0 type bond xmit_hash_policy layer3+4 改,不知道你是怎么配置的
    hackroad
        18
    hackroad  
       2024-11-11 20:43:38 +08:00
    https://konvict.cn/post/duo-wang-qia-ju-he/

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

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

    (MACsrcMACdest)% Nslave

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

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

    3. layer3+4:可以形成一个个端口到端口的流,负载更加均衡。通过 TCP 及 UDP 端口及其 IP 地址进行 HASH 计算。该策略在可能的时候使用上层协议的信息来生成 hash 。这将允许特定网络对( network peer )的流量分摊到多个 slave 上,尽管同一个连接( connection )不会分摊到多个 slave 上。
    LxnChan
        19
    LxnChan  
    OP
       2024-11-12 16:51:50 +08:00
    @dhb233 @hackroad 我是用 nmtui 配置的,没看到哪里能配置哈希算法参数...我先搜搜看,谢谢啦
    hackroad
        20
    hackroad  
       2024-11-12 18:34:29 +08:00
    @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]
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3315 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 11:46 PVG 19:46 LAX 03:46 JFK 06:46
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86