Tutorial: Como Usar O Protocolo Sip Com A Webrtc

Picture of Leonardo Ferreira

Leonardo Ferreira

19/10/2024

Índice

Se você quer saber como usar o protocolo SIP com a WebRTC, provavelmente possui uma estrutura SIP e está buscando uma maneira de interligá-la com pontos habilitados para WebRTC. Também é possível que você já tenha um aplicativo web e esteja buscando uma forma de interligá-lo com seu telefone. Em qualquer um dos casos, o objetivo é o mesmo – interconexão. É disso que se trata o protocolo SIP.

Antes de podermos responder à pergunta principal, ou seja, como usar o protocolo SIP com a WebRTC, precisamos entender claramente o que é SIP. Vejamos uma abordagem técnica esclarecedora logo a seguir.

O que é SIP e como o protocolo funciona?

O Protocolo de Iniciação de Sessão (SIP) existe desde a década de 90. É um protocolo de sinalização baseado em texto usado para gerenciar sessões de mídia entre dois pontos finais conectados por IP.

O SIP é frequentemente usado em comunicações de Voz sobre IP (VoIP). Essas comunicações, por sua vez, vem impulsionando um crescimento bastante significativo em termos do que o SIP pode fazer. O que começou como uma especificação relativamente simples é agora uma coleção ampla de RFCs, propostas e extensões.

Isso pode soar complicado, mas a base do SIP é bastante simples. Sua estrutura é muito semelhante ao HTTP. Cada mensagem SIP consiste em uma série de cabeçalhos, cada uma em sua própria linha, seguido por um corpo de mensagem.

O corpo da mensagem SIP usa algo chamado Session Description Protocol – Protocolo de Descrição da Sessão (SDP) – que é usado em algumas mensagens SIP para descrever informações sobre os fluxos de mídia que eventualmente fluirão entre os dois pontos finais, como o número e tipo de fluxo (por exemplo: áudio ou vídeo) e quais codificações são permitidas (por exemplo: G.711, Opus, VP8 ou H.264).

Em uma configuração de chamada típica, duas mensagens SDP são enviadas – uma oferta e uma resposta. O iniciador de chamadas envia a oferta primeiro, descrevendo o quanto puder sobre a sessão e as capacidades/desejos do lado da oferta. O receptor de chamadas, então, envia uma resposta que inclui informações sobre suas próprias capacidades/desejos dentro do contexto do que foi oferecido. Se tudo correr bem, os dois pontos estarão conectados e começarão a enviar e receber dados.

Agora você já tem o conhecimento técnico necessário para saber como usar o protocolo SIP com a WebRTC, mas antes vamos entender como um está relacionado ao outro.

O que o protocolo SIP tem a ver com a WebRTC?

A WebRTC está naturalmente relacionada ao protocolo SIP.

Como o SIP, a WebRTC destina-se a suportar a criação de sessões de mídia entre dois pontos finais conectados por IP. Como o SIP, as conexões usam o Real-time Transport Protocol – Protocolo de Transporte em Tempo Real (RTP) – para pacotes no plano de mídia quando a sinalização está completa. Como o SIP, a WebRTC também utiliza SDP.

No entanto, a WebRTC difere do protocolo SIP em dois aspectos:

A WebRTC não exige o uso de mensagens SIP no plano de sinalização. Na verdade, a WebRTC não toma qualquer decisão sobre o uso de SIP ou qualquer outro protocolo de sinalização. A sinalização real (envio/recebimento) das mensagens SDP é feita pelo aplicativo. O SIP, por outro lado, define um formato de mensagem muito específico que deve ser usado para encapsular e enviar mensagens SDP para fins de configuração de chamadas.

A WebRTC exige o uso de alguns recursos SIP opcionais no plano de mídia: o uso de codecs específicos, o uso do perfil SRTP para criptografia e autenticação, o uso do Datagram Transport Layer Security (DTLS) para gerar chaves utilizadas pelo SRTP e o uso de Interactive Connectivity Establishment e Session Traversal Utilities para NAT e Traversal Using Relays para a passagem de rede.

Deixando de lado todos os argumentos sobre essas diferenças serem boas ou não, elas existem e por isso temos que trabalhar com elas. Vamos dar uma olhada nos dois planos a seguir para entender, enfim, como usar o protocolo SIP com a WebRTC.

Plano de sinalização

Partindo do pressuposto de que a infraestrutura SIP existente não vai mudar para um protocolo de sinalização diferente, a WebRTC vai ter que aprender a se comunicar com o protocolo SIP.

Existem duas maneiras de conseguir isso:

  • Usando o SIP como pilha de sinalização para o seu aplicativo habilitado para WebRTC.
  • Usando outra solução de sinalização para o seu aplicativo habilitado para WebRTC, mas adicionando um gateway de sinalização para traduzir entre um e outro.

Qual opção é melhor para você? Isso depende muito da sua infraestrutura existente e dos seus planos de expansão. Considere as seguintes questões:

  • Você possui uma infraestrutura SIP existente?
  • Você tem uma unidade de encaminhamento seletivo (SFU) ou uma unidade de controle multiponto (MCU) para ajudar a dimensionar suas conexões WebRTC?
  • Sua aplicação web já usa um sistema como WebSync ou XMPP para comunicações de texto em tempo real?
  • Em que plataformas seu aplicativo é executado?
  • Você tem uma pilha de sinalização SIP que funciona nessas plataformas?

O caminho certo para você dependerá fortemente dessas respostas.

Plano de mídia

Se você ainda não possui uma infraestrutura SIP existente, então a escolha certa pode ser simplesmente escolher uma tecnologia SIP compatível com WebRTC.

Muitos gateways SIP (por exemplo, FreeSWITCH) e serviços de trunking SIP (por exemplo, Voxbone) podem ser configurados para usar DTLS/ICE e os codecs exigidos pela WebRTC.

Se você já possui uma infraestrutura SIP existente, talvez seja necessário adicionar um Session Border Controller (SBC) que possa atuar como um gateway de mídia entre a WebRTC e os pontos finais VoIP. Se você tiver um SFU/MCU ajudando você a reduzir as conexões WebRTC, o servidor de mídia poderá atuar como esse gateway.

Novamente, o caminho certo para você pode exigir uma discussão e uma avaliação de sua infraestrutura e suas necessidades.

Considerações finais

Esperamos que esse tutorial tenha ajudado você a entender como usar o protocolo SIP com a WebRTC. Se você não tem certeza do caminho a seguir, deixe nossa equipe de profissionais guiá-lo!

Entre em contato hoje mesmo com os consultores da Omnismart para discutir suas necessidades e tire o maior proveito dessas tecnologias.

Picture of Leonardo Ferreira

Leonardo Ferreira

19/10/2024

plugins premium WordPress