我在两个不同的 PCIe 适配器上直接连接了两个 PowerEdge 6950 分频器(使用直线)。
我在每条线路上都有一个千兆链路(1000 MBit、全双工、双向流量控制)。
现在我正在尝试使用双方的 rr 算法将这些接口绑定到 bond0(我想为单个 IP 会话获得 2000 MBit)。
当我通过在 tcp 模式下使用 dd bs=1M 和 netcat 将 /dev/zero 传输到 /dev/null 来测试吞吐量时,我得到了 70 MB/s 的吞吐量 - 不是 - 正如预期的那样超过 150MB/s。
当我使用单线时,如果我为每条线使用不同的方向,每条线的速度大约为 98 MB/s。当我使用单条线路时,如果流量进入“相同”方向,则线路上的速度分别为 70 MB/s 和 90 MB/s。
通读bonding-readme (/usr/src/linux/Documentation/networking/bonding.txt)后,我发现以下部分很有用:(13.1.1 MT Bonding Mode Selection for Single Switch Topology)
balance-rr:此模式是唯一允许单个 TCP/IP 连接跨多个接口条带化流量的模式。因此,它是唯一一种允许单个 TCP/IP 流利用多个接口的吞吐量的模式。然而,这是有代价的:条带化通常会导致对等系统无序接收数据包,从而导致 TCP/IP 的拥塞控制系统启动,通常是通过重新传输段。
Run Code Online (Sandbox Code Playgroud)It is possible to adjust TCP/IP's congestion limits by altering the net.ipv4.tcp_reordering sysctl parameter. The usual default value is …
作为 Linux 管理员,您已经安装了一个带有 6 个 NIC eth0 到 eth5 的全新 Linux 机器。eth0 接口已正确配置,所有其他接口当前都已启动但没有 IP 地址。网络人员简单地将四根电缆连接到这个盒子上。两根 LAN 电缆用于将盒子连接到生产网络,两根用于将盒子连接到专用网络。你只知道eth0连接到生产网络。但是您不知道哪个其他 NIC 连接到同一交换机,因为存在不同的服务器代和/或网络人员使用错误的 NIC 进行连接。
由于此设置是您的基础架构的典型设置,因此您希望自动配置绑定接口。现在您的任务是检测哪些 NIC 根本没有连接,哪些 NIC 链接到同一交换机,以便它们可以绑定。您只能访问 Linux 机器,而不能查询交换机。
ethtool $device | grep 'Link detected' | cut -d ':' -f 2
Run Code Online (Sandbox Code Playgroud)
在 HP-UX 中有一个用于此目的的工具,称为linkloop [1]。缺少官方的 Linux 工具(不过有一个旧的 SourceForce 项目)。
我已经想到的可能解决方案是:
使用 tcpdump 侦听所有接口。制作并发送 ICMP(广播)数据包。看到该数据包的接口需要连接到同一交换机。-> 需要可能用于此的简单工具的建议。我想使用普通的 shell 命令或 Python 来编写脚本。
尝试通过一些简单的协议(HTTP?)与外部盒子对话,看看是否有响应。-> 容易出错并且依赖于外部盒子。
您对如何解决此任务有进一步的想法或建议吗?
预先感谢您的所有评论!
我的办公室里有 Verizon DSL,大约一年前我以 29.95 美元的价格安装了 DSL……我最近添加了一条新电话线,实际上将它与 DSL 捆绑在一起更便宜,所以现在我有两条 DSL 线路……我的计划是在我的 1 年合同到期时(9 月)关闭第一个。
有几次 DSL 已经在一条线上消失了,所以我只使用了另一条线,这是一个很好的冗余 - 但它并不经常发生。(我拔掉一根线,插上另一根)
问题是,有没有办法将两条 DSL 线路一起使用,以便
如果我可以通过拥有两个来提高速度,或者至少可以得到一些自动冗余,我认为没有理由同时保持两个......
我在带有两个板载 Broadcom NetXtreme II BCM5708 1000Base-T NIC 的 HP ML 350 G5 上运行 RHEL 6.4、kernel-2.6.32-358.el6.i686。我的目标是将两个接口连接成一个mode=1
故障转移对。
我的问题是,尽管有所有证据表明绑定已建立并被接受,但将电缆从主 NIC 中拔出会导致所有通信停止。
首先,ifcfg-eth0:
DEVICE=eth0
HWADDR=00:22:64:F8:EF:60
TYPE=Ethernet
UUID=99ea681d-831b-42a7-81be-02f71d1f7aa0
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
Run Code Online (Sandbox Code Playgroud)
接下来,ifcfg-eth1:
DEVICE=eth1
HWADDR=00:22:64:F8:EF:62
TYPE=Ethernet
UUID=92d46872-eb4a-4eef-bea5-825e914a5ad6
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
Run Code Online (Sandbox Code Playgroud)
我的债券的配置文件:
DEVICE=bond0
IPADDR=192.168.11.222
GATEWAY=192.168.11.1
NETMASK=255.255.255.0
DNS1=192.168.11.1
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
BONDING_OPTS="mode=1 miimmon=100"
Run Code Online (Sandbox Code Playgroud)
我有一个/etc/modprobe.d/bonding.conf
这样填充的文件:
alias bond0 bonding
Run Code Online (Sandbox Code Playgroud)
绑定完成,我可以通过绑定的IP地址访问服务器的公共服务:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope …
Run Code Online (Sandbox Code Playgroud) 我在 Linux 下看到了一些关于绑定接口的令人困惑的行为,我想把这种情况扔出去,希望有人能帮我解决这个问题。
我有两台服务器:服务器 1 (S1) 有 4 个 1Gbit 以太网连接;服务器 2 (S2) 有 2 个 1Gbit 以太网连接。两台服务器都运行 Ubuntu 12.04,尽管内核是 3.11.0-15(来自 lts-saucy linux-generic 包)。
两台服务器都将各自的所有网络接口捆绑到一个具有以下配置(在 中/etc/network/interfaces
)的单一 bond0 接口中:
bond-mode 802.3ad
bond-miimon 100
bond-lacp-rate fast
bond-slaves eth0 eth1 [eth2 eth3]
Run Code Online (Sandbox Code Playgroud)
服务器之间有几台 HP 交换机,(我认为)它们在相关端口上为 LACP 正确配置。
现在,链接正在工作 - 网络流量愉快地进出两台机器。并且所有相应的接口都在使用,因此聚合并非完全失败。但是,我需要在这两台服务器之间提供尽可能多的带宽,而且我没有获得预期的 ~2Gbit/s。
在我的测试中,我可以观察到每个服务器似乎将每个 TCP 连接(例如 iperf、scp、nfs 等)分配给单个从接口。基本上一切似乎都限制在最大 1 Gb。
通过设置bond-xmit-hash-policy layer3+4
,我可以使用iperf -c S1 -P2
在两个从接口上发送,但在服务器端,接收仍然只发生在一个从接口上,因此总吞吐量上限为 1Gbit/s,即客户端显示 ~40-50MB/s在两个从接口上,服务器在一个从接口上显示 ~100MB/s。不设置bond-xmit-hash-policy
发送也仅限于一个从接口。
我的印象是 LACP 应该允许这种连接捆绑,例如,允许单个 scp 传输使用两个主机之间的所有可用接口。
我对 LACP 的理解有误吗?还是我在某处错过了一些配置选项?任何建议或调查线索将不胜感激!
我已经设置了两个接口作为绑定从属(eth0 和 eth1 绑定为 bond0)。人们如何监控奴隶的状态?
如果某个接口上的链接失败,您如何收到通知?您是否在 /sys/class/net/bond0 或 /proc/net/bonding/bond0 中投票?是否有我可以配置的守护进程来接收通知?
一些上下文:我正在运行 SUSE 11 服务器 SP1,我对任何图形工具都不感兴趣,因为该服务器没有运行 X11。
我已经阅读了一些关于将 nics 与 ifenslave 结合的内容;我无法理解的是是否需要特殊配置才能在两个交换机之间拆分绑定。例如,如果我有几台服务器,每台服务器都有两个网卡和两个独立的交换机,我是否只需配置绑定并将每个网卡的 1 个插入交换机 #1,将另一个插入交换机 #2?或者还有更多吗?
如果绑定是主动备份,单台机器上的网卡故障是否意味着服务器可能会断开连接,因为其余机器正在使用主网卡而它正在使用辅助网卡?或者你也用一根电缆连接交换机?
我们把一个4端口英特尔I340-T4 NIC在一个FreeBSD 9.3服务器1,并且被配置为它的链路聚合在LACP模式以试图从主文件服务器降低所花费的反射镜8的时间数据的16个的TiB到2- 4 个平行克隆。我们期望获得高达 4 Gbit/sec 的聚合带宽,但无论我们尝试过什么,它的速度都不会超过 1 Gbit/sec 的聚合带宽。2
我们正在使用iperf3
在静态 LAN 上对此进行测试。3第一个实例几乎达到了千兆位,正如预期的那样,但是当我们并行启动第二个实例时,两个客户端的速度下降到大约 ½ Gbit/秒。添加第三个客户端会将所有三个客户端的速度降低到 ~⅓ Gbit/sec,依此类推。
我们在设置iperf3
测试时非常小心,以确保来自所有四个测试客户端的流量通过不同端口进入中央交换机:
我们已经验证了每台测试机器都有一条独立的路径返回到机架交换机,并且文件服务器、它的 NIC 和交换机都有带宽来通过拆分lagg0
组并为每个机器分配一个单独的 IP 地址来实现这一点。此 Intel 网卡上的四个接口之一。在该配置中,我们确实实现了约 4 Gbit/sec 的聚合带宽。
当我们开始走这条路时,我们使用的是旧的SMC8024L2 管理型交换机。(PDF 数据表,1.3 MB。)这不是当时最高端的交换机,但它应该能够做到这一点。我们认为交换机可能有问题,因为它的年龄,但升级到功能更强大的HP 2530-24G并没有改变症状。
HP 2530-24G 交换机声称有问题的四个端口确实配置为动态 LACP 中继:
# show trunks
Load Balancing Method: L3-based (default)
Port | Name Type | Group Type
---- + -------------------------------- --------- + ----- …
Run Code Online (Sandbox Code Playgroud) 我一直在使用接口绑定、VLAN 和桥接接口的组合来为 xen domU 提供冗余和不同的逻辑网络层。
这个设置运行良好,但是我有点不确定这些接口上的不同设置如何影响彼此。为了说明,这是我在典型 dom0 上的设置:
/- vlan10 -- br10
eth0 -\ /
> bond0 <--- vlan20 -- br20
eth1 -/ \
\- vlan30 -- br30
Run Code Online (Sandbox Code Playgroud)
考虑到绑定、VLAN 和桥接接口是逻辑接口而不是物理接口,如果物理(eth0、eth1)接口具有不同的 MTU 集,那么在这些接口上设置 MTU 是否有任何影响?
在 Linux 下,您可以将多个网络接口组合成一个“绑定”网络接口以提供故障转移。
但是有几种模式,其中一些不需要交换机支持。我的开关不受限制,因为我可以使用任何模式。
然而,在阅读不同模式时,并不能立即清楚每种模式的优缺点。