SIP
O protocolo SIP (Session Initiation Protocol) é baseado em texto, com características muito similares ao HTTP. Utiliza algumas características do HTTP, tais como regras de codificação e cabeçalhos.
O objetivo do SIP é de estabelecer uma sessão entre usuários, oferecendo recursos para localização de usuários, controle de chamada e gerência de participantes em uma conferência.
O SIP é um protocolo do tipo cliente-servidor, com sintaxe e semântica similar ao HTTP. As requisições geradas por uma entidade cliente são enviadas para uma entidade do tipo servidor. O servidor processa a mensagem e devolve ao cliente uma resposta.
É um protocolo alternativo ao H.323, tendo sido desenvolvido na Universidade de Columbia e posteriormente submetido à aprovação do IETF (Internet Engineering Task Force).
O protocolo SIP fornece uma plataforma completa de sinalização para o estabelecimento e a manutenção de chamadas VoIP.
Foi padronizado pelas seguintes recomendações:
–RFC-2543 – 1999
–RFC-3261 – 2002
Como Funciona?
O SIP utiliza o conceito de “convites” (session invitations).
O usuário que inicia a chamada envia uma mensagem do tipo INVITE e o usuário final responde (se for positivamente) enviando uma mensagem de OK e já começa a transmissão das mídias.
Base do funcionamento do SIP
1.Protocolo Client/Server;
2.Clientes enviam requisições e recebem respostas;
3.Os servidores aguardam por requisições e enviam respostas;
4.Projetado de maneira similar ao HTTP;
5.Cada requisição invoca um método no servidor;
6.As mensagens contém um corpo de mensagem.
Agentes
- User Agent Client (UAC)
Como o próprio nome indica, está residente no cliente e tem a finalidade de dar início às chamadas e enviar as requisições. O User Agent pode originar ou terminar uma sessão SIP. O UAC pode ser um telefone SIP, um cliente PC (softphone) ou até mesmo um gateway SIP.
- User Agent Server (UAS)
O UAS, geralmente está residente no servidor VoIP (Asterisk), Gateway VoIP ou PABX IP. Ele é o responsável em dar a resposta das requisições feitas pelo UAC.
- User Agente (UA)
Um agente de usuário é um sistema-fim que age em nome de um usuário. Ele consiste de duas partes: um cliente e um servidor;
- Função: Interagir com o usuário do sistema SIP.
- Características: Envia e recebe requisições SIP.
- Papel: Pode atuar como cliente (UAC – Agente Utilizador Cliente) ou servidor (UAS – Agente Utilizador Servidor).
Componentes SIP
- Servidor de Redirecionamento
Usado durante a inicialização de uma sessão. Determina o(s) endereço(s) no formato URI, onde se encontra o dispositivo sendo chamado, retornando esta informação ao UAC chamador.
Não gera requisições SIP (se não atuar como Proxy).
Usado para encaminhamento de chamadas e “siga-me”.
Função: Responde uma requisição do Agente do Usuário com o nome e a localização do usuário.
Características: Não reencaminha pedidos.
O Redirect Server é responsável por fornecer a um cliente a lista de endereços possíveis para alcançar um cliente destino. Ele é capaz de fazer o mapeamento de um endereço em nenhum, ou em outros novos endereços, para alcançar o cliente de destino.
- Servidor Proxy SIP
O Proxy Server é um servidor Proxy que pode atuar como um Servidor ou um Cliente. Ele é responsável por receber mensagens e encaminhar para outros Servidores, e é capaz de fazer a tradução de endereços, reescrever uma mensagem antes de encaminhá-la, aplicar regras de segurança e até rotear as mensagens.
Função: Recebe as requisições e as encaminha para servidores mais próximos do destino.
1.Fazer o encaminhamento da sinalização;
2.Fazer a autenticação e autorização;
3.Fazer a Interpretação da requisição, podendo alterar parte da mensagem;
4.Fazer o encaminhamento da mensagem.
Papel: Servidor intermediário. Atua como cliente e servidor.
Tipo: Stateful Proxy Server e Stateless Proxy Server.
- O Stateful Proxy Server mantém o estado da chamada e permite dividir a chamada, criando uma árvore de busca pelo usuário nos múltiplos servidores. Vantagens: maior confiabilidade, capacidade de mensurar o gasto do cliente, utiliza o protocolo TCP.
- O Stateless Proxy Server encaminha para os próximos saltos tanto as requisições com as respostas e não mantêm o estado das conexões. Vantagem: maior velocidade.
- Servidor de Registro
O servidor recebe requisições do tipo REGISTER e armazena a informação “endereço IP x endereço SIP”.
Ele recebe e aceita mensagens de registro, que são utilizadas para armazenar o local corrente dos usuários. Essas informações são compartilhadas com outros servidores da rede.
Função: Serviço de localização.
- O chamado envia uma mensagem SIP INVITE.
- Antes do destino aceitar a chamada, podem ser enviadas outras mensagens.
- Quando o destino aceita a chamada é enviada uma mensagem de Ok.
- A origem envia então um ACK, informando que a conversação e o respectivo fluxo multimídia (RTP) vai começar.
- Quando um dos participantes encerra a conversa, envia uma mensagem BYE, ao que obtém como resposta um OK.
Características: Armazena registro sobre usuários.
Servidor de Localização
É uma base de dados utilizada para armazenar as informações sobre os usuários.
Esse servidor é acionado pelos servidores de redirecionamento ou servidores Proxy, com o objetivo de obter a localização de um usuário na rede SIP.
Permite criar o conceito de “mobilidade”.
Mensagens SIP
O SIP define dois tipos de mensagens: REQUEST e RESPONSE.
Uma mensagem do tipo REQUEST é enviada de um cliente a um servidor e apresenta o formato indicado a seguir:
Para as trocas de mensagens do protocolo SIP, ele utiliza o conceito de “convites” (session invitations). O usuário que inicia a chamada envia uma mensagem do tipo INVITE e o usuário final responde (se for positivamente) enviando uma mensagem de OK e já começa a transmissão das mídias.
INVITE
Esta primitiva solicita o início de uma sessão. Nessa mensagem, podem-se determinar, através do protocolo de descrição da sessão (SDP, do inglês), os parâmetros da sessão. Caso esta primitiva seja enviada depois da sessão iniciada, ela é utilizada para alterar os parâmetros da sessão e é conhecida como Re-Invite.
- ACK
A primitiva ACK é a confirmação de uma mensagem de Invite. O ACK deve conter a configuração dos parâmetros da sessão, caso o Invite correspondente não possua.
- BYE
Primitiva utilizada para terminar a sessão. Existem ainda algumas primitivas descritas nas RFCs 2976, 3428, 3265, 3262, 3903, 3515 e 3311 (2).
- CANCEL
É usada para cancelar todas as primitivas já enviadas que carecem de resposta.
- OPTIONS
A primitiva Options requisita ao receptor uma listagem com as suas capacidades, tais como primitivas, CODECs e extensões suportadas, e a sua disponibilidade.
- REGISTER
Essa primitiva é utilizada por um cliente que deseja registrar um apelido (alias) de seu endereço em um servidor SIP.
Request URL
O campo REQUEST URL é um SIP URL e é usado dentro da mensagem para indicar quem originou a mensagem (From), qual o destino corrente da mensagem (Request URL) e qual o destino final (To).
Alguns exemplos de SIP URL:
–sip:jorge@empresa.com.br
–sip:jorge@10.10.1.1
–sip:jorge@empresa.com.br;transport=udp
Um endereço SIP tradicional é da forma sip:fulano@empresa.com.br, como no exemplo sip:jorge@10.10.1.1. Contudo, esta estrutura de endereçamento é de difícil memorização. Assim, foi criado um mecanismo de endereçamento que se assemelha aos endereços de e-mail, como em sip:jorge@empresa.com.br, ou que seja simplesmente o nome próprio do usuário, desde que único.
Utilizando este mecanismo de endereçamento, o servidor SIP pode encaminhar a chamada para o dispositivo que o usuário esteja usando no momento, desde um computador a um aparelho celular.
Se o usuário possuir uma página pessoal e deseje divulgar seu endereço SIP para seus visitantes, basta que ele coloque o endereço na página, da mesma forma que é feito para e-mail (método não aconselhável, pois pode causar o recebimento de SPAMs). O usuário só precisa adicionar a URL “sip:jorge@empresa.com.br” e quando o visitante acessar a página e clicar nesta URL, o aplicativo SIP instalado na máquina é ativado e faz a chamada para o usuário que publicou seu endereço.
Resposta SIP
Um servidor SIP envia uma resposta SIP para um cliente a fim de indicar o status de uma requisição SIP que o cliente tenha enviado previamente ao servidor.
O UAS ou Proxy gera respostas SIP em respostas ou requisições SIP iniciadas por um UAC.
As respostas SIP são numeradas de 100 a 699. Respostas SIP são agrupadas como 1xx, 2xx e assim por diante até 699. As respostas SIP são classificadas como provisórias ou finais.
Uma resposta provisória indica o progresso pelo servidor, mas não indica o que ocorrerá no final como resultado do processamento de uma requisição SIP.
A classe 1xx de resposta SIP indica um status provisório. Uma resposta final indica o término e status final de uma requisição SIP. As classes 2xx, 3xx, 4xx, 5xx e 6xx são finais.
Uma mensagem do tipo RESPONSE é enviada após uma mensagem do tipo REQUEST ter sido recebida e processada, e apresenta o formato indicado a seguir:
O campo SIP version da mensagem RESPONSE possui a mesma função da mensagem REQUEST. Portanto, garante a interpretação correta das mensagens SIP.
O campo Reason Phrase é uma frase textual com o objetivo de informar de forma resumida o significado do valor do campo Status Code.
Status Code (Response)
O protocolo SIP possui seis classes de respostas às requisições de um Agente de Usuário Cliente. Essas respostas são dadas pelos Agentes de Usuário Servidores ou por Servidores SIP. As classes de respostas seguem o padrão do HTTP para cinco classes e foi criada uma classe adicional de resposta para requisições específicas do SIP:
1 – Classe Informacional: As mensagens recebidas que pertencem a esta classe indicam o progresso das chamadas SIP. A primeira mensagem recebida pelo agente de usuário cliente (UAC) confirma o recebimento do Invite e indica que o UAC deve parar de mandar Invites.
2 – Classe Sucesso: As mensagens de resposta enviadas com estes códigos indicam aceitação a uma requisição. No caso da primitiva Invite, deve ser enviada uma mensagem Ack.
3 – Classe Redirecionamento: Esta mensagem é enviada por um servidor de redirecionamento, quando o usuário não se encontra na localização procurada e necessita a indicação da nova localização. Nesse caso, dependendo da arquitetura utilizada na rede SIP, podem ocorrer dois processos que tornam a comunicação transparente para o usuário: O UAC envia uma mensagem de Invite automaticamente para a nova localidade ou o servidor de redirecionamento envia um Ack para o UAC e redireciona a sessão para a nova localidade do receptor.
4 – Classe Erro do Cliente: As mensagens pertencentes a esta classe indicam algum erro na solicitação do cliente, que deve refazê-la, seguindo as informações obtidas do erro ocorrido.
5 – Classe Erro do Servidor: Estas respostas avisam o cliente que a solicitação enviada não pôde ser processada naquele servidor, mas o cliente pode enviá-la para outros servidores da rede SIP.
6 – Classe Erro Global: As mensagens de erro global indicam que a requisição enviada irá falhar em qualquer servidor SIP que for enviada, não devendo o cliente reenviá-la. Para enviar este tipo de resposta, o servidor deve ter total conhecimento do destinatário da mensagem.
As mensagens de respostas são enviadas com um código de três dígitos, no qual o primeiro é o código da classe de resposta e os dois últimos são os números de ordem das respostas. Porém, se um Agente de Usuário Cliente não conhecer a mensagem pelo seu código de cliente, ele deve ser capaz de entender a resposta pela classe.
Troca de Mensagens SIP
Uma transação SIP pode resultar no estabelecimento, modificação ou finalização de uma sessão. O estabelecimento de uma sessão também resulta em um relacionamento de sinalização entre os peers, conhecido como um diálogo. Um diálogo é definido como um relacionamento SIP peer-to-peer entre dois ou mais UA´s que persiste durante a sessão. Um diálogo é o estado indentificado pelo Call-ID, tag local e tag remota. Nem todas as transações SIP afetam o estado de um diálogo.
Múltiplas transações SIP podem ocorrer dentro do contexto do diálogo SIP. Cada transação SIP dentro desse diálogo possui um número de sequenciamento crescente no cabeçalho Cseq.
Neste exemplo um diálogo é estabelecido através da mensagem REGISTER, enviada de um UAC ao UAS. As mensagens 100 Trying e 200 Ok são respostas SIP. O UAS envia respostas SIP ao UAC indicando o status da requisição SIP.
Uma transação SIP pode resultar no estabelecimento, modificação ou finalização de uma sessão. O estabelecimento de uma sessão também resulta em um relacionamento de sinalização entre os peers, conhecido como um diálogo. Um diálogo é definido como um relacionamento SIP peer-to-peer entre dois ou mais UA´s que persiste durante a sessão. Um diálogo é o estado indentificado pelo Call-ID, tag local e tag remota. Nem todas as transações SIP afetam o estado de um diálogo.
Múltiplas transações SIP podem ocorrer dentro do contexto do diálogo SIP. Cada transação SIP dentro desse diálogo possui um número de sequenciamento crescente no cabeçalho Cseq.
Neste exemplo um diálogo é estabelecido através da mensagem REGISTER, enviada de um UAC ao UAS. As mensagens 100 Trying e 200 Ok são respostas SIP. O UAS envia respostas SIP ao UAC indicando o status da requisição SIP.
IAX
IAX (Inter Asterisk eXchange) é um protocolo que foi desenvolvido pela Digium com o objetivo de estabelecer comunicação entre dois servidores Asterisk, mas atualmente este protocolo já é utilizado, em telefones VoIP. Assim como existem telefones SIP existem também telefones IAX2.
Ele atua como um protocolo transporte, tal como o SIP, no entanto faz uso apenas de um único porta (UDP 4569) tanto para sinalização como para streams de voz RTP. O fato dele utilizar apenas um porta é uma vantagem em cenários complexos onde há Firewall e ou NAT. Vejamos os tipos de Frame que são utilizados:
1.Frame Completo:
–Envia sinalização ou dados sobre a mídia.
–Usados geralmente para controlar a inicialização, configuração e encerramento de uma chamada IAX.
–Pode, eventualmente ser usados para transportar mídia.
–Enviados de forma confiável, então exige um “aceite” imediato no seu recebimento.
2.Mini Frame:
–Envia apenas mídia em uma chamada IAX já estabelecida.
–Não são enviados de forma confiável.
–Utiliza um mínimo de sobrecarga de protocolo.
3.Meta Frame usado no Modo Trunk:
–Tem um propósito muito parecido com o mini frame, já que enviam mídia com otimização dos cabeçalhos.
–Modo de funcionamento do protocolo onde há o “agrupamento” de vários segmentos de mídia em um único frame IP.
–É o método indicado para a interconexão de servidores Asterisk, já que é o método onde há maior otimização de banda.
–Precisam de uma fonte de sincronização de tempo fornecida pelo módulo ZAPTEL (DAHDI), caso não esteja usando nenhuma placa de comunicação Digium ou seus clones, carregue o ZTDUMMY.
–Economia real de banda a partir de 4 (quatro) chamadas simultâneas.
Venha Participar de um Treinamento Totalmente Prático
Saiba como configurar grupo de ramais, ramal tronco, interconexão com a RTPC através de links E1.