AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 626368
Accepted
Arseni Mourzenko
Arseni Mourzenko
Asked: 2014-08-30 14:07:02 +0800 CST2014-08-30 14:07:02 +0800 CST 2014-08-30 14:07:02 +0800 CST

为什么在两个 1Gbps 适配器上使用绑定时 iperf 仍报告 1Gbps 性能?

  • 772

据我了解,绑定带来的好处之一是能够提高 LAN 中两台机器之间的网络速度。

绑定 [...] 意味着将多个网络接口 (NIC) 组合到单个链路,提供高可用性、负载平衡、最大吞吐量或这些的组合。

来源:Ubuntu 文档,强调我的。

我在两台服务器上配置了绑定;两者都有两个 1Gbps NIC 适配器。在使用iperf测试这些服务器之间的速度时,报告指出:

  • 使用balance-rr绑定模式时为 930 至 945 Mbits/sec。
  • 520 到 530 Mbits/sec 从机器 A 到 B 使用时802.3ad,
  • 930 到 945 Mbits/sec 从机器 B 到 A 使用802.3ad.

一个有趣的事情是,当使用802.3ad,ifconfig表示实际上所有RX都在eth0(2.5 GB 与几 KB/MB)并且都TX在eth1机器 A 上,而在机器 B 上则相反。

当要求iperf使用多个连接(iperf -c 192.168.1.2 -P 10)时,得到的总和与使用单个连接时显示的结果非常接近。

两台机器连接到一个 Netgear GS728TS,它正确配置了 LACP(我希望),两个 LAG 分别覆盖两个端口。启用 IEEE 802.3x 模式。

iperf适合这种测试吗?如果是的话,我有什么遗漏吗?

ubuntu
  • 3 3 个回答
  • 14557 Views

