Archive for the ‘voip’ Category

Instalando y configurando iptables en centos

November 8, 2008

Entramos en materia, iptables es un firewall tipico de instalaciones linux:

1.- Instalacion usando yum:

yum install iptables

2.- Crear un archivo de texto de configuracion (usando nano o vim):

nano /etc/sysconfig/iptables

# By default drop all incoming and forwarded traffic

# Allow all outgoing traffic
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]

# Puerto 80 http para los diferentes servicios web que podamos tener
-A INPUT -p udp –dport 80 -j ACCEPT

# Puerto Protocolo Dundi
-A INPUT -p udp –dport 4520 -j ACCEPT

# Puerto IAX
-A INPUT -p udp –dport 4569 -j ACCEPT

# Puerto SIP
-A INPUT -p udp –dport 5060 -j ACCEPT

# Puertos RTP media (este rango de puertos luego debemos indicarselo al asterisk)
-A INPUT -p udp –dport 10000:20000 -j ACCEPT

# Allow incoming SSH (el 22 es el puerto por default)
-A INPUT -p tcp –dport xxxx -j ACCEPT

# Allow ping
-A INPUT -p icmp –icmp-type ping -j ACCEPT

# Allow local traffic
-A INPUT -i lo -j ACCEPT

# Allow ping
-A INPUT -p icmp –icmp-type ping -j ACCEPT

COMMIT

Importante es abrir el puerto xxxx de ssh, (22 por defualt)

Guardamos el archivo y debemos reiniciar iptables:

service iptables restart

Aparecera:

Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: filter [ OK ]
Unloading iptables modules: [ OK ]
Applying iptables firewall rules: [ OK ]

Chequeo general:

iptables -L

Para terminar tenemos que decirle a asterisk que use los puertos desde 10000 hasta 20000 para el protocolo RTP:

abrimos el archivo

vim /etc/asterisk/rtp.conf

quitamos (si lo hay) el punto y coma antes de [general]

En rtpstart ponemos 10000 y en rtpend ponemos 20000

rtpstart=10000
rtpend=20000

Guardar el archivo y reiniciar asterisk:

/etc/init.d/asterisk reload

SiVuS: un escáner de vulnerabilidad para las redes VoIP

October 12, 2008

SiVuS es un escáner de vulnerabilidad para las redes VoIP que utilizan el protocolo SIP. Este escáner proporciona varias características para verificar la robustez y para asegurar la implementación de una red VoIP segura.

Las características de este escáner son las siguientes:

Generador de mensajes SIP: puede ser utilizado para enviar varios tipos de mensajes a un componente del SIP incluyendo contenido del SDP. Esta característica se puede utilizar para probar ediciones específicas del SIP o para generar varios ataques, como por ejemplo un ataque de denegación de servicios.

Explorador de componentes del SIP: explora una gama de direcciones IP para identificar los anfitriones que utilizan el protocolo SIP y se puedan utilizar como blancos para el análisis adicional. Es una opción del explorador que permite el descubrimiento preliminar de blancos antes de una exploración real.

Explorador de la vulnerabilidad del SIP: El explorador proporciona la configuración flexible de varias opciones que se puedan utilizar, para verificar la robustez y la seguridad de una implementación del protocolo SIP. Se realizan chequeos como: análisis de las cabeceras de mensajes del protocolo SIP para identificar vulnerabilidades tales como desbordamientos del buffer o ataques de denegación de servicio, autentificación de mensajes que identifican componentes del SIP, autentificación de las peticiones del registro, inspección para las comunicaciones seguras (SIPS) y verificación de las capacidades de cifrado.

Componente de log: posee un completo sistema de log en HTML que permite omitir mensajes de error para hacer logs mas fáciles de comprender, también posee base de datos para históricos.

Ayuda del SIP: el interfaz de SiVuS proporciona ayuda rápida en los aspectos más comunes sobre SIP que pueden ser útiles a un usuario mientras que realizan SiVuS. La ayuda del SIP proporciona información sobre última versión del estándar RFC 3261 (SIP), muestra también ayuda a un usuario para construir mensajes del SIP a través del generador.

Descarga Sivus 1.09:
http://www.vopsecurity.org/sivus-1.09.exe

Manual Sivus 1.09:
http://www.vopsec.net/SiVuS-User-Doc.pdf

Seguridad en VoIP a través del protocolo ZRTP.
http://vtroger.blogspot.com/2007/10/seguridad-en-voip-travs-del-protocolo.html

Herramienta de test de penetración para VoIP:
http://vtroger.blogspot.com/2007/10/herramienta-de-test-de-penetra

Servicios de call center con asterisk

October 3, 2008

AACC

AACC (short for Asterisk Advanced Call Center) is an underway project which aims to create a full CTI solution for the Asterisk PBX.

It is written in Java, which makes it operating system independant.

It will feature:

  • Inbound call center
  • Outbound call center
  • Blending
  • Multi-customer
  • Per campaign custom data and products
  • Agent toolbar for CTI
  • Use of Asterisk queues and agents facilities
  • Agent screen pops
  • Multicampaign predictive dialing
  • IVR-only, agent-only, and IVR+Agent type campaigns.
  • Powerful, customizable reporting
  • Highly scalable solution
  • Instant messaging
  • DNC lists
  • Automatic and manual call rescheduling

GnuDialer

GnuDialer is a predictive dialer for linux.

