Biblioteca

Asterisk

Configuración de Zapata

Manuel Angel Rubio Jiménez

Documento bajo licencia FDL.

Historial de revisiones
Revisión 1.215-02-2009marj
Actualizado y pasado a DocBook para bosqueviejo.org
Revisión 1.105-08-2007marj
Liberación en Blog bosqueviejo.net
Revisión 1.015-09-2006marj
Curso para Xtreme Networks Europe, S.L. (LaTeX)

Resumen

Este documento se ha escrito para mostrar cómo se configura Asterisk para que haga de interfaz con la telefonía convencional a través del módulo Zapata Telephony o Zaptel. Cubre la forma en la que se presentan las tecnologías en España, la configuración del módulo, la comprobación de las líneas y el uso que hace Asterisk de ellas.


Introducción

La VoIP es una tecnología muy avanzada y que, cada día, se implementa más tanto en oficinas (PyMES), como en empresas que se dedican a la telefonía por Intenet, como son Voz Telecom, PeopleCall, Skype, etc.

No obstante, si esta telefonía no nos permite contactar con los que ya tienen un teléfono convencional, no es realmente un gran avance, por lo que la conversión entre la telefonía VoIP y la telefonía convencional es algo que debe de aparecer en todas las plataformas de VoIP que se instalen, sobre todo en el terreno de las operadoras.

El proyecto de Zapata Telephony lleva desarrollándose desde hace años, nació por la idea de llevar la gestión de las líneas telefónicas al ordenador. No obstante, también supuso un avance el hecho de que a través de las redes de datos, se pudiesen desarrollar conversaciones, por lo que la Voz sobre IP (VoIP) se afianzó con la posibilidad que proporcionaba el poder usar la telefonía convencional junto con las nuevas tecnologías.

Capítulo 1. Telefonía Convencional

Como telefonía convencional hemos metido en el mismo saco a las conexiones para llamadas realizadas a través de líneas analógicas del tipo FXO/FXS y las líneas digitales que son RDSI (o ISDN) y troncales o primarios de E1, T1 o J1.

Líneas Analógicas

Las líneas analógicas tienen dos conexiones, debido a su naturaleza, una de ellas se encarga de enviar una señal voltaica específica (FXS) y la otra la recibe (FXO). Esto quiere decir que solo se pueden conectar cables de FXS en conectores que sean FXO, y cables FXO en conectores que sean FXS. Tener muy en cuenta, puesto que la conexión de dos líneas FXS entre sí, puede derivar en que se queme alguna de ellas o ambas.

En España, estas líneas además, identifican cada acción del teléfono (cuelgue, descuelgue, tonos de llamada y contestación a la llamada) a través de un cambio de polaridad en la línea.

El sistema analógico de las líneas no permite el envío de mucha información sobre la misma, por lo que una línea solo porta, en algunos de los casos, la información sobre quién está realizando la llamada (identificación de llamada), pero no de a donde está realizando la llamada. Esto parece obvio que no es necesario, puesto que una línea analógica solo puede tener un número telefónico asociado, pero hay muchos servicios, como la línea de cabecera de salto, en los que sí puede ser muy útil saber sobre qué línea entró la llamada exactamente. No obstante, puede averiguarse por otros métodos, por lo que no es de gran importancia.

Líneas Digitales

Las líneas digitales son de dos tipos, principalmente, RDSI o troncales. Las líneas RDSI, o líneas digitales, se comenzaron a instalar en España hace más de diez años. Estas líneas garantizan un caudal de 64 kbps por canal, teniendo 3 canales por conexión, en las que se encuentran dos canales de voz y un canal de datos.

Cada canal de voz de las líneas digitales está digitalizado en formato PCM (Pulse Codification Modulation, Modulación por Codificación en Pulsos) con ordenación de bits del tipo A-Law, en Europa, y µ-Law, en Estados Unidos.

Las líneas de troncales son como las líneas de RDSI, solo que se codifican en TDM para soportar 24 canales en el estándar T1, usado en Estados Unidos, y 31 canales en E1, usado en Europa.