3 个回答

  • Voted
  1. Chris S
    2014-10-01T12:34:55+08:002014-10-01T12:34:55+08:00

    绑定接口不会向单个网络流授予额外带宽。因此,如果您只运行一个 iperf 副本,那么您一次只能使用一个网络接口。如果您有两个 NIC 处于滞后状态,那么您需要在计算机上运行至少两个完全独立的 iperf 副本才能查看任何同时使用情况。这也适用于实际负载 - 例如,Samba 客户端仍然只能看到 1Gb 吞吐量,但如果您的 lagg 有两个 NIC,则两个客户端每个都可以看到 1Gb。这一切都假设您将延迟配置为使用两个 NIC(802.3ad 选项将执行此操作)。

    • 5
  2. Best Answer
    Arseni Mourzenko
    2015-04-22T13:49:23+08:002015-04-22T13:49:23+08:00

    联系 Netgear 支持后,似乎:

    如果您使用 2 个站点(1 个客户端/1 个服务器),它实际上只会使用一个链接(因此为 1Gbps/940mbps),使用的链接由 LACP 哈希算法决定。

    要超过 1Gbps 限制,您需要使用 1 个以上的客户端进行测试。

    资料来源:Netgear 支持工单响应

    相同的工单响应链接到 Netgear 的公共论坛帖子,我们可以在其中看到:

    当 LACP 散列算法将多个流量流放在不同的路径上时,您只能获得 2Gbps 的聚合,但并非总是如此。对于少数客户端(在您的情况下为 2 个),它们都可能被哈希到同一个链接的可能性很大。

    对于那些不想阅读整个论坛讨论的人,以下是要点:

    • 应该至少有两个客户端连接到服务器才能从 LACP 中受益。单个客户端将仅使用一个链接,这会将其速度限制为 1 Gbps。

    • 两个客户端应该使用不同的链接才能从 LACP 中受益。

    • 服务器上只有两个网络适配器,有 50% 的机会从两个客户端获得相同的链接,这将导致总速度上限为 1 Gbps。三个网络适配器将几率降低到 33%,四个到 25%。

    总而言之,Netgear GS728TS 无法在两台机器之间获得 1.4 到 1.8 Gbps 的速度。

    • 4
  3. Ingo
    2020-01-08T02:05:11+08:002020-01-08T02:05:11+08:00

    此问答对我了解与 LACP 的绑定非常有帮助,但没有具体示例如何验证约 1.8Gb/s 的吞吐量。对我来说,验证这一点很重要,所以我将分享我是如何测试它的。

    正如@ChrisS在他的回答中指出的那样,运行完全独立的 iperf 副本很重要。为了实现这一点,我使用两个客户端连接到 lacp-server。在 lacp-server 上,我使用screen在两个屏幕窗口/会话中运行 iperf 的独立实例。我还通过为每个连接使用不同的端口来确保拥有独立的数据流。我的将 LACP 绑定到服务器的交换机是 TP-LINK T1600G-52TS。所有设备都使用Debian 10 (Buster)。两个测试客户端连接到交换机的一个端口。首先,我在 lacp-server 的服务器模式下在屏幕内启动 iperf 两次,然后同时在客户端上执行(使用 ssh):

    iperf --time 30 --port 5001 --client lacp-server   # first test client
    iperf --time 30 --port 5002 --client lacp-server   # second test client
    

    以下是第一个连接在 lacp-server 上的结果:

    lacp-server ~$ iperf -s -p 5001
    ------------------------------------------------------------
    Server listening on TCP port 5001
    TCP window size: 85.3 KByte (default)
    ------------------------------------------------------------
    [  4] local 192.168.10.11 port 5001 connected with 192.168.10.69 port 44120
    [ ID] Interval       Transfer     Bandwidth
    [  4]  0.0-30.0 sec  2.99 GBytes   855 Mbits/sec
    

    对于第二个连接:

    lacp-server ~$ iperf -s -p 5002
    ------------------------------------------------------------
    Server listening on TCP port 5002
    TCP window size: 85.3 KByte (default)
    ------------------------------------------------------------
    [  4] local 192.168.10.11 port 5002 connected with 192.168.10.80 port 48930
    [ ID] Interval       Transfer     Bandwidth
    [  4]  0.0-30.0 sec  3.17 GBytes   906 Mbits/sec
    

    这就是 855Mb/s + 906Mb/s = 1.761Mb/s 的带宽。

    @ArseniMourzenko在他的回答中指出:

    服务器上只有两个网络适配器,有 50% 的机会从两个客户端获得相同的链接,这将导致总速度上限为 1 Gbps。三个网络适配器将几率降低到 33%,四个到 25%。

    我已经重复了 10 多次测试来验证这一点,但总是得到大约 1.8Gb/s 的带宽,所以我无法确认这一点。

    接口的统计显示其使用是均衡的:

    lacp-server ~$ ip -statistics link
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        RX: bytes  packets  errors  dropped overrun mcast
        3088       30       0       0       0       0
        TX: bytes  packets  errors  dropped carrier collsns
        3088       30       0       0       0       0
    2: eno1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond1 state UP mode DEFAULT group default qlen 1000
        link/ether 5e:fb:29:44:e9:cd brd ff:ff:ff:ff:ff:ff
        RX: bytes  packets  errors  dropped overrun mcast
        39231276928 25845127 0       0       0       916
        TX: bytes  packets  errors  dropped carrier collsns
        235146272  3359187  0       0       0       0
    3: eno2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond1 state UP mode DEFAULT group default qlen 1000
        link/ether 5e:fb:29:44:e9:cd brd ff:ff:ff:ff:ff:ff
        RX: bytes  packets  errors  dropped overrun mcast
        36959564721 24351697 0       0       0       60
        TX: bytes  packets  errors  dropped carrier collsns
        267208437  3816988  0       0       0       0
    4: bond1: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
        link/ether 5e:fb:29:44:e9:cd brd ff:ff:ff:ff:ff:ff
        RX: bytes  packets  errors  dropped overrun mcast
        69334437898 50196824 0       4253    0       976
        TX: bytes  packets  errors  dropped carrier collsns
        502354709  7176175  0       0       0       0
    

    使用三个测试客户端,我得到以下结果:

    • 522 Mb/s + 867 Mb/s + 486 Mb/s = 1.875 Mb/s
    • 541 Mb/s + 863 Mb/s + 571 Mb/s = 1.975 Mb/s
    • 534 Mb/s + 858 Mb/s + 447 Mb/s = 1.839 Mb/s
    • 443 Mb/s + 807 Mb/s + 606 Mb/s = 1.856 Mb/s
    • 483 Mb/s + 805 Mb/s + 512 Mb/s = 1.800 Mb/s


    参考:
    链接聚合和 LACP 基础
    LACP 绑定和 Linux 配置
    Linux 以太网绑定驱动程序 HOWTO
    RedHat - 使用通道绑定

    • 1

相关问题

  • 无法通过 Ubuntu VPN 访问外部网络

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

  • VirtualBox 上 Ubuntu 的访客优化技巧 [关闭]

  • 外部硬盘上的 virtualbox 虚拟硬盘驱动器(Vista 主机上的 ubuntu 客户机)

  • 如何在 Ubuntu 上挂载 LVM 分区?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve