Link

Introdução

  • SIP(Session Initiation Protocol), trabalha com gerenciamento de sessões, com várias formas de sessões multimídia de tempo real.
  • É um protocolo da aplicação que lida com chamadas de telefone pela Internet.
  • o SIP suporta 5 "facetas":
    • Localização do usuário
    • Disponibilidade do usuário
    • Aptidões do usuário
    • Iniciação de sessão (setup)
    • Gerenciamento de sessão
  • Pode trabalhar com outros procolos (RTP,RSTP,SDP,MEGACO), mas não precisa deles necessariamente.
  • O SIP não provê serviços, mas primitivas para que estes possam ser implementados.
  • Não é oferecido nenhum controle sobre os serviços de conferência, para isto devem ser usados outros protocolos.
  • São oferecidos serviços de segurança, que envolvem criptografia, autenticação, privacidade...
  • Funciona com IPv4 e IPv6.

Overview das Operações

  • As funções básicas do SIP envolvem: localização do ponto final, negociação de parâmetros da sessão, etc.
  • O SIP usa identificadores (URI) chamados de SIP URI. Cada lado da chamada possui o seu identificador.
  • Um "INVITE" é uma requisição de chamada, parecido com o acontece no HTTP. Esta mensagem pode conter informações adicionais em seus campos.
  • Segue abaixo uma figura de uma troca de mensagens SIP, e o modelo de um INVITE:
Setup de uma sessão SIP
Mensagem INVITE
  • Os campos do INVITE:
    • Via: contém o endereço pelo qual Alice espera respostas para esta requisição, que também contém um parâmetro que identifica a transação.
    • To: contém o destino (nome) e seu SIP URI.
    • From: tem o nome do solicitante, seu SIP URI adicionado de uma string randômica usada para identificação.
    • Call-ID: identificador único para esta chamada. A combinação de To, From e Call-ID define o relacionamento SIP peer-to-peer.
    • CSeq: é um número incrementado para cada requisição (como um numero de sequência).
    • Contact: traz um SIP ou SIP URI para contato direto com o solicitante. Neste campo pode ter o IP.
    • Max-Forwards: funciona como o TTL, limitando o número de saltos.
    • Content-Type: descrição do corpo da mensagem.
    • Content-Lenght: um contador de bytes do corpo da mensagem.
  • Uma mensagem SDP pode ser carregada pelo SIP com informações sobre a sessão.
  • Se Alice não conhece a localização de Bob, seu servidor SIP (atlanta.com) passa a fazer a busca, e manda um Trying falando que recebeu o INVITE. A busca pode ser feita usando DNS e vai passando pelos servidores até chegar no Bob. Estes servidores podem ser chamados de proxy.
  • Bob manda para Alice um reconhecimento de que recebeu o INVITE e depois um OK, aceitando-o.
  • A mensagem OK copia os campos do INVITE e adiciona uma tag no "To" que vai ser usada pelo resto da comunicação. Segue abaixo a mensagem OK:
Mensagem OK
  • Um servidor proxy pode mandar vários invites ao mesmo tempo, isso é chamado de forking.
  • Alice responde o OK com um ACK, fechando o tree way handshaking do SIP. O ACK é direto pois o endereço de Bob já foi "aprendido".
  • Um re-INVITE pode ser mandado paraa mudar as características da sessão, o qual deve ser respondido com um OK e depois ACK. Se não for aceito vem uma mensagem de "não aceitável" de número 488.
  • Para encerrar é gerada uma mensagem BYE que deve ser respondida com uma 200(OK). Neste caso não há ACK.
  • Um servidor proxy pode solicitar que todas as mensagens passem por ele.
  • Uma operação comum é regitrar, para que o servidor proxy saiba a localização corrente do SIP phone. Aí fica claro que a distinção entre os servidores SIP é lógica e não física.
  • Um usuário pode ter vários phones e um phone pode ser usado por vários usuários, assim o proxy pode fazer múltiplas buscas. O "registrar" pode ajudar nisto, mas não é o único meio, algumas funções de mapping podem ser configuradas pelo administrador.
  • Existem outras mensagens SIP que serão apresentadas depois.

Estrutura

  • O SIP pode ser estruturado em camadas.
  • A primeira seria da sintaxe e codificação. A segunda seria a de transporte, que define como o cliente envia e recebe respostas. A terceira seria de transação, que envolve retransmissões, respostas,timeouts. A próxima camada seria o usuário de transação.
  • Siglas:
    • UA: User Agent
    • UAC: User Agent Client
    • UAS: User Agent Server
    • Obs: estes componentes serão explicados posteriormente.
  • Um diálogo é um relacionamento SIP peer-to-peer.
  • O método mais importante do SIP é o INVITE.

Definições

  • AOR (Address-of-Record): é como se fosse o endereço público de um usuário, sendo o SIP ou SIPS URI que aponta para um domínio com um serviço de localização.
  • Back-to-Back User Agent (B2BUA): entidade local que recebe requisições e as processa como um UAS, e para determinar como seriam respondidas funciona como um UAC
  • Call: refere a alguma comunicação entre peers.
  • Call Stateful: mantém o estado de um diálogo desde o INVITE até o BYE.
  • Conferência: Uma sessão com vários participantes.
  • Core: funções específicas de uma entidade SIP.
  • Downstream: do UAC até o UAS.
  • Home Domain: Que oferece servíço de domínio ao usuário.
  • Location Service: Usado por um redirecionamento SIP ou proxy para obter informações sobre a localização do callee (que recebe a requisição)
  • Roteamento solto (Loose): segue procedimentos definidos para processar o campo de cabeçalho de roteamento, separando o destino do conjunto de proxies que devem ser visitados.
  • Proxy de Saída (Outbound): Não pode ser resolvido pelo Request-URI.
  • Busca paralela: Um proxy procura um usuário em várias possibilidades ao mesmo tempo.
  • Resposta provisória: indica um avanço na busca, transação SIP, mas não o fim.
  • "Registrar": Um servidor que aceita requisições do tipo REQUEST.
  • Transação Regular: Uma transação que não envolva INVITE, CANCEL ou ACK.
  • Ringback: Um tom produzido na chamada, indicando que a chamada foi alertada.
  • Route Set: conjunto de SIPs ou SIPS URI que representa uma lista de proxies.
  • Spiral: a mesma requisição chegando de diferentes formas em um proxy, o que resulta em diferentes respostas.
  • Stateful/Stateless proxy: mantém ou não máquinas de estado do cliente ou servidor. É uma entidade lógica.
  • Strict Routing: Outro tipo de roteamento seguindo a RFC 2543. O Proxy destrói os conteúdos do Request URI quando um Route header é presente.
  • Usuário de Transição (TU): Camada que contém os cores (UAC, UAS, proxy).
  • Upstream: Do UAS para o UAC.
  • UAC: Cria uma requisição e a envia.
  • UAS: Recebe um request e gera uma resposta. Tanto UAC quanto UAS recebem este nome enquanto durar a transação.
  • UA: Pode ser UAC ou UAS.

Mensagens SIP