IPV6 连接到 IPV4 TOS 选项

IPV6 connection to IPV4 TOS option

你能帮帮我吗?

所以问题是 IPV6 套接字连接到 IPV4 服务器时的 QOS

我无法在包裹上设置运输选项

self.socket = socket(PF_INET6, SOCK_DGRAM, 0); // Create UDP Socket
int on = 1;

setsockopt(self.socket, SOL_SOCKET, SO_NOSIGPIPE, (void *)&on, sizeof(int));

int off = 0;
        setsockopt(self.socket, IPPROTO_IPV6, IPV6_V6ONLY, (void *)(&off), sizeof(off)); // Disable IPV6 Only

int option = 46;
// set QOS option
setsockopt(self.socket, IPPROTO_IP, IP_TOS, (void *)(&option),sizeof(option));  // IPV4
setsockopt(self.socket, IPPROTO_IPV6, IPV6_TCLASS, (void *)(&option),sizeof(option)); //IPV6

但是当我看到 IPV4 的包时 DSCP 是 0

服务器向我发送正确的 DSCP

您的内核似乎没有实现 IPv6 TCLASS 到 IPv4 DSCP 的映射。

V6ONLY=0 选项主要是一种允许服务器在单个套接字上同时接受 IPv4 和 IPv6 连接的 hack。只实现了最低限度的选项,我并不感到惊讶。

您最好的选择可能是联系内核开发人员,看他们是否要实现映射...