Definição
OpenSIPS é uma continuação do projeto OpenSER. A razão da criação do OpenSIPS foi o conflito gerado pelos seus desenvolvedores. É um projeto Open Source colaborativo, onde a comunidade tem grande parte na evolução do projeto. OpenSIPS é um SIP Proxy com as seguintes funcionalidades:
- SIP register
- SIP agente presença
- SIP IM server (chat)
- SIP para SMS gateway (bidirecional)
- SIP para XMPP gateway para presença e IM (bidirecional)
- SIP load balance
- SIP NAT
Objetivos
OpenSIPS é usado como um SIP Proxy. Entretanto, pode ser usado em outras aplicações como Jabber Gateway, servidor de presença, SIP multirouter.
O OpenSIPS é designado a suportar um grande volume de chamadas, fazer load balance SIP, resolver cenários avançados de NAT junto com Media Proxy e RTP Proxy.
Detalhamento Técnico
OpenSIPS suporta IP versões 4 e 6, e pode ser usados com múltiplos domínios. Pode ser executado nas plataformas Linux, Solaris e FreeBSD. O projeto foi criado para ser um SIP proxy, mas com o desenvolvimento de novos módulos, pode ser usado em vários cenários como:
DISPATCHER, PATH - Balanceamento de carga
MEDIAPROXY, RTPPROXY, NATHELPER - NAT
PRESENCE - Servidor de presença
IMC, XMPP - Mensagem instantânea
Pontos-chave
Velocidade
OpenSIPS pode fazer dezenas de milhares de chamadas por segundo, mesmo com hadware de baixo custo. O desenvolvimento usando ANSI C com algumas rotinas assembler é responsável por esta performance.
Flexibilidade
OpenSIPS é muito flexível e seus administradores podem definir seu comportamento através de um script. Este script é poderoso e flexível para atender os mais complexos cenários.
OpenSIPS estendido
OpenSIPS pode ser estendidos por novos códigos desenvolvidos em C. O novo código pode ser desenvolvido independente do núcleo OpenSIPS e adicionados em tempo de execução. O conceito é similar aos módulos em Servidores Web Apache. Recentemente, novas camadas de programação foram adicionados. É possível usar Call Processing Language (CPL) para simplificar os scripts de roteamento. WeSIP é uma interface de programação de aplicações que permite a utilização de servlets Java para estender o servidor OpenSIPS para criar
um servidor de aplicativos SIP. Estas extensões são módulos de chamada. OpenSIPS 1.6 fornece quase 100 módulos diferentes, que pode ser seletivamente carregado e usado na configuração / arquivo de roteamento.
Portabilidade
OpenSIPS foi escrito em ANSI C. Dessa forma, é altamente portável e disponível para sistemas UNIX, como Linux, Solaris e BSD.
Pequenas dimensões
O núcleo OpenSIPS é muito pequeno. As versões mais antigas tinham 300 KB de tamanho. Com alguns módulos, pode aumentar para uns poucos megabytes. Devido a esta característica, está sendo utilizado em várias plataformas.
Integrações
Conectividade com a PSTN
OpenSIPS precisa de um gateway SIP para conectar à PSTN. Como o OpenSIPS não tem essa funcionalidade é preciso utilizar, por exemplo, o Asterisk como um gateway PSTN para o OpenSIPS.
Integração com Radius, Diameter e LDAP
Como o Asterisk, o OpenSIPS possui integração com LDAP, Radius e Diameter.
Media Server
OpenSIPS é um proxy SIP e não é capaz de atender nenhum serviço relacionado a mídia (a parte da voz de uma chamada). O OpenSIPS não é uma plataforma para criar projetos como IVR, VoiceMail, TTS e Reconhecimento de voz, etc. É possível integrar qualquer um destes serviços com o OpenSIPS usando um media server como o Asterisk.
Comparativo
Arquitetura
O Asterisk funciona como um Back to Back User Agent (B2BUA), enquanto OpenSIPS é um Proxy SIP. Isto representa toda diferença entre eles. A arquitetura para um Proxy SIP é mais simples que um B2BUA porque um Proxy SIP preocupa somente com a sinalização. Por outro lado, um B2BUA é mais complexo porque é responsável pela sinalização e pela mídia (voz). Em um proxy SIP, serviços de um B2BUA como tradução codec (ou seja, uLaw G.729a), tradução de protocolo (SIP para IAX2) e serviços relacionados mídia, tais como URA, correio de voz, text to speech, e reconhecimento de voz não estão disponíveis.
NAT
O OpenSIPS trabalha melhor com NAT do que o Asterisk. Ele permite enviar, na maioria dos casos, a mídia de um software VOIP client diretamente para um servidor VOIP. A manipulação direta do protocolo SIP permite a você gerenciar casos especiais, tais como quando você tem dois clientes atrás do mesmo NAT e quer enviar a mídia (áudio e vídeo) diretamente entre eles.
Load Balancing
OpenSIPS tem a habilidade de balancear a carga de chamadas VOIP. Especializado em algoritmos hash o OpenSIPS pode ser configurado para fazer o load balance por "username", "callid" e outras propriedades. A tolerância a falhas faz parte da solução, coisas que você não encontra no Asterisk, mas são complementares.
Acesso de baixo nível aos cabeçalhos SIP e transações
O OpenSIPS permite a você acesso de baixo nível ao SIP. Você pode gerir todos os requests e responses. Isto permite traduzir duas versões incompatíveis de SIP, tratando diretamente os cabeçalhos SIP, request e response. Isto é importante quando você tem duas implementações de SIP de diferentes fabricantes, algumas vezes, incompatíveis entre si.
Licenças e Restrições
Licença
GNU General Public License (GPL)
Comunidades
Existem 2 comunidades oficiais ativas.
- Uma para discussões sobre a utilização:
https://sourceforge.net/forum/forum.php?forum_id=839860
- Outra para discussões sobre o desenvolvimento:
https://sourceforge.net/forum/forum.php?forum_id=839862
Certificação
Custo: US$215,00
Conclusões
O OpenSIPS é designado a suportar um grande volume de chamadas, fazer load balance SIP, resolver cenários avançados de NAT e trabalha com sinalização SIP como nenhum outro. Quando você precisa de velocidade, flexibilidade, escalabilidade, portabilidade, e a capacidade de funcionar em ambientes com baixa capacidade de computação, OpenSIPS pode ser a combinação perfeita.
Pesquisadores
- Cesar William Alvarenga
