HP Switch (ProCruve) QoS Guide
Coming from a Cisco QoS background, I wanted to get a good grasp on HP QoS with the ProCurve switches, but there isn't much information out there (besides the Advanced Traffic Management Guide by HP). This post should should consolidate some of that information, and is based on the the Advanced Traffic Management Guide, various vendor HP interopability guides, and talks with some of the guys over at HP Networking.
HP QoS Basics:
The 4 components of HP ProCurve QoS are:
- Enable QoS
- Decide how many traffic queues you need
- Assign guaranteed minimum bandwidth (GMB)/traffic servicing per queue
- Classify traffic and assign to 802.1p priority
HP(config)# qos type-of-service diff-services
Now that QoS has been enabled, we can look at how HP maps 802.1p priorities to each queue:
HP# show qos queue-config
Egress Queue Configuration
Queue 802.1p Priority
------- ------------
1 1
2 2
3 0
4 3
5 4
6 5
7 6
8 7
As you can see, traffic goes into queue 3 by default (802.1p - 0), background or scavenger traffic would be assigned to 802.1 priority 1 or 2, and more important traffic assigned to priorities 3-7. Now that we know where the traffic is going, let's look at the bandwidth assigned to each queue:
HP# show bandwidth output 1
Outbound Guaranteed Minimum Bandwidth %
Port Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8
------ --- --- --- --- --- --- --- ---
1 2 3 30 10 10 10 15 20
Traffic with priority 1 or 2 gets the least amount of guaranteed bandwidth at 2% and 3%. Default traffic is guaranteed 30%, and we see that the upper queue's (7 and 8) get 15% and 20% respectively. Note that this is just guaranteed minimum bandwidth (GMB), not shaping or policing. If the other queues are not full, traffic can burst above their guaranteed rate. If the default values do not fit your network needs, the values can be changed on a port-by-port basis:
HP(config)# interface 1 bandwidth-min output 1 1 10 1 5 1 1 80
HP# show bandwidth output 1
Outbound Guaranteed Minimum Bandwidth %
Port Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8
------ --- --- --- --- --- --- --- ---
1 1 1 10 1 5 1 1 80
HP also does time-slicing per queue, depending on the assigned GMB. For example, by default, traffic in queue 3 (GMB=30%) will be serviced at 30% of the time window before servicing the next queues packets. With the modified GMB properties directly above, queue 8 would be serviced at 80% of the time before moving to the next queues.
There are also memory buffers assigned to each queue, but those are platform dependent and not publicly available (they are also not configurable).
Finally, we can view the default DSCP-to-802.1p Priority mappings:
HP# show qos dscp-map
DSCP -> 802.p priority mappings
NOTE: 'qos type-of-service diff-services' must be configured before DSCP is honored on inbound traffic.
DSCP CodePoint DSCP Value 802.1p tag DSCP Policy name
------------------------ ----------------- -------------- --------------------------------
000000 0 0 cs0
000001 1 No-override
000010 2 No-override
000011 3 No-override
000100 4 No-override
000101 5 No-override
000110 6 No-override
000111 7 No-override
001000 8 1 cs1
001001 9 No-override
001010 10 1 af11
001011 11 No-override
001100 12 1 af12
001101 13 No-override
001110 14 2 af13
001111 15 No-override
010000 16 2 cs2
010001 17 No-override
010010 18 0 af21
010011 19 No-override
010100 20 0 af22
010101 21 No-override
010110 22 3 af23
010111 23 No-override
011000 24 3 cs3
011001 25 No-override
011010 26 4 af31
011011 27 No-override
011100 28 4 af32
011101 29 No-override
011110 30 5 af33
011111 31 No-override
100000 32 4 cs4
100001 33 No-override
100010 34 6 af41
100011 35 No-override
100100 36 6 af42
100101 37 No-override
100110 38 7 af43
100111 39 No-override
101000 40 5 cs5
101001 41 No-override
101010 42 No-override
101011 43 No-override
101100 44 No-override
101101 45 No-override
101110 46 7 ef
101111 47 No-override
110000 48 6 cs6
110001 49 No-override
110010 50 No-override
110011 51 No-override
110100 52 No-override
110101 53 No-override
110110 54 No-override
110111 55 No-override
111000 56 7 cs7
111001 57 No-override
111010 58 No-override
111011 59 No-override
111100 60 No-override
111101 61 No-override
111110 62 No-override
111111 63 No-override
As you can see, by default, EF traffic is assigned a priority of 7, placed in queue 8, and therefore given a GMB of 20%.
If your traffic comes into the switch with DSCP values, then verify the default DSCP-to-priority mapping meets your application's needs. If not, you can assign the DSCP value to a different priority with the following command:
HP(config)# qos dscp-map af31 priority 5
If your application traffic does not come into the switch with a DSCP value, then you will need to classify the traffic and assign it a priority. This can be done based off MAC address, IP address, VLAN ID, L3 Protocol, and L4 ports. I'm not going to go through how to classify traffic with an access-list in this post, maybe in the future!
Here are a couple other interesting facts/suggestions related to ProVision QoS:
Only Egress queuing can be enabled. There is no ingress queuing. Egress queuing is most important, and even according to Cisco's Medianet QoS 4.0 document, ingress queuing is not a requirement in an QoS implementation.
If you do not need to classify traffic into 8 queues, using the 4 queue model will increase the memory buffer available to each queue. By default, the 4 queue model also has a higher GMB for EF traffic, which means EF traffic is serviced more frequently.
There is not a "strict priority queue" (like Cisco's "Priority Queue Out"). If you purely want a "strict priority queue" and do not care about other traffic, you can change the GMB and assign 100% of the bandwidth to the highest queue.
What if you just need to implement QoS for ShoreTel VoIP and I don't care about all this other stuff, what do you need to do? Just use the switch command qos type-of-service diff-services
and you are set! ShoreTel classifies voice traffic as EF and call control as AF31. If you want to guarantee more bandwidth to ShoreTel, then I would also use the 4 queue model.
Supported Switches: This guide is based off the HP 2920, 3800, 5400, and 8200 series of switches.