Encamiñamento de chamadas a través do provedor máis económico
Introdución
A existencia de múltiples provedores de VoIP, con diferentes tarifas, ubicacións, etc., fan necesaria a existencia de ferramentas para conseguir, en tempo real, realizar unha chamada ao menor custo posible. Asterisk::LCR proporciona esta funcionalidade, aínda que con algunhas limitacións.
Asterisk::LCR (Least Cost Routing)
LCR son un conxunto de ferramentas Perl open-source pensadas para xestionar de xeito eficiente múltiples provedores de VoIP en Asterisk, de forma que sempre se seleccione o máis económico.
Configuración
Unha vez instalado o módulo Asterisk::LCR hai que escribir o ficheiro de configuración /etc/asterisk-lcr.cfg que será similar ao seguinte:
[storage] package = Asterisk::LCR::Storage::DiskBlob.pm [comparer] package = Asterisk::LCR::Comparer::XERAND currency = eur [dialer] package = Asterisk::LCR::Dialer::MinCost locale = es limit = 3 [import:voipjet] package = Asterisk::LCR::Importer::VoIPJet dial = us IAX2/login@voipjet/REPLACEME [import:nufone] package = Asterisk::LCR::Importer::NuFone dial = us IAX2/login@NuFone/REPLACEME
O significado das distintas seccións é o seguinte:
- [storage]. Nesta sección defínense o mecanismo de almacenamento de datos. É posible usar algún xestor de base de datos como MySQL.
- [comparer]. Aquí defínise a estratexia de comparación. Pódese usar unha que, por exemplo, compares as tarifas sen ter en conta certos detalles, como o establecemento de chamada ou a facturación por minuto. A través do atributo package pódese cambiar a estratexia. De momento, só hai dous módulos (packages) de comparación escritos, XERAN e DUMMY. Para escribir módulos propios pódese consultar a páxina de manual de Asterisk::LCR::Comparer.
- [dialer]. Nesta sección inclúese a estratexia de marcación. Actualmente hai dúas, 'MinCost' que tenta minimizar o custo para unha ruta dada probando co operador máis económico ata o máis caro, cun límite de 3 provedores; 'MinTime' que minimiza o PDD (Post-Dialing-Delay ou Retardo-Post-Marcación) probando os tres provedores máis baratos ao mesmo tempo. Máis información sobre esta sección nesta páxina.
- [import:XXX]. Por último, defínense que tarifas de que provedores se quere importar / descargar. Hai unha sección para cada provedor e debe seguir a nomenclatura [import:<nome>]. O nome non se pode repetir en cada sección import. No exemplo hai dous provedores. No primeiros deles o parámetro 'dial' é unha plantilla, 'us' indica que VoIPJet utiliza o estilo de marcación US e IAX2/login@voipjet/REPLACEME hai que reemprazalo cun login real. Tamén REPLACEME ten que reemprazarse cos datos reais cando se xenere o dialplan. Suponse tamén que a definición do peer voipjet se atopa no ficheiro iax.conf baixo a sección [voipjet]. Os provedores soportados son:
- Asterisk::LCR::Importer::NuFone
- Asterisk::LCR::Importer::PlainVoIP
- Asterisk::LCR::Importer::RichMedium
- Asterisk::LCR::Importer::VoIPJet
Utilización
Crearase un directorio temporal onde copiar a ferramenta LCR:
mkdir /tmp/lcr
Unha vez que se teña escrito o ficheiro de configuración hai que seguir tres pasos:
- Paso 1: importar as tarifas dos provedores. O seguinte comando importa todos os provedores definidos na seccións [provider:nome] e gárdaos en disco nun formato normalizado:
cd /tmp/lcr asterisk-lcr-import
- Paso 2: xerar a árbore LCR, que creará unha árbore de "<prefix> => [ lista de tarifas ordenadas ]" a partir das tarifas importadas no paso anterior:
cd /tmp/lcr asterisk-lcr-build
- Paso 3: xerar un dialplan optimizado que se pode cortar e pegar (ou mellor incluír mediante include) no dialplan do Asterisk.
cd /tmp/lcr asterisk-lcr-dialplan >/etc/asterisk/lcr-dialplan.conf
Localización da ferramenta
En relación coas opcións dependentes de cada idioma/país, Asterisk::LCR pode xerar dialplan adaptados a cada un. Os ficheiros para as opcións de localización están no cartafol /lib/Asterisk/LCR/Locale/.
Actualmente, hai dúas táboas de tradución implementadas: us.txt (para a marcación US-style) e fr.txt (para Francia + chamadas extranxeiras).
Información para desenvolvedores e descarga
Para descargar o códig fonte e obter información para desenvolvedores temos as seguintes páxinas: