UDP数据包的最大理论网络指标是多少?

时间:2019-06-28 21:20:01

标签: performance networking network-programming performance-testing benchmarking

目标是确定UDP协议性能的指标,具体来说:

  • 最小可能的理论 RTT(往返时间,ping)
  • 1字节大小的UDP数据包的最大可能理论 PPS
  • 64字节大小的UDP数据包的最大可能理论 PPS
  • 最大和最小可能的理论抖动

这可以并且应该在不考虑任何缓慢的软件引起的问题(例如99%的并行进程使用CPU,编写效率低下的测试程序)或硬件(例如繁忙的通道,超长的线路等)的情况下完成

在“真实系统”上应该如何估算这些最佳参数?


PS。我将提供所谓的“真实系统”的原型。

考虑2台PC,PC1和PC2。它们都配备:

  • 现代快速处理器(读到“一些平均典型的socket-1151 i7 CPU”),因此处理速度和单核不是问题。
  • 一些典型的DDR4 @ 2400mhz ..
  • 平均NIC(读取典型的Realteks / Intels / Atheroses,通常嵌入在主板中),因此没有非常特殊的复杂电路。 已建立GBIT连接的几米以太网8对电缆用于连接其NIC。因此,没有互联网,它们之间没有流量,除了您产生的流量之外。
  • 没有监视器
  • 没有其他任何I / O设备
  • 每台PC单个USB闪存,可将其initramfs引导到RAM,并在测试程序完成后用于装载和存储程序输出
  • 最轻巧的软件堆栈-可能有一个繁忙的盒子,它运行在最新的Linux内核之上,所有库都是最新的。因此,实际上没有软件(读取为“繁忙软件”)在其上运行。

然后您在PC1上运行服务器测试程序,并在PC2上运行客户端。程序运行后,将安装USB记忆棒并将结果转储到文件中,然后关闭系统电源。因此,我描述了一些理想的情况。我无法想象这样的实验有更多的“无菌”条件。

1 个答案:

答案 0 :(得分:2)

对于PPS计算,请计算帧的总大小并将其划分为介质的吞吐量。

对于IPv4

以太网前同步码和帧的开始以及帧间间隙7 +1 + 12 = 20字节(不计入64字节的最小帧大小)

以太网II标头和FCS(CRC)14 + 4 = 18字节。 IP标头20个字节。 UDP标头为8个字节。

总开销为46个字节(如果有效载荷小于,则填充为至少64个字节)+ 20个字节“在线上更多”

有效载荷(数据)

1字节有效负载-根据最小64字节+线路开销变为18。线上总共84个字节。

64字节-48 + 64 = 112 + 20的线路开销= 132字节。

如果介质的吞吐量为每秒125000000字节(1 Gb / s)。

1-18个字节的有效负载= 1.25e8 / 84 =最大理论值1,488,095 PPS。

64字节有效负载= 1.25e8 / 132 =最大理论946969 PPS。

这些计算假定流是恒定的:网络发送缓冲区不断填充。考虑到您对现代硬件的描述,这不是问题。如果这是40/100 Gig以太网CPU,那么总线速度和内存都是因素。

Ping RTT时间:

要计算通过介质传输数据所需的时间,请用传输速度除以介质速度。

这比较困难,因为ping数据有效载荷可以是任何大小的64-MTU(〜1500字节)。 ping通常使用最小帧大小(64字节总帧大小+ 20字节线路开销* 2 = 168字节)网络时间(0.001344 ms)+处理响应和回复时间的总和估计在0.35到0.9 ms之间。该值取决于太多的内部CPU和OS因素,L1-3缓存,分支预测,所需的环形过渡(0到3和3到0),实现的TCP / IP堆栈,CRC计算,已处理的中断,网卡驱动程序,DMA ,数据验证(大多数实现都跳过)...

根据轶事证据,最大时间应<1.25毫秒。(我的最佳评估是在较旧的硬件上为0.6毫秒(我期望所描述的硬件上的平均平均值为0.7毫秒或更短)。

抖动: network 抖动的唯一内在理论原因是传输的异步特性,该特性由前导码解决。最大<(8字节)0.000512毫秒如果此时未建立同步,则整个帧将丢失。这是需要考虑的可能性。由于UDP是尽力而为的传递方式。

如RTT的描述所证明:在执行相同代码以及操作系统调度和驱动程序时,CPU时间可能存在差异,因此无法进行有效评估。

如果我必须估计的话,我将设计最大1 ms的抖动,并规定丢失的数据包。设计不容错的系统是不明智的。即使对于所描述的“完美方案”,也会发生故障 (附近的雷击会在电线上感应出虚假电压)。 UDP没有固有的方法来容忍丢失的数据包。