我们有一个基于 iPhone 的基于 IP 的音频应用程序,我们目前正在尝试设置 TOS 级别,并查看这如何反映在 802.11 Qos 控制字段中。
我们这样做只是简单的 setsockopt 调用:
int tos = 0xB8; // VOICE
status = setsockopt(socketFD, IPPROTO_IP, IP_TOS, &tos, sizeof(tos));
if (status == -1)
{
if (errPtr)
*errPtr = [self errnoErrorWithReason:@"Error setting TOS (setsockopt)"];
}
理论上,这会将 WLAN 链路上的所有数据包标记为 VOICE,但我们最终得到的 TID 为 5,表示 VIDEO(至少根据 Wireshark 的说法)。
这是从 iPhone 到无线 AP 的流量,因此我们无法进行 WAP 内映射。
我们已经能够将 TOS 设置为 0xC8,这确实会导致 VOICE 分类,但是当 C8 的 TOS 值最终出现在 IP 标头中时,网络的其余部分似乎会感到困惑。
任何人都知道我们应该使用什么值来获得超过 802.11 的 VOICE,在来自 iPhone 的数据包上?