Aug 09 2010

Setting up chan_ss7 between two Asterisk boxes

Category: AsteriskBipin Balakrishnan @ 10:04 pm

We can setup a test environment with chan_ss7 on a private SS7 test network, without the need for expensive SS7 test equipment.All we need is two machines 2 E1 cards, either digium/Sangoma and T1/PRI Crossover Cable. A normal call flow for a auto voice call to a mobile will be like as shown below.

Here the local server will inititate the call to the MSC(Mobile Switching Center), the MSC will route call to the subscriber depending upon the called number.

The E1 or LAN cable pin configuration for setting up the same locally is as below.

1 <—-> 4
2 <—-> 5
4 <—-> 1
5 <—-> 2

Now compile the drivers in the order dahdi,asterisk,chan_ss7,wanpipe if you are using sangoma card or dahdi,asterisk,chan_ss7 if you are using a digium card.Now make one server as master and other a slave . The master will serve as MSC(Mobile Switching Center) for us and the slave will be our Call initiating machine or the local machine .The configuration files for the Master machine and slave machine is below.Note the local machine OPC(Orgination Point code) will be master machine DPC(Destination Point code) and DPC will be master machines OPC.

Master machine (Which serve as an MSC)
system.conf

span=1,1,0,ccs,hdb3,crc4
bchan=1-15,17-31
mtp2=16

ss7.conf

[linkset-siuc]
enabled => yes
enable_st => no
use_connect => yes
hunting_policy => even_mru
context => ss7
language => da
subservice => auto
[link-l1]
linkset => siuc
channels => 1-15,17-31
schannel => 16
firstcic => 1
enabled => yes
[link-l2]
linkset => siuc
channels => 1-15,17-31
schannel => 16
firstcic => 1
enabled => yes
[host-test-server1]
enabled => yes
opc => 0x1
dpc => siuc:0x2
links => l1:1

[host-test-server2]
enabled => yes
opc => 0x2
dpc => siuc:0x1
links => l2:1

Slave machine configuration(Which serve as a call Initiation server)
system.conf

span=1,0,0,ccs,hdb3,crc4
bchan=1-15,17-31
mtp2=16

ss7.conf

[linkset-siuc]
enabled => yes
enable_st => no
use_connect => yes
hunting_policy => even_mru
context => ss7
language => da
subservice => auto
[link-l1]
linkset => siuc
channels => 1-15,17-31
schannel => 16
firstcic => 1
enabled => yes
[link-l2]
linkset => siuc
channels => 1-15,17-31
schannel => 16
firstcic => 1
enabled => yes
[host-test-server1]
enabled => yes
opc => 0x1
dpc => siuc:0x2
links => l1:1
[host-test-server2]
enabled => yes
opc => 0x2
dpc => siuc:0x1
links => l2:1

Start asterisk on both machines you can see  GROUP RESET message coming and making the signaling link (16th time slot) INSERVICE and circuit idle.Configure a soft phone(Will act as a mobile for us).Make a callfile which initiate calls to the MSC from the localserver and we can see call terminating on the softphone.

The Master machine extensions.conf file should be like this.

[ss7]
exten => _X.,1,Dial(SIP/${EXTEN})

Tags: , , , , ,


Jun 07 2010

Playing with Adhearsion

Category: AsteriskBipin Balakrishnan @ 5:39 pm

Fed up with using dialplans and AGI scripting in Asterisk? Here is a nice frame work called Adhearsion which is an licensed under open source (LGPL) that is designed to improve Asterisk solution development. It rests above an Asterisk system, handling parts or all of the dialplan and, in a few unique ways, manages access to Asterisk with several improved interfaces.it runs as a separate daemon process and integrates through the already-present Gateway (AGI) and Manager (AMI) interfaces, configuring a context to use Adhearsion is as simple as adding a few lines to your dialplan or adding a user to manager.conf.

Object-oriented Ruby programming language is the core part of Adhearsion.

Installing Adhearsion

Im assuming that your system is intalled with gem,ruby and rails.if not installed it first then

sudo apt-get install ruby
sudo apt-get install rails
sudo apt-get install rubygems
then install adhersion
gem install adhearsion

