[asterisk-dev] RTP trunking - 58% savings on media bandwidth?

Tim Panton thp at westhawk.co.uk
Thu Dec 18 04:37:32 CST 2008


On 18 Dec 2008, at 09:13, John Todd wrote:

> [While I should be doing many, many other things this late evening
> I'll spend some time and write about improvements that will only be
> useful to a few people to the tune of tens of thousands of dollars.  I
> probably should be doing something else, but I have a hard time
> letting go of a concept once it gets in my head, so putting it down in
> a -dev posting for sad review years from now is really what I need to
> do.]
>
>   This started on the thread about cRTP, but that quickly turned to a
> dead end since cRTP seems to be link or interface specific and has
> nothing to do really with RTP at endpoints.  So I mulled it over a
> bit, and came up with my idea for a multiplexed RTP (or what I'm now
> calling "trunked RTP", or "TRTP", to be more consistent with IAX2
> trunking concepts which this is based upon) .  The numbers I
> calculated far below are interesting, especially with lower-rate
> codecs - it looks like one can get slightly less than twice the amount
> of channels into the same bandwidth by getting rid of IP overhead by
> multiplexing RTP sessions into a single UDP packet stream.  The
> details are not excruciating, and I think the use of existing concepts
> and code makes this probably fairly do-able.  Any reasonably-sized
> carrier that does international traffic on high-price links might find
> this useful - it provides some of the IAX2 trunking benefits without
> having to shift over entirely to IAX2, and maybe it would be quickly
> implementable by other SIP/RTP stacks that wanted to see decreases in
> bandwidth usage between high-traffic nodes.
>
-----details omitted----

One of the disadvantages of this in IAX2 is that the audio streams are
no-longer 'free running'. Generally asterisk doesn't mess with the  
timing of a
bridged call, so if the transmitter is running fast then asterisk  
faithfully resends
these packets at that speed, and the receiver gets to re-sample/re- 
sync as
needed. In a IAX trunked situation (and in meetme) Asterisk takes over  
the
timing of the outgoing packets and has to do some re-sync (it doesn't  
resample).

In a world where most calls have a PSTN component (with perfect  
clocking)
this isn't a problem, but as we move to a pure VoIP world, this is  
going to get
harder and harder to cope with.

Imagine you have a batch of softphones calling each other, each basing  
their timing
on their local (and cheap) audio hardware. You could easily get a 5%  
difference
between the fastest and slowest senders. (I wonder what skype does?)

I'd guess to do this we need a resampler built in to the mechanism, or  
an explicit
're-sync' frame.

T.




More information about the asterisk-dev mailing list