V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jdjingdian
V2EX  ›  宽带症候群

请教 LACP 链路聚合技术

  •  
  •   jdjingdian · 31 天前 · 1489 次点击

    各位大佬好,我了解到 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 条附言  ·  30 天前

    目前我的交换机有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 条附言  ·  29 天前
    感谢各位大佬的解答,我目前还是放弃了 802.3ad ,因为想折腾学习一下 rdma ,我把网卡用 sr-iov 生成的 vf 直通到虚拟机里,这种情况开链路聚合反而会有影响。

    非常感谢各位大佬的解答,我还是学习到了一波知识,感谢
    12 条回复    2024-04-01 13:49:22 +08:00
    lutasa43210
        1
    lutasa43210  
       31 天前   ❤️ 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  
       31 天前
    802.11ad 这种要多线程 IP 才能跑到 20Gbps , 一般是常用于交换机之间的主备链路+带宽聚合
    balance-rr 模式如果两端设备确认支持的话是可以跑到 20Gbps 的,家用级的设备坑多配了也不一定能用.

    另外就几个盘位的万兆 NAS 通常都难以突破 1000M/s 没啥折腾必要
    jdjingdian
        3
    jdjingdian  
    OP
       31 天前 via iPhone
    @supty 确实我现在 nas 速度也还没超过 1000M

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

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

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

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

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

    所以目前相当于只是在服务器内部的虚拟机之间使用,将网卡 sr-iov 拆分后直通 vf 给虚拟机内,然后两个虚拟机用 ib_write_bw --report_gbits 命令测试带宽,跑到 53Gbps
    FabricPath
        11
    FabricPath  
       26 天前   ❤️ 1
    @jdjingdian
    单交换机、几个端口的场景,PFC 的作用忽略不计,不用管交换机;多交换机开 ECN 就行了。
    另外你直接两个网卡对插就行了,不需要交换机,除非你有多台机器要互联;
    vf-lag rdma 在 cx4 上应该是不支持的
    jdjingdian
        12
    jdjingdian  
    OP
       26 天前
    @FabricPath 好的,多谢!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2793 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 06:04 · PVG 14:04 · LAX 23:04 · JFK 02:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.