Current Features include:

  • Multiple Modes: predictive, power, preview, auto
  • Web CRM interface – record is automatically populated when a call comes in
  • Web admin interface
  • Capable of FCC Compliance
  • and much more…

Visit GnuDialer.org for more details.

The above url is the original gnudialer site (which hasn’t seen an update in ages).

RAGUI: GUI para Asterisk en RealTime

September 17, 2008

RAGUI es un GUI de asterisk en tiempo real: Realtime Asterisk uses the MySQL relational database to access dialplan, extension and configuration data. This allows for dynamic additions and changes to users, extensions and dialplans without having to restart or reload the system.

Es una opcion que ya me baje y estoy viendo si la puedo instalar en mi debian siguiendo y adaptando el manual suministrado para centos, si tengo exito pronto publicare el manual adaptado.

http://www.ragui.net/download.php

click2call con una extension de firefox

September 6, 2008

http://www.interlinkweb.com/blog/post.aspx?id=314

How to Make Phone Calls through Switchvox from Your Firefox Browser

Switchvox Fire DialerLast week I received a new snom 320 phone from our Network Administrator who is building out our VoIP Network and being an IT guy I set out to discover extensible features. So, as I find them I’ll post about them here.

Switchvox has authored the Switchvox Fire Dialer Extension; it’s a Firefox Browser Plug-in that integrates the Browser with Switchvox to make VoIP calls directly from your computer.

I found this plug-in to be exceptionally simple to install and configure. Here are the steps I took.

Things You’ll Need

  1. VoIP capability on your network.
  2. Firefox Web Browser.
  3. A microphone and speakers or a headset on your PC.
  4. Inform your Network Administrator.

Regarding #3, you’ll definitely want to discuss this with your Network Administrator first because having phone conversations through your PC is going to put some voice traffic on your network. Our VoIP implementation that we have in our offices today is segmented such that our Voice and Data are on separate network segments and so trying out the Fire Dialer meant that I’d be taking voice over the Data network. Not a huge deal for a single user but that might present some problems for our Data Applications if everyone in our office attempted to do this.

Step 1

Environment

Determine what version of Firefox you’re running by clicking the Help Menu and then selecting “About Mozilla Firefox.

Determine your version of Firefox

You can locate the version number here.

Firefox Version Number location

Step 2

Download

Download (opens new window) the Fire Dialer plug-in that supports your Firefox Web Browser version. The download options will look like this.

Fire Dialer Download Link Options

After clicking the Download link the Firefox plug-in installer dialog will launch. Click the “Install” button.

Fire Dialer Install Dialog

Note: I have verified directly with Digium that this plug-in was created by Switchvox. I don’t have any reason to believe that they should not be a trusted source.

Once the installation is complete you’ll be prompted to re-start Firefox.

Step 3

Configuration

After you’ve restarted the Firefox web browser you’ll need to configure Fire Dialer. To do so, go to the Tools –> Add-ons menu option.

Firefox Add-ons Management

This will launch Add-ons management console. Click the Options button for Fire Dialer.

Firefox Ad-ons Management Console

You’ll need to add some information here.

  1. The IP Address of the PBX (Switchvox box for me).
  2. Your Phone extension.
  3. Your Phone password.

Fire Dialer Configuration

Click Save. You’re now ready to go dialing!

Step 4

Kick the Tires

Using your Firefox web browser, navigate to a web page that has a Phone Number displayed as text. I’ve navigated to our Home Page.

Web Page Phone Numbers

Over-score the Phone Number that you wish to call.

Highlighted Phone Number for Fire Dialer

Place your mouse cursor over the over-scored phone number and right click on your mouse. This will launch the context menu. Choose the Dial option and get ready to call.

Fire Dialer Context Dialing Menu

Oh, make sure that you either have your headset on or your mike and speakers ready

AGI EN ASTERISK

September 6, 2008

A simple AGI scripting engine with Asterisk-Java


Introduction
Asterisk, the well known free PBX, exposes great integration potentialities. Specifically , we’re interested in AGI (Asterisk Gateway Interface), a sort of API for scripting the engine.
Today we’ll face a java interface for AGI: asterisk-java. We’ll use this easy library to build a scripting engine. The used scripting language is BeanShell, but you can virtually use any language supported by the Sun jdk (python,ruby,groovy, javascript etc.).

Asterisk-Java and AGI – some code

The library asterisk-java is of immediate use; its simplest use is based on fastagi protocol, and though it also exposes a Manager API, fastagi will be enough for this article purposes . To build our scripting engine we just need to subclass “BaseAgiScript” and override its “service” method. From the AgiRequest object we’ll grab the parameter we’re interested in, “script”, which is just the name of a beanshell script we want to execute. We’ll then pass a reference of our class, the AgiRequest and the AgiChannel object to the beanshell interpreter, launch a global script that defines some utility functions (see below) and finally launch the requested script. The approach is quite flexible, our script engine doesn’t need to be on the same computer the pbx is on, and we can add/modify our scripts on the fly without need for compilation or engine restart.


package org.beanizer.bagiserver;


import bsh.EvalError;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.asteriskjava.fastagi.AgiChannel;
import org.asteriskjava.fastagi.AgiException;
import org.asteriskjava.fastagi.AgiRequest;
import org.asteriskjava.fastagi.BaseAgiScript;

import bsh.Interpreter;

