Saturday, August 21, 2021

Help in understanding QoS (Cisco)

Hi all,

Beginner here. I've started studying QoS on Cisco routers very recently and below is what I've understood. Kindly correct any wrong statements and add more to further help my understanding.

  1. Tx traffic. Without WFQ or CBWFQ enabled, there will only be one queue (default class). Packets processed by the routing processor gets placed on this queue. A queue is a set of memory locations in memory (RAM/dedicated IO memory?) If the Tx interface is congested (more packets to be transmitted than the physical interface can transmit at a given unit of time), packets get placed in the aforementioned queue. If there is no Tx congestion, packets will bypass the queue and will be directly serialized on the physical interface.
  2. Tx traffic. If CBWFQ is used, there will be a queue per class map (traffic class). A class can be assigned with a bandwidth value, which theoretically, all classes collectively, must add up to the total bandwidth value of the interface. The weight per class is calculated by the router using the previously assigned bandwidth value.
  3. Tx traffic. If CBWFQ is used and there is no congestion, packets will still be put into the queues by the scheduler.
  4. Tx traffic. If WFQ or CBWFQ is used and the Tx interface is congested, packets coming from the routing processor are sent to the respective queue using a scheduler (is this the case?). Therefore, WFQ and CBWFQ can be considered as a part or whole of the scheduling mechanism itself. The rate of distribution of packets into the queues is based on the weight of each class. When traffic exits the queue to be propagated on the physical interface, again the scheduler decides at which rate packets are serialized on the interface using the scheduler (is this the case?). Basically, does Tx scheduling happen between the routing processor and queue, between the queue and Tx ring or both?
  5. Tx traffic. Regardless of being queued or not, packets get placed on a dedicated Tx ring buffer (separate memory from RAM) before actually being propagated on the physical medium. Filling up the ring buffer is what truly means by 'congestion'. The ring buffer operates as FIFO and the mode can't be changed. Therefore, the only way to manipulate the rate at which certain classes of packets get propagated on the wire is through queuing.
  6. Tx traffic. The LLQ queue bypasses the scheduler and therefore has a possibility of 100% link utilization unless a maximum bandwidth is configured (policing).
  7. Tx traffic. When the ring buffer is full and WFQ or CBWFQ is present, a dropping algorithm (tail drop, WRED) drops packets in the queue. Does it drop packets from the ring buffer as well? If the ring buffer is full and WFQ or CBWFQ is not used, tail drop is used on the default queue (default class).
  8. Tx traffic. Shorter queue depths equate to less time spent in the queue but higher taxation on the routing processor. Why is that? What is the goal of changing the Tx ring buffer size if queue depths can be configured?
  9. QoS is usually implemented on egress traffic (I am yet to see configuration guides for ingress traffic).
  10. On a router, is traffic marking usually done on ingress LAN gateway interfaces (ingress policy map per interface) or on the egress interface going towards another router (single egress policy map)?
  11. Rx traffic. After a packet is received on a physical interface, it gets placed onto a dedicated Rx ring buffer (separate memory from RAM) using FIFO (which can't be configured). If an Rx buffer becomes full, it is know as congestion. If WFQ or CBWFQ is not configured and there is congestion for ingress traffic, packets will be placed in a default queue and will be tail dropped. If CBWFQ is configured, packets in the traffic classes will be dropped using tail drop or WRED. Is traffic from the Rx buffer dropped as well?
  12. Rx traffic. If CBWFQ is enabled and there is congestion on ingress traffic, packets will be sent from the Rx ring buffer to the queues using a scheduler based on class weight. Packets will also be sent from the queue to the routing processor based on the class weight.
  13. Rx traffic. If CBWFQ is enable and there is no congestion on ingress traffic, still, packets will be sent from the Rx ring buffer to the queues using a scheduler based on class weight. Packets will also be sent from the queue to the routing processor based on the class weight. Basically does Rx scheduling happen between the Rx ring buffer and queues, queues and routing processor or both?
  14. Rx traffic. The LLQ queue bypasses the scheduler and therefore has a possibility of 100% link utilization unless a maximum bandwidth is configured (policing).
  15. I couldn't find the command to change the Rx buffer size. However, the queue depth for ingress traffic can be changed. Does the Rx ring buffer need to be adjusted?
  16. PQ and CQ aren't discussed since I still haven't touched them.

Sorry if this was too exhausting (I still have a list, probably for another day). There seems to be misinformation regarding the inner workings of QoS all over the web. I just want some clear answers.



No comments:

Post a Comment