代码之家  ›  专栏  ›  技术社区  ›  PiNoYBoY82

无法实现1Gbit UDP吞吐量

  •  9
  • PiNoYBoY82  · 技术社区  · 17 年前

    对于有效载荷小于1470的UDP数据包,是否有可能实现1Gbit的吞吐量?由于数据包大小较小,在实现这种吞吐量时应该存在一些瓶颈(I/O、操作系统、网络等)。我想驱动程序和硬件可能必须调整到小数据包/高吞吐量。有人尝试过用小UDP数据包成功实现1Gbit吞吐量吗?

    5 回复  |  直到 17 年前
        1
  •  7
  •   Community Mohan Dere    9 年前

    我之前在相对标准的pc硬件上对千兆链路的吞吐量进行了一些实验,尽管只是进行传输(通过 tcpreplay )而不是udp。

    我发现的最大瓶颈是将数据包传输到NIC本身。通过使用高速总线连接到NIC(例如4x pci express NIC),可以显著改善这一点。但即使这样,也有一个非常明确的包/秒限制。显然,增加数据包大小将允许您在减少处理器负载的同时利用更多的带宽。

    与评论的思路相同 Steve Moyer ,任何网络的利用率都有一个理论上的限制。在我的实验中(在一个完全安静的网络上进行),我看到的最大速度约为900Mb/s(仅在我的内存顶部)。这是在cpu负载为30%到40%的情况下。

    更有可能的是,限制将由您的系统硬件(即PC)而不是您的网络基础设施施加——任何称职的网络交换机都应该能够用小数据包维持全速网络访问——当然,速度比大多数PC所能应付的要高得多。

        2
  •  3
  •   Steve Moyer    17 年前

    您正在使用哪种类型的网络连接?如果您使用的是1000BaseTx/Fx链路,请不要期望最大大小的数据包吞吐量超过80%。随着数据包大小的减小,间距、同步、以太网报头、IP报头和UDP报头的开销相对于有效载荷会增加,因此会进一步降低您的最大吞吐量。

        3
  •  3
  •   sk.    17 年前

    查看您正在使用的交换机的文档。交换机在每秒可传输的数据包数量(pps)方面受到限制,如果您发送的数据包明显小于最大有效载荷大小,则通常无法维持1GBps。

    另一件要检查的事情是你的网卡是否正在进行中断合并,以及它可以支持的最大发送/接收描述符数量是多少。在这种吞吐量水平下,即使使用现代CPU和内存系统,中断服务时间和上下文切换时间也可能成为主机系统的一大开销。

    此外,如果您使用千兆铜缆,该卡将发出的最小以太网帧为512字节,因此较小的消息将被填充到该大小。这是因为对载波感应/碰撞检测的要求。

        4
  •  3
  •   Steve-o    16 年前

    我发现硬件的每秒数据包限制明显低于网络的理论容量。对于Broadcomm BCM5704S,我的测试速度为69000 pps,而千兆比特为1488100pps。

    我在这里报告了更多的数字, http://code.google.com/p/openpgm/

        5
  •  0
  •   Lee H    17 年前

    这里有一个关于调整网络设置(在Linux中)以实现真正的千兆速度的好教程: http://datatag.web.cern.ch/datatag/howto/tcp.html

    推荐文章