El estándar T1 tiene un canal de datos y 23 canales de voz, que están codificados de la misma forma que los ISDN de Estados Unidos. Además, el estándar de digitalización, a modo de poder detectar errores en la transmisión es el bz8s: Bipolar con sustitución de 8 ceros. Funciona de forma parecida a AMI bipolar, solo que en esta solución, cuando se encuentran ocho o más ceros consecutivos dentro del flujo de datos, que se realizan cambios artificiales de señal, con el fin de no perder la sincronización.

El estándar E1 tiene un canal de datos y 30 canales de voz, que están codificados de la misma forma que los RDSI de Europa. Además, el estándar de digitalización, a modo de poder detectar errores en la transmisión es el hdb3: Bipolar 3 de alta densidad que se parece al AMI bipolar, solo que cada vez que se encuentran cuatro ceros consecutivos cambia la polaridad. Además, se puede combinar con la detección de errores de tipo CRC4 (Control de Redundancia Cíclica de 4 bits).

Capítulo 2. Instalación del Módulo

Para comenzar, debemos de saber que la mayoría de hardware que se gestione dentro de una máquina, deberá de realizarse a través de un módulo dentro del kernel o cargable cuando sea necesario. El código fuente de ZapTel tiene los módulos necesarios para detectar todas las tarjetas sacadas al mercado por la compañía Digium, y algunas clónicas como las de OpenVOX. Para las tarjetas Sangoma, se deberá de instalar el paquete WAN pipe, que hace de transmisor entre el hardware de la tarjeta y el módulo de ZapTel.

Pondremos por ejemplo la versión actual de zaptel disponible, para una descarga, descompresión, compilación e instalación:

# cd /usr/src
# wget http://ftp.digium.com/pub/zaptel/releases/zaptel-1.2.6.tar.gz
[...]
# tar xzf zaptel-1.2.6
# ln -s zaptel-1.2.6 zaptel
# cd zaptel
# make install
[...]
# depmod -ae

Hay posibilidad de que se sucedan fallos de compilación. Es posible que se deba la falta de las cabeceras del código fuente del kernel que se esté utilizando. Según la distribución usada, se instalarán de una u otra forma, o habrá que compilar un kernel para tener esas cabeceras.

De todo lo instalado con el paquete zaptel, no solo tenemos los módulos, sino también:

  • ztcfg - Utilidad que se comunica con el módulo zaptel con el fin de hacer efectiva la configuración a usar (lee el fichero /etc/zaptel.conf pare ello).

  • zttool - Herramienta con entorno de ventanas en modo texto que permite ver las tarjetas operativas, o los span (para la configuración del software, los módulos consideran span todo conjunto de canales que se transmiten a través de un cable, esto quiere decir que las conexiones analógicas tendrán un canal por span, los E1 tienen 30 canales por span y los T1 tienen 23 canales por span) de las tarjetas, así como las alarmas que generan y, dentro de cada una de ellas, la información transmitida y recibida por cada uno de los canales que las componen.

  • ztmonitor - Realiza una visualización de un canal en concreto, permitiendo escuchar (si el equipo tiene instalada una tarjeta de sonido o volcando hacia un fichero) las llamadas que se cursen por dicho canal, incluso cuando esté inactivo, a modo de poder oír si se realiza adecuadamente el cuelgue y descuelgue de las líneas.

Según la tarjeta instalada, tendremos que cargar un módulo u otro. Para las tarjetas Digium de Primarios o Troncales, se suele utilizar el módulo wct4xxp para la de dos y cuatro span y el módulo wct1xxp para la que tiene un solo span. Las tarjetas analógicas de cuatro canales emplearán el módulo wcfxs y/o wcfxo, según los módulos que tengan instaladas físicamente estas tarjetas, o directamente el módulo wctdm.

Capítulo 3. Configurando el Módulo

Antes de cargar el módulo hay que configurarlo. Esta sección la dividiremos en dos partes bien diferenciadas: tarjeta analógica y tarjeta digital.

Tarjeta Analógica

La tarjeta TDM400P de Digium (o la A400P de OpenVOX), son tarjetas modulares, las cuales tienen para instalar en sus cuatro canales disponibles la combinación que se quiera de módulos FXS y FXO. Según la instalación física de esos módulos, vendrá la configuración del fichero zaptel que explicaremos a continuación.

