Hi,
Tail drop is easy to implement, but has the following problems:
1. TCP global synchronization: For TCP packets, a large number of packets are dropped, leading to TCP timeout. As a result, the TCP slow-start and congestion avoidance mechanism are triggered. The packets sent from multiple TCP connections to queues increase or decrease at the same time. When the number of packets increases to a certain value, interface congestion occurs. When the number of packets decreases to a certain value, the rate of sending packets to the queues is lower than the rate of sending out packets, reducing the link bandwidth utilization. In addition, the traffic of packets sent to the queues fluctuates frequently. As a result, the traffic on the line fluctuates greatly. In addition, the delay and jitter of specific traffic are affected.
2. TCP hunger: Tail drop leads to imbalance between bandwidth allocated to the TCP traffic. Certain traffic consumes most bandwidth resources. Other TCP traffic cannot be forwarded due to lack of bandwidth. Especially in the scenario in which the TCP and UDP traffic is transmitted, when the TCP traffic releases bandwidth resources, UDP traffic quickly consumes the resources. As a result, all bandwidth resources are consumed by UDP traffic, and TCP traffic cannot be forwarded due to lack of bandwidth resources.
3. High delay and high jitter: Congestions increase the delay and jitter.
4. Packets with different priorities are dropped without difference.
Here is a good explanation:
https://forum.huawei.com/enterprise/en/congestion-avoidance-tail-drop-and-wred/thread/576462-863