«

»

Imprimir esta Entrada

Protocolo DUNDi


Protocolo DUNDiDUNDI, es un protocolo por el cual se puede compartir el Dialplan entre dos sistemas Asterisk. DUNDi (del inglés Distributed Universal Number Discovery) es un protocolo de enrutamiento VoIP que proporciona un servicio de directorio similar al de ENUM. DUNDi permite a los nodos enlazados compartir información sobre sus respectivos dialplans entre ellos. No es un transporte de llamadas, sino que proporciona información de direccionamiento de números. Por poner un ejemplo, nos permite preguntar a tu nodo vecino si sabe como contactar con una extensión telefónica concreta o un cliente de VoIP. Una especie de agenda de teléfonos P2P.

ENUM (RFC 3761) es un protocolo que utiliza el sistema DNS de Internet para traducir números de teléfono E.164 a esquemas de dirección de IP (como las de SIP, H323 o email). ENUM es el puente entre la red de telefonía conmutada y la Internet. Un servidor con soporte de ENUM buscara un número de teléfono marcado en el DNS para ver si hay maneras alternativas de establecer la llamada en vez de utilizar la línea telefónica PSTN. ENUM puede contener una referencia a una URL de SIP, a un número de teléfono para marcar, a un pagina web o a una dirección de E-mail.

El protocolo DUNDI fue inventado por Mark Spencer quien además hizo el sistema de telefonía PBX llamado Asterisk. Por tanto, la sintaxis de una búsqueda DUNDi puede utilizarse directamente en los comandos de llamada de un dialplan de Asterisk.

Para que DUNDi funcione, cada cliente DUNDi tiene que conocer por lo menos otro cliente DUNDi. Como estos clientes DUNDi pertenecen a la misma red, se les llama nodos. Además, al menos uno de los nodos alcanzables deben conocer cómo llegar a la extensión consultada.

En una configuración DUNDi se puede limitar el número de búsquedas consecutivas entre nodos mediante el establecimiento de la TTL.

  • Un TTL de 1 significa que sólo puedes preguntar a los nodos con los que estás enlazado y no más allá.
  • A TTL de n significa que el nodo al que le haces la pregunta puede regirigir tu consulta a otros nodos que conozca, con un TTL de n-1.

Anuncio de extensiones

Cada nodo DUNDi puede anunciar sus propias extensiones y su contexto. Por ejemplo, si puedes conectar algunos números locales E.164, puedes anunciarlos.

La E.164 es una recomendación de la UIT (Unión Internacional de Telecomunicaciones) que asigna a cada país un código numérico (código de país) usado para las llamadas internacionales. E.164 es el nombre del documento que especifica el formato, la estructura y la jerarquía administrativa de los números telefónicos. La UIT concede códigos de país a las naciones con soberanía y la administración de los números de teléfono de cada país los efectúa el regulador del país correspondiente. Un número E.164 está compuesto por el código de país, código de zona o ciudad y un número telefónico. Sin embargo, en algunos países, la marcación dentro de una zona o de una ciudad puede ser abreviada, sin necesidad de tener que marcar el código de zona o ciudad.

Cada extensión anunciada (también se puede anunciar un rango de extensiones) tiene su propia prioridad. Valores bajos representan una alta prioridad y deben elegirse primero cuando más de una respuesta se recibe de una consulta.

Ejemplo de prueba de DUNDi en Asterisk

En la línea de comandos Asterisk se puede hacer una búsqueda a mano para probar si la configuración DUNDi funciona.

asterisk1*CLI> dundi lookup 301@priv bypass
  1.     0 IAX2/priv:ByWFbOGKgGmZbM43BJHSZw@192.168.1.2/301 (EXISTS)
     from 00:0c:29:d2:d8:ec, expires in 3600 s
DUNDi lookup completed in 113 ms

La anterior búsqueda DUNDi está pidiendo al PBX que pregunte a los nodos conocidos si saben como llegar a la extensión 301 en la red “priv”.

La respuesta consiste de 6 partes:

  • El protocolo utilizado para comunicarse es IAX2.
  • El nombre del contexto es “priv”.
  • La clave secreta del PBX, que puede redirigirte a la extensión 301 es ByW[…]HSZw (esta clave cambia periódicamente).
  • La dirección de este PBX es 192.168.1.2.
  • La extensión a llamar es la 301 (esto puede ser diferente de la que se preguntaba. Por ejemplo, cuando llamas desde el exterior no están permitido acceder directamente a una extensión interna).
  • “EXISTS” nos dice que el PBX está anunciando este número. Es posible que el PBX anuncia más extensiones que las realmente conectadas, así que no se garantiza que la extensión sea alcanzable.

Para prevenir que la red sea sobrecargada, y al mismo tiempo mantener las respuestas lo más rápidas posibles, los nodos participantes cachearán las consultas que se les haga. Dado que las claves utilizadas pueden ser invalidadas al cabo de un tiempo, cada consulta tiene un TTL que por defecto es una hora.

Cuando no se proporciona un contexo en la consulta, DUNDi establece por defecto el contexto E.164. Esto significa que estás consultando números de teléfono normales (internacionales), como por ejemplo 0034964221100 (un número de Castellón de la Plana, España). Para conseguirlo, tienes que enlazar con al menos un nodo que pertenezca al E164 trust group. Los nodos de este grupo estan ligados al Digium GPA (Digium General Peering Agreement)

Ejemplo de Configuracion DUNDi en SIP sin passwords

