How to distinguish EF from AF?
EF is a low-latency queue mainly used to ensure the transmission of voices. When the traffic runs into the queue from the token bucket, the low latency is guaranteed. The voice traffic features a stable volume and RTP streams. If EF is provided with enough bandwidth, the voice transmission is ensured.
AF is a bandwidth-guarantee queue. The flows run into the queue first during traffic congestion, and then go into the token bucket after getting out of the queue.
If TCP packets flow into EF, the TCP traffic grows gradually according to the TCP flow-control algorithm. Thus, the packets are directly discarded before going into the token bucket. Discovering the packet loss, TCP reduces the rate to its initial value immediately, and then triggers slow start to increase the traffic. This process repeats again and again, causing the traffic jitter.
If TCP packets flow into AF, the traffic runs into the queue first, leading to the delay. When detecting that the interval for returning the ACK message becomes longer, the transmission rate stops growing. In this case, packets cannot be lost, and the traffic is stabilized.
In short, EF discards packets without letting the TCP flow control mechanism perceive the congestion, but AF can let the TCP flow control mechanism perceive the congestion.