Positive user experience with Gargoyle
Posted: Sat Aug 25, 2012 1:25 am
Summary
Using Gargoyle's QoS and Active Congestion Control,
one can go from 18% packet loss to less than 3% on VoIP calls,
even on saturated satellite ISP connections.
Overview
I first heard of Gargoyle via a LWN.net article
and was immediately intrigued by the Active Congestion Controller.
I volunteer as a network administrator for a camp in a remote location
that has a satellite ISP. The network there is generally "open" to
many users.
Concerns about VoIP call quality varying wildly from "OK" to "unusable"
caused me to think that Gargoyle could possibly save the day.
Experiments
First step
Read the excellent Quality of Service wiki page.
Go ahead and read it twice, it's that good.
Second step
Determine download and upload capacity of internet connection without
QoS or ACC. This is somewhat tricky, but using the Bandwidth
Usage page while downloading a large file like Ubuntu and simultaneously
uploading large files seems best to me. I don't recommend "speed test"
sites since they are too short to give a more accurate, long-term
representation of bandwidth.
First experiment
Without QoS or ACC, measure VoIP packet loss on call when
simultaneously uploading and downloading.
- Configure Wireshark to capture packets to/from Vonage VoIP device
- Start upload and download
- Start wireshark capture, make call including upstream and downstream
content (talking and listening), end call, stop capture
- In wireshark capture, scroll midway down capture, find an RTP packet
from local IP to remote IP, and select Telephony | RTP -> Stream Analysis...
- Observations show 12% to 18% packet loss on call in both directions
"terrible"
Second experiment
Enable QoS and ACC
- For QoS enter 95% - 98% of recorded bandwidth
-- we actually used about 90% in an attempt to account for "rain fade"
during winter
- Ensure traffic to/from VoIP device is put into "VoIP" QoS class
-- assign VoIP device MAC address to an IP,
-- assign traffic to/from that IP to "VoIP" class
- For ACC, leave ping limit on "Auto"
While looking at the bandwidth graphs during a call with QoS and ACC on
auto, I could see that ACC was "clamping" non-VoIP traffic to try to meet
ping times. It appears that "Auto" has a maximum of 500ms.
Since our satellite connection normally has ping times between
600-700ms, the ACC was "starving" non-VoIP traffic.
When ping limit was set to 700ms, bandwidth shaping looked more
appropriate.
Third experiment
Enable QoS and ACC, set ping limit to 700ms. Also, vary total bandwidth
to see affect on VoIP performance.
On the QoS upload page, we set the following
Name % BW Min BW Max BW
Voip 40% 165 nolimit
Fast 41% zero nolimit
Slow 1% zero nolimit
Normal 18% zero nolimit
For VoIP
- we set minimum bandwidth for VoIP to a little more than used by
2 simultaneous phone calls (80 kbps each)
- we also set VoIP % BW to 40% in a effort to minimize other
upload traffic while calls were in progress
- call quality is higher priority than general internet upload
capacity for us
- we assigned all traffic to/from our Vonage VoIP device's IP
address to the Voip class
BTW: My jaw dropped with amazement when I saw Load (kbps)
updating in real time for all the classes.
Wow!!! Nice work!
On the QoS download page, we set the following;
- same values for Voip in upload
- Enabled Active Congestion Control (ACC)
- Use custom ping limit: 700 ms
With this setup, we got less than 3% packet loss even while downloads
and uploads were "hogging" the internet connection.
Excellent!
Enhancement requests
- Increase maximum ping time in "Auto" mode from 500ms to 700ms
I don't know if the 600-700ms ping time is common to all satellite ISPs,
but that has been pretty consistent for the camp
- Limit upload bandwidth in same manner as download with ACC.
I'm actually kind of surprised that upload bandwidth is not being limited.
My understanding is that limiting upload is "easy" while limiting
download is "hard". Of course, I don't really know what is involved.
Conclusion
Thank you Eric, Paul, and all. Gargoyle is a very nice tool and works very well.
Using Gargoyle's QoS and Active Congestion Control,
one can go from 18% packet loss to less than 3% on VoIP calls,
even on saturated satellite ISP connections.
Overview
I first heard of Gargoyle via a LWN.net article
and was immediately intrigued by the Active Congestion Controller.
I volunteer as a network administrator for a camp in a remote location
that has a satellite ISP. The network there is generally "open" to
many users.
Concerns about VoIP call quality varying wildly from "OK" to "unusable"
caused me to think that Gargoyle could possibly save the day.
Experiments
First step
Read the excellent Quality of Service wiki page.
Go ahead and read it twice, it's that good.
Second step
Determine download and upload capacity of internet connection without
QoS or ACC. This is somewhat tricky, but using the Bandwidth
Usage page while downloading a large file like Ubuntu and simultaneously
uploading large files seems best to me. I don't recommend "speed test"
sites since they are too short to give a more accurate, long-term
representation of bandwidth.
First experiment
Without QoS or ACC, measure VoIP packet loss on call when
simultaneously uploading and downloading.
- Configure Wireshark to capture packets to/from Vonage VoIP device
- Start upload and download
- Start wireshark capture, make call including upstream and downstream
content (talking and listening), end call, stop capture
- In wireshark capture, scroll midway down capture, find an RTP packet
from local IP to remote IP, and select Telephony | RTP -> Stream Analysis...
- Observations show 12% to 18% packet loss on call in both directions
"terrible"
Second experiment
Enable QoS and ACC
- For QoS enter 95% - 98% of recorded bandwidth
-- we actually used about 90% in an attempt to account for "rain fade"
during winter
- Ensure traffic to/from VoIP device is put into "VoIP" QoS class
-- assign VoIP device MAC address to an IP,
-- assign traffic to/from that IP to "VoIP" class
- For ACC, leave ping limit on "Auto"
While looking at the bandwidth graphs during a call with QoS and ACC on
auto, I could see that ACC was "clamping" non-VoIP traffic to try to meet
ping times. It appears that "Auto" has a maximum of 500ms.
Since our satellite connection normally has ping times between
600-700ms, the ACC was "starving" non-VoIP traffic.
When ping limit was set to 700ms, bandwidth shaping looked more
appropriate.
Third experiment
Enable QoS and ACC, set ping limit to 700ms. Also, vary total bandwidth
to see affect on VoIP performance.
On the QoS upload page, we set the following
Name % BW Min BW Max BW
Voip 40% 165 nolimit
Fast 41% zero nolimit
Slow 1% zero nolimit
Normal 18% zero nolimit
For VoIP
- we set minimum bandwidth for VoIP to a little more than used by
2 simultaneous phone calls (80 kbps each)
- we also set VoIP % BW to 40% in a effort to minimize other
upload traffic while calls were in progress
- call quality is higher priority than general internet upload
capacity for us
- we assigned all traffic to/from our Vonage VoIP device's IP
address to the Voip class
BTW: My jaw dropped with amazement when I saw Load (kbps)
updating in real time for all the classes.
Wow!!! Nice work!
On the QoS download page, we set the following;
- same values for Voip in upload
- Enabled Active Congestion Control (ACC)
- Use custom ping limit: 700 ms
With this setup, we got less than 3% packet loss even while downloads
and uploads were "hogging" the internet connection.
Excellent!
Enhancement requests
- Increase maximum ping time in "Auto" mode from 500ms to 700ms
I don't know if the 600-700ms ping time is common to all satellite ISPs,
but that has been pretty consistent for the camp
- Limit upload bandwidth in same manner as download with ACC.
I'm actually kind of surprised that upload bandwidth is not being limited.
My understanding is that limiting upload is "easy" while limiting
download is "hard". Of course, I don't really know what is involved.
Conclusion
Thank you Eric, Paul, and all. Gargoyle is a very nice tool and works very well.