VoIP Crib Notes

These are my ‘crib notes’ that I’ve made to serve as a last minute refresher. Please forgive the grammer / spelling as I did not develop these notes with publishing in mind.


*** Theory ****

  • Link – Trunk or Access. Trunk to create voice vlan for highest QoS. Use config-if# switchport voice vlan
    • Dot1p – voice is sent via native voice vlan (0) with high priority
    • Voice VLAN – Port fast is enabled. If you remove voice vlan, portfast is not disabled. Set IP phone ports to trust incoming CoS values (mls qos (global), mls qos trust cos (interface))
      • Can run on port security and 802.1X ports, though select more than 1 MAC in port security.
      • CDP must be running on IP Phone (globally enabled on switch).
        • CDP Spoofing – Hacker can trick switch & think it an IP phone
  • Only supports L2 access ports
  • Total overall traffic should NOT exceed 75% of bandwidth. Voive & Vid should not be more than 33% of total link. (help prevent jitter)
  • QoS– Jitter, Delay and Packet loss. Combat with QoS. If there no QoS, the default is best-effort delivery. Works fine for UDP but not voice traffic.
    • IntServ – better than best effort. It uses RSVP (Resource Reservation Protocol). It creates high priority paths in advance for voice traffic. The sender does not send until a reserved path exists from SRC to DST, aka GRS – Guaranteed Rate Service
      • Cons – Not scalable. Lot of voice traffic would be reserved which is not scalable as it takes bandwidth
  • DiffServ – IntServ reserves an entire path in advance for the entire voice packet flow to use. DiffServ does not reserve bandwidth for the flow. Instead, DiffServ makes it QoS decision on a per hop basis. Each switch will either trust values from sending switch or configure it own values. Inside is usually trusted. (trust boundary).
    • Nutshell – DiffServ allows each hop to make separate decisions how to best forward (PHB – Per-Hop Behaviour). It uses QoS Marking and Classification
    • QoS Marking – Tags data with a value. Marks close to the source (at access layer). Tagging only occurs when switch forwards to another switch.
    • QoS Classification – Queueing and transmitting the data based on value
    • CoS (Code of Service) – Tagged to frame just where VLAN ID is tagged. It use to determine what QoS the frame should receive.
      • ISL – 4 bit user field. Last 3 bits = CoS value. (0-7)
      • Dot1q – User field has 3 802.1ppriority bits = CoS value (0-7)
      • ToS (Type of Service) – TCP header option, used to mark traffic at layer 3 for DiffServ. IP ToS byte has 3 bit (IP Prec), ToS value (4 bit) & 0 (1 bit). DiffSev uses this 8 bit field aswell, but refers to this as Differentiated Services (DS) field. The DS byte has a DSCP (6 bit) and ECN (2 bit). The DCSP has a class selector value of 3 bits and a Drop Prec value of 3 bit (6 bits total)
        • Class Selector Values –
          • Class 7 (111) –Network Control (STP, Routing protocol etc)
          • Class 6 (110) – Internetwork Control (Same as above)
          • Class 5 (101) – Expedited Forwarding (EF – Reserved for voice traffic + time critical data, guaranteed not to be dropped)
          • Class 1 – 4 (001-100) – Assured Forwarding (AF, Manual QoS for time critical traffic like class 5)
          • Class 0 – Best effort forwarding (default)
      • IP Phone – trust phone but don’t trust PC as it may have apps that overwrite QoS.
      • RTP Header – Compress IP/UDP/RTP header from 40 bytes to 2-4 bytes to improve voice traffic config-if#ip rtp header-compression. Use Passive, to compress outgoing packet if remote device is compressing
      • POE (802.3AF)

*** Commands ****

Config# mls qos // enabled QoS

Config-if#mls qos trust cos // trust cos values

Config-if# mls qos trust device cisco-phone// with above, trust if it a cisco IP phone  (check trust state to determine it is a phone).

Config-if# switchport priority extend cos 2 // PC data is trusted but set to 2 (below VoIP)

Config-if# power inline auto // auto POE