我有一个Linux设备,该设备应该通过RTP / UDP从各种实时音频源流传输到多个客户端,并且希望实现尽可能低的延迟。它的工作方式是从各种ALSA接口(interface)检索帧,并使用通用C套接字将它们作为RTP流转发。

我已经使用Wireshark进行了一些测试,并且可以确定在IP_TOS字段中正确设置了套接字的DSCP字段以进行快速转发,据我所知,这可以确保最大程度地减少该方面的延迟。

但是,我担心我没有做任何事情来将数据包标记为VoIP,以在网络上的每个节点(使用802.11e标准)上实现最佳的QoS,这可能会导致不尽人意的情况。潜伏。使我对此最可疑的是,根据我的Wireshark日志,我的数据包被标记为视频数据包,而不是音频/ VoIP:

所以,这是我的问题:

  • DSCP与802.11e有何关系?我在想的是,它们在网络的不同层中执行不同的操作,但是我并不了解,并且对此可能会不满意。
  • 上面的图像是否揭示了有关我用于在DSCP或802.11e前端发送RTP流的数据包和/或UDP套接字的任何非最佳设置的任何信息?
  • 如何使用C++上的标准套接字为VoIP优先级标记数据包(如果可能)?
  • 关于路由器上的802.11e,我应该注意一些特殊的配置吗?我应该寻找支持802.11e的路由器还是已成定局?我假设802.11e与特定数据包无关,而与路由器配置有关。

  • 再说一次,我有点迷茫,我想我可能需要有人重击我,并告诉我所有这些工作原理。我在网上可以找到的所有内容似乎都与CISCO相关,并且我不确定如我在此说明的用途有多少用途。

    最佳答案

  • 我的理解是QoS(ToS / DS)八位位组是IP header 的第二个八位位组。 802.11e专用于无线网络,并且位于比IP低的一层。
  • 对于DiffServ中的快速转发,我认为八位字节应为0xb8。我不确定这是什么图片... 2个八位位组?
  • 我对Windows更加熟悉,并且操作系统对QoS标记设置了限制。对于那些发现这篇文章的人,请查看qwave和QOSCreateHandle。在Linux上,我猜您可以使用具有适当权限的原始套接字。
  • 路由器可以通过几种不同的方式来转换IP QoS八位位组。 DSCP应该是通用的。再次注意,这与802.11e不同。

  • 其他说明:所有这些实际上仅对您的传输机和局域网有效。如果数据包离开您的网络,则很可能所有QoS工作都会被忽略(例如,您的ISP)。因此,除非您在本地网络上出现拥塞,或者在导出路由器上出现拥塞,或者计算机本身没有I / O问题,否则您的努力是徒劳的。

    08-15 20:13