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).
feedback
|
|
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. | |||
feedback
|
|
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 | |||
|
feedback
|
|
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. | |||||||||
feedback
|
|
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. | |||
|
feedback
|
|
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. | |||
|
feedback
|