Adhearsion will be installed then check ahn command is there if not find the installation path and add the path in bashrc file

export PATH=$PATH:/var/lib/gems/1.8/bin

Starting New Adhearsion Project

ahn create

will create the files

  • components
  • config
  • dialplan.rb
  • events.rb
  • log
  • Rakefile
  • README

Here dialplan.rb is the dialplan or programming part.

Config folder is the configuration part(Manger conffiguration,database connection etc)

Wirting first app

open dialplan.rb,copy paste the code.

sample {
play "hello-world"
}

Here sample is the context name that should be defined in the extensions.conf.Enable manger.conf add username and password in /etc/asterisk. Add the same in startup.rb in the config folder.Sample extension.conf will be like this

[sample]
exten => 123,1,AGI(agi://127.0.0.1)

start adhearsion: Enter into project folder then

ahn start <projectname>

Configure a SIP phone and make call to 123 extension we can see adhearsion answering the call. Have fun ..:)

Tags: , , , ,


Feb 02 2010

OpenBTS : An Opensource Telephone Network

Category: AsteriskBipin Balakrishnan @ 4:42 pm

Telecom industry is one of the rapid growing industry all over the world. The entrance of open-source team into the telcom industry  made a revolutionized change  in the industry. Asterisk was a typical example for it which was a featured PBX for home users, enterprises, VoIP service providers and telecoms in such a low cost that anyone even imagined.Asterisk is  both an Open Source Community and a commercial product from Digium.

Now again another open source coming which  allows standard GSM-compatible mobile phones to make telephone calls without using existing telecommunication providers’ networks.ie we can build up our own network just like vodafone,airtel or any.The project was started by Harvind Samra and David A. Burgess and named it as OpenBTS.. OpenBTS is notable for being the first free software implementation of the industry-standard GSM protocol stack.Thanks to them for making it possible.:)

A normal GSM network working is as follows.The end point of the system will be BTS (Base Transceiver Station) which send radio frequency singal to and from mobile devices or a modem.The BTScomes under BSC(Base station Controller) with makes the communication between there radio signals with  MSC/VLR.The MSC/VLR is responsible to authenticate the user against the database (HLR – Home Location Register, AuC -Authentication Center), call setup and call routing.A typical GSM network diagram is shown below.

Screenshot-1

The OpenBTS  replaces the entire setup with USRP(Universal Software Radio Peripheral), and a computer as hardware.USRP  to receive and transmit the GSM signaling(GNURadio is the driver software for this),OpenBTS package play the role of MSC/VLR and Asterisk software PBX will be used to connect calls.The below diagram shows a typical openBTS network.

Screenshot

Potential applications include:

  • rural/village telephony and text messaging
  • cellular coverage in remote areas (e.g. ships, oil rigs)
  • law enforcement and security operations
  • rapidly deployable emergency communications
  • network emulation and handset testing.

To know more click here.

Tags: , , ,


Oct 02 2009

YAML parser kit — PHP5 bindings

Category: AsteriskBipin Balakrishnan @ 8:54 pm

YAML(tm) (rhymes with ‘camel’) is a straightforward machine parsable data serialization format designed for human readability and interaction with scripting languages such as PHP, Perl and Python. YAML is optimized for data serialization,formatted dumping, configuration files, log files, Internet messaging and filtering. This specification describes the YAML information model and serialization format. PHP library packege php5-sync here parses YAML strings and converts them to PHP arrays. It can also converts PHP arrays to YAML strings.

Installing PHP binding of yaml

sudo apt-get install php5-sysc

Now you are ready to use YAML.

It’s tempting to think of YAML as being similar to XML, but in reality it’s not. Unlike XML, YAML doesn’t use elements and attributes to mark up data; rather, indentation is used to denote nested relationships, and punctuation elements like dashes (-) and colons (:) are used to mark lists and hashes of data items. To illustrate, consider the following simple YAML document, which sets up a hash containing five key-value pairs:
example of yaml file.

name : John Doe
tel  : 123-4567
fax  : 987-6543
email:
- john@domain.com
- jdoe@domain.com

Using yaml in php

Save the above example as sample.yaml

<?php
// get YAML data
$yaml = file_get_contents('sample.yaml');

