[Serusers] Implementing Codec Translator with Asterisk

Noel Sharpe noels at radnetwork.co.uk
Wed Aug 3 16:03:43 CEST 2005


Frank Kostin wrote:

> Hi everybody,
> Looking to implement Codec Translator with Asterisk  - loading codec 
> modules API in Asterisk to support transcoding.
> Has anyone experienced this issue, and does anyone have any 
> suggestions or hint, simple scripts, whatever ?
> Thanks in advance and kind Regards,
> Frank
>
> ------------------------------------------------------------------------

Hi Frank

I am currently using Asterisk as a b2bua.  Calls destined for the PSTN 
go via an asterisk server, which authorises the call based on the CLID, 
or prompts for a PIN, and forwards the call onto the PSTN Gateway.  We 
use this solution to realise a pre-paid billing application.  Asterisk 
will automagically do the codec translation as it's bridging the call.  
The downside to this solution is that codec tranlation is quite CPU 
intensive, so I would not expect to transcode a large number of calls.  
Anyone have any idea how many calls I could process on a dual xeon 
2.4GHz machine with half a gig or RAM, or even better how I can test the 
capacity?

fragments of our ser.conf in the main route block:

if ( uri=~"sip:[0-9]{7,20}@.*") {
          log(1,"going to route(3) pstn!!...\n");
          route(3);
          break;
        };

and then   :

route[3] {

  # all calls through the gateway must be record routed
  record_route();

  # first the caller needs to be authenticated
  #(xxx.xxx.xxx.xxx is the ip address of SER server)
  if ( 
(uri=~"^sip:(.+@)?(xxx\.xxx\.xxx\.xxx|(voip\.)?mydomain\.com)([:;\?].*)?$")) 
{
    if (!(src_ip==xxx.xxx.xxx.xxx | method==ACK | method=="CANCEL" | 
method=="BYE")) {
      if (!proxy_authorize("mydomain.com", "subscriber")) {
        proxy_challenge( "mydomain.com","0");
        break;
      } else if (method=="INVITE" & !check_from()) {
        log(1, "LOG: Spoofed from attempt\n");
       sl_send_reply("403", "Use From=id next time");
        break;
      };
    };
    # authenticated and authorized, now accounting is set
    setflag(1);
  };

  #(yyy.yyy.yyy.yyy is the ip address of Asterisk server)
  rewritehostport("yyy.yyy.yyy.yyy:5060");
  append_hf("P-hint: GATEWAY\r\n");
  if (!t_relay()) {
    sl_reply_error();
    break;
  };
}

Important bits from asterisk's sip.conf:
[general]
disallow=all
allow=g729
allow=gsm
autocreatepeer=yes

[yourpeer-egress]
type=peer
host=voip.yourpeer.com
secret=nottelling
username=myusername
fromuser=myclid
canreinvite=no
dtmfmode=rfc2833
context=incoming

and finally in extensions.conf you need something like:

exten => _.,1,dial(SIP/${EXTEN}@mypeer-egress)



Noel






More information about the sr-users mailing list