【问题标题】:How to add ToS to stream by using setsockopt?如何使用 setsockopt 将 ToS 添加到流中?
【发布时间】:2013-12-15 00:50:42
【问题描述】:

首先,我搜索了很多,这是我最后的选择。

我使用 Windows 7 的 Linphone SIP 开源,并尝试发送 ToS 不同于 0 的音频/视频流。

相关部分代码:

retval = setsockopt(session->rtp.socket, proto, value_type, (SOCKET_OPTION_VALUE)&tos, sizeof(tos));
        if (retval==-1)
            ortp_error("Fail to set DSCP value on rtp socket: %s",getSocketError());
        if (session->rtcp.socket != (ortp_socket_t)-1){
            if (setsockopt(session->rtcp.socket, proto, value_type, (SOCKET_OPTION_VALUE)&tos, sizeof(tos))==-1){
                ortp_error("Fail to set DSCP value on rtcp socket: %s",getSocketError());
            }
        }

我成功了,a.e retval 不是 -1。但是从wireshark我仍然看到Tos = 0。

Someone tells its windows bug, someone - by SPEC (a.e. feature).

是否有人知道解决方法或者我需要通过命令行通过“gpedit.msc”手动创建组策略?

【问题讨论】:

  • WSAGetLastError 值告诉你什么?
  • 查看我的编辑,我没有收到任何错误
  • 不管怎样,TOS 字段基本上是不用的。很少有路由器实际上对其采取任何行动。
  • 也许可以,但在我的情况下会因此丢包 70%

标签: c sockets stream sip


【解决方案1】:

如果您想了解来自 Microsoft 的“最新最好的”QOS 故事,您需要查看qWave。 qWave 的问题在于 API 只完成了一半。 qWave 允许您为 Windows 本身“标记” tcp 流类型(视频、语音等),然后网络管理员可以创建polices 以了解如何处理它。 qWave 也没有默认安装在服务器操作系统上。您不能使用 qWave 在网络数据包中设置特定的 DSCP 位,这些位设置由数字生活网络联盟 (DLNA) 和 WiFi 联盟无线多媒体 (WMM) 规范定义。

如果您需要设置特定的 DSCP 位,您唯一的选择是使用较旧且已弃用的 Traffic Control API。

【讨论】:

    猜你喜欢
    • 2013-01-21
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 2023-03-16
    • 2017-10-08
    相关资源
    最近更新 更多