Paper Study - A New Adaptive FEC Loss Control Algorithm for Voice Over IP Applications
28 Apr 2020** This is a study & review of the Opera paper. I’m not an author.
A New Adaptive FEC Loss Control Algorithm for Voice Over IP Applications
Introduction
- Problem with previous schemes: can’t handle burst loss and show unstable behaviors
- Section 2: application-level packet-loss techniques Bolot’s algorithm
- Section 3: Shortcomings of Bolot’s algorithm
- Section 4: New Design USF algorithm
- Section 5: Simulation
Application-level packet-loss recovery & Bolot’s algorithm
Pre-specified HIGH and LOW limits for loss rate. Add redundancy when the loss rate is higher than HIGH, and decrease redundancy when the loss rate is lower than LOW.
Redundancy level depends on Combination Number:
Reward measures the audio quality at the receiver (loss rate before vs after reconstruction) (empirically determined)
A RTCP packet contains the number of packets lost before reconstruction at receiver in the last 5s.
For each RTCP received:
# Packet Loss Rate Before Reconstruction
Pb = lost packets / total packets expected
# Packet Loss Rate After Reconstruction
Pa = Pb / Reward
if Pa > HIGH: # Loss after reconstruction still too large (network congested)
combination++
if Pb < LOW: # Loss before reconstruction small enough (good network condition)
combination--
Shortcomings of Bolot’s Algorithm
Static and empirically determined reward number $\rightarrow$ representative for a limited scenarios (only for those similar to the testing condition)
Bolot’s algorithm doesn’t consider change in packet loss rate before reconstruction $\rightarrow$ with poorly set HIGH and LOW value $\rightarrow$ fluctuation. For example, if we set both HIGH and LOW at 3%, then one RTCP increases redundancy and the other reduces redundancy, forming a cycle of fluctuation.
New AFEC: USF algorithm
Add two additional values in the RTCP packets.
- The number of packets lost after reconstruction, used to calculate the actual percentage of packets loss after reconstruction.
- Total number of packets lost in bursts, used to account for burst loss.
USF first increases delay and then add more redundancy to the traffic.
For each RTCP:
# Packet loss rate after reconstruction
Pa = Number of Packets lost after reconstruction / Total number expected
# Packet loss rate before reconstruction
Pb = Number of packets lost before reconstruction / Total number expceted
if Pa > HIGH: # calebrate for burst loss
subtract burst loss from loss
recalculate Pa with the new loss
if Pa > HIGH: # lost still high
increment combination
if Pa < LOW: # low loss rate
loss difference = Pb(previous) - Pb
if loss difference > threshold:
decrement combination
Pb(previous) = Pb
Main point: safe guard increment and decrement from burst loss and fluctuation.
Simulation and Evaluation
VoIP stream at period of 20 ms. Each packet is numbered for loss tracking.
Used Interactive (telnet), Bulk Data (FTP) to simulate realistic traffic, adjust for different VoIP loss rate.
- With relatively stable and good network (loss around 3%)
HIGH and LOW @ 3%. USF threshold @ 3%. (3% loss rate for a tolerable audio quality)
Table 3: USF reduces loss rate at 2-3X.
Table 4: Period of 5s (RTCP); number of these periods above HIGH.
Fewer above HIGH periods means that USF can effectively handle high loss (when network condition becomes bad) by increasing redundancy level.
Compare figure 5 against 6, we can see the number of packet loss after reconstruction with USF is significantly less.
- Synthetic network (network loss rate varies from 2%-35%)
For network loss < 7%, USF performs well. But when network is heavily congested and loss rate is high, USF struggles. Confirms in figure 8.
Why would Bolot outperforms USF with higher network loss? Bolot often overestimates loss rate after reconstruction (Figure 9: dots concentrates above the actual loss rate after reconstruction line) $\rightarrow$ over-redundant $\rightarrow$ performs well in bad network conditions
What if Bolot also uses actual loss rate after reconstruction like USF? USF outperforms Bolot for all range.
Conclusion USF AFEC
- Clearly USF AFEC is good when the network condition is relatively stable and well, but struggles otherwise
- It uses actual network loss to compute redundancy $\rightarrow$ more accurate measure of AFEC effectiveness.
- It calibrates for burst loss and consider network loss history when making redundancy changes $\rightarrow$ less frequent change $\rightarrow$ less fluctuation
- Needs more works on LOW, HIGH, threshold setting? Bandwidth Util? Improve for high loss rate conditions?