请教 LACP 链路聚合技术 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jdjingdian
V2EX    宽带症候群

请教 LACP 链路聚合技术

  •  
  •   jdjingdian 2024-03-27 09:54:19 +08:00 3113 次点击
    这是一个创建于 616 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位大佬好,我了解到 Linux 下 bonding 主要有几种模式

    • MODE 0:balance-rr
    • MODE 2:balance-xor
    • MODE 4:802.3ad

    有大佬知道这几种模式使用起来有什么区别吗?是否有什么优劣的区别

    我目前家里有一台服务器,一台威联通的 NAS ,上面都有双口的万兆网卡,然后我有一个兮克 SKS8300-8X 的 8 光口可管理交换机。

    我想实现的是,通链路聚合,让服务器和威联通互相访问的时候能让带宽叠加,尽可能接近理想的 20Gbps 。请问这种想法能实现吗?如果要实现这个想法,应该用哪种模式呢?

    昨晚我自己试过 balance-xor 和 802.3ad ,在服务器 NAS 和交换机上都分别配置了,两种设置的时候,服务器和 NAS 都显示聚合的接口是 20Gbps ,但是用 iperf3 测速的时候只有不到 10Gbps ,看起来只走了一个口的速度

    iperf3 命令是这样的,我理解多线程理论可以享受到链路聚合的带宽叠加吧?

    iperf3 -c 服务器 IP -P 4

    Linux 服务器和威联通的 hash 模式都配置为 layer 2 + 3 ,然后交换机配置的模式是"基于源和目的 MAC + IP"

    第 1 条附言    2024-03-27 22:42:39 +08:00

    目前我的交换机有8个口,其中1和2口绑定active模式(2个口都连到服务器),3和4口也是active模式(连到NAS),

    然后剩余的口不做配置,笔记本用雷电万兆网卡的一个口连到交换机8口上

    服务器的bonding配置802.3ad 3+4。NAS是威联通,似乎只能配2+3

    情况1 服务器上开了两个iperf3服务端

    笔记本和NAS都连上服务端测速的话,都可以跑到10Gbps,总计20Gbps。 如果在交换机上把1口或2口关掉再测速,笔记本和NAS的总带宽就只有10Gbps了

    情况2 NAS上开iperf3服务端

    笔记本和服务器都连上NAS测速的,都可以跑到10Gbps,总计20Gbps。


    所以现在还是比较疑问,为什么威联通到服务器通过多线程iperf3只能跑到10Gbps

    第 2 条附言    2024-03-28 21:43:13 +08:00
    感谢各位大佬的解答,我目前还是放弃了 802.3ad ,因为想折腾学习一下 rdma ,我把网卡用 sr-iov 生成的 vf 直通到虚拟机里,这种情况开链路聚合反而会有影响。

    非常感谢各位大佬的解答,我还是学习到了一波知识,感谢
    12 条回复    2024-04-01 13:49:22 +08:00
    lutasa43210
        1
    lutasa43210  
       2024-03-27 10:29:50 +08:00   2
    lacp 也是基于原则来处理帧

    “例如,DeviceA 的一条 TCP 报文流的源 IP 地址为 192.168.1.1 ( MAC 地址:a-a-a ,源端口号:50 ),目的 IP 地址为 172.16.1.1 ( MAC 地址:b-b-b ,目的端口号:2000 ),另一条 TCP 报文流的源 IP 地址为 192.168.1.1 ( MAC 地址:a-a-a ,源端口号:60 ),目的 IP 地址为 10.1.1.1 ( MAC 地址:c-c-c ,目的端口号:2000 )。如果在 DeviceA 上配置基于报文的源 MAC 地址进行负载分担,则报文出接口仅有 1 个;如果在 DeviceA 上配置基于报文的目的 IP 地址进行负载分担,则报文出接口有两个,去往不同目的 IP 的报文会从不同的出接口转发。

    配置负载分担方式时,请注意:

    负载分担方式只在流量的出接口上生效,如果发现各入接口的流量不均衡,请修改上行出接口的负载分担方式。
    尽量将数据流通过负载分担在所有活动链路上传输,避免数据流仅在一条链路上传输,造成流量拥堵,影响业务正常运行。
    例如,数据报文的目的 MAC 和 IP 地址只有一个,则应选择根据报文的源 MAC 和 IP 地址进行负载分担,如果选择根据报文的目的 MAC 和 IP 地址进行负载分担则会造成流量只在一条链路上传输,造成流量拥堵。”

    给你个参考 https://cloud.tencent.com/developer/article/2213188
    supty
        2
    supty  
       2024-03-27 13:40:20 +08:00
    802.11ad 这种要多线程 IP 才能跑到 20Gbps , 一般是常用于交换机之间的主备链路+带宽聚合
    balance-rr 模式如果两端设备确认支持的话是可以跑到 20Gbps 的,家用级的设备坑多配了也不一定能用.

    另外就几个盘位的万兆 NAS 通常都难以突破 1000M/s 没啥折腾必要
    jdjingdian
        3
    jdjingdian  
    OP
       2024-03-27 13:54:35 +08:00 via iPhone
    @supty 确实我现在 nas 速度也还没超过 1000M

    主要是刚好看交换机支持静态/动态聚合功能,就想试试,结果昨天弄了一晚上带宽都没搞上去
    pinkbook
        4
    pinkbook  
       2024-03-27 18:03:06 +08:00   1
    交换机动态/静态 lacp 区别是 动态模式下当 bond/eth-trunk down 时,会将 eth-trunk 的 vlan 属性下发到物理接口。所以当链路聚合 up 时,动态静态没区别的。测试只有 10G 的话,要登录交换机实际查看 In/out 流量。然后看哪个方向负载不均
    xqzr
        5
    xqzr  
       2024-03-27 22:07:59 +08:00   1
    尝试 layer 3 + 4 ,交换机“基于源和目的 IP + 端口”
    crusaderay123
        6
    crusaderay123  
       2024-03-28 07:49:03 +08:00 via iPhone   1
    交换机如果能看量的话最好了,4 个端口一看就知道是发的不满还是只发了一个口,一般 balance-rr 这个我理解是 round robin 的意思吧,应该是常规负载
    xiaooloong
        7
    xiaooloong  
       2024-03-28 10:22:06 +08:00   1
    链路聚合分两种

    第一种是静态绑定,也就是提前设置好聚合规则,设置好之后两个端口当作一个用,各种算法收帧没啥区别,任意一个端口收到对面的发来的帧处理就是了。算法区别在与发帧,rr 就是各个端口轮训发帧,xor 就是根据帧信息和端口做异或选择哪个端口发帧。

    第二种是动态绑定,也就是 802.3ad ,也叫 LACP 。会在连接的端口上跑协议动态协商。

    mode 0 mode 2 mode 4 这些是 linux 内核上对链路聚合的叫法。
    交换机上一般叫做 LAG ,你去交换机文档里看看支持哪种聚合。
    交换机上支持动态聚合,那服务器上就用 802.3ad 。交换机只支持静态聚合,服务器就用 balance-系列算法,具体算法对交换机无所谓,我只用过 rr 。
    2067
        8
    2067  
       2024-03-29 01:23:08 +08:00   1
    如果你是 layer2+3 ,实际上源目的 ip 和 mac 都相同的情况下,也就只会哈希到固定一个端口上面

    所以要么加上端口号信息一起哈希,这样多个 socket 的时候“有可能”跑满
    要么直接是简单复合轮询负荷分担,mode0 也许满足你的要求
    FabricPath
        9
    FabricPath  
       2024-03-29 15:08:12 +08:00   1
    你要学习 RDMA 的话,买两个 25G 的 CX4 或者 CX5 对着插,便宜好用,跑 RoCEv2 稳得一批
    jdjingdian
        10
    jdjingdian  
    OP
       2024-03-29 15:41:13 +08:00
    @FabricPath 我目前家里有 CX4421A 、CX4121A 、CX3-PRO ,4421 4121 都可以运行在 25G ,但目前家里没有支持 RoCE 的交换机(准确来讲,我的交换机好像没有看到配置 PFC 流控的地方)

    所以目前相当于只是在服务器内部的虚拟机之间使用,将网卡 sr-iov 拆分后直通 vf 给虚拟机内,然后两个虚拟机用 ib_write_bw --report_gbits 命令测试带宽,跑到 53Gbps
    FabricPath
        11
    FabricPath  
       2024-04-01 11:00:11 +08:00   1
    @jdjingdian
    单交换机、几个端口的场景,PFC 的作用忽略不计,不用管交换机;多交换机开 ECN 就行了。
    另外你直接两个网卡对插就行了,不需要交换机,除非你有多台机器要互联;
    vf-lag rdma 在 cx4 上应该是不支持的
    jdjingdian
        12
    jdjingdian  
    OP
       2024-04-01 13:49:22 +08:00
    @FabricPath 好的,多谢!
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2913 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 14:21 PVG 22:21 LAX 06:21 JFK 09:21
    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