Quality of Service headers are added to network packet headers by many video applications and appliances
to allow time-critical video and voice data to receive priority treatment by network switches and routers.
Whether they actually do receive such priority is another matter.
To make matters more complicated, in 1998 the Quality of Service field in the Internet Protocol header was
redefined to be the "Differentiated Services Field" instead of the older "Type of Service" field, i.e. redefining
the same header bits to have a different meaning. So, older equipment and software refers to TOS, while
newer equipment refers to DiffServ, or offers a choice of both. Additionally, Ethernet frames may
have a Class of Service field set in VLAN tagged frames.
Example: LifeSize Express
This offers default DiffServ and IntServ settings
Example: Polycom Viewstation FX
This offers a choice of DiffServ and IP Precedence. I'm not sure
if there are any defaults.
Far End camera control
Avaya (was Nortel) define mappings between DSCP codepoints and IEEE 802.1p levels, as follows:
Lifesize, Avaya (9,10) suggest the use of DSCP
codepoint 46 (0b101110), expedited forwarding PHB for VoIP. I have used this for the audio channel, and
either 26 or 34 for video. One reference suggests 26 for streaming video, and 34 for interactive.
Juniper (16) use codepoint 46 for voice and 34 for video
in the "EZQoS" template.
Once DSCP fields have been set in a video appliance, network packets sent from it should be tagged.
This can be seen in monitor tools such as tcpdump (with -v, as "tos"), or Wireshark
(as Differentiated Services under Internet Protocol). However, these headers are often stripped off
by network switches, and almost certainly on the Internet. On a Avaya (Nortel) switch, ports may be marked as
"trusted" or "untrusted". If a port is untrusted, the headers are stripped off. For a packet to traverse
the LAN with DSCP intact, the ports on each switch and uplink along the path must be "trusted".
In Avaya CLI, the following exmple sets ports to trusted, with a new class called "video":
qos if-group name video class trusted
qos if-assign port 4/2,4/6,4/10,5/16,5/20 name video
In the absence of a suitable video appliance, the Linux tool "netcat" may be used to send packets with a
particular TOS value. E.g. nc -u -T 0x8 192.168.3.4 31224
may be used to send tagged UDP packets
to a local node port 31224. The command nc -l -u 31224 may be used to listen, or the packets merely
observed with a monitor tool.
In principle, it is the responsibility of a software client to set DSCP headers on audio/video packets
using e.g. setsockopt(). However, many clients do not, and of those that do, some are still using
TOS not DSCP (e.g. Linux 2.6 ip.h defines IPTOS_TOS). It may be possible to add or rewrite DSCP
headers in the operating system. E.g. the Linux command iptables -t mangle -A OUTPUT -p udp --sport 46014:46015 -j DSCP --set-dscp 0x2e
tags outgoing UDP packets on ports 46014,46015 with codepoint 46, for a particular application
(EVO) which sends audio/video data on those ports.
Newer Avaya/Nortel switches implement auto-discovery for compatible VoIP phones. With this feature enabled,
DSCP and PoE may automatically be set when a phone is connected.