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

充分利用手头硬件和带宽资源:链路聚合与多拔负载均衡

  •  
  •   huangya · 2023-05-23 13:13:16 +08:00 · 2773 次点击
    这是一个创建于 550 天前的主题,其中的信息可能已经有所发展或是发生改变。

    周末花了一天的时间折腾了一下网络。与大家分享一下。有些折腾有意义,有些纯粹是技术研究。

    1.背景:

    上海联通。手头有一条场景化宽带,1000M/200M. 两条崇明宽带,各为 1000M/40M 。等联通上线 200M 上传包后,就把场景化宽带退掉。 有一个 2.5G 的路由器,另外带 4 个千兆 LAN 口。SoC 为高通 IPQ807x ,带硬件加速。 有一个 10g epon 光猫,型号为华为 HN8346X6(不带 Q ,不是 HN8346X6Q ),带 4 个千兆 LAN 口。

    2.折腾 1:测试链路聚合。

    路由器官方固件支持 2.5G 为 LAN 或者为 WAN ,也支持两个 LAN 口变成 WAN 做链路聚合。但是不支持 4 个 LAN 变成 WAN 做链路聚合。 官方固件不支持多个号拔号。把光猫的两个 LAN 连接到路由器两个千兆口,路由器 2.5G 口做 LAN 。经测试,速度能跑到 1200+。 CPU 占用为 0.因为有硬件加速。下图为崇明宽带的测试情况。

    结论:网上有人说华为要带 Q 的才支持链路聚合,此种说法不准确。

    3.折腾 2:测试多拔负载均衡。

    因为官方固件不支持多拔,所以刷一个 lean 的 OpenWRT 。值得注意的是多拔负载均衡与链路聚合是两个不同的方式。多拔是有多个 IP 。折腾 1 中链路聚合只有一个 IP. 把光猫的两个 LAN 连接到路由器两个千兆口,路由器 2.5G 口做 LAN 。 经测试,速度能跑到 2300+。CPU 占用为 0.应该是 2.5G 的极限了,如果路由器的 2.5G 换成 5G 或者 10G 。应该是能跑到 3x940=2820 左右。

    遗留问题:上传为什么这么低?似乎没有叠加场景化宽带的上传。

    4.折腾 3:测试链路聚合+多拔(正在 debug)

    把光猫的 LAN1 和 LAN2 连接到路由器 2 个千兆口,作为链路聚合 1.把光猫的 LAN13 和 LAN4 连接到剩余路由器 2 个千兆口,作为链路聚合 2.路由器 2.5G 口做 LAN 。 链路聚合 1 和链路聚合 2 分别用不同账号拨号。期待测速有 2300+。 发现 lean 最新代码中不支持链路聚合,打开 bonding ,编译 package/qca/nss/qca-nss-clients-64 会出错。 这个模块找不到 bond_get_id 这个函数。查看高通的 linux 内核代码,发现这个函数定义在内核代码 driver/net/bonding 中。移植一下 patch 。编译通过了。 但是拨不上号,正在 debug 中。

    5.折腾 4: 测试 4 个 port 链路聚合+3 个号多拔(未进行)

    折腾 3 是两个口作为一个链路聚合,有两组链路聚合。总共使用 2 个号多拔。这个是打算把 4 个口作为一组链路聚合。 然后在这组链路聚合的基础上拔 3 个号。应该是需要内核模块 kmod-macvlan 的支持。 期待的结果是能达到 3*1200=3600.有人问你剩余的 2.5G 口不是限制住了速度吗?对,但 op 有办法搞到一台 rax120. 那个带一个 5G 口。

    6.可能有意义的使用场景:

    (1)有些人路由器只有一个 2.5G 或者 5g 。

    (2)10g epon 带 2.5G 的光猫现阶段有点小贵?

    (3)有些人的路由器只带 5 个 1g 口。带宽是千兆。在折腾 1 中,可以使用剩余的两个 1g 口在 LAN 方向做链路汇聚给 NAS 或者交换机。按需选择。这样可以突破千兆。

    (4)市面上带万兆电口的猫相比 2.5g 更贵。折腾 4 是一个突破 2.5G 瓶颈的方法,适合发烧友折腾

    (5)有些人说上述折腾有些地方上 2.5 软路由器更方便一些,确实是这样。但这里的硬路由支持硬件加速

    (6)...

    第 1 条附言  ·  2023-05-23 16:40:44 +08:00

    @Haruka007 限速模板以前就改好了,刚连续测试三次,都能跑到190了。但不是190+40+40. 目前不知道什么原因,等有时间抓抓包看下是否upload有做负载均衡。还是说三个号用相同光猫同时拨号被OLT那边限死200M了。

    19 条回复    2023-06-03 17:07:18 +08:00
    Rockbao
        1
    Rockbao  
       2023-05-23 13:26:11 +08:00
    其实家里用链路聚合和负载均衡只有极少数场景下适用.
    可能只有下载类的场景可以利用到聚合的优势.
    配置不当还可能因为出口 IP 乱跳,导致某些服务试用体验变差.
    huangya
        2
    huangya  
    OP
       2023-05-23 13:41:32 +08:00
    @Rockbao 链路聚合不影响。有影响的是多个 IP 的负载均衡,解决办法是端口 80,443 ,8443 这些走一个 IP ,不做负载均衡。另外我的情况是同一家 ISP ,拿到的几个 IP 都接近。dns 解析也是一样的。体验会好一些。
    Haruka007
        3
    Haruka007  
       2023-05-23 16:12:11 +08:00
    3. 限速模板要后台改
    malash
        4
    malash  
       2023-05-23 17:25:18 +08:00
    折腾 1 里,链路聚合相的好处是对单线程提升,我之前测过 speedtest 单线程也能跑超过千兆,楼主可以试试。
    如果成功的话,说明 HN8346X6 确实是一个不错的链路聚合选择。
    huangya
        5
    huangya  
    OP
       2023-05-23 18:05:55 +08:00
    @malash 单线程也能超过千兆?我不明白为何能做到。因为常用算法要么是 layer2 或者 layer2+3 , 或者 layer3+4 。有时候我可以测试看看。
    malash
        6
    malash  
       2023-05-25 11:49:24 +08:00
    @huangya 我用的 balance-rr 。链路聚合顾名思义是链路层的,单线程测速用的 TCP ,是感知不到链路层的聚合的,因此单线程是可以超过千兆的。
    huangya
        7
    huangya  
    OP
       2023-05-26 10:05:28 +08:00
    @malash 查了一下 mode 0 (balance-rr)确实是对单线程有提升。但不知道光猫那边是否是用这个 mode 。毕竟大部分是 downlink 方向。折腾 1 中我用的厂商固件选择的是 mode 2 (balance-xor)。在 mode 2 才有我说的 layer2 或者 layer2+3 , 或者 layer3+4 。mode 2 对单线程没有提升。

    参考:
    https://www.ibm.com/docs/ja/linux-on-systems?topic=recommendations-bonding-modes
    Rockbao
        8
    Rockbao  
       2023-05-26 11:46:40 +08:00
    @huangya 影响的,比如一些金融客户端,一些游戏客户端,你出口 ip 来回跳的话会无法使用甚至封禁账号.
    折腾到最后其实这些对带宽没有那么敏感的应用我都是指定到固定一条出口的.
    只有多线程的上传下载才用得到多链路聚合.
    上面说的情况只是用户较少的情况下,如果你有几百个用户那策略又另说.

    另外其实多家 ISP 聚合其实更合理一些,根据 DNS 解析不同 ISP 的服务器对应不同的出口.
    huangya
        9
    huangya  
    OP
       2023-05-26 12:26:25 +08:00
    @Rockbao 如果是多 IP 负载均衡,对带宽没有那么敏感的应用确实是可以到固定一条出口。你甚至可以白名单设备。比如只给 NAS 负载均衡。

    另外值得注意的是,链路聚合(不是多 IP 负载均衡)中的 balance-rr ,应该可以单线程突破千兆。也没有 IP 乱跳的问题。可以参考前面的楼层讨论。
    lly8666
        10
    lly8666  
       2023-05-27 22:54:38 +08:00
    折腾久了你就会发现除了测速以外毫无卵用。。

    手持 3 网 20 条宽带现在每月宽带除 PCDN 以外流量还不如我双无限手机卡跑的多。
    jmk92
        11
    jmk92  
       2023-05-28 01:33:35 +08:00
    是的,这样除了测速有用,上网的话必须选择一条宽带。
    jmk92
        12
    jmk92  
       2023-05-28 01:35:12 +08:00
    你是 10g epon ,搞个带 2.5g 口的光猫不就行了,G7615 咸鱼 350 左右,但是改 10g eopn 得去恩山上找大佬帮你改一下。
    huangya
        13
    huangya  
    OP
       2023-05-28 10:28:53 +08:00
    @lly8666
    @jmk92 除了测速还可以 pt 下载。几百 G 的大包下载还是很爽的。
    huangya
        14
    huangya  
    OP
       2023-05-28 10:40:49 +08:00
    @jmk92 除了要买 2.5G 的光猫,还要买双 2.5G 的路由器。我的光猫是联通送的。现在许多人手里有很大单2.5G 口的路由器。个人对充分利用老旧硬件发挥它的极限性能很感兴趣(欧洲人说这很环保,哈哈)。尽管我还有很多高端路由器(双 10G 电口的路由器和双 10G 光口的路由器也有)
    honeyjuice
        15
    honeyjuice  
       2023-06-01 08:44:25 +08:00
    是不是南区的? 南区手搓模板实测会卡 190
    huangya
        16
    huangya  
    OP
       2023-06-01 09:58:37 +08:00
    @honeyjuice 场景化宽带是手搓模板的。在原来 100 的基础上直接乘 2 的。
    honeyjuice
        17
    honeyjuice  
       2023-06-03 01:40:03 +08:00
    @huangya 问小工查一下上联 olt 是中兴 C600 还是华为 MA5800
    huangya
        18
    huangya  
    OP
       2023-06-03 15:42:57 +08:00
    @honeyjuice 是 MA5800.为了图快,直接老模板乘以2的
    honeyjuice
        19
    honeyjuice  
       2023-06-03 17:07:18 +08:00
    @huangya
    (新用户定义为 5 月 22 日之后竣工的宽带)
    目前新用户 C600 统一改为 10G
    新用户 MA5800 统一改为 2G
    这两周会把老用户 MA5800 改到 1G ,哪天测速发现正常了说一声
    C600 老用户模板比较乱,有些人是 1G 有些人很低,得花点时间排查下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1362 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 17:36 · PVG 01:36 · LAX 09:36 · JFK 12:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.