Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

We're using G711a as a codec, and I wanted to bond ADSL lines to give me the maximum possible upstream. I know that there can be issues of packet re-ordering etc; what is the 'right' way to do this? (other than getting a leased line).

share|improve this question
Of all the traffic you could shove over a bonded connection, G711a is one of the least likely to be usable on the other end. – Caleb Apr 16 '11 at 10:15
What would you recommend? – chrism2671 Apr 18 '11 at 5:37
Any real time stream data is going to struggle over a bonded network, and G711a is a hog and so will be more symptomatic. I would try to use a compressed protocol so the data fit on one line or the other, then load balance instead of bond. See my answer... – Caleb Apr 18 '11 at 7:24
up vote 1 down vote accepted

Have you considered keeping this whole problem simply by using some kind of load balancing instead of bonding? Your packets will be much happier if each session is on one line or another. Using a lighter weight (compressed) audio codec on a single shared line should give you better quality calls than a heavy weight one like G711 where the packets are split and moved over a bonded line.

share|improve this answer
This is what we did in the end. We had problems with G729 because of a poor implementation on some old linksys phones. We separated it out onto two physical networks and it makes a lot more sense, and keeps it simple. Everything is pretty much working smoothly now! Thank-you! – chrism2671 Apr 20 '11 at 9:47

Hi we have used a bonded service from BE broadband and VOIP which has been very sucessful and cost effective compared to leased line see link below

BE Broadband Line Bonding

share|improve this answer

A true bonding is difficult to achieve, but one way to get close to it is Multilink PPP.

It needs an endpoint on which you will terminate the ppp sessions, and this endpoint can be either in the ISP network or on the internet (such as a server/router in your datacenter).

This is quite easy to get it running as you don't need anything from the provider.

share|improve this answer
and btw, don't use G711 on the wan. only on a lan. – petrus Apr 16 '11 at 10:20
What would you recommend? – chrism2671 Apr 18 '11 at 5:37
g729, AMR... there's plenty of it that don't require 80kb/s+ bandwidth. See the wikipedia MOS page for more codecs. – petrus Apr 18 '11 at 10:18

Reordering of packets should not be a problem as G711 implementations will have a configurable jitter buffer of up to several hundred milliseconds and take care of reordering themselves - as long as the packets will arrive early enough not to get dropped.

Nontheless, I'd opt for the KISS principle and not operate a PPP tunnel myself if other simpler options are available. If your provider will not support MPPP, you might check out if just exposing several IP addresses for your gateway (one address per link) and pointing your users to these addresses alternately (e.g. by using DNS round-robin) and use some smarter routing to make upstream packets take the same outbound interface the downstream packets arrived through - using Linux some "ip route" / "ip rule" (maybe in conjunction with iptables and the MARK target) commands would take care of that.

share|improve this answer

Compressed audio like g729 is still noticeable and requires all kinds of changes on PBX and/or phones.

Multilink PPP is great except it doesn't handle failing legs (eg: packet loss) very well, or connections with different speeds. And it won't work with legs from different carriers.

If you know your way around with Linux, you can use Netfilter, connection tracking, mod_statistic, and connmark to set a fwmark for each new UDP session, and then send it to random WAN leg. So each VoIP call would be pinned to one of the connections to avoid packet reordering.

Disclaimer: we have built a per-packet bonding solution which solves the above issues.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.