Kamailio entendiendo lógica de enrutamiento
Uno 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.
Esta 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:
2.- 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:
3.- 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:
4.- 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:
Como 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.
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
-
octubre 23, 2019 a las 2:00 pmfloor tile cleaning equipment
-
mayo 6, 2020 a las 7:50 pmspeaking of
-
mayo 17, 2020 a las 1:06 pmscritter.guldhammer.Info
-
mayo 27, 2020 a las 1:07 amreasonable coaching
-
julio 10, 2020 a las 7:17 amsbobet
-
agosto 6, 2020 a las 4:26 amWww.Campushatewatch.Org