O monitoramento do estado da rede de sinalização VoIP é uma das condições importantes que permitem ao provedor UCaaS fornecer aos clientes um nível garantido de qualidade de serviços, como chamadas de áudio e vídeo, recepção e transmissão de fax. Normalmente, esse controle é realizado usando vários sistemas de monitoramento, coleta e análise de tráfego, análise CDR. Alguns dos parâmetros da rede de sinal são bastante difíceis e muitas vezes impossíveis de avaliar usando os métodos indicados.
Uma possível fonte de informações importantes sobre o estado de uma rede de sinalização VoIP é o SIP Application Server (SIP AS), um dos principais elementos envolvidos no processamento de chamadas em uma rede VoIP. Os arquivos de log SIP AS permitem avaliar, entre outras coisas, os seguintes parâmetros de uma rede de sinalização VoIP:
- Comprimento da caixa de diálogo SIP
- O intervalo de tempo entre o envio de uma solicitação e o recebimento de uma resposta final (RRT) para vários tipos de solicitações SIP
- O número de retransmissões de mensagens (retransmissões, RTR) para diferentes tipos de mensagens SIP
Não apenas os valores desses parâmetros são importantes, mas também a distribuição desses parâmetros, bem como suas alterações ao longo do tempo. As informações sobre a alteração nos valores dos parâmetros ao longo do tempo permitem prever possíveis problemas em uma rede VoIP. Essas informações também podem servir como uma das fontes de dados para vários algoritmos de aprendizado de máquina (aprendizado de máquina, ML), o que permitirá prever alterações nos parâmetros, não apenas dependendo do tempo, mas também de outros fatores.
Dependendo da carga do sinal, o SIP AS pode gerar arquivos de log em formato de texto até várias dezenas de GB por dia. A análise de arquivos de texto desse volume é uma tarefa que consome muitos recursos. Como uma das opções possíveis, várias ferramentas Python podem ser usadas para esta análise. Por exemplo, a biblioteca Pandas fornece ferramentas bastante convenientes para processar e analisar vários dados, em particular, quadros de dados (DF). O código usado neste artigo está disponível aqui .
As etapas a seguir são sugeridas para analisar arquivos de log SIP AS:
- Abra o arquivo de log para leitura. Se o SIP AS criou vários arquivos de log, eles devem ser abertos na mesma ordem em que foram criados.
- Leia os dados linha por linha. Isso é necessário para economizar RAM no caso de trabalhar com arquivos de unidades de dezenas de GB
- Realçar mensagens SIP localizadas entre seqüências específicas de caracteres - delimitadores
- Crie uma lista de dicionários. Cada um dos dicionários, por sua vez, consiste em um carimbo de data / hora (chave) e a mensagem SIP (valor) real na forma de uma lista
- Salve esta lista no armazenamento em disco ou em rede como, por exemplo, um arquivo de pickle. Este arquivo será usado posteriormente para criar vários DFs.
- Crie um DF a partir de um arquivo de pickle salvo contendo as informações necessárias para análises adicionais (SIP DF)
Nesse caso específico, um SIP DF foi criado contendo as seguintes colunas:
- Registro de data e hora - registro de data e hora adicionado por SIP AS
- Call-ID - Call-ID da conversa SIP
- CSeq_num, CSeq_meth - dados do cabeçalho SIP 'CSeq'
- Direção - mensagem recebida (Rx <-) ou enviada (Tx->), SIP AS é adicionado
- Método SIP - método SIP da linha de solicitação SIP
- Src Dst IP - endereço IP do qual a mensagem foi enviada ou recebida

Fig. 1. Parâmetros do SIP DF obtidos a partir de um arquivo pickle de cerca de 3 GB

Fig. 2. Conteúdo do SIP DF
Tendo um DF SIP semelhante, é possível avaliar vários parâmetros de uma rede VoIP de sinalização. Todos os exemplos abaixo são retirados de uma rede VoIP válida. Os endereços IP e outros dados que podem fornecer informações sobre a rede especificada foram alterados.
1. A duração do diálogo SIP


