http://webdev.digitalpath.net/~rayvd/voice/ser_asterisk.cfg
Is my Asterisk configuration file.
Basically:
[SIP ATA] <--- 172.25.163.0/24 IP
[Customer CPE] <--- 10.0.0.0/8 IP
[SER] <--- 10.0.0.0/8 IP and Public Internet IP
[Asterisk] <--- Public Internet IP
Asterisk and SER are usually far from each other.
In my setup, Asterisk normally talks to my ISP's SIP/PSTN gateway and then
passes RTP on to my ISP's media gateway. So the normal flow of RTP is:
SIP ATA -> SER -> Asterisk -> Media Gateway -> PSTN
Some of our internet connections between SER and Asterisk can be a bit
finnicky at times and introduce jitter. Since Asterisk doesn't have a
(working) jitter buffer currently, any benefits from the jitter buffer on my
ISP's Media Gateway cannot really be realized.
So I set up the config as in my cfg above and set canreinvite to yes for the
ATA in my sip.conf on Asterisk (also make sure your Dial() in Asterisk's
extensions.conf doesn't have a t or T in the flags list). Then the following
happens:
1. I make a call from my SIP ATA to a PSTN number.
2. INVITE to SER
3. Normal negotiation happens. RTP is flowing as in my original flow above
(with Asterisk in the media path)
4. Asterisk now sends an INVITE to SER with an SDP payload specifying the IP
of my ISP's media gateway. This is a public out on the Internet.
5. This requests hits the loose route portion of my route {} block.
6. I rewrite the media IP to the 10.0.0.0/8 IP on my SER server, but also
specify the "R" flag to "trust" the IP originially passed by
Asterisk.
This allows SER to shift it's RTP stream to the Media Gateway's IP
address.
7. I use t_on_reply(2) because I want the reply from my SIP ATA for this
re-INVITE to hit my onreply_route[2] function.
8. The re-INVITE goes out to the SIP ATA and back comes the 200 OK response
with an SDP payload. This reply hits onreply_route[2] and I fix the media
source IP here to have the IP of the SER server.
At this point, Asterisk is now out of the media path completely!
Hope that was somewhat helpful. Don't frown too much on my messy ser.cfg
file. :-)
Ray
On Fri, Oct 28, 2005 at 11:58:22AM +1300, Patrick Jordan-Smith wrote:
Hi Ray,
Can you tell the rest of us how you did it?
Ta,
Pat