public class BAgiServer extends BaseAgiScript{

public BAgiServer() {
}

public void service(AgiRequest request, AgiChannel channel)
throws AgiException {

Interpreter interp=new Interpreter();
try {
String script=((request.getParameter("script")!=null) && !( request.getParameter("script").equals("") ) )
        ? request.getParameter("script") : "../scriptlib/default";
interp.source("scriptlib/bagi_import.bsh");
interp.set("bagi",this);
interp.set("request",request);
interp.set("channel",channel);

interp.source("scripts/"+ script +".bsh");

} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} catch (EvalError ex) {
ex.printStackTrace();
}
}

}

A “fastagi-mapping.properties” file must exists on the classpath of the scripting engine and should contain something like this:

server.agi = BAgiServer

where “server.agi” is the agi script name called from asterisk, to be mapped to “BagiServer”, our class name.

We also need to add a call to our engine from asterisk’s dialplan, so in “extensions.conf” we’ll add something like:


exten => 1200,1,Agi(agi://localhost/server.agi?script=scriptname)

where “1200″ can be an extension number of your choice, “localhost” is the server your scripting engine is hosted on, “server.agi” is the name we’ve mapped for our scripting engine and “scriptname” is the name of the beanshell script we want to invoke(without .bsh extension).

When someone will try to call extension “1200″, the specified agi script will be executed.

In our source code you can see we’re using two directories relative to the base classpath of BAgiServer:

  • “scriptlib”, wich contains scripts “default”(called if no script name is passed as parameter), and “bagi_import” ( where we put generic functions we can use from other scripts).
  • “scripts” , containing all the user defined scripts.

Obviously these paths are arbitrary and you can choose differently. Now let’s have a look at our beanshell scripts.

bagi_import.bsh
This is an utility script automatically included each time the engine gets called, so we should put here all the general purpose functions. Here is how it is now:



import
org.asteriskjava.fastagi.AgiChannel;
import org.asteriskjava.fastagi.AgiException;
import org.asteriskjava.fastagi.AgiRequest;
import org.asteriskjava.fastagi.BaseAgiScript;

import org.beanizer.bagiserver.BAgiServer;

BAgiServer bagi;
AgiRequest request;
AgiChannel channel;

say(String string){
java.rmi.server.UID uid=new java.rmi.server.UID();
String command="echo '" + string + "' | text2wave -scale 8 -o "+ "/tmp/"+uid.toString() +".ulaw -otype ulaw -";
channel.exec("System",command );
channel.streamFile("/tmp/" +uid.toString());
channel.exec("System","rm /tmp/"+ uid.toString() +".ulaw" );
}
answer(){
channel.answer();
}
hangup(){
channel.hangup();
}
getDigits(int number){
StringBuffer sb=new StringBuffer();
for(int t=0;t<number;t++){
sb.append(channel.waitForDigit(10000));
}
return sb.toString();
}

wait(int millis){
(new Thread()).sleep(millis);
}

Here we basically import some useful classes, instantiate BAgiServer,AgiRequest and AgiChannel, and then define some functions. These just do what their names say, note how most of the time we just wrap AgiChannel’s methods (“answer” and “hangup” i.e.).

“getDigits”, makes use of the method “waitForDigit” of AgiChannel to wait for the user to input a number of digits specified by the function parameter and returns the entire number as a string.

“say”, is used to achieve text-to-speech. Instead of using festival or flite, here we use a lighter approach. Using the “exec” method of AgiChannel we launch “text2wave” on the pbx host (so text2wave must be installed there), and save the resulting sound file in a tmp directory with a random name.

We then use “streamFile” to stream the sound to the user and finally delete the sound file from the tmp directory.


default.bsh


This is called when no script to be executed has been specified.


answer
();
wait(1000);
say("No script defined");
wait(1000);
hangup();

As you can see, it makes use of the functions defined in bagi_import.bsh. It answers the call, waits for a second, says a phrase, waits another second and then hangs up.

test.bsh


And now an example of a user defined script. This script must reside in the “scripts” directory, and the agi call from asterisk should be something like this:
exten => 1200,1,Agi(agi://localhost/server.agi?script=test)

And here is the code:


import org.asteriskjava.fastagi.command.*;
answer();
wait(1000);
say("Please, enter extension code");
String code = getDigits(3);
say("Trying to call extension:");
channel.sayDigits(code);
channel.exec("ChannelRedirect", channel.getName() + "|from-internal|" + code + "|1");
hangup();

I’m sure you can appreciate how easy it is now to write a script. In this case the script answers and waits for a while, then asks for an extension number to be dialed, reads aloud the dialed code and then tries to redirect the call to the requested extension, using th “ChannelRedirect” asterisk command. Then it hangs up.

If you want to test this approach, here are a couple of guidelines:

  • The directory structure should be like this:

basedir
scriptlib
bagi_import.bsh
default.bsh
scripts
your_scripts_go_here.bsh
lib
asteriskjava.jar (the name depends on the version)
beanshell.jar (the name depends on the version)
bagiserver.jar (it’s just org.beanizer.bagiserver.BAgiServer.class jarred)
fastagi-mapping.properties

  • from “basedir”, start the engine including in your classpath the “lib” dir and all the jars it contains, and launching the class org.beanizer.bagiserver.BAgiServer
Conclusions

The proposed is just a skeleton of what could grow as a more complete agi scripting engine for java (or even ruby,python,javascript,groovy) developers involved in integrating asterisk with other platforms.
It’s quite easy to extend the engine by adding methods in the java class or, better, by adding functions to bagi_import.bsh

Proyectos opensource relacionados con telecomunicaciones

August 30, 2008

CSCF

SER
O projecto SER – Sip Express Router é muito popular na comunicade open-source. As vantagens deste pacote são:

• Servidor SIP gratuito com alto desempenho e elevada flexibilidade.
• Pode actuar como servidor SIP Proxy, Redirect e Registrar.
• Pode-se facilmente construir novos módulos para serem adicionadas novas funcionalidades.
• O mais popular na comunidade Open Source.
• Adoptado por diversos vendedores e universidades.

As desvantagens são:
• Não é IMS compliant. Necessita de desenvolvimento.

Tambien tenemos en este lado los siguientes proyectos, todos probados por nosotros:

Openser, opensips, kamailio.

OpenIMS Core
O projecto open-source IMS Core é desenvolvido pelo instituto Fraunhofer Institute FOKUS e pretende colmatar o vazio existente no mundo do open-souce em relação ao IMS. O objectivo do projecto é criar uma comunidade de developers de componentes para redes de próxima geração IMS.

As vantagens deste pacote de software são:
• Implementa o CSCF e HSS.
• O CSCF é baseado no SER (SIP Express Router) mencionado em cima. Do qual retira as suas vantagens.
• É IMS compliant evitando a necessidade de integração.
• A sua interoperabilidade tem sido testada com produtos IMS comerciais.
• Disponibiliza uma interface ISC (IMS Service Control) para permitir à camada de aplicação a criação de serviços IMS para várias plataformas (SIP AS, OSA/Parlay ou IN através do IM-SSF)

HSS

OpenIMS Core
Como mesmo as funções mais básicas de encaminhamento de sinalização no IMS necessitam de uma consulta ao HSS, este foi incluido no OpenIMS Core para permitir uma utilização normal do mesmo. Assim sendo, o Open IMS core disponibiliza uma implementação simples HSS, o FOKUS Home Subscriber Server (FHoSS).

As vantagens deste pacote de software são:
• É IMS compliant evitando a necessidade de integração.
• É o único HSS open-source encontrado.

MRF

Asterisk PBX
O Asterisk PBX é provavelmente o IP PBX open-source mais populal. O projecto é gerido pela Digium e é utilizado por outros projectos open-source como o TrixBox para criar uma solução para call centers, por exemplo.

As vantagens deste pacote de software são:
• Servidor PBX IP gratuito com alto desempenho e elevada flexibilidade.
• Pode actuar como servidor SIP Registrar, location server e pode actuar como UAC.
• O mais popular na comunidade Open Source.
• Adoptado por diversos vendedores e universidades.
• É integrado em projectos como o TrixBox que pode ser uma óptima solução para um pequeno call-center IP
• Pode funcionar como Gateway SIP-PSTN usando placas Digium ou Sangoma.
• Pode actuar como Gateway SIP-SS7 usando as mesmas placas e a libraria libSS7.
• Pode funcionar como como Gateway SIP-3G usando a libraria h324m da sip.fontventa.com
• Tem capacidade de áudio e vídeo-conferência com o meetme e app_mixer, respectivamente.

As desvantagens são:
• Não é IMS compliant. Necessita de desenvolvimento.

SEMS – Sip Express Media Server
O SEMS é baseado no software open source SER (Sip Express Router) desenvolvido pela iptel.org. Corre em linux e é distribuido com uma variedade de exemplos de aplicações como voicemail, IVR, audio conferencia, etc.

As vantagens deste pacote de software são:
• Baseado no SER que é conhecido pelo seu alto desempenho e elevada flexibilidade.

As desvantagens são:
• Não é IMS compliant. Necessita de desenvolvimento.

CallWeaver
O CallWeaver, anteriormente conhecido como Open PBX é um spin-off do Asterisk PBX mas licenciado sobre a licença GNU GPL. Assim sendo, ambos os projectos partilham um código base identico mas o CallWeaver tem uma comunidade de desenvolvimento menor o que o torna menos atraente.
Mais informações em: www.openpbx.org

As vantagens deste pacote de software são:
• Partilha código com o Asterisk.

As desvantagens são:
• Não é IMS compliant. Necessita de desenvolvimento.
• Comunidade de desenvolvimento menos que a do Asterisk.

SIPfoundry Sipx
A SIPfoundry é uma comunidade open source community que fornece varios development kits SIP e VoIP.A sua stack SIP é usada em diversos produtos e a solução sipX PBX é usada por muitas empresas. Este projecto está ligado aos productos Vision permitindo interoperabilidade com RDIS e SS7.

As vantagens deste pacote de software são:
• Solução robusta.

As desvantagens são:
• Não é IMS compliant. Necessita de desenvolvimento.
• Não tem suporte para H.323 ou outros protocolos além do SIP.

YATE
O Yet Another Telephony Engine é um PBX e cliente open source com recursos SIP, H.323 e IAX. Funciona como um tradutor SIP-H.323. (suportado comercialmente pela Null Team).

As vantagens deste pacote de software são:
• Solução interessante para gateway SIP-H.323.
• Pode funcionar como Gatekeeper H.323.

As desvantagens são:
• Não é IMS compliant. Necessita de desenvolvimento.

FreeSWITCH
A FreeSWITCH é uma plataforma de telefonia open source telephony desenhada para facilitar a criação de produtos orientados à voz e chat. Pode ser usado apenas como um motor de comutação, uma media gateway ou um media server com aplicações de IVR criadas usando scripts ou XML.
Suporta diversos protocolos como SIP, H.323, IAX2 e GoogleTalk making it easy to interface with other open source PBX systems such as sipX, OpenPBX, Bayonne, YATE or Asterisk.

As vantagens deste pacote de software são:
• Suporta diversos protocolos (SIP, H.323, IAX2 e GoogleTalk).

As desvantagens são:
• Não é IMS compliant. Necessita de desenvolvimento.

Bayonne
O GNU Bayonne é um servidor de telefonia open source que oferece um ambiente de desenvolvimento sistemas escalaveis e independents da media usada.

As vantagens deste pacote de software são:
• Desenvolvido pela GNU.

As desvantagens são:
• Não é IMS compliant. Necessita de desenvolvimento.
• O projecto parece estar parado.

Vovida Vocal
O projecto parece estar parado e há dificuldades em aceder ao site.

SIP AS

SIPSEE
O SIPSEE (SIP Servlet Execution Environment) é a solução da FOKUS para desempenhar o papel de SIP Application Server (SIP AS) com base em SIP Servlet Technology. O SIPSEE intregra a camada Application Layer e dá aos serviços IMS a capacidade de controlo das sessões multimédia sobre SIP/HTTP/Diameter.
O SIPSEE actua como um SIP proxy, SIP Redirect ou um B2BUA (Back to Back User Agent). A API (Application Programming Interface) usada pelo SIPSEE é compativel com o JSR116 – SIP Servlet API 1.0 que tem vindo a ser adoptada como API HTTP Servlet.
O SIPSEE foi desenhado e impelmentado com suporte para SIP e HTTP de modo a permitir o acesso a serviços IMS por parte de clientes SIP ou através de browser HTTP potenciando serviços como o Click2Dial, See What I See, etc. Desta forma, une os protocolos mais usados da internet e do VoIP.

As vantagens deste pacote de software são:
• IMS compliant.

Mobicents
O Mobicents é o SIP Application Server server mais popular para a plataforma Java.

As vantagens deste pacote de software são:
• IMS compliant.
• Muito popular.

WeSIP
WeSIP é um SIP e HTTP Application Server implementado sobre o OpenSER. Não é open source. Gratuito para uso não comercial.

As desvantagens deste pacote de software são:
• Não é open source. Gratuito para uso não comercial.

User Equipment

IMS Communicator
O IMS Communicator é desenvolvido pela PT Inovação, SA. Implementa um UE (User Equipment) IMS com capacidades vídeo.

As vantagens deste pacote de software são:
• IMS compliant.
• Suporta vídeo.
• É open source (nesta secção só dois produtos são open source).

OpenIC
O OpenIMS Client é desenvolvido pelo instituto Fraunhofer Institute FOKUS e implementa um UE (User Equipment) IMS permitindo o acesso aos serviços multimédia de uma rede IMS.

As vantagens deste pacote de software são:
• IMS compliant.

As desvantagens são:
• Não é open-source.

UCT IMS Client
O OpenIMS Client é desenvolvido pelo instituto Fraunhofer Institute FOKUS e implementa um UE (User Equipment) IMS permitindo o acesso aos serviços multimédia de uma rede IMS.

As vantagens deste pacote de software são:
• IMS compliant.
• É open source (nesta secção só dois produtos são open source).

As desvantagens são:
• Pode revelar problemas de interoperação já que claramente afirma que foi construído para ser usado com o OpenIMS Core.
• Tem alguns bugs conhecidos.

X-Lite
Desenvolvido pela CounterPath. Não é open-source mas é gratuito. É um softphone não IMS-compliant mas muito popular e com capacidades vídeo.

As vantagens deste pacote de software são:
• IMS compliant.

As desvantagens são:
• Não é open source.

SJphone
Não é open-source mas é gratuito. É um softphone não IMS-compliant mas muito popular.

As desvantagens deste pacote de software são:
• Não é IMS Compliant.
• Não é open source.

Kapanga
Não é open-source mas é gratuito. É um softphone não IMS-compliant mas com muitas opções de configuração. Dispõe de uma versão para Windows Mobile. Dispõe de codecs vídeo como o H.264 e áudio como o AMR (na versão paga).

As desvantagens deste pacote de software são:
• Não é IMS Compliant.
• Não é open source.

Stacks Diameter

OpenBloX
O OpenBloX é um framework Java Diameter open source para implementação de interfaces IMS Diameter conforme a especificação 3GPP e 3GPP2. É mantido pela Traffix Systems.

OpenDiameter
Open Diameter é uma libraria C++ que potencia implementação do protocolo Diameter e suporta Linux, BSD e Microsoft Windows. Mais informação pode ser encontrada em http://www.opendiameter.org/

JDiameter
JDiameter é uma API e implementação do protocolo Diameter em Java. Mais informação pode ser encontrada em https://jdiameter.dev.java.net/.

Ferramentas de teste

Seagull
É um gerador de trafego multi-protocolo da HP orientado ao IMS.

Sipp
É um gerador de trafego SIP.

Tutorial de openimscore: Instalando open ims en forma exitosa en debian

August 19, 2008

IMS significa IP Multimedia subsystem, la 3GPP normalizo la evoluciòn de las redes a un all ip con una serie de servicios en una arquitectura unica agnostica del medio de acceso: fijo, movil, cable, etc. Dentro de los moviles no importa el acceso tambien: CDMA1x, EVDO, GSM, UMTS, HSDPA, HSUPA, LTE, etc. El core IMS en su arquitectura esta concebido para interactuar con cualquier medio de acceso, por lo cual esta basado en una serie de servidores, en su forma mas basica: CSCF y HSS. El primero (CSCF) esta dividido en tres fundamentales: P-CSCF (proxy sip), I-CSCF (interrogating call sesion control function) y el S-CSCF (service call sesion function. A este nivel hablamos de un core all ip, con transoporte TCP/UDP, y con protocolos bien especificos y definidos: sip, diameter entre otros. Los organismos encargados de estandarizar: 3GPP(GSM/UMTS), 3GPP2(CDMA/EVDO) y TISPAN (fijo).

Este ecosistema es un crisol de oportunidades para usar tecnologias basadas en open source, ya que en teoria con un puñado de servidores con linux (o cualquier otro OS) podriamos empezar a dar servicios tipo IMS. Tambien se supone que la integraciòn de nuevos servicios a la red deberia ser mucho mas rapido que los actuales, ya que no se deberia diseñar cada servicio para cada red especifica, sino que todos los aplication server irian contra el s-cscf, o en su defecto contra el sdp (service delivery platform), que no es mas que otro servidor contra el cual descargar procesamiento del s-cscf, a su vez agregar un punto de monitoreo de calidad y ofrecer a terceros proveedores conectar sus AS (aplication server) a nuestra plataforma IMS sin que le metan mano a un elemento sensible en la estabilidad de la red como el S-CSCF. Esto podria ir desde aplicaciones de juegos online, mapas, planos, servicios basados en localizacion, incluyendo aplicaciones tipo touch screen, por ejemplo hacemos un dibujo sobre la pantalla tactil de equipo y lo transmitimos a los compañeros de un meeting remoto, a su vez podriamos estar en una videoconferencia con otro grupo de trabajo, respondiendo un email urgente a nuestro jefe y esperando por una transferencia bancaria. El unico limite aqui seria el ancho de banda disponible, la tecnologia alambrica o inalambrica utilizada, la capacidad de procesamiento de los servidores (CSCF y HSS) y la imaginacion.

Para la conexion a redes legacy esta estandarizado el MGCF (media gateway control function, el cual tiene fncionalidad de softswitch) , y los MGW (MediaGateway) que permiten la conversion de protocolos, codecs y señalizacion (Signaling Gateway), estos elementos nos permiten conectividad y continuidad de la red IMS hacia otras redes legacy.

En definitiva IMS ofrece un estandard de evoluciòn a los operadores, respetando la integracion e interconectividad con otras redes IMS y legacy, ademas de ser un gran integrador de servicios diversos, los cuales podrian ser agregados a la red en una forma mucho mas rapida y transparente, menor tiempo de integracion de servicios influye directamente en los costos.

IMS puede ser visto como el esfuerzo de tratar de unificar en una sola plataforma el acceso a servicios compartidos por diferentes tipos de metodos de acceso (sean fijos o moviles). Es tambien una arquitectura estandarizada que busca hacer mas eficiente y rapido la forma en que son accesados y desplegados dichos servicios. De esta forma con un IMS core bien estructurado y estandard, las empresas de telecomunicaciones podrian asegurar la inversion de las plataformas de servicios asi cambien en forma radical el metodo de acceso (cable, ADSL, EVDO, UMTS, WIMAX, LTE, etc).

Tambien puede ser visto como la inclusion de un core que permite la horizontalizacion de las plataformas de servicios, en las cuales los elementos comunes de control, autenticacion, base de datos podrian estar en servidores comunes (HSS, I-CSCF, S-CSCF) y solo el servicio como tal en servidores individuales.

Aqui tratamos sobre como compilar y poner en funcionamiento un sistema IMS basado en open source: openimscore. Este proyecto es llevado por el grupo FOKUS, grupo sin fines de lucro que se encarga de desarrollar tecnologias open source al mundo de las telecomunicaciones. Aqui esta estudiado para ser implementado sobre una plataforma debian, tambien podria ser instalado sobre una maquina virtual tipo vmware con linux.

Open IMS es una excelente oportunidad de estudiar y aprender mas sobre IMS, de probar y armar maquetas que podrian servir para mostrar y experimentar con los tiempos de integracion de los servicios. No es una plataforma diseñada con fines de ofrecer servicio comercial debido principalmente a estas carencias:

- Plaforma de monitoreo,

- Plataforma de operacion y mantenimiento (O&M)

- Servidores redundantes, en caso de falla, asegurar la alta disponibilidad de la plataforma.

- Sistema de aprovisionamiento

- Seguridad

- Estadisticas

- Integracion a billing, generacion de cdr, etc.

Procedimiento aplicado a servidor Debian ETCH, version de kernel 2.6.18

1.- Instalar subversion:
apt-get install subversion

2.- Crear el siguiente directorio:
mkdir /opt/OpenIMSCore/
chown -R username /opt/OpenIMSCore/

3.- Crear los directorios CSCFs y FHoSS:
cd /opt/OpenIMSCore
mkdir ser_ims
mkdir FHoSS

4.- Bajarse la ultima version de open-ims via subversion:

svn checkout http://svn.berlios.de/svnroot/repos/openimscore/ser_ims/trunk ser_ims svn

svn checkout http://svn.berlios.de/svnroot/repos/openimscore/FHoSS/trunk FHoSS

5.- Chequear que todos estos paquetes esten correctamente instalados, la version de java debe ser >=1.5.0:

apt-get install mysql-server libmysqlclient15-dev libxml2 libxml2-dev bind ant flex bison

Agregar a sources.list este repositorio:

deb http://ftp.es.debian.org/debian/ etch main contrib non-free

deb-src http://ftp.es.debian.org/debian/ etch main contrib non-free

Con este repositorio nos aseguramos que vamos a tener java-1.5.0

Luego no olvidarse de hacer:

apt-get update
apt-get install sun-java5-jdk

Tambien podemos buscar las fuentes de la pagina de sun y compilar el proyecto completo.

Despues de instalar mysql tambien debemos setear una password, ya que por default esta en blanco:

mysqladmin -u root password ‘my_password’

Arranque del servidor mysql:

/etc/init.d/mysqld start

6.- Configurar servidor DHCP y DNS:

Editar el archivo /etc/dhcp3/dhclient.conf y desmarcar esta linea:

prepend domain_name_servers 127.0.0.1;

Copiar este archivo a la carpeta de trabajo:

sudo cp /opt/OpenIMSCore/ser_ims/cfg/open-ims.dnszone /etc/bind/

Agregar estas lineas al archivo: /etc/bind/named.conf.local

zone “open-ims.test” {

type master;

file “/etc/bind/open-ims.dnszone”;

};

Despues reiniciamos el servicio de DNS:

/etc/init.d/bind9 restart

El archivo open-ims.dnszone se crea en la compilacion del proyecto, luego hay que copiarlo de la carpeta /opt/OpenIMSCore a la carpeta /etc/bind
En este archivo debemos cambiar la ip por default (127.0.0.1) por la IP publica, y luego este DNS propio sera seteado en la configuracion TCP/IP (propiedades) como DNS a ser escogido en las otras maquinas en donde tendremos los clientes SIP e IMS.

Aunque si bien es cierto que el estandard IMS de la 3GPP habla de un servidor dns para resolver el nombre del dominio, tambien es posible configurar del lado del cliente el archivo host con una entrada que indique la equivalencia dominio-ip. En cualquier sistema operativo esto es posible. En windows por ejemplo esta en:

C:\WINDOWS\system32\drivers\etc

Con esto nos ahoramos el servidor dns por lo menos de una manera experimental (laboratorios, maquetas, etc)

7.- Compilacion del proyecto:

En /opt/OpenIMSCore/ser_ims

make install-libs all

Setear las variables de entorno de java:

export JAVA_HOME=”/usr/lib/jvm/java-1.5.0-sun/jre/”

Compilar el FHoSS en /opt/OpenIMSCore/FHoSS

ant compile deploy

Una vez que esta compilado en proyecto debemos copiar los siguientes archivos al directorio de trabajo /opt/OpenIMSCore/ por cuestiones de comodidad mas que necesidad:

cp /opt/OpenIMSCore/ser_ims/cfg/* /opt/OpenIMSCore/

8.- Configurar las bases de datos:

Debemos colocarnos en el directorio /opt/OpenIMSCore/:

# mysql -uroot -p < /opt/OpenIMSCore/ser_ims/cfg/icscf.sql
# mysql -uroot -p < /opt/OpenIMSCore/FHoSS/scripts/hss_db.sql
# mysql -uroot -p < /opt/OpenIMSCore/FHoSS/scripts/userdata.sql

9.- Poner direccion IP publica y dominio propio

Podemos setear nuestro propio dominio de tres formas:

  • Tenemos un dominio por el cual pagamos
  • Configuramos nuestro DNS server (bind) para que haga la traduccion, en ese caso solo tenemos que configurar en la configuracion TCP/IP de todos los clientes que se quieran conectar a nuestra red que usen nuestro DNS, eso no interfiere con su navegacion normal ya que tendremos el cuidado de configurar correcatmente las opciones de conectarse a otros DNS publicos a traves del nuestro.
  • Usar un servicio gratuito de DNS tal como no-ip o algun otro servicio gratuito de traduccion


Hay que cambiar un monton de cosas en los archivos de configuraciòn, pero es facil usando el script:

./configurator.sh

Esta ubicado en /opt/OpenIMSCore/

Este script cambia la IP por default (127.0.0.1) por la IP que quieran poner, tambien pregunta para cambiar el dominio open-ims.test por cualquier otro. Cambia los archivos .cfg, .xml y .properties

10.- Arreglar archivo hss.properties para poder conectar via web con IP publica

Este archivo esta ubicado en: /opt/OpenIMSCore/FHoSS/deploy. Este archivo no lo modifica el script anterior asi que debemos hacerlo a mano.
Aqui debemos abrir el archivo en cuestion y cambiarle la IP por default (127.0.0.1) por la IP
publica del servidor.

Para conectar a la pagina web del HSS y poder ver usuarios, agregar usuarios y modificar servicios ponemos en cualquier navegador:

IP del servidor HSS:8080

Claves por default:

Clave administrador: hssAdmin
Pwd: hss

Clave usuario solo lectura: hss
Pwd: hss

11.- Arranque del sistema

El sistema arranca desde cuatro shell serparados en este orden, en modo root, en el directorio /opt/OpenIMSCore/ y se deben ejecutar los siguientes scripts: pcscf.sh, icscf.sh, scscf.sh (es recomendable respetar el orden). Estos script arrojan algunos errores en el proceso de arranque por que es imposible tener los tres levantados al mismo tiempo, pero luego que el sistema esta arriba no hay problema (no es mayor motivo de alarma).

Por ultimo en el directorio /opt/OpenIMSCore/FHoSS/deploy/ el script: startup.sh

Para simplificar el trabajo podemos hacer un script como el que vemos aqui:

#!/bin/bash
sleep 1
gnome-terminal -e ./icscf.sh
sleep 1
gnome-terminal -e ./scscf.sh
sleep 1
gnome-terminal -e ./pcscf.sh
sleep 1
gnome-terminal -e ./fhoss.sh

La ultima linea arranca el FHoSS.

12.- ¿Como probar el sistema?

Yo he probado el x-lite, aunque no es un cliente IMS propiamante dicho, tiene muchas funcionalidades interesante. Su configuracion es muy sencilla, solo debemos recordar que la autenticacion es del tipo md5 y no akav, por lo tanto debemos modificar esto en el hss via web y luego agregar estas lineas en el archivo scscf.cfg en el directorio: /opt/OpenIMSCore/
Estas lineas le indican al S-CSCF que el desde el HSS se decide el tipo de autenticaciòn por suscriptor:

modparam(“scscf”,”registration_default_algorithm”,”HSS-Selected”)

Se debe marcar con numeral (#) las otras opciones para evitar conflictos.

En este archivo hay varias opciones: solo autenticar digest-MD5, solo AKAV1, solo AKAV2, etc.

Hay otros tipos de clientes IMS propiamente dichos, procedo a enumerarlos, interesante seria tener algunos que podamos probar en una red celular, y que ademas a esta plataforma le agreguemos un gateway que permita hacer el puente a redes legacy y que seamos visibles desde esas redes con un numero propio de esta redes.

Puertos que se usan en IMS:

Elemento

Port Number

P-CSCF

4060

I-CSCF

5060

S-CSCF

6060

Diameter

3868, 3869, 3870

El Proxy-Call sesion control function (P-CSCF) contra el que se registran los equipos via sip usa el puerto 4060, ojo con esto que debemos indicarselo a los clientes IMS o SIP.

13.- Configuracion del sistema open-ims con cada servidor en una plataforma

De esta forma es posible tener cada servidor CSCF en una maquina diferente, aumentando la eficiencia de la plataforma.


14.- Uso de asterisk como aplication server

Tambien es posible usar asterisk como aplication server, debido a lo versatil de la plataforma asterisk, los AGI y la cantidad de opciones de desarrollo elaboradas para esta plataforma la hacen muy util como servidor de aplicaciones. Hay varios servidores de aplicacion que podemos probar.

SIPSEE
SIPSEE (SIP Servlet Execution Environment) es una solucion de FOKUS para funcionar como SIP Application Server (SIP AS). Este provee soporte multimédia sobre SIP/HTTP/Diameter.
Actua como un SIP proxy, SIP Redirect o B2BUA (Back to Back User Agent). Un API (Application Programming Interface) es usada y es compatible con JSR116 – SIP Servlet API.

SIPSEE es diseñado e implementado con soporte para SIP y HTTP y permitir el acesso a servicios IMS de clientes SIP a través de un browser HTTP potenciando servicios como Click2Dial, See What I See, etc.

Este software es IMS compliant.

Mobicents
Mobicents es un SIP Application Server mas popular para la plataforma Java.

Ventajas:
• IMS compliant.
• Bastante conocido y con mucho soporte.

WeSIP
WeSIP es un SIP y HTTP Application Server implementado sobre OpenSER. No es open source. Gratuito para uso no comercial.

Desventajas:
• No es open source. Gratuito para uso no comercial.




script para arranque automatico para openimscore

August 16, 2008
http://ubuntuforums.org/showthread.php?p=4894356


##scripting.sh
#!/bin/bash
sleep 1
gnome-terminal -e ./icscf.sh
sleep 1
gnome-terminal -e ./scscf.sh
sleep 1
gnome-terminal -e ./pcscf.sh
sleep 1
gnome-terminal -e ./fhoss.sh

#!/bin/bash
cd /opt/OpenIMSCore/
./scscf.sh


Algunos clientes IMS

August 15, 2008

Con la maqueta de open ims core funcionando aparece la necesidad de conseguir clientes IMS y sip con los cuales podamos probar:


There are several IMS clients out there recently, which can be used with the Open IMS Core.

  • FOKUS’ OpenIC (Open IMS Client) is available only commercially (Contact: info@open-ims.org). Yet, there is also a free binary OpenIC_Lite version available right here
  • The UCT IMS Client which is available under the GPL
  • The IMS Communicator, also under the GPL

Instale el ultimo y lo estoy probando a ver que tal, hasta el momento veo que tiene una pinta bastente fea pero hace lo que tiene que hacer…pero como siempre digo este tema esta evolucionando a una velocidad vertiginosa, conasulten siempre las fuentes: http://www.openimscore.org/node/72

Openser, OpenIMS Core, kamailio, linux, asterisk……


Follow

Get every new post delivered to your Inbox.