我可以使用两张以太网卡来增加局域网中两个 Linux 操作系统之间的传输速度吗?

我可以使用两张以太网卡来增加局域网中两个 Linux 操作系统之间的传输速度吗?

我有两台计算机,都装有 Linux,目前通过 1000Mb/s 以太网端口(安装在 mb 中)连接到路由器/交换机。

这使我能够在两台主机之间以最大 120MB/s 的速度传输数据。

由于我需要提高这个速度,是否可以在两个主板的两个 PCIe 插槽中安装两个 2.5Gb 以太网卡(总共 4 个新以太网卡),直接用 2 条电缆连接它们(不通过路由器/交换机) ,并使两张卡都被视为一个逻辑网络接口,理论速度为 5Gb?

我该怎么做呢?

另外,我还看到带有两个 RJ45 端口的单以太网卡 (PCIx);这2个端口可以同时全速使用吗?

答案1

对的,这是可能的。

您很可能需要安装“链接绑定驱动程序”。一个驱动程序,可以平衡和同步通过两个(或更多)链路发送的数据包。它不是大多数发行版中默认设置的一部分,但在存储库中可用。例如,对于 Ubuntu 系列,您可以在这里获得很好的说明:https://help.ubuntu.com/community/UbuntuBonding

您还可以用谷歌搜索“链接聚合”或“链接组合”。虽然这种连接速度和可持续性的方法在服务器端被大量使用,但我们仍然没有一个术语来形容它......

答案2

由于我需要提高这个速度,是否可以在两个mb的两个PCIe插槽中安装两个2.5GB以太网卡(总共4个新以太网卡),直接用2根电缆连接它们(不通过路由器/交换机) ,并使两张卡都被视为一个逻辑网络接口,理论速度为 5GB?

是的,正如其他答案所涵盖的那样,这应该是可行的。

也就是说,对于两个系统之间点对点链接的非常具体的情况你可以做到这一点并实现(几乎)你想要的。两个节点都需要进行相同的配置,并且都需要使用绑定模式 0 (balance-rr),因为这是在两个系统之间的点对点链路中实现真正双吞吐量的唯一方法Linux 绑定驱动程序(所有其他模式都不会均匀地平衡事物,或者根本不平衡)。

不过,您可能不会看到与 5GbE 链路完全相同的链路,因为绑定驱动程序会产生一些额外的开销(但应该会接近)。

但这仅适用于两端具有相同绑定配置的两个系统之间的点对点链路。对于其他任何情况,您可能需要绑定模式 6 (balance-alb),但您的交换机需要精心设计,这将平衡两个链路之间的各个连接(IOW,每个连接最多只能使用一个链路的等效值,但只有大约一半的连接会竞争该带宽)。

尽管如此,您最好还是购买一对 10 GbE 适配器。您需要稍微昂贵的布线,但性价比优于四个 2.5 GbE 或两个 5 GbE 链路,因为通常实施的 2.5 GbE 和 5 GbE 只是 10 GbE,传输速率较慢(因此很多内部结构是相同的)。这种方法具有明显的优势,即使与您计划的设置相比,它也会给您带来巨大的性能提升,而且它应该只是工作(前提是您获得了 Linux 良好支持的卡),无需额外配置,而且它的成本实际上应该比使用两对 2.5 GbE 卡的成本略低两倍。

另外,我看到带有两个 rj45 端口的单以太网卡 (PCIx);这2个端口可以同时全速使用吗?

这个问题的答案是肯定的。同时使用两个端口应该始终有效。您可能无法使用他们的全部带宽(尽管您通常仍会获得其广告带宽的延迟优势)。

对于这个答案来说,原因有点太复杂了,但它们与 PCI-e 链路协商的一些怪癖以及主板制造商做出的一些相当普遍的有问题的设计选择有关。

答案3

Synology 可以专门完成您所指的操作,不是使用多个网卡,而是使用单个多 [quad] 端口网卡。例如一个https://www.synology.com/en-us/products/RS3618xs#specs

https://kb.synology.com/en-ca/DSM/help/DSM/AdminCenter/connection_network_linkaggr?version=7

不幸的是,我在 Synology 上完成的设置是通过他们的图形 DSM 界面进行的。我不知道它是如何转化为他们的 debian 风格的 Linux 的。但根据你的问题,是的,这是可能的,而且已经实践了一段时间了。

以下是绑定说明:

网络绑定是一种组合或聚合网络接口以提供具有更高吞吐量或冗余的逻辑接口的方法。

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/configuring-network-bonding_configuring-and-managing-networking

如果它只是一张具有多个端口的网卡,或多张网卡,每个网卡都有一个端口,这并不重要...每个端口都会显示为某个接口名称(eth0、eth1、eth2.. eth-n),并且就是这样你们结合的水平。

答案4

是的。您可以通过许多 Linux 发行版中默认启用的 mptcp 协议来做到这一点。您必须使用 ip 表来配置连接以使用 mptcp 而不是默认的 tcp。您可以在这里找到说明https://github.com/multipath-tcp/mptcp

相关内容