Linux 的skb->priority和IP包头中的TOS值并没有直接的对应关系。
Linux内核里是用rt_tos2priority把TOS转换为skb->priority的。
sk->sk_priority = rt_tos2priority(val)
...
static inline char rt_tos2priority(u8 tos)
{
return ip_tos2prio[IPTOS_TOS(tos)>>1];
}
Tips:
1)测试时可以用ping的-Q选项。
ping -Q TOS IP_ADDR
2)写APP的时候,可以用SO_PRIORITY来指定skb->priority