Kamailio - Entendendo a lógica de roteamento.
Kamailio é hoje uma das ferramentas mais poderosas para desenvolvimento de servidores SIP de alta performance, capazes de gerenciar milhares de chamadas por segundo, com alta confiabilidade, performance e escalabilidade - requisitos essenciais em ambientes de VoIP Peering e Operadoras VoIP (ITSP).
O que o mercado espera desses profissionais ?
- Domínio no desenvolvimento e customização de soluções com Kamailio.
- Conhecimento de protocolos SIP, UDP, TCP, SCTP, TLS.
- SIP-I (SIP for ISUP) e SIP-T (SIP for Telephones).
- Suporte a NAT Traversal, IPv4/IPv6, failover e load balancing.
- Implementação de "Kamailio Multi-SIP Interop com Dialplan Database Control - DDC". Que é a ideia de suportar chan_sip, chan_pjsip, SIP-I e SIP-T, e ainda controlar tudo via Banco de Dados.
- Implementação de interfaces com Banco de Dados (DDC) e RADIUS.
- Desenvolvimento de soluções com suporte apresença (SIMPLE), dialogue info e CDRs.
- Capacidade de integrar e desenvolver com Asterisk, FreeSWITCH e WebRTC.
- Desenvolvimento completo: Backend e Interface Grafica (GUI) para gestão das soluções.
Se você atua com desenvolvimento VoIP, ou pretende entrar nesse nicho promissor, o momento é agora. O mercado está aquecido e exige profissionais prontos para entregar soluções robustas, escaláveis e personalizadas.
Dito isso, um dos aspectos mais importantes e, ao mesmo tempo difíceis de entender no Kamailio é a lógica de roteamento, pois ela tem muito a ver com o comportamento do protocolo SIP.
Após alguns estudos mais detalhados, resolvi passar aqui a minha visão de entendimento sobre o comportamento do Kamailio, principalmente no kamailio.cfg. E esse vai ser o objetivo deste post, e vou tentar adentrar com mais detalhes no mesmo.
Primeiro vamos dar uma olhada geral no que o arquivo de configuração contém:
Agora, vamos analisar cada ponto:
1. Definições Globais
Variáveis que usaremos em toda a Lógica de Roteamento, que podem se referir a parâmetros de LOG, Endereços IP e Portas nas quais o servidor esturatá (LISTEN) entre outros. Tem o seguinte formato:
2. Seção de Módulos
É aqui que definimos ou carregamos os módulos que estamos usando, por exemplo, o módulo MySQL para salvar registros no Banco De Dados ou o módulo TLS para criptografia de sinais.
Eles têm o seguinte formato:
3. Seção de Configuração de Módulos
Nesta seção, parametrizamos ou configuramos os módulos que carregamos na seção anterior. É muito importante configurá-los adequadamente, pois, em alguns casos, eles são ativados com configurações padrão, o que pode produzir efeitos estranhos no comportamento ao longo da vida útill do servidor SIP.
Eles têm o seguinte formato:
4. Blocos de Rota ou Lógica de Roteamento
Está é a seção chave do arquivo de configuração, pois estabelece todo o caminho que as solicitações SIP que recebemos seguirão. Vale ressaltar que não existe um padrão único aqui, pois você pode tornar sua lógica tão simples ou complexa quanto desejar, ou seja, com mais ou menos blocos de rota. No entanto, existem certos padrões que você sempre respeitará ou encontrará em outros arquivos. Estes são os blocos de rota que você normalmente encontrará:
- Principal (Main ou request_route).
- Secundários (REQINIT, WITHINDLG, REGISTER).
- Falhas/Failure (failure_route).
- Ramificação/Branch (branch_route).
Como você pode ver, tudo começa no bloco PRINCIPAL ou REQUEST_ROUTE e flui para os outros blocos, cada um com uma finalidade específica para a solicitação SIP recebida.
Fontes:
URL: https://kamailio.org/docs/modules/6.0.x/
URL: https://www.kamailio.org/wiki/tutorials/getting-started/main
Bom, espero que este post amplie sua compreensão de como o Kamailio funciona. Conforme vou conseguindo tempo (para escrever, rsrsr), iremos nos aprofundar em outros aspectos deste software formidável.
Por hoje é só pessoal!
Deixe um comentário