IP-PBX de software e teste de carga

Bom dia a todos! Há vários anos que faço telefonia IP e comecei a perceber que, embora a Internet esteja cheia de informações, estou falando não apenas sobre o segmento russo, mas às vezes você pode encontrar o caminho certo apenas em algum "fórum abandonado", caso contrário não é de todo . Se houver informações suficientes sobre telefonia IP e o próprio protocolo sip, não haverá dados sobre como um IP-PBX de software é construído, como é testado e depurado por razões óbvias, ou é, mas está escrito em uma linguagem que somente alguém que possa entender por muitos anos trabalha nesta área.



Decidi preencher essas lacunas e contribuir, para os iniciantes essas informações serão informativas e úteis, usuários mais experientes podem enfatizar algo novo por si mesmos; em qualquer caso, estaremos todos de preto. Os planos no momento são grandes - escrever um ciclo de postagens, resumindo o conhecimento que adquiri, por razões óbvias: não carregarei assemblies, máquinas virtuais etc., o mais importante é dirigir, e quem estiver andando encontrará o caminho.



Talvez a letra seja suficiente, vamos começar como sempre com a teoria. Como este post será lido por usuários com diferentes níveis de conhecimento, tentarei explicar tudo de forma breve e clara.



Introdução



Um IP-PBX de software é uma troca telefônica automática baseada no protocolo IP, cujo "cérebro" é um software especial que implementa a comutação de voz (neste caso, pacotes de voz) e outros serviços fornecidos aos assinantes.



Agora, vamos ver como tudo funciona. Farei uma reserva imediatamente em detalhes, não aceitarei, levará muito tempo e, portanto, haverá algumas falhas e omissões.



O assinante pega o telefone e digita o número, a sinalização é acionada imediatamente, o que controlará a sessão do fluxo de voz, para isso existem vários protocolos dos quais dois SIP e H.323 podem ser distinguidos. No momento, o SIP ganhou grande popularidade e, neste post, será considerado. Além disso, assumiremos que uma conexão lógica foi estabelecida entre os assinantes usando o protocolo SIP e, em seguida, a voz é necessária.



O assinante fala ao telefone - sua voz é codificada usando um codec de software ou hardware em um conjunto de bits. Codec é um algoritmo de compressão de voz, o PCMA mais simples e comum. Em seguida, esses bits são enviados ao destinatário usando o protocolo RTP.



Para resumir tudo isso, temos o protocolo SIP que controla a sessão de comunicação, que inclui o protocolo SDP, que descreve a sessão (codecs usados ​​e disponíveis e outras informações), esses protocolos são compactados no transporte TCP ou UDP e usando IP enviado na direção especificada. Assim que uma conexão lógica é estabelecida, a voz é compactada usando o codec e compactada no RTP e enviada ao destinatário usando o protocolo IP.



Agora vamos tentar responder à pergunta principal, quem controla tudo isso? A chave do software, ou softswitch, é o "cérebro" do PBX IP do software, gerenciando toda a comunicação interna e externa. Todos ouvimos falar do Softswitch, todo mundo já ouviu falar do Asterisk e do Freeswitch. Existem pagos, existem gratuitos, existem com uma interface gráfica, existem sem.



Na Figura 1, descrevi um diagrama de blocos de um IP-PBX de software, vamos considerá-lo com mais detalhes. Antes de tudo, é um sistema operacional (SO), deve ser compatível com o hardware, possuir os repositórios necessários e ser conveniente para o trabalho. Não falaremos sobre hardware, seja algum tipo de servidor. Com base nos desejos do cliente (TOR), o “cérebro” do nosso IP-PBX - Softswitch é selecionado, pode ser o mesmo Asterisk ou Freeswitch ou um Softswitch escrito à mão. Na figura, eu separei o Softswitch e o software, na verdade, pode ser um aplicativo, tudo depende dos requisitos do cliente, você pode pegar um Freeswitch pronto, o mesmo Freeswitch, escrever um programa que irá controlá-lo e também implementar funcionalidades adicionais. Tudo está claro no servidor da web, precisamos de uma camada entre o cliente http e o Softswitch. Bem, e, consequentemente, o banco de dados,não reescreveremos constantemente os arquivos de configuração. O sistema operacional nos oferece um ambiente de trabalho, também é necessário escrever drivers adicionais se queremos conectar as placas FXO e E1.



imagem

Fig 1. Diagrama de blocos de um software IP-PBX



Agora você pode expirar, a teoria descrita é muito condensada, mas é necessária para uma melhor compreensão do material.



Testador SIP e StarTrinity SIP



Há algumas semanas, a tarefa foi definida - para testar a carga que o nosso software IP-PBX pode suportar. Após muita pesquisa, me deparei com um gerador de chamadas Sipp gratuito e um StarTrinity SIP Tester pago. Abaixo, descreverei brevemente os recursos desses aplicativos.



Talvez eu comece com a coisa mais simples - StarTrinity SIP Tester. O aplicativo funciona apenas no Windows, possui um grande número de recursos, registro de usuários, atua como servidor de registro, envia chamadas de saída com muitos parâmetros, recebe chamadas de entrada e envia as mensagens especificadas; na verdade, você pode escrever o script por conta própria e o aplicativo o ajudará com isso. Mas toda a funcionalidade é um tópico para uma postagem separada. Precisamos da coisa mais básica para o trabalho - a capacidade de enviar chamadas em um determinado intervalo, sem esquecer o RTP. E agora o mais importante é que esse aplicativo seja pago, mas os desenvolvedores também fornecem uma versão gratuita e simplificada, mas, na verdade, até uma versão simplificada pode ser usada se você for inteligente.



A versão gratuita permite que você faça 150 chamadas, enquanto pode haver 50 conexões simultâneas. Mas, após uma reinicialização, o contador é redefinido e você pode enviar chamadas novamente. As Figuras 2 e 3 mostram o aplicativo StarTrinity SIP Tester, podemos ver em qual endereço, para qual número, de quem, qual codec, intervalo e outras informações de chamada. Também é importante observar que existe uma interface da Web e a capacidade de criar scripts, mas o que eu não gostei é que você não pode executar scripts com parâmetros incorretos.



imagem

Fig 2. Versão paga do StarTrinity SIP Tester



imagem

Fig 3. Versão gratuita do StarTrinity SIP Tester



Se o StarTrinity SIP Tester for uma bela interface gráfica pronta para funcionar, Sipp se apresentou para mim como uma espécie de "monstro" que precisa ser baixado, compilado e adicionados os pacotes necessários. Mas, como se viu, isso não deve ser temido, os desenvolvedores deixaram um excelente guia no site que descreve o processo de instalação e os recursos desse aplicativo. Eles alertam imediatamente que levará vários dias para aprender a escrever scripts, mas esse é o plus, você entenderá completamente o próprio protocolo sip e estudará seus campos. Em poucas palavras, existem scripts embutidos, eles são os mais comuns enviados e recebidos, ainda procuramos o resto na Internet, alguns usuários compartilham, mas eu tive que sentar e estudar as especificações e escrever meus scripts. O Sipp está disponível para Windows e Linux, mas funciona mais estável no Linux.



Agora, ao ponto, é caro alocar uma máquina apenas para Sipp, pegamos e fabricamos uma máquina virtual, eu uso o VirtualBox no Ubuntu, não tive problemas. Instalado de acordo com o guia, vá para a pasta do aplicativo e inicie o aplicativo com as chaves necessárias.



imagem

Fig 4. Gerador de chamadas Sipp



Não descreverei a funcionalidade Sipp, é semelhante ao StarTrinity SIP Tester, qual aplicativo é melhor, não há resposta definitiva, cheguei à conclusão de que eles se complementam perfeitamente.



Teste de estresse



Agora sabemos o que é um PBX IP e como ele funciona, também sabemos a funcionalidade dos geradores de chamadas.



Novamente, durante o teste, precisamos entender o modo operacional do software IP-PBX: modo proxy (sinalização RTP + é proxy), semi-proxy (somente sinalização proxy), solicitação de redirecionamento (mensagem 300). Isso determinará se precisamos ativar o RTP em alguns cenários ou não. Na Figura 5, esbocei algumas opções de teste.



Opção 1 - testamos o software IP-PBX no modo de trânsito, para isso precisamos de dois PCs diferentes. Registramos uma rota no PBX, respectivamente, a partir de um Sipp / StarTrinity SIP Tester, geramos chamadas para outro Sipp / StarTrinity SIP Tester. Digo a você imediatamente, com o StarTrinity SIP Tester no Sipp (ou vice-versa), que não tentei gerar chamadas, mas, teoricamente, elas devem ser totalmente compatíveis.



Opção 2 - testamos o software IP-PBX no modo de trânsito, para isso precisamos de dois PCs diferentes. No PBX, registramos a rota, respectivamente, a partir de um Sipp / StarTrinity SIP Tester, geramos chamadas para o Asterisk. Para o Asterisk, eu uso a máquina virtual VirtualBox no Ubuntu, não tenho problemas. No plano de discagem do Asterisk, escreva o seguinte:



imagem



Quando você liga para esse número, o Asterisk atende e envia toda a voz recebida de volta.



imagem

Fig. 5. Opções de configuração do equipamento para teste de carga



Opção 3 - testamos o software IP-PBX no modo de estação terminal, para isso precisamos de um PC e telefones IP, configuramos o atendimento automático nos telefones. Registramos telefones IP no PBX, respectivamente, a partir de um testador Sipp / StarTrinity SIP, geramos chamadas para eles.



Opção 4 - testamos o software IP-PBX no modo de estação terminal, para isso precisamos de um PC e TA analógica. Configuramos TAs analógicos no PBX, respectivamente, a partir de um Sipp / StarTrinity SIP Tester, que geramos chamadas para eles. Tanto quanto eu sei, mas não o encontrei, existem certos dispositivos que se conectam a linhas analógicas e podem ser programados, por exemplo, para atender o telefone quando você liga, mas se não houver essa possibilidade, você precisará pegar manualmente os aparelhos.



Isso é tudo, é claro, ativamos os logs no IP-PBX do software ou exibimos o console com depuração e observamos os erros que ocorreram. É assim que os limites de desempenho e falha podem ser determinados. A propósito, conselhos, instale o Wireshark, tshark, tcpdump na máquina virtual, para que você possa monitorar e analisar todo o tráfego da sua interface em tempo real.



Resumindo



Para resumir, nos familiarizamos superficialmente com a construção de geradores de chamada IP-PBX e Sipp e StarTrinity SIP Tester de software e aprendemos a simular a carga. Se você pensar com cuidado, ao usar esses geradores de chamadas, poderá testar com segurança toda a pilha Sip.



Por hoje é só, estou aguardando seus comentários e, se você quiser compartilhar sua experiência, ficarei feliz.



CARREGANDO…



Links



1.Sipp sipp.readthedocs.io/en/v3.6.0/#

2.StarTrinity SIP Tester startrinity.com/VoIP/SipTester/SipTester.aspx

3.Livros e outras informações asterisk.ru/knowledgebase/books



All Articles