使用 setsockopt() 将 dscp 值设置为套接字

Setting dscp value to socket using setsockopt()

可以使用 setsockopt() 函数设置套接字选项。 相应的选项出现在下面link:

https://linux.die.net/man/3/setsockopt

这个API是否允许设置套接字的dscp值? 我在上面 link.

中找不到任何这样的选项

大多数套接字选项在其他手册页中定义——通常在第 7 节中。

参见 ip(7) 手册页 https://linux.die.net/man/7/ip——您可以在 setsockopt 中使用 IPPROTO_IP/IP_TOS

此外,该页面引用了 socket(7) https://linux.die.net/man/7/socket (SOL_SOCKET/SO_PRIORITY) 中的 "protocol-independent" 方式。

不确定有什么值得推荐的 - 您不太可能使用非 IP 的底层协议。

我很难找到如何做到这一点,直到我终于偶然发现 this page

对于 IPv4,您需要使用 IPPROTO_IP/IP_TOS,对于 IPv6,您需要使用 IPPROTO_IPV6/IPV6_TCLASS。还需要传入向左移动2位的DSCP值,因为DSCP是6位字段,而IP_TOS和IPV6_TCLASS是8位字段。