直接提问:我的 evga 分类主板有两个以太网端口。我想同时使用它们来提高远程连接的速度。(远程编程真棒)。我该怎么做?目前 /etc/network/interfaces:
auto lo eth0 eth1
iface lo inet loopback
iface eth0 inet static
address 192.168.1.202
netmask 255.255.255.0
gateway 192.168.1.2
ifrace eth1 inet static
address 192.168.1.201
netmask 255.255.255.0
我应该更改什么?我需要安装一个软件包来绑定两个通道吗?
背景:我进行了很多远程计算,既从家到办公室,又从办公室到家。但是(为了将我的 ISP 排除在外),让我们将问题表述为,我真的只对最大化同一(本地)网络上两台计算机之间的文件传输速率感兴趣。两个盒子都有双以太网主板。使用简单的 Linksys WRT54GS 作为 5 端口交换机(忽略无线和 ISP)——我如何最大化计算机之间的传输速率?
请注意:我对负载平衡不感兴趣——如果我错了请纠正我,但我想将两个通道绑定在一起,以便盒子出现就好像它有一个速度快一倍的连接。
答案1
绑定接口不太可能导致速度增加。通常,即使您成功绑定接口并配置交换机以支持以太通道,您仍然会发现绑定中的每对源/目标 TCP/UDP 会话仅使用一个接口。
因此,如果你从一台服务器复制一个 10Gb 的文件,然后启动其他10Gb 复制到该服务器,假设您也有基于会话的绑定,您将看到两张卡都达到最大容量。但关键的是,第一个副本只会占用一张网卡,而不是两张。
Cisco 的以太通道确实如此。事实上,Cisco 的以太通道甚至不是基于会话的,而是基于源/目标的,因此在我上面的例子中,您甚至不会获得速度提升 - 您的第二份副本必须位于完全不同的服务器上,然后您才能看到两张卡都被使用。也许您有一个更好的交换机,允许端口通道在一个 TCP/UDP 会话中同时使用两张卡,但这需要一些非常古怪的 arp/MAC 操作,我不知道 Linux 中的绑定模块是否支持这一点。
至于您,您使用的是普通标准的家用路由器,因此交换机端支持在这里是不可能的,这意味着您的选择受到进一步限制(请参阅下面的第一篇文章,您会注意到您现在无法使用最佳链路聚合模式,即模式 4)。
如果你决心继续下去,我发现这篇五年前的文章这似乎仍然有意义。此外,这篇三年前的文章覆盖相同的领域。
希望能帮助到你。
答案2
需要注意的是,为了利用 NIC 组合功能,您连接的交换机必须支持组合(又称 LACP)。您可以通过在 NewEgg.com 等网站上搜索找到类似的交换机。
一旦你掌握了这些,下面是来自 wiki 的简单指南: https://help.ubuntu.com/community/UbuntuBonding
祝你好运!
答案3
我认为使用交换机会限制您使用 2 条并行以太网电缆所带来的任何好处。除非交换机比您的两个 NIC 加起来还快,在这种情况下您可能会看到速度增加。
负载平衡程序正是您正在寻找的。 如果你不想,你可以不做“负载平衡”,但这是我所知道的合并连接的最简单的方法。这个想法并不太复杂
虚拟网卡 -> 负载均衡程序 -> 网卡 1 + 2
我相信这个答案有你想要的东西: 使用网络管理器实现网络负载平衡
我不确定具体细节,但我确信这是总体想法。
除非 NIC 卡的功能远不如路由器/交换机强大,否则您可能获得的唯一好处是两台计算机之间直接连接,或完全并行连接。但理论和实践并不总是奏效。
我能想到的唯一测试 NIC 是否是系统瓶颈的方法是使用所有 4 个 NIC 在每台计算机之间进行速度测试。我可以为您提供有关如何执行此操作的一般想法,但 Ubuntu 特定内容我需要帮助。
- 将每个 NIC 设置为自己的 IP 地址,例如计算机 1 的 IP 地址为 192.168.0.1 + 192.168.0.2,计算机 2 的 IP 地址为 *.3 + *.4
我见过的唯一针对本地网络的速度测试只是传输一个比特文件的时间。我不确定是否有更好的方法,我从未见过。
3 手动设置路由,使 *.1 成为到达 *.3 的接口,而 *.2 成为到达 *.4 的接口。PC1
192.168.0.1 <--> 192.168.0.3 PC2 192.168.0.2 <--> 192.168.0.4
我从来没有使用过 IP 表,因此这里是我发现的一个示例。
[root]# ip route add xx.xxx.239.120 via xx.xxx.239.120 dev eth0 table 4
[root]# ip route add table 4 default via xx.xxx.239.120
[root]# iptables -t mangle -A PREROUTING -p tcp --dport 80 -s xx.xxx.239.120 -j MARK --set-mark 4
[root]# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source xx.xxx.239.120 [root]# ip rule add fwmark 4 table 4
- 另一个选择是找到一种让 ssh(或终端)客户端通过某些接口进行连接的方法。我不确定客户端是如何做到这一点的。
如果 IP 表设置正确,您应该能够将 2 个文件从 PC 1 发送到 PC 2 上的两个接口,并且每个文件将采用不同的路由。如果两个连接的传输速度比一个连接快……(希望是两倍快),那么您可能会有所收获。
答案4
有一个名为 firehose 的库可以同时通过多个网络设备传输数据。但它不会给你一个虚拟网络设备,也不支持 TCP。它是为视频编辑者设计的高带宽视频流。不过你可能会感兴趣: