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

通过网卡、网卡性能测量实现的数据包传输不一致

  •  0
  • Boris  · 技术社区  · 16 年前

    我们的一个客户在使用流式应用程序(win32)时遇到问题。似乎应用程序以一定的间隔(比如20毫秒)发送的UDP(RTP)数据包实际上是以非常可变的增量(比如15毫秒-25毫秒-10毫秒-30毫秒)发送的。这是唯一一个遇到问题的客户,因此网卡或其他与操作系统网络相关的基础设施是我们的首要嫌疑。

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

    如何测量实际调用“send”函数与数据包实际发送到网络之间的时间?有什么工具可以用吗?

    3 回复  |  直到 15 年前
        1
  •  2
  •   Brian Agnew    16 年前

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

    对于基本的UDP,没有QoS(服务质量)的概念(甚至到了您可能丢失数据包、有重复数据包等的程度)。您的网卡必须将数据包排队以写入网络,因此您不能保证传送,因为它将来自不同应用程序的数据包排队。

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

    编辑:您已经指出了本地的NIC,所以上面提到了。路由器不适用于这种情况。

    简而言之,没有任何理由期望上述情况是可以接受的。

        2
  •  0
  •   Mick    15 年前

    如果你说你是在计算机的网卡上直接测量这个数据包(也就是说可以忽略所有的网络影响),那么一个可能的原因就是计算机本身的负载。

    如果计算机上运行着许多应用程序,特别是交互应用程序和具有强烈用户交互偏好的应用程序(这往往会从大多数调度程序中获得优先级),那么您可能会发现创建消息的应用程序很难与所需时间竞争。

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

        3
  •  0
  •   Boris    15 年前

    伙计们,问题其实是Windows的定时功能,事实上sleep()的分辨率可能超过15毫秒。除非你用程序将其设置为1毫秒。所以与nic没有任何关系。

    推荐文章