// convert to PHP data structure and print
$data = syck_load($yaml);
print_r($data);
?>

will print the yaml in array format in the program

The reverse process will be like this.

<?php
// define PHP array
$data = array (
    'droids' =
array('r2d2', 'c3po'),
'heroes' =>
array(
'one' => array('luke', 'leia'),
'two' => array('han', 'chewbacca'))
);

// convert to YAML and print
$yaml = syck_dump($data);
echo $yaml;
?>


Aug 23 2009

Play youtube on chrome : Linux

Category: AsteriskBipin Balakrishnan @ 11:57 am

Chorme

Few days back i installed the debian version of chrome in my laptop seems to be very fast than any other browser.Fased an issue like unable to play youtube videos on the browser got a message like

“Hello, you either have JavaScript turned off or an old version of Macromedia’s Flash Player. Get the latest Flash player.”

Solution :

The chrome is not idetifying the  the path of flash player or the flash player is not installed. If not installed please install it first and if it is installed already enter into the default path of chorme installation ie /opt/google/chrome
find the location of flash module

sudo find / -name  libflashplayer.so

Give a softlink to the chrome folder .ie if you are in the chrome folder it will be like

sudo ln -s /usr/lib/adobe-flashplugin/libflashplayer.so .

Start the bowser with –enable-plugins to turn on the plugin.

Enjoy youtubing…..:)

Tags:


Apr 17 2009

Load Balancing Asterisk Servers

Category: AsteriskBipin Balakrishnan @ 6:31 pm

high-server-load-wordpress.jpg

Some of  common question among the asterisk users  are.

  • What is the minimum hardware to setup asterisk ?
  • How many simultaneous call can asterisk machine can handle?
  • How many E1s can be plugged to a single machine?
  • Which is the best server for call making?
  • How an asterisk machine can be tuned?

Lets start to Discuss from one by one.

Minimum Hardware to setup Asterisk

The answer is simple.All we need is a normal PC installed with any of the Linux flavour in it and a lan card  if we are trying to make SIP calls only.Not a single extra hard ware required.

How to make asterisk sip calls, i have mentioned in my previous posts.

Simultaneous call can asterisk machine can handle / Max E1s

Asterisk 1.2 start to run into problems around 220 concurrent SIP calls. Asterisk 1.4 scales much better and can handle nearly double the call setups/second as well as total concurrent traffic with a hard ware of dual core processor with 4GB RAM

Digium  claims asterisk can  handle up to 240 calls simultaneous in both SIP/ Zap channels.I have experience of setting of server for outdialing application which can make 240 simultaneous calls at a time, ie with 2 quad span card connected to 8 PRI lines.

Hardware configiration is :

Server : IBM System x3400

Card : Digium TE420P

RAM : 4GB

Processor : Dual-Core Intel Xeon Processor

Best server for call making

I have tried IBM System x3400, HP Proliant 110 G4 ,  IBM System x3200 for our IVR and outdialing application which handles minimum of 120 calls at a time and its running smooth without any issues.

Tuning asterisk Machine

The best practice to make your asterisk sever to get it maximum performance are

Try to implement almost every logic in dailplan itself.

Dial Plans are just like shell script, we can implement almost all our logic with it.Go forAGI if and only if we are 100% sure that i cant be done with dail plan only.The communication between the AGI scripts and Asterisk was via standard input and standard output writing and reading cause a large memory and CPU usage.

Turn off Log files.

Asterisk uses a too many log files while running.Logs files are good when used for debugging but once we got a stable asterisk running you can turn it off or make log rotate to empty log file once in a week.This will make huge difference in the load in the machine.

Can tun off the logging by editing /etc/asterisk/asterisk.conf also.

Tune mysql to its best

If we are using MySQL as our DB in the AGI scripts tuning will give us better performance. It can be done  indexing in tables,increasing concurrent connection parameter, threading parameter in the my.cnf file

Use FastAGI

Implements the Asterisk Gateway Interface (AGI) over TCP sockets. This can help alleviate CPU load on your telephony server by relocating resource hungry scripts to another networked server. In order to instruct Asterisk to attempt a network connection, you must supply the hostname or IP address of the server where your FastAGI service is hosted and preface it with agi://:

