gpt4 book ai didi

Linux 上的 C++ : Setting up socket & packets for minimum RTP stream latency

转载 作者:太空狗 更新时间:2023-10-29 12:33:44 31 4
gpt4 key购买 nike

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

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

但是,我担心我没有做任何事情来将数据包标记为 VoIP 以在网络上的每个节点(使用 802.11e 标准)中强制执行最佳可能的 QoS,并且这可能会导致更少 -比最佳延迟。让我最怀疑的是,根据我的 Wireshark 日志,我的数据包被标记为视频数据包而不是音频/VoIP:

QoS portion of packet under Wireshark

所以,这是我的问题:

  1. DSCP 与 802.11e 有什么关系?我在想的是,它们在网络的不同层中做不同的事情,但我不是那么了解,可能不了解这一点。

  2. 上图是否显示了任何关于数据包和/或我用于在 DSCP 或 802.11e 前端发送 RTP 流的 UDP 套接字的非最佳设置?

    <
  3. 如何使用 C++ 上的标准套接字为 VoIP 优先级标记数据包(如果可能)?

  4. 关于路由器上的 802.11e,是否有任何我应该注意的特殊配置?我应该寻找支持 802.11e 的路由器还是已成定局?我假设 802.11e 可能与特定数据包无关,而与路由器配置有关。

再一次,我有点迷路了,我想我可能需要有人敲敲我的脑袋,告诉我这一切是如何运作的。我在网上能找到的所有内容似乎都与 CISCO 相关,我不确定它对我的目的有多大用处,如此处所述。

最佳答案

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

其他注意事项:所有这些实际上只对您的传输机器和本地网络有影响。如果数据包离开您的网络,很可能所有 QoS 努力都会被忽略(例如,被您的 ISP)。因此,除非您的本地网络出现拥塞,或者导出路由器出现拥塞,或者机器本身出现 I/O 问题,否则您的努力都是徒劳的。

关于Linux 上的 C++ : Setting up socket & packets for minimum RTP stream latency,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19117993/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com