[asterisk-dev] "cRTP, anyone?" and more crackpot ideas

Abdul Hakeem alhakeem at gmail.com
Wed Dec 17 09:16:14 CST 2008


Hello,
I was involved with a similar project years back, albeit with Cisco voip
gateways.
Anything other than RTP header compression is bound to fail using the public
internet.
As you are aware the voip packets is already compressed (i.e. various
codecs). The best way to tackle this is to implement IP/UDP/RTP header
compression as described in RFC 2508. This will limit the header to 2-4
bytes.
A layer 2 -like virtual circuit is the best way to go at the router level
because the packets are not reordered at each hop.

Cheers,
Abdul Hakeem

-----Original Message-----
From: asterisk-dev-bounces at lists.digium.com
[mailto:asterisk-dev-bounces at lists.digium.com] On Behalf Of John Todd
Sent: 17 December 2008 00:16
To: Asterisk Developers Mailing List
Subject: [asterisk-dev] "cRTP, anyone?" and more crackpot ideas


I was in a conversation today with someone who does a lot of international
VoIP traffic.  They have Cisco gear at both ends of their links, and the
comment was that Asterisk didn't support cRTP, which is "compressed RTP".
I'd heard of CRTP, but honestly I've never heard it come up before as
something people were using extensively, though it makes perfect sense for
traffic that transits across high- cost, low-bandwidth IP links.

This seems to be a niche solution.  Why?  Because cRTP doesn't work outside
of layer 2 networks, from everything I've read.  If you have a
T1 (or frame relay, or ATM, or MPLS, or whatever L2 protocol) between two
endpoints, you apply cRTP on each interface, but each device (hop-
by-hop) must support it.  You can't compress headers on RTP across a network
of uncontrolled hops.  So on the internet, this would not work.  It would be
useful only if your Asterisk systems were doing IP routing (point-to-point
or frame relay) and could see each other directly on some layer 2 link.

Has anyone looked at CRTP implementation for Asterisk?  This is one of those
questions that might be already solved, but I've just never talked to the
right person.  It seems like anything with this high a dollar value on it
would have been programmed by someone, somewhere.

Or am I wrong?  Is it possible to do cRTP or something similar in a way that
is not hop-by-hop?  Please let me know, especially if you have code to back
it up.

Many (most?) media sessions are actually between two servers that have more
than one RTP session active between each other at once.  It seems completely
bizarre that a method of RTP pipelining does not exist, like there is for
IAX2 in trunk mode.  Pushing several RTP payloads in the same UDP datagram
seems like a HUGE bandwidth win - why hasn't anyone done it?  For that
matter, why haven't we done it in Asterisk and created a new RTP hybrid?
Seems like it would be easy to throw an additional identifier in the SDP
that would offer RTP in a pipelined mode so that two systems could know what
protocol to use.  Asterisk systems with multi-channel SIP RTP sessions would
"just work"  
automagically and potentially cut bandwidth usage by 60% in some
circumstances, but other non-compatible systems wouldn't change behaviors.
Your patches are welcome!  ;-)

Anyway... cRTP and related RFCs below.

http://www.faqs.org/rfcs/rfc2508.html
http://www.faqs.org/rfcs/rfc1144.html

JT


---
John Todd                       email:jtodd at digium.com
Digium, Inc. | Asterisk Open Source Community Director
445 Jan Davis Drive NW -  Huntsville AL 35806  -   USA
direct: +1-256-428-6083         http://www.digium.com/




_______________________________________________
--Bandwidth and Colocation Provided by http://www.api-digital.com--

asterisk-dev mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-dev




More information about the asterisk-dev mailing list