One of my readers opened another can of VMware vSwitch worms. He sent me this question:
If a VM were to set a COS value, would the vSwitch reset it to 0 as part of its process of building the dot1q header?
The nasty detail (as you probably know) is that 802.1p CoS value resides in the 802.1q (VLAN) tag.
I wasn't able to find anything within the vSphere documentation or VMware knowledge base that would help me answer this question, so I'm guessing the answer is "it doesn't work." vSwitch seems to expects either untagged VM-to-vSwitch link, in which case the 802.1q tag with VLAN set to zero would throw it off, or a tagged link, in which case the VM has to set the VLAN ID as well. If you have a better answer, please share it in the comments.
On the other hand, vSphere 5.5 can set CoS value based on DSCP field – on the distributed vSwitch. Yet again, we have to pay a hefty tax (Enterprise vSphere license) to get the functionality that has been available in low-end physical switches and Linux-based virtualization solutions for years. No wonder the application developers stopped trying to influence the network behavior.
You can probably guess how much it irritates me when VMware marketing tries to tell us that the network stands in everyone's way instead of giving people the tools they need to get their job done correctly.