Those having similar experience  can share their questions and experiences here….:)

Tags: , ,


Apr 13 2009

BarCamp Kerala-2009

Category: AsteriskBipin Balakrishnan @ 8:08 pm

bck5green250.png
BarCamp Kerala is an ad-hoc gathering rooted in the desire to share and learn in an open & friendly environment. It is an intense yet cool, event with discussions, demos, and strong interactions. The 5th edition of BarCamp Kerala (BCK5), is scheduled to be on May 3rd, 2009, Sunday at TechnoPark, Thiruvananthapuram.


Jan 01 2009

Asterisk noise issue

Category: AsteriskBipin Balakrishnan @ 4:08 pm

A few weeks back  i faced a strange issue when installed asterisk in a server which uses ss7 line signalling.The issue was with the sound quality when making calls.Spoiled my two days with the issue and finally it got sloved. Here i am sharing my experience, hope it might be helpful for you guys.

Normally the noise issue can occur due to the following reason.

  • Hardware issue ( With Server / The card)
  • Codec Problem.
  • IRQ Sharing.
  • CPU load issue.

The Hardware issue

Please make sure that your server configuration is matching with what recommended by the digium. Please follow the link to choose your server.

http://www.voip-info.org/wiki/index.php?page=Asterisk+hardware+recommendations

If the server configuration is ok you can now double check the card, some time the card can also cause noice issue.Replace a the card and try again. Some card may have echo cancellation facility make sure that it is also enabled in the asterisk part also.

Codec Problem

A codec is a device or computer program capable of encoding and/or decoding a digital data stream or signal .Asterisk support different kinds of codes like gsm,wav,ulaw,alaw etc.The codec mostly used in gsm network is the gsm.Normally the MSC will convert any format to gsm format before transmitting to the mobile.If there you get a disturbed sound while making calls with a gsm format file try with wav format which is having a better sound quality than gsm.Please note to change the sound frequency that should be understood by asterisk (Asterisk normally understand sound in 8KHz ).

You can use sox for the sound conversion.

Example below converts a wav file to a file  with frequency 8KHz supported by asterisk.

sox file.wav -r 8000 -c 1 -s -w file1.wav resample -ql

IRQ Sharing

An interrupt is a method by which a piece of hardware communicates with the processor. It’s called an interrupt, because the device (such as a network card) interrupts the computer to carry out a function such as I received information, do something with it, or i’m ready with this task, give me a new one.

If  E1 card is sharing the IRQ with I/O devices the sound quality issue can occur  .We can check the interrupt status by using the command.

cat /proc/interrupts

If the any other resources is sharing the IRQ with the E1 card we can try options like putting up the card in another slot or can go to BIOS and can disable the interrupt sharing devices.

CPU load issue

The CUP load issue can be occured by many reason like MYSQL load, the  AGI programs load etc.We can see which process is consuming more memory-CPU by using the top command and can try to optimise it. Asterisk communicates with the AGI program over stdin and stdout. The arguments are passed directly to the AGI program at execution time.As AGI use  stdin and stdout reading and writing it will definitely affect the performance of the system.Better to implement almost all things in the dial plan itself. if your are 100% sure it can’t be done  with dial plan then move to AGI script.

Tags: , ,


Dec 04 2008

AsteriskNOW -Asterisk for normal users.

Category: AsteriskBipin Balakrishnan @ 10:19 pm

asterisknow-logo-sm.gif

Worried about installing the packages of asterisk??? .Fed up with the dependencies asking while installing the asterisk packages???? .AsteriskNOW is a solution for those who is not at all good in linux or dont have time for searching the dependencies.AsteriskNOW is an open source Software Appliance; a customized Linux distribution that includes Asterisk (the leading open source telephony engine and tool kit), the AsteriskGUI™, and all other software needed for an Asterisk system. AsteriskNOW is easy to install, and offers flexibility, functionality and features not available in advanced, high-cost proprietary business systems.

Any one who know to install linux OS can use asteriskNOW like installing a normal linux OS. AsteriskNOW can be called as Asterisk+Zaptel+Libpri installed in a CentOS.The user need or have to worry about installing these package separately and the dependency issue caused during the installation.

