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

340 天前
 huangya

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

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)...

2326 次点击
所在节点    宽带症候群
19 条回复
Rockbao
340 天前
其实家里用链路聚合和负载均衡只有极少数场景下适用.
可能只有下载类的场景可以利用到聚合的优势.
配置不当还可能因为出口 IP 乱跳,导致某些服务试用体验变差.
huangya
340 天前
@Rockbao 链路聚合不影响。有影响的是多个 IP 的负载均衡,解决办法是端口 80,443 ,8443 这些走一个 IP ,不做负载均衡。另外我的情况是同一家 ISP ,拿到的几个 IP 都接近。dns 解析也是一样的。体验会好一些。
Haruka007
339 天前
3. 限速模板要后台改
malash
339 天前
折腾 1 里,链路聚合相的好处是对单线程提升,我之前测过 speedtest 单线程也能跑超过千兆,楼主可以试试。
如果成功的话,说明 HN8346X6 确实是一个不错的链路聚合选择。
huangya
339 天前
@malash 单线程也能超过千兆?我不明白为何能做到。因为常用算法要么是 layer2 或者 layer2+3 , 或者 layer3+4 。有时候我可以测试看看。
malash
338 天前
@huangya 我用的 balance-rr 。链路聚合顾名思义是链路层的,单线程测速用的 TCP ,是感知不到链路层的聚合的,因此单线程是可以超过千兆的。
huangya
337 天前
@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
337 天前
@huangya 影响的,比如一些金融客户端,一些游戏客户端,你出口 ip 来回跳的话会无法使用甚至封禁账号.
折腾到最后其实这些对带宽没有那么敏感的应用我都是指定到固定一条出口的.
只有多线程的上传下载才用得到多链路聚合.
上面说的情况只是用户较少的情况下,如果你有几百个用户那策略又另说.

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

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

手持 3 网 20 条宽带现在每月宽带除 PCDN 以外流量还不如我双无限手机卡跑的多。
jmk92
335 天前
是的,这样除了测速有用,上网的话必须选择一条宽带。
jmk92
335 天前
你是 10g epon ,搞个带 2.5g 口的光猫不就行了,G7615 咸鱼 350 左右,但是改 10g eopn 得去恩山上找大佬帮你改一下。
huangya
335 天前
@lly8666
@jmk92 除了测速还可以 pt 下载。几百 G 的大包下载还是很爽的。
huangya
335 天前
@jmk92 除了要买 2.5G 的光猫,还要买双 2.5G 的路由器。我的光猫是联通送的。现在许多人手里有很大单2.5G 口的路由器。个人对充分利用老旧硬件发挥它的极限性能很感兴趣(欧洲人说这很环保,哈哈)。尽管我还有很多高端路由器(双 10G 电口的路由器和双 10G 光口的路由器也有)
honeyjuice
331 天前
是不是南区的? 南区手搓模板实测会卡 190
huangya
331 天前
@honeyjuice 场景化宽带是手搓模板的。在原来 100 的基础上直接乘 2 的。
honeyjuice
329 天前
@huangya 问小工查一下上联 olt 是中兴 C600 还是华为 MA5800
huangya
328 天前
@honeyjuice 是 MA5800.为了图快,直接老模板乘以2的
honeyjuice
328 天前
@huangya
(新用户定义为 5 月 22 日之后竣工的宽带)
目前新用户 C600 统一改为 10G
新用户 MA5800 统一改为 2G
这两周会把老用户 MA5800 改到 1G ,哪天测速发现正常了说一声
C600 老用户模板比较乱,有些人是 1G 有些人很低,得花点时间排查下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/942241

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX