通过NIC传送数据包不一致,NIC性能测量

时间:2010-01-21 18:02:09

标签: winapi network-programming udp qos

我们的一位客户遇到流媒体应用程序问题(win32)。看起来应该由应用程序发送的UDP(RTP)数据包具有一些恒定的间隔(比如说20毫秒)实际上是以极大可变的增量(例如15ms-25ms-10ms-30ms)发送的。这是遇到此问题的唯一客户,因此网卡或其他与OS网络相关的基础设施是我们的原始嫌疑人。

问题是什么样的网络配置可能会引入这样的问题(AV?,QOS?)

我如何衡量实际调用“发送”功能与数据包实际传送到网络之间的时间?有没有可用的工具。

3 个答案:

答案 0 :(得分:2)

我怀疑任何网络问题都可能导致此问题。

基本UDP没有QoS(服务质量)的概念(甚至可能丢失数据包,有重复数据等)。您的网卡必须排队数据包以写入网络,因此您无法保证交付,因为它正在排队来自不同应用程序的数据包。

路由器也可以优先考虑,这将影响这些数据包的规律性。

编辑:你已经指出了本地网卡,所以上面再说。路由器不适用于这种情况。

简而言之,没有理由期望上述内容不是可接受的。

答案 1 :(得分:0)

如果您说您直接在实际生成数据包的计算机的NIC上进行测量(即可以降低所有网络影响),那么可能的原因是计算机本身的负载。

如果计算机上运行的应用程序很多,特别是交互式应用程序和具有强大用户交互偏差的应用程序(通常会从大多数调度程序获得优先权),那么您可能会发现创建消息的应用程序只是难以找到它争夺所需的时间。

即使您的所有客户计算机都加载了相同的软件,它们实际运行的应用程序以及它们对它们的作用也可能会产生影响。

答案 2 :(得分:0)

伙计问题实际上是Windows的计时功能,事实证明Sleep()的分辨率可能超过15毫秒。除非你在程序上将其设置为1毫秒。所以没有关系到NIC的所有内容。