Due to some trademark issue the Digium renamed the Zaptel project as DAHDI.The configuration is almost same as like Zaptel.

Details should be available at http://www.asterisk.org/zaptel-to-dahdi

Configuration Files

/etc/zaptel.conf Becomes /etc/dahdi/system.conf
/etc/asterisk/zapata.conf Becomes /etc/asterisk/chan_dahdi.conf

Channel Name

Chennel “Zap” replaces as “DAHDI”

eg: For Zap : Zap/g2/984XXXXXXX

eg: For DAHDI : DAHDI/g2/984XXXXXXX

The CDR will be configured automatically, if you want cdr-mysql, you need to unstall mysql addon.You can search with it with ‘yum search cdr-addon’ and for installing can use ‘yum install cdr-addon’.

Asterisk can be started by using the command ‘amportal start’ .

We can also use ‘amportal stop’ or ‘amportal restart’ if asterisk is running already.

Tags: ,


Oct 11 2008

My experience in Open Source Asterisk Platform

Category: AsteriskBipin Balakrishnan @ 11:00 pm

200px-asterisk_logosvg.png
The story begins an year ago.

I was doing my Fifth Semester MCA at SNGIST College, Cochin,India. There was a main project to be done as a part of the course during this semester.  We had just finished our mini project (which happens just before the main project) the previous semester.  As the mini project didnt go the way I anticipated, I was breaking my head for the subject of this main project.

So many questions came to my mind, like the platform, learning the technology to be used, how to make it successful, etc, as this was  important in deciding a career.  Moreover there was the pressure as i thought it is the final semester project which decides our future career.

At this point of time, I got a call from a friend of mine, who told me about an opening in Telephony domain in Torque Technology Solution (Now named as MObME) at Technopark, TVM,India. He was working as a web developer   in that company.  This struck me with the idea of doing a Telephony project.  My thought went this way, if I happen go get a chance to do my project work in this company along with the job, I could very well venture into a career in Telephony domain. Moreover I have done my degree in Electronics and had some experince in telephony domain, earned by doing  an academic project in EBAPX during the final semester. I decided to apply for that job.

Later I was interviewed and they found me fit for that position.  More over, they agreed that I may do my project work there. Thus, on April 2007, I became an employee of Torque.

Until that time, i haven’t heard anybody  doing a project in this domain in the academic project , So there were lots of questions in my mind when I started; whether it would be accepted by the college, what is the future with this technology, will I be able to make a career out of it,etc.

But there were my colleagues in Torque for help. They were really passionate about this technology even though they didnt work on it a lot. They were my inspiration.  I started learning it with the support of Mr Sanil and Mr Kenny jecob who were the co-founders of the company.They taught me how to dig in to a technology and what are the tips for it. I managed to do my academic main project on asterisk in a short period of time which gave me lot of confidence and energy to learn and try more.

I started my experiments with dial Plans, followed by AGI.  During that time Hutchison Kerala, India came up with a project for developing a customer care application called 55555 IVR.  I was given this assignment and the application was intended to enable the subscribers hear various offers available to them by calling a toll free number 55555.  This project was successfully completed  with in a short time.We used PRI connectivity provided by the service Provider to implement this.As it was simple branching, I used only dialplan.Moreover  i was not having  deep understanding of AGI at that time.

Along with that assignment, I also worked for developing a web application for making calls to the gsm network for hutchison Kerala,India with the support of Mr Sanil.  Meanwhile Hutchison was taken over by Vodafone in India. My next assignment was to make the normal 55555 to a best offer IVR.The best Offer IVR announces the best Offer to the Customers depending on the validity and talktime available as well as the static offers. Now it has changed to three layers , the first layer consists of the dynamic offers depending on the previous recharge, the second layer consists of the dynamic offers depending on validity and talktime and third layer consists of various static offers. This project was completed successfully and now vodafone Kerala is using the IVR application as well as the outbound call application developed in Asterisk Platform.  We uses both ss7 and PRI connectivity for implenting this.
I have also done other projects on making on VoIP calls, Call Conference,Making Software as well as Hard ware PBX using the Asterisk platform.

More coming in the next posts.

Tags: , , , , , , , , , , , , ,


Next Page »