Esto es todo lo que se necesita para configurar DUNDi entre dos sistemas Asterisk con SIP. Se pueden agregar más sistemas a la red de una manera similar.

Nota: esta configuración no utilliza contraseñas, aunque es recomendable hacerlo para redes seguras.

Cosas a tener en cuenta: A menos que específicamente coloque un host en el archivo sip.conf las llamadas vendran del contexto definido en la sección [general] por el contexto. Es posible que desee incluir la opcion [dundi-priv-local] en este contexto.

ESQUEMA DE EJEMPLO:

Configuracion de DUNDI en Asterisk

BoxA archivo extensions.conf:

BoxA extensions.conf

; Private DUNDi network
[dundi-priv-canonical]
; Direct numbers
;example:
;exten => 201,1,Dial(SIP/201,20,tT)
;exten => 203,1,Dial(SIP/201,20,tT)
;exten => 204,1,Dial(SIP/204,20,tT)

; ATTENTION! this part should be added on box A
;--------start
; in order to advertise Zap extentions
; we must use _[3-5]XX wildcard 
; not to mess up numeration with BP250
; please see attached scheme
; this part should be added on box A
;exten => _[3-5]XX,1,Dial(Zap/g1/${EXTEN},20,rtT)
;--------finish

[dundi-priv-customers]
; If you are an ITSP or Reseller, list your customers here.

[dundi-priv-via-pstn]
; If you are freely delivering calls to the PSTN, list them here

[dundi-priv-local]
include => dundi-priv-canonical
include => dundi-priv-customers
include => dundi-priv-via-pstn

[dundi-priv-switch]
; Just a wrapper for the switch
switch => DUNDi/priv

[dundi-priv-lookup]
include => dundi-priv-local
include => dundi-priv-switch

[macro-dundi-priv]
exten => s,1,Goto(${ARG1},1)
include => dundi-priv-lookup

BoxB archivo extensions.conf:

BoxB extensions.conf

; Private DUNDi network
[dundi-priv-canonical]
; Direct numbers
;example:
;exten => 888,1,Dial(SIP/888,20,tT)

[dundi-priv-customers]
; If you are an ITSP or Reseller, list your customers here.

[dundi-priv-via-pstn]
; If you are freely delivering calls to the PSTN, list them here

[dundi-priv-local]
include => dundi-priv-canonical
include => dundi-priv-customers
include => dundi-priv-via-pstn

[dundi-priv-switch]
; Just a wrapper for the switch
switch => DUNDi/priv

[dundi-priv-lookup]
include => dundi-priv-local
include => dundi-priv-switch

[macro-dundi-priv]
exten => s,1,Goto(${ARG1},1)
include => dundi-priv-lookup

Editar archivo sip.conf  en ambas cajas:

 

sip.conf en ambas cajas

[priv]
type=peer
context=dundi-priv-local
disallow=all
allow=ilbc

 

Editar archivo dundi.conf en ambas cajas

Hacerlo bajo la linea [mappings]:

Es necesario reemplazar el parametro ${IPADDR} con su direccion IP local.

dundi.conf en ambas cajas

priv => dundi-priv-canonical,0,SIP,${IPADDR}/${NUMBER},nopartial
priv => dundi-priv-customers,100,SIP,${IPADDR}/${NUMBER},nopartial
priv => dundi-priv-via-pstn,400,SIP,${IPADDR}/${NUMBER},nopartial

Ahora en cada una de las cajas ejecutar:

 cd /var/lib/asterisk/keys
astgenkey -n [NOMBRE_DE_CAJA] 

Presionar ENTER no poner clave a menos que se quiera iniciar las llaves cada vez que se inicie asterisk.

Ahora colocar las llaves publicas de intercambio (exchange public keys) entre las cajas.

Editar archivo dundi.conf en Box A:

dundi.conf en Box A

[DE:AD:BE:EF:DE:AD]   <-- EID/MAC from BOX B
model = symmetric
host = boxb.domain.com
inkey = BOXB   <- BOX B's public key
outkey = BOXA  <- BOX A's private key
include = priv
permit = priv
qualify = yes
order = primary

 

Editar archivo dundi.conf en Box B:

dundi.conf en Box B

[BE:EF:DE:AD:BE:EF]  <-- EID/MAC from BOX A
model = symmetric
host = boxa.domain.com
inkey = BOXA   <- BOX A's public key
outkey = BOXB  <- BOX B's private key
include = priv
permit = priv
qualify = yes
order = primary

 

Ahora colocar lo siguiente en el contexto de marcacion:

exten => _91NXXNXXXXXX,1,Macro(dundi-priv,${EXTEN:1})
exten => _91NXXNXXXXXX,2,Dial(Zap/g1/${EXTEN:1}) ; This is fall through example to a PSTN such a as PRI

Con esto deberan de encontrarse los numeros en la red DUNDi.

 

 

 

6,544 total views, 3 views today



!!! AYUDANOS A MANTENER ESTE SITIO ACTIVO…!!!

Si piensas que te hemos ayudado y merecemos tu apoyo. !!! GRACIAS !!!

Cuando lo hagas tendras acceso inmediato a la documentacion en formato PDF para que la descargues. Encontraras tambien otros tutoriales mas avanzados no publicados en el sitio. Si no puedes o no quieres, no hay problema igual tendras acceso a toda la informacion publicada en este sitio.

!!CLICK AQUI.!! para ver Tutoriales a descargar

!!! GRACIAS POR TU DONACION !!!






Enlace permanente a este artículo: http://elastixtech.com/protocolo-dundi/

Deja un comentario