1. QoS在lay-3的实现
QoS在layer-3的实现主要体现在type of service字段。ToS字段的定义经历了历史的变迁。
RFC 791定义了如下结构,这个结构从未得到广泛应用,已被废弃。
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
Precedence | Type of Service |
现在得到广泛应用的ToS字段结构由RFC 2474和RFC 3168定义,见如下表格。
DSCP: Differentiated Services Code Point
ECN: Explicit Congestion Notification
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
DSCP field | ECN field |
DSCP <=> IP Precedence转换表。由于Precedence从来没有广泛应用,所以这个转换表大概也就是个理论性的作用,看看就行。
DSCP Name | DS Field Value (Dec) | IP Precedence (Description) |
---|---|---|
CS0 | 0 | 0 : Best Effort |
CS1,AF11-13 | 8,10,12,14 | 1 :Priority |
CS2,AF21-23 | 16,18,20,22 | 2 :Immediate |
CS3,AF31-33 | 24,26,28,30 | 3 :Flash - mainly used for voice signaling |
CS4,AF41-43 | 32,34,36,38 | 4 :Flash Override |
CS5,EF | 40,46 | 5 :Critical - mainly used for voice RTP |
CS6 | 48 | 6 :Internet |
CS7 | 56 | 7 :Network |
2. QoS在lay-2中的实现
WiFi QoS data都有QoS Control字段,其中的UP(User Priority)就代表layer-2 802.1p tag。
UP字段有3个bit,取值范围0到7。
3. Windows上WMM access classes和UP/DSCP的对应关系
802.1p | DSCP | WMM_AC |
1 | 8 | BG |
2 | 16 | BG |
0 | 0 | BE |
3 | 24 | BE |
4 | 32 | VI |
5 | 40 | VI |
6 | 48 | VO |
7 | 56 | VO |
QoS2 API提供了如下enum来指定traffic class:
typedef enum _QOS_TRAFFIC_TYPE {
QOSTrafficTypeBestEFfort,
QOSTrafficTypeBackground,
QOSTrafficTypeExcellentEffort,
QOSTrafficTypeAudioVideo,
QOSTrafficTypeVoice,
QOSTrafficTypeControl
} QOS_TRAFFIC_TYPE, *PQOS_TRAFFIC_TYPE;
红色的4个值代表4种WMM access classes,可以通过简单的设置这4个值让Windows输出某些默认的802.1p UP和DSCP。
但是如果想精确指定DSCP值和对应的UP,则需要调用其他的qWAVE API。