最近碰到的一个诡异的案例,让我对链路聚合有了更深入的理解,可能对你也会有所启发。
问题
需要从多台相机采集图片传给电脑,总流速超过千兆,但在4千兆以下。考虑到万兆网卡和(万兆上行端口的)交换机都还太贵,决定还是使用链路聚合。
交换机上用4个千兆口连接电脑,电脑上使用一块4口千兆网卡做聚合。
最初的测试
尽管我的目标是10台相机同时传数据给电脑,但第一步还是用4个相机做测试。4个相机对应于4个网口,预期的效果是应该和划分为4个子网的方式相同,即每个相机都可以跑到接近千兆。
为什么不用4个子网呢(即一个网口一个子网,带一个相机)?——因为聚合的方案配置简单,且更灵活,可以适用于N个相机,能够动态平衡负载。相当于电脑和交换机有一条4千兆的链路,随便多少个相机去分这个带宽。
聚合的缺点是有可能增加CPU负载。但这个要看聚合的模式。由于电脑主要是收数据,交换机转发来自相机来数据,所以需要交换机端也支持聚合。
使用的交换机是支持802.3ad的,所以在电脑端也要配置为802.3ad模式。下面是Ubuntu下的配置文件。
auto enp5s0f0
iface enp5s0f0 inet manual
bond-master bond0
auto enp5s0f1
iface enp5s0f1 inet manual
bond-master bond0
auto enp5s0f2
iface enp5s0f2 inet manual
bond-master bond0
auto enp5s0f3
iface enp5s0f3 inet manual
bond-master bond0
auto bond0
iface bond0 inet static
address 10.8.5.1
netmask 255.255.255.0
mtu