En principio, vamos a suponer que dispone de una tarjeta TDM400P con 4 módulos FXO, es decir, a los que se van a conectar cuatro líneas telefónicas. Las opciones que encontrará en el archivo zaptel.conf son las siguientes:

fxsks=1-4
loadzone=es
defaultzone=es
[Importante]Importante

En las versiones comprobadas, desde la 1.2.4, la zona es existe, pero puede haber versiones anteriores en las que no exista, por lo que, si se debe de utilizar una versión más antigua, recomiendo que se miren los logs del sistema para detectar si existe registro de tonos.

La señalización a utilizar, ya que el módulo instalado es un FXO, será FXS. Hay varios tipos de señalización que podemos utilizar, uno es el ground start (fxsgs), otro es lo loop start (fxsls) y el que estamos usando es el kewl start. En España el que mejores resultado ofrece es el kewl start, pero si la instalación debe de hacerse hacia una PBX convencional de la que se tomarán las líneas de entrada o en conversión de una RDSI, quizás convenga más utilizar un loop start o ground start, respectivamente.

Con este fichero ya podemos proceder a la carga del módulo wctdm de la siguiente manera:

# modprobe wctdm
# ztcfg -vvvv

En caso de que tengamos algún error, deberemos revisar que:

  • Tenemos la tarjeta correctamente instalada y con un lspci podemos verla.

  • La tarjeta que estamos usando es la del ejemplo, una TDM400P o una A400P.

  • Los canales que queremos activar tienen su módulo FXO (rojo) correspondiente.

  • La compilación se realizó de forma satisfactoria y sin errores.

  • La configuración se ha realizado de forma correcta, copiada y pegada de la que aparece más arriba.

En caso de, en lugar de activar los cuatro canales, deseemos activar solo un canal de los cuatro, porque no dispongamos de más módulos o porque no queramos usar nada más que un canal para nuestra instalación de centralita, deberemos de configurar la opción fxsks de forma adecuada, poniendo el número de canal que vayamos a activar, siendo el menor número (1) el canal físico que está más lejano a la placa base y el mayor número (4) el más cercano a la placa base.

Además, esta tarjeta también puede ser configurada con módulos FXS (módulo verde), es decir, para conectar teléfonos analógicos directamente. Esta configuración tiene algo más de complejidad y no se suele dar, por lo que lo dejaremos para una futura revisión del documento.

Tarjeta Digital

Las tarjetas digitales pueden ser varias. Por no complicarnos mucho, comentaremos las tarjetas de primarios, que son las que se incluyen con el código de zaptel y dejaremos las tarjetas RDSI de Junghanns para una futura revisión del documento.

Una típica configuración de una tarjeta de 4 E1 sería de la siguiente forma:

span=1,0,0,ccs,hdb3,crc4
span=2,0,0,ccs,hdb3,crc4
span=3,0,0,ccs,hdb3,crc4
span=4,0,0,ccs,hdb3,crc4

bchan=1-15,17-31
dchan=16
bchan=32-46,48-62
dchan=47
bchan=63-77,79-93
dchan=78
bchan=94-108,110-124
dchan=109

loadzone = es
defaultzone = es

Como podemos ver, esta tarjeta se configura en varios pasos. Primero se especifica el formato de digitalización utilizado por cada uno de los span que hay activados (en este caso los cuatro). Cada línea de span detalla el número de identificación del span, el número de orden para tener en consideración la sincronización del sistema en relación a algún E1, la tabla de decibelios a la que se configura la línea o LBO, siendo 0 el valor estándar. Lo siguiente es la forma de enmarcación (framing) que para el E1 puede tomar los valores de cas (Señalización por Canal Asociado, se utiliza un canal específico para la señalización de todos los canales del sistema que normalmente es el canal 16 en E1) o ccs (Señalización por Canal Común, tras la desaparición de la telefonía analógica en las redes telefónicas, se utiliza principalmente el sistema de señalización por canal común (CCS), denominado Sistema de señalización por canal común nº 7 (SSCC-7, o SS7, de sus siglas en inglés) definido por el UIT-T el utilizado prácticamente en exclusiva). El formato de digitalización usado, pudiendo ser hdb3 o ami (Alternate Mark Inversion, es un método de codificación para E1 y T1 el cual consiste en la inversión de polaridad cada vez que se transmite un uno, y manteniendo la polaridad sin cambios en la transmisión de ceros) y por último, un valor que solo es válido para E1 y es si se utilizará crc4. En caso de no requerir este último parámetro, basta con ignorar desde la última coma hasta el final y dejarlo en blanco.

