Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Enlace E1

Descargar como odp, pdf o txt
Descargar como odp, pdf o txt
Está en la página 1de 61

Asterisk y MFC-R2

Moiss Humberto Silva Salmern <moises.silva@gmail.com>


http://www.moythreads.com/
Febrero 2008

Agenda

MFC/R2

Zaptel

spandsp y libsupertone

Unicall

libmfcr2

Asterisk (chan_unicall)

Problemas comunes

MFC/R2

Protocolo peer-to-peer de sealizacin telefnica arcaico.


Permite la transmisin de DNIS (nmero destino), ANI (nmero orgen o
CallerID) y categora de abonado.
El protocolo se compone de 2 tipos de seales:

Seales Supervisoras de Linea

Seales de Inter-Registro Multi Frequencia (MF)

Las seales supervisoras son usadas para sealizar el estado de la linea:

Tomar troncal (Seize)

Confirmacin de toma de troncal (Seize ACK)

Contestar (Answer)

Bloquear ( Block )

Terminar ( Clear Forward & Clear Backward )

MFC/R2

Las seales de inter-registro son transmitidas mediante 15 diferentes tonos


multi-frequencia, similares a DTMF, pero se utilizan pares de frequencia
distintos.
Las 15 seales de inter-registro son identificadas usando los dgitos del 0 al 9 y
las letras de la B a a F.
El significado de las seales de inter-registro pueden variar de un pas a otro,
pero son usadas para la transmisin del ANI, DNIS y la categoria.
Las mismas 15 seales son separadas en grupos dependiendo del contexto en
el que son usadas.

Grupo A y I (Intercambio de DNIS y ANI)

Grupo B y II (Listos para contestar o colgar)

Grupo C y III (Intercambio de ANI o DNIS)

MFC/R2

La sealizacin MFC/R2 (MultiFrequency Compelled Region 2) puede utilizar


distintos medios de transmisin. Los 3 ms comunes son:

Digital R2: Usado en las troncales E1

R2 Anlogo: Viejas redes que usaban relays para la transmisin.

Pulse R2: Usado en redes de transmisin lenta como conexiones


satelitales.

Cuando se usa una E1 para la transmisin de la sealizacin R2, se utiliza CAS


(Channel Associated Signaling) para las seales supervisoras y el canal de
datos para las seales de inter-registro multi-frequencia (MF).
Las seales supervisoras son multiplexadas usando los bits CAS ABCD por el
canal 16 para todos los 30 canales restantes cada 2ms.
Solo los bits AB cambian, CD permanecen en una posicin base dependiente
del pas.

MFC/R2

Una llamada R2 se puede resumir de la siguiente forma:

La central que desea iniciar la llamada (C1) posiciona los bits ABCD para
indicar la toma de troncal.

La central receptora (C2) confirma que est lista para iniciar la llamada con un
seize ack.

C1 detecta el seize ACK. Esto significa que C2 est lista para recibir tonos
multi-frequencia para la transmisin del ANI y DNIS.

C1 envia el primer dgito del nmero destino (DNIS) enviando un tono MF


constante del 0-9. El tono permanecer hasta no recibir confirmacin o
hasta que el timeout del ciclo MF expire.

C2 debe confirmar la recepcin del dgito DNIS enviando su propio tono MF


para solicitar el siguiente dgito DNIS o solicitar la categora de abonado y
los dgitos ANI primero.

Cuando ANI, DNIS y la categora han sido transmitidos C2 debe enviar un tono
MF para aceptar o colgar la llamada.

Despus de aceptar la llamada, los tonos MF finalizan. Al contestar la llamada


C2 debe posicionar los bits ABCD en la forma indicada para Answer
indicando que la linea fu contestada.

A partir de este momento tanto C1 como C2 pueden posicionar los bits ABCD
en la forma clear backward o clear forward para colgar la llamada.

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

MFC/R2

Zaptel

Los drivers de zaptel son una interface hacia el hardware telefnico.


Son requeridos para enviar buffers de datos hacia el otro lado de la E1 y los
bits CAS ABCD.
Los bits ABCD de cada uno de los 31 canales viajarn sobre el canal 16 cada
2ms, por lo que el span de zaptel debe ser CAS.
Los tonos MF viajaran usando las rutinas de envio de buffers de datos por cada
canal que establezca una llamada.
Esto significa que los tonos MF efectivamente viajan por el mismo punto por
donde viajar la voz durante la llamada.

Zaptel

La instalacin se lleva a cabo simplemente descomprimiendo el tar de zaptel y


ejecutando make && make install.
Los headers del kernel son requeridos. Usualmente disponibles bajo paquetes
como kernel-devel o kernel-headers, dependiendo de la distribucin Linux.

Nota que los drivers sern instalados en /lib/modules/`uname -r`

Al finalizar, un reboot es siempre saludable.

