Define the steps on how to configure DSCP / QoS on Linux and Mac endpoint running RTME to complement:
Citrix Documentation - Technical overview: Supports Differentiated Services Code Point (DSCP) marking for media packets. For Windows, push out QoS GPO policies to the endpoints. For Linux and Mac OS X, there are RealTime Optimization Pack registry settings that must be applied in the user's profile on the server.
Caution! Refer to the Disclaimer at the end of this article before using Registry Editor.
On the VDA, locate or create a registry key HKEY_CURRENT_USER\Software\Citrix\HDXRTConnector\MediaEngine\Networking
Under this key, create three DWORD values: AudioTOS, VideoTOS, RtcpTOS. Set them to the desired value of the IP TOS byte.
Restart Skype For Business.
Note that registry settings control the full TOS byte, so if you want to use a particular DSCP value, multiply it by 4.
RtcpTOS is applied to RTCP packets for both audio and video, the other values are applied to RTP packets for audio and video, respectively.
The settings are only applied on Linux and OSX endpoints. For Windows endpoints, these settings will be ignored. QoS for Windows endpoints needs to be configured using the Group Policy-based QoS mechanism with policies applied at the endpoint.
______________________________________________________________________________________
Remember, for non-windows devices you need to multiple your desired DSCP value by 4 and set this new value via the registry.
Here is an example:
[HKEY_CURRENT_USER\Software\Citrix\HDXRTConnector\MediaEngine\Networking]
"AudioTOS"=dword:000000b8
"VideoTOS"=dword:000000a4
"RtcpTOS"=dword:00000080
Hex(b8) = Dec(184) -> DSCP = 184 / 4 = 46 is the actual DSCP value you want to see in the network traffic
Hex(a4) = Dec(164) -> DSCP = 164 / 4 = 41 is the actual DSCP value you want to see in the network traffic
Hex(80) = Dec(128) -> DSCP = 128 / 4 = 32 is the actual DSCP value you want to see in the network traffic
The reason for the Multiply by 4 appears to be to requirement to meet the full ToS specification – which has two bits at the end for ”ECN” (see the Wikipedia article for more details) – 00 just means these are not configured, and this then bit-shifts the same DSCP value over first 6 bits, like this:
the ecn, last two bits, is always 00.
By Multiplying by 4 you basically do a bit shift:
46 in binary is 101110
But you have to set 8 bits (in order to comply with the RFC), so basically add 00 at the end (or multiple by 4): 184 in binary is 10111000