La configuración de los span para una línea de T1 sería exactamente igual, salvo que el parámetro de enmarcación (framing) podría tomar los valores d4 (el antiguo sf o superframing) o esf, y el formato de digitalización puede tomar los valores de b8zs o ami, no siendo posible incluir crc4 para esta configuración.

La parte de los canales es propia de los E1. La disposición dentro de cada span de los canales siempre es de la misma forma, es decir, se reservan los primeros 15 canales (1-15) para voz, el canal 16 es para datos y sincronización y el resto de los canales (17-31) son los 15 canales de voz restantes.

Una configuración de canales de T1 sería de la forma:

span=1,0,0,esf,b8zs
span=2,0,0,esf,b8zs
span=3,0,0,esf,b8zs
span=4,0,0,esf,b8zs

bchan=1-23
dchan=24
bchan=25-47
dchan=48
bchan=49-71
dchan=72
bchan=73-95
dchan=96

loadzone = us
defaultzone = us

Donde se ve que los canales se reservan los primeros 23 completos para voz y el último, el 24, para datos y sincronización. Además, vemos la configuración estándar de la mayoría de proveedores de telefonía en Estados Unidos.

Con cualquiera de los dos ficheros anteriores, teniendo en cuenta si tenemos el jumper de la tarjeta configurado en T1 o E1, ya podemos pasar a cargar el módulo wct4xxp de la siguiente forma:

# modprobe wct4xxp
# ztcfg -vvvv

Capítulo 4. Configurando Asterisk

Una vez que los canales, ya sean analógicos o digitales, se configuren a través del módulo, ya pueden ser utilizados por asterisk para gestionar las llamadas entrantes y enviar llamadas a través de ellos. Lo único que nos falta es configurar estos mismos canales a través del módulo de asterisk.

Así mismo, igual que hicimos al comentar el archivo de zaptel, ahora también realizaré una partición entre la configuración de una tarjeta digital y una tarjeta analógica, puesto que las opciones de configuración también difieren.

Tarjeta Analógica

Si seguimos el ejemplo anterior de configurar una tarjeta TDM400P de cuatro canales FXO, el archivo zapata.conf del directorio de asterisk de configuración podría quedar de la siguiente forma:

[channels]
language=es
context=1

signalling=fxs_ks

usecallerid=yes
hidecallerid=no
callwaiting=yes
usecallingpres=yes
callwaitingcallerid=yes
threewaycalling=yes
transfer=yes
canpark=yes
cancallforward=yes
callreturn=yes

echocancel=yes
echocancelwhenbridged=yes
echotraining=yes

rxgain=0.0
txgain=10.0

group=1
callgroup=1
pickupgroup=1

immediate=yes

answeronpolarityswitch=yes
hanguponpolarityswitch=yes

faxdetect=incoming
musiconhold=default

channel => 4

Los parámetros que se definen son: el language (idioma) como dos letras, el context (contexto) donde entrarán las llamadas recibidas por estas líneas, la signalling (señalización) que usará la línea (al igual que en el fichero zaptel de configuración), algunos valores más sobre las llamadas entrantes como si desea usar el identificador de llamada (usecallerid), si desea ocultar el identificador de llamada (hidecallerid), si espera para recibir el identificador de llamada (callwaitingcallerid), si permite la llamada a tres (threewaycalling), si permite la transferencia de llamada (transfer), si permite que se pueda aparcar la llamada (canpark), si permite lanzarse la llamada y retornar (cancallforward y callreturn).

También hay opciones que tienen que ver con el eco, como son el echocancel (cancelador de eco), el cual se puede activar o no, la opción echocancelwhenbridged (cancelar el eco cuando se puentee una llamada) y el echotraining (el entrenador de eco, que se puede establecer a yes, a no, o a un valor en milisegundos, que será el tiempo en el que entrenará el eco el sistema).

Para la ganacia de sonido, por si el sonido entrante o saliente se escucha muy bajo, se permite subir en razón de decibelios el mismo a través de los parámetros rxgain (ganancia de recepción) y txgain (ganancia de transmisión).

Las opciones de grupo permiten a los canales pertenecer al mismo grupo para facilitar opciones como la captura de llamada. Estas opciones son group (grupo), callgroup (grupo de llamada) y pickupgroup (grupo de captura).

Si se quiere que el sistema tarde un tiempo en contestar la llamada, puede configurarse la opción immediate (inmediato) a no, si se quiere conseguir lo contrario, que se descuelgue nada más recibir el primer tono, se configura al valor yes.

En España se tienen cambios de polaridad para detectar cuando se comienza una llamada y cuando se termina la misma, por lo que habrá que configurar los parámetros answeronpolarityswitch y hanguponpolarityswitch al valor yes.

En otros países, como UK, la configuración del archivo zapata.conf varía sustancialmente de la siguiente forma:

[channels]
language=en
context=1

signalling=fxs_ks

usecallerid=yes
cidsignalling=v23
cidstart=polarity
hidecallerid=no
callwaiting=yes
usecallingpres=yes
callwaitingcallerid=yes
threewaycalling=yes
transfer=yes
canpark=yes
cancallforward=yes
callreturn=yes

echocancel=yes
echocancelwhenbridged=yes
echotraining=yes

rxgain=9.0
txgain=7.0

group=1
callgroup=1
pickupgroup=1

immediate=yes

faxdetect=incoming
musiconhold=default

channel => 1-8

Las últimas opciones nos refieren a la faxdetection (detección de fax), que puede ser del tipo incoming (de entrada), outgoing (de salida) o both (ambos). Así mismo, la musiconhold (música en espera), puede configurarse a algún valor (según su fichero de configuración) que por defecto será default.

Los canales se configuran con la orden channel. Esto permite que se configuren opciones, como las anteriores, se especifiquen los canales y se puedan definir más canales, después de otras opciones que modifiquen las anteriores para los subsiguientes canales a definir.

Tarjeta Digital

Para la tarjeta digital, un archivo de ejemplo de zapata puede ser el siguiente, el cual pertenece a una configuración típica de una tarjeta TE405P de 4 E1:

[channels]
language=es
context=1

switchtype=euroisdn
signalling=pri_net

usecallerid=yes
transfer=no
hidecallerid=no
threewaycalling=no
callwaiting=no
callwaitingcallerid=no

echocancel=yes
echocancelwhenbridged=yes
echotraining=yes

rxgain=1.0
txgain=1.0

accountcode=telecom
amaflags=billing

musiconhold=default

group=1
channel => 1-15,17-31

group=2
channel => 32-46,48-62

group=3
channel => 63-77,79-93

group=4
channel => 94-108,110-124

A diferencia de la opción signalling de la tarjeta analógica, en este caso, no es exactamente igual. Se debe de especificar el switchtype al valor euroisdn (para E1) y los valores de signalling podrán ser: pri_cpe o pri_net.

Este tipo de tarjetas suele utilizarse para sistemas de conmutación (switching), por lo que se suelen establecer cuentas de usuarios por canales y sistemas de facturación. Esto se hace a través de las opciones accountcode, donde se define la cuenta de usuario; y amaflags, donde se especifica el tipo de registro que se guardará, siendo el más típico el tipo billing.

Un ejemplo con uso de T1 y señalización estadounidense es el siguiente:

[channels]
language=es
context=1

switchtype=national
signalling=pri_cpe

usecallerid=yes
relaxdtmf=yes
transfer=no
hidecallerid=no
threewaycalling=no
callwaiting=no
callwaitingcallerid=no

echocancel=yes
echocancelwhenbridged=yes
echotraining=yes

rxgain=1.0
txgain=1.0

accountcode=telecom
amaflags=billing

musiconhold=default

group=1
channel => 1-23,25-47,49-71,73-95,49-71,73-95

Capítulo 5. Conclusiones

Con estos comentarios no debería de haber problema para configurar líneas analógicas y líneas digitales del tipo troncal (E1 o T1), no obstante, cualquier comentario será bienvenido para reeditar el documento y que sirva de ayuda para cualquier configuración futura de este elemento de software.