Para verificar tu instalacin, puedes hacer un 'ls /proc/zaptel' y cada span debe
encontrarse listado.
'cat /proc/zaptel/1' mostrar la configuracin del span 1.
zttool es siempre til para ver las alarmas y los bits ABCD recibidos y
enviados, de esta forma puedes corroborar si la central ya desbloqueo tus
canales.

Zaptel

La configuracin tpica de 2 spans E1 para MFC/R2 es:

span=1,1,0,cas,hdb3

span=2,2,0,cas,hdb3

cas=1-10:1101

El span debe ser configurado como CAS para hacer uso de los bits ABCD para
las seales supervisoras de linea (Answer, Clear, Blocked, Idle).
Los canales deben ser configurados como CAS tambin y especificar el valor
default de los bits ABCD que sern utilizados al cargar el driver.
El valor default debe ser 1101 para especificar Blocked, ya que al cargar el
driver todava no podemos recibir llamadas, los bits pasarn de Blocked a
Idle cuando algn programa como Asterisk (chan_unicall) o testcall
inicien.
dchan puede ser usado, pero es innecesario.

SpanDSP

Libreria de funciones DSP (Digital Signal Processing) para telefona.


SpanDSP es usualmente la primer libreria en instalarse para el soporte de R2,
dado que no tiene dependencias en software de soft-switch.org.
Requerimos algunas interfaces de SpanDSP para la deteccin y generacin de
tonos multi-frequencia (MF) requeridos por MFC-R2.
libmfcr2 se encargar de usar las interfaces de SpanDSP para leer o escribir el
ANI, DNIS y categoria.
Los errores de dependencia ms comunes con SpanDSP son:

libxml2 y libxml2-devel ( lectura de configuraciones para tests )

libtiff y libtiff-devel ( para el soporte para FAX )

libsupertone

Libreria para la deteccin y generacin de tonos de supervisin de todas


partes del mundo.
No detecta ni genera los tonos por si sola, depende de SpanDSP.
Depende tambin de libxml2 y libxml2-devel para leer el archivo de
configuracin /usr/share/spandsp/global-tones.xml
Un error comn es configurar el paquete de spandsp con ./configure
prefix=/usr pero el paquete de libsupertone con el default /usr/local, esto
puede provocar que no se encuentre el archivo global-tones.xml
No es necesario configurar global-tones.xml, los defaults son correctos. La
nica razn para editarlo es para alterar las frequencias de los tonos de
supervisin (busy, congestion, ringback etc).

Unicall (libunicall)

Unicall o libunicall, es una librera para la abstraccin de la sealizacin


telefnica.
Contrario a lo que comunmente se cree, Unicall no es propiamente el soporte
de R2 para Asterisk, Unicall desconoce R2 y desconoce a Asterisk.
Unicall requiere de mdulos adicionales para ser usada en cualquier proyecto
de telefona.
Unicall no depende directamente de spandsp, libsupertone o alguna otra
libreria.
Unicall depende indirectamente de libmfcr2 para poder trabajar con R2.
Cuando a Unicall se le solicita trabajar con R2 cargar dinmicamente y en
tiempo de ejecucin a libmfcr2.
El resultado de la compilacin de Unicall es libunicall y testcall. Libunicall es la
libreria y testcall un programa para pruebas de llamadas.

libmfcr2

libmfcr2 es una pseudo-libreria destinada a funcionar como mdulo o driver de


protocolo para Unicall.
libmfcr2 depende de SpanDSP para generar los tonos multi-frequencia
requeridos por la sealizacin R2 para las seales de ANI, DNIS etc.
Zaptel tambin es una dependencia de libmfcr2, ya que necesita las interfaces
de zaptel para transmitir los bits ABCD, el audio generado por SpanDSP y la
voz de las llamadas.
La interface de SpanDSP deber ser compatible, errores en compilacin
usualmente significan el uso de una versin de zaptel o spandsp
incompatible.

Asterisk (chan_unicall.so)

Dado que Unicall fu diseada como una libreria o framework para el manejo
de sealizacin telefnica de forma genrica, su uso no est restringido a
Asterisk.

chan_unicall es la interface entre Asterisk y Unicall.

chan_unicall depende de la interface que Asterisk expone hacia su core.

chan_unicall depende de la interface expuesta por Unicall.

chan_unicall depende de la interface a spandsp y libsupertone para la


generacin de DTMF y tonos de supervisin.
chan_unicall no sabe ni depende de ninguna forma de libmfcr2.
Versiones incompatibles de Asterisk, Unicall, SpanDSP o libsupertone pueden
causar errores de tiempo de ejecucin o de compilacin en chan_unicall.

Asterisk (chan_unicall.so)

chan_unicall no est incluido con Asterisk debido a que Asterisk es duallicensed y chan_unicall y sus dependencias son puramente GPL.
Usualmente es requerido bajar chan_unicall.c y el parche para el Makefile de
los canales de Asterisk para compilarlo.
Una opcin viable es bajar el paquete astunicall de
http://www.moythreads.com/astunicall/ que ya contiene zaptel, spandsp,
libsupertone, libunicall, libsupertone y una versin de Asterisk con
chan_unicall incluido.

