Kamailio entendiendo lógica de enrutamiento

kamailio_logicaUno de los aspectos mas importantes y a la vez complicados de entender en Kamailio es la lógica de enrutamiento, debido a que tiene mucho que ver con el comportamiento del protocolo SIP.

Luego de mi charla en el ElastixWorld 2015 he tenido varias consulta referente a Kamailio y su comportamiento, un poco de ello lo explique en la charla “Usando el módulo PIKE en Elastix MT”  sin embargo en este post vamos a dar un alcance un poco mayor a este tema.

Primero vemos de manera genera lo que trae el archivo de configuración.

kamailioEsta imagen representa el esquema a nivel de parametrización de un archivo kamailio.cfg

Ahora vamos a ver cada punto:

1.- Definiciones Globales
Variables que vamos a usar a lo largo de la lógica de enrutamiento, las cuales pueden estar referidas a parámetros de log, direcciones IP y puertos que va escuchar el servidor, entre otras.

Tiene la siguiente forma:

Kamailio_globals2.- Sección de Módulos
Es donde definimos o “cargamos” los módulos vamos a user, por ejemplo el modulo de MYSQL  para guardar los registros en base de datos, o el modulo de TLS para cifrado de la señalización.

Tienen las siguiente forma:

kamailio_modules3.- Sección de configuración de módulos
En esta sección de parametrizan o configuran los módulos que hemos cargado en la sección  anterior, es muy importante configurar los módulos adecuadamente, ya que en algunos casos se activan con configuraciones por defecto, lo cuales pueden producir a la larga efectos extraños en el comportamiento.

Tienen la siguiente forma:

kamailio_modules4.- Bloques de rutas o lógica de enrutamiento
Esta es la sección es “clave” en el archivo de configuración ya que va establecer todo el camino que va seguir las peticiones SIP que recibamos, aquí hay que decir que no existe un patrón único, ya que uno puede hacer su lógica tan simple o tan compleja como lo desee, es decir con mas o menos bloques de rutas, sin embargo existen ciertos patrones que uno siempre va respetar o encontrar en otros archivos, estos son bloques de rutas que normalmente vamos a encontrar:

  • Principal (Main ó request_route)
  • Secundarias (REQINIT, WITHINDLG,REGISTRAR)
  • Failure (failure_route)
  • Branch (branch_route)

En esquema que pude realizar para mi autocompasión de un esquema de enrutamiento maso menos complejo:

kamailioComo se puede apreciar todo parte del bloque “Main” o “Request Route” y va ingresando a los demás bloques en donde cada uno tiene un objetivo puntual aplicado a la solicitud SIP entrante.

El bloque “REQINIT” tiene un papel muy importante ya que hace la mayoría de la comprobaciones previas como la evaluación de seguridad entre otras cosas.

Luego los métodos secundarios realizan el registro, localización y reenvío de las solicitudes SIP a otro server, un Asterisk por ejemplo. según sea el caso.

Enlaces:
https://www.kamailio.org/wiki/cookbooks/4.0.x/core
https://www.kamailio.org/wiki/tutorials/getting-started/main

Bueno espero que este post les amplié el panorama respecto al funcionamiento de kamailio, mas adelante desmenuzaremos otros aspectos de este formidable software.

Saludos
Juan Oliva

 

 

 

 

 

 

Anuncios
Esta entrada fue publicada en Asterisk, Centos, Debian, Linux, Manuales y tutoriales, Programacion, Ubuntu y etiquetada , , , por jroliva. Guarda enlace permanente.

Acerca de jroliva

Juan Oliva, es un consultor de seguridad informática y telefonía IP con 10 años de experiencia en el campo . Muy involucrado en proyectos de pruebas de penetración , análisis y explotación vulnerabilidades, pruebas de ingeniería social, seguridad física, revisión de código, entre otras tareas de seguridad informática. Así mismo, desarrolla proyectos de implementación y mantenimiento de VoIP, basadas en Asterisk y Elastix, proyectos de callcenter, soluciones en la nube y hosted PBX, Aseguramiento de plataformas Linux, Windows. Ha estado trabajando para una variedad de empresas en donde ha desarrollado proyectos para el estado peruano, así como para entidades privadas, nacionales y del extranjero, cuenta con certificaciones vigentes en Ethical hacking, Linux y telefonía IP. Es instructor de cursos de Ethical Hacking y certificaciónes como Linux Professional Institute y Elastix, donde ha tenido oportunidad de realizar capacitaciones en el Perú, así como en el extranjero. Es investigador de vulnerabilidades, y creador de contenidos, que son publicados en su blog personal jroliva.wordpress.com el cual mantiene desde hace mas de 6 años.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s