Some personal notes about my on-going QoS studies, as already explained on earlier posts this notes will be updated all the time as I study deeper on the subject.
1) Integrated Services (IntServ)
2) Differentiated Services (DiffServ)
IntServ is used on connection-oriented services, so that it requires states of all nodes along the path (end-to-end) and reserves required resources for a particular service, for example RSVP in MPLS.
DiffServ is used as connection-less type of QoS, because we can manipulate the behaviour (PHB) of a specific flow (traffic class) per hop. The original ToS byte in IP Header is called the DSCP field, and the values resulting from it are called DSCP values which we can use for Classification/Marking, and Policing. Only 6 bits of the ToS field are used for DSCP value generation, the remaining 2 bits are currently un-used.
Per Hop Behaviour (PHB) groups:
– Class Selector PHB (CS-PHB) – has 7 classes that are backward compatible with IP Precedence (uses 3 leftmost bits for compatibility). See figure below about the different CS values and the mapping to IPP values.
– Assured Forwarding PHB (AF-PHB) – has 4 classes with 3 level of Drop Precedences on each class. See below figure about the different AF values.
– Expedited Forwarding PHB (EF-PHB) – Mainly used for traffic that requires low-latency, has only one value, DSCP 46. I did not upload any diagram about EF PHB since it only uses one unique value, 46.
Generaly the interface queues have a so called “tail” and “head” which represent the beggining and the end of a Queue (queue depth can be manually configured).
1) Input Queue – We can use Shaping and Policing.
2) Output Queue – The default algorithm used on Ethernet links is FIFO (Software Queue), but this can also be manually changed to WFQ, CBWFQ, LLQ, etc. Tail Drop means when a packet was dropped because the Output Queue is full, and there is no place for more packets before the first one leaves the Output Queue and is forwarded to the Transmit Ring (TxR or Hardware Queueing which is always forwarding on FIFO logic).
– FIFO Queueing – First packet that enters is the first that is leaving.
– Fair Queueing – Resources (bandwidth) are shared equally amongst the flows.
– Weighted Fair Queueing (WFQ) – Bandwidth is allocated per flow proportionally to weight (marks).
– Class Bassed Weighted Fair Queueing (CBWFQ) – Successor of WFQ, plus we have the ability to create our own Classes for Traffic Classification. It is based on Weights (Bandwidth). By default only 75% of interface traffic is allowed to be assigned by CBWFQ, the other 25% remains for routing protocols and other control plane protocols. The default method of Dropping packet’s is Tail Drop, but you are allowed to change to WRED as well.
– Low Latency Queueing (LLQ) – Probably the most wanted tool when it comes to Voice Traffic. Originally same as CBWFQ but the addition to this one is that you can give priority to sensitive traffic (Voice over IP, Video traffic, etc), and as we already know Voice traffic is sensitive to Latency and/or Jitter, so by giving priority to a particular traffic we are lowering the possibility of packet loss.
p.s: The Diagrams above are not my own, I found them on google search.
More notes to be added soon…