Componentes

Problemas Comunes

Las principales causas de problemas con R2 en Linux son:

Multiples componentes requeridos y distintos grupos o personas


responsables de su desarrollo y mantenimiento.

La infraestructura requerida por Unicall, aunque facilita el manejo de


distintos protocolos, la gran mayora de sus usuarios solo requiere
el soporte de R2, las distintas capas de software solo agregan
puntos de falla entre sus interfaces.

Las multiples variantes de R2 y poca documentacin al respecto


incrementan la confusin por parte de los usuarios.

Problemas Comunes

Las principales causas de problemas con R2 en Linux son:

Multiples componentes requeridos y distintos grupos o personas


responsables de su desarrollo y mantenimiento.

La infraestructura requerida por Unicall, aunque facilita el manejo de


distintos protocolos, la gran mayora de sus usuarios solo requiere
el soporte de R2, las distintas capas de software solo agregan
puntos de falla entre sus interfaces.

Las multiples variantes de R2 y poca documentacin al respecto


incrementan la confusin por parte de los usuarios.

Problemas Comunes

Unicall/12 protocol error. Cause 32769

Revisa la lista de errores en libmfcr2.h

Un tono MF de salida ha excedido el tiempo de espera. 32769

Un silencio MF de salida ha excedido el tiempo de espera 32770

Un ciclo MF de entrada ha excedido su tiempo de espera 32771

Seal MF no esperada 32772

Seal CAS no esperada 32773

Estado invlido (BUG) 32774

Falla para establecer seal CAS 32775

Tiempo de espera excedido para el seize ack 32776

Error de I/O 32777

Timeout de seguridad expir - 32778

Problemas Comunes

Las principales causas de los errores de protocolo son una incorrecta


configuracin en unicall.conf y en casos excepcionales es necesario ajustar
el tiempo de expiracin de algunos contadores (timers).
La siguiente es la lista de contadores usados para libmfcr2 que puede llegar a
ser necesario modificar:

t1: Tiempo mximo que un tono de salida puede durar.

t2: Tiempo mximo que un silencio de salida puede durar.

t3: Tiempo mximo que el ciclo de tono-silencio puede durar.

max-seize-wait-ack: tiempo mximo de espera para la toma de


troncal.

La modificacin se lleva a cabo mediante el uso de una opcin no


documentada en libmfcr2 del parmetro protocolvariant.
Forma documentada de uso: protocolvariant=variante,ANI,DNIS,opciones
Para modificar los timers deben agregarse los valores de los contadores
despus de las opciones.

protocolvariant=mx,10,4,7,t1=15000,t2=24000,t3=15000,max-seizewait-ack=2000

Problemas Comunes

mfcr2.c:55 linux/zaptel.h: No such file or directory


Algunas versiones de libmfcr2 esperan encontrar la definicin de la interface
de zaptel como parte de los include dentro del directorio linux.
Versiones recientes de zaptel movieron su ubicacin de linux/zaptel.h a
zaptel/zaptel.h
El error puede ser solucionado modificando mfcr2.c para incluir zaptel/zaptel.h
en lugar de linux/zaptel.h
Tambin puedes tratar bajando la versin de zaptel para que los headers sigan
siendo incluidos en linux/zaptel.h
En general, los errores de compilacin se deben a incompatibilidad de
versiones de los paquetes usados.

Tips de instalacin

Instala en este ordn: zaptel, spandsp, libsupertone, libunicall, libmfcr2,


Asterisk
Todos los paquetes que pueden ser configurados mediante ./configure deben
ser consistentemente instalados con el mismo prefix. Nunca mezcles
paquetes configurados con ./configure prefix=/usr con paquetes
./configure prefix=/usr/local
Recuerda que el default de ./configure es /usr/local
Si vas a iniciar una instalacin nueva sobre una vieja recuerda remover las
siguientes librerias con rm -rf: /usr/lib/libunicall* , /usr/lib/unicall/,
/usr/lib/libspandsp*, /usr/lib/libsupertone*, /usr/lib/asterisk/modules
De preferencia usa el paquete astunicall de
http://www.moythreads.com/astunicall/ , ya que contiene versiones
correctas e inclusive parches para hacer las versiones compatibles entre si.
Siempre especifica un nmero preciso de ANI y DNIS en tu linea
protocolvariant en unicall.conf.
Si la instalacin no funciona, especifica el parmetro loglevel=255 en
unicall.conf, este es el nivel mximo de verbosidad para los logs de Unicall.

Referencias

http://www.soft-switch.org/

http://www.moythreads.com/astunicall/

http://www.moythreads.com/unicall/mfcr2-asterisk-unicall-0.2-english.
pdf
http://www.voip-info.org/wiki/view/Asterisk+MFC+R2

También podría gustarte