News:

On Tuesday September 6th the forum will be down for maintenance from 9:30 PM to 11:59 PM PDT

Main Menu

recommend low-bandwidth VoIP provider compatible with Obi?

Started by sfzcadmin, June 14, 2012, 11:24:59 AM

Previous topic - Next topic

sfzcadmin

We are trying to set up VoIP service over a very limited bandwidth satellite connection and would like to find a VoIP provider who will allow the lowest-bandwidth overhead codec possible to set up on an Obi box. (Maybe one that offer the g.723.1 codec). Can anyone make any recommendations?

pc44

Hi sfzcadmin,

I'm not familiar with the G.723.1 codec.  It looks like it transmits "at 5.3 and 6.3 kbit/s."

If so, would G.729  "8 kbit/s" suffice in your environment?  You would know better than I would, but if it would work for you, then you might consider Vitelity.net as one possible VoIP provider.

pc44 :)

sfzcadmin

The problem with 729 is that it seems to carry about 30kpbs of overhead. I was wondering if the other codecs did as well.

Stewart

Voxbeam claims to support G.723.1 (6.3 kbps) on all their routes.  However, OBi devices don't implement that codec, so transcoding software would be needed at your end.  I'm a satisfied Voxbeam customer, though I've never used or even tried their compression codecs.

Note that if you are using SIP (or H.323, MGCP or XMPP for that matter), the audio is encapsulated in RTP.  In addition to the payload, each packet has 12 bytes of RTP overhead, 8 bytes UDP overhead, 20 bytes IP overhead, plus additional overhead dependent on the satellite technology employed.

With G.723.1, frames are fixed at 30 ms, containing 24 bytes payload + 40 bytes RTP/UDP/IP + ?? bytes for the link and physical layers. (17067 + ?? kbps)

With G.729, 20 ms packetization is most common, but if you chose 30 ms, the packet is only 6 bytes longer than for G.723.1. (18667 + ?? kbps)

IMO, it's likely that your problem is not caused by exceeding the bandwidth capability of the link, but by severe jitter, greater than what the jitter buffers can handle.  At your end, your device may have some adjustments, or a software jitter buffer can be used.  The OBi is very tolerant in this regard.  Of course, such buffering is at the expense of already awful latency.  In the upstream direction, you have a tougher problem, because you have no control over the jitter buffer at the provider.  If you have intractable outbound choppy voice issues, you may need to set up an intermediate server.  This may be in the cloud, at your headquarters, or anywhere that you have a solid, low-latency connection to the Internet.

sfzcadmin

Hi Stewart - your answer was incredibly enlightening - thank you.

So if we set the frames at 30ms frames on a g.729 connection, that will be the best "bang" for our bandwdith buck on an Obi?

The satellite provider wants to sell us 20kpbs CIR (for constant quality of service) on the phone lines for $130 a month, but we've been testing it out and it doesn't seem to help all that much. (I'd rather pay for more total bandwidth with that money). We are getting 3MB down, 256kpbs up right now, but if we upgrade the equipment, we'll get 1MB up, which could deal with that jitter problem, no?

What is a software jitter buffer? Is that something the router would handle? Would using an Obi202 AS our router help with this issue, since that voice traffic would get prioritized? And can I set the frame rate on the Obi codec setting or is this something the provider does generally?

Stewart

Yes, try G.729 with 30 ms packetization.  In the OBi, in the relevant Codec Profile under G729 Codec, set PacketizationPeriod to 30, which will change what the OBi sends.  It will also put that in the SDP, requesting the provider to also send 30 ms frames, but they may not comply.   Capture some traffic to check.

Is the poor quality on inbound voice, outbound voice or both? Even when there is no other traffic on your LAN?

I suggest that you capture traffic with Wireshark to see what is going wrong.  If you're losing packets, a jitter buffer obviously won't help.  If it's jitter, it's useful to know how bad it is -- you probably don't want to add one second of latency in each direction.

For inbound trouble, a local capture is all you need.  For outbound, unless you can get a trace from a very friendly provider, set up a P2P connection with an associate with a wired Internet connection, e.g. OBiTalk link to his softphone, and have him capture traffic.

For external buffering, there are jitter buffer settings in Asterisk (and I assume other softswitches).

Are you really in the middle of nowhere?  For example, could you get cellular data (or voice), by using a high-gain fixed antenna on a small tower?  Any fixed wireless Internet providers visible (or nearly visible) from your location?  Can you set up a point-to-point wireless bridge to a nearby site where wired Internet is available?

sfzcadmin

Truly in the middle of nowhere, yes Nearest cellular tower is many miles and a few ridges away.

The inbound quality is fine; outbound is choppy, so that is likely attributable to the unusually bandwidth on the upstream, soon to be fixed with a new modem from the satellite provider.

The bigger issue is getting our total usage down. Even at g.729, we are using a ridiculous amount of bandwidth due to the amount of time on the phone (simple math, right?), so I'm trying to get it down as low as possible so we can stay under our "cap".

I'll implement your suggestions and then post back when I have some data. Thanks again!

Stewart

Check that silence suppression is on (in the OBi, it's off by default) and that it is working correctly in both directions, by repeatedly refreshing the Call Status page, while only one party, then the other, is speaking.  If that's not the problem, make some measurements of your own, to audit the satellite company's meters.

Quote from: sfzcadmin on June 15, 2012, 04:28:23 PM
Truly in the middle of nowhere, yes Nearest cellular tower is many miles and a few ridges away.
Well, at least the air is clean, and you don't have to worry about how you're dressed when you go out to feed the animals.

Good luck.