Fig. 3. Comprimento da caixa de diálogo DF e SIP
Para cada caso de um longo diálogo SIP, é possível encontrar a chamada pelo valor do ID da chamada e, em logs de texto, analisar o cenário dessa chamada. Apesar do número relativamente pequeno de chamadas para as quais a duração da conversa SIP é de dezenas a centenas de mensagens, os cenários dessas chamadas devem ser investigados. O estudo de tais chamadas revelou as seguintes fontes de longas caixas de diálogo SIP:
- Transmissão de várias dezenas de grupos de uma determinada estrutura, composta por caracteres DTMF, após o estabelecimento de uma sessão de voz. Este é um cenário de chamada de voz durante o qual ocorrem autenticação, autorização e troca de informações entre os assinantes que estão chamando e os chamados.
- Videochamadas durante as quais um número muito grande de solicitações Intra-Frame Full ( FIR ) foi observado. Isso, em particular, indica um problema no software do telefone ou perda de pacotes RTP durante chamadas de vídeo.
Diálogos SIP longos também podem aparecer devido a um mau funcionamento do equipamento VoIP, tentativas de selecionar códigos PIN através de um menu IVR (enviando um grande número de sequências DTMF). De qualquer forma, é necessário monitorar o número de longas conversas SIP, porque, com um aumento no número de diálogos, uma carga de sinal inútil adicional nos elementos da rede VoIP pode aparecer.
2. RRT
É calculado separadamente para solicitações INFO e INVITE recebidas e enviadas. Lembre-se de que, ao processar um grande número de chamadas, podem ocorrer os mesmos valores de CSeq para diferentes caixas de diálogo. Pode-se presumir que a distribuição dos valores RRT deve ser aproximadamente a mesma para as solicitações enviadas, os valores absolutos devem diferir devido ao tamanho e conteúdo diferentes das solicitações INFO e INVITE e, como resultado, os diferentes tempos de processamento dessas solicitações pelos elementos da rede.

Fig. 3. RRT para solicitações INFO recebidas pelo SIP AS
O aumento nos valores de RRT nesse caso indica possíveis problemas com a virtualização, um aumento na carga no SIP AS. A identificação de chamada e CSeq_num permitem examinar os valores RRT para cada caso.

Fig. 4. RRT para solicitações INFO enviadas pelo SIP AS. O RRT no gráfico é limitado a 500 ms, que é o valor padrão para o timer SIP T1 .

Fig. 5. RRT para solicitações INVITE enviadas pelo SIP AS. Como esperado, a distribuição é aproximadamente a mesma das consultas INFO.
3. RTR
Um parâmetro importante que caracteriza o estado de uma rede de sinalização VoIP.

Fig. 6. A porcentagem de retransmissão de solicitações INFO e INVITE, respectivamente. RTRs que ocorrem uma ou mais vezes são levados em consideração.
Além dos exemplos descritos, outros dados podem ser obtidos usando o DF, por exemplo:
- Corrigir o balanceamento de carga do SIP AS para mensagens enviadas. Para fazer isso, você precisa contar o número de mensagens enviadas (Tx) em diferentes endereços IP (SrcDst IP) usando groupby (). Count () - semelhante à função retransmits_counter_tx (). A diferença no número de mensagens acima de 15-20% indica um compartilhamento de carga incorreto
- O número de transferências de chamadas com falha. Para fazer isso, você pode criar um DF separado contendo apenas caixas de diálogo REFER, bem como os cabeçalhos e campos necessários das mensagens dessas caixas de diálogo.
- A dependência dos parâmetros no tempo. Se você coletar o valor médio de um dos parâmetros, por exemplo, RRT, ao longo de vários meses, com base nos dados, poderá criar uma série temporal (série temporal, TS). Usando várias bibliotecas para análise de TS, por exemplo, modelos estatísticos, é possível determinar a tendência, sazonalidade e outros parâmetros de TS. Os dados desta previsão podem ser usados para ajustar a arquitetura da rede VoIP.
Conclusão
Os arquivos de log de texto SIP AS são uma fonte importante de informações sobre o estado atual de uma rede VoIP. Além disso, os dados obtidos após o processamento adequado dessas informações podem ser utilizados na previsão do estado de uma rede VoIP, em particular, usando métodos de ML.