网络子系统45_ip协议tos处理

//ip报头tos字段,一个字节
//	二进制位:[0 1 2] [3] [4] [5] [6] [7]
//		1.[0 1 2] 表示优先级:
//			000 路由
//			001 优先级
//			010 立即
//			011 火速
//			100	火速覆盖
//			101 紧急
//			110 互联网控制
//			111 网络控制
//		2.[3] 表示时延
//			0 普通
//			1 最小
//		3.[4] 吞吐量
//			0 普通
//			1 最大
//		4.[5] 可靠性
//			0 普通
//			1.最大
//		5.[6] 开销
//			0 普通
//			1 最小
//		6.[7] 保留,恒为0

//由ip报头的tos字段,计算skb的优先级,用于在规则队列中选择优先级队列
1.1 static inline char rt_tos2priority(u8 tos)
{
	return ip_tos2prio[IPTOS_TOS(tos)>>1];
}

//获取tos的[3,4,5,6]比特位,右移一位,转换为0~15范围的数
1.2 
#define IPTOS_TOS_MASK		0x1E
#define IPTOS_TOS(tos)		((tos)&IPTOS_TOS_MASK)

//
1.3 __u8 ip_tos2prio[16] = {
	TC_PRIO_BESTEFFORT,
	ECN_OR_COST(FILLER),
	TC_PRIO_BESTEFFORT,
	ECN_OR_COST(BESTEFFORT),
	TC_PRIO_BULK,
	ECN_OR_COST(BULK),
	TC_PRIO_BULK,
	ECN_OR_COST(BULK),
	TC_PRIO_INTERACTIVE,
	ECN_OR_COST(INTERACTIVE),
	TC_PRIO_INTERACTIVE,
	ECN_OR_COST(INTERACTIVE),
	TC_PRIO_INTERACTIVE_BULK,
	ECN_OR_COST(INTERACTIVE_BULK),
	TC_PRIO_INTERACTIVE_BULK,
	ECN_OR_COST(INTERACTIVE_BULK)
};


你可能感兴趣的:(Linux网络子系统)