Nessa seção apresentarei o protocolo SIP que é fundamental para análise da troca de sinalização na rede IMS.
O objetivo não é apresentar um curso completo e sim fazer uma abordagem objetiva para fornecer o conhecimento necessário para compreensão da comunicação entre os elementos da rede IMS.
O SIP é um protocolo de controle de sinalização e controle de chamada amplamente utilizado para estabelecer, modificar e terminar sessões multimídia como voz, vídeo e mensagens através da rede IP. Ele trabalha com outros protocolos necessário para o estabelecimento das chamadas, como: RTP (Real-time Transport Protocol) para transmissão de mídia e o SDP (Session Description Protocol) para negociação e estabelecimento de mídia.
No core IMS temos várias interfaces SIP para comunicação entre os elementos. Na figura abaixo apresento uma rede IMS destacando em vermelho as interfaces SIP (ISC, Gm, Mx, Mg/Mj).

Servidores SIP
Antes de falar sobres servidores é importante mencionar que o SIP é um protocolo baseado em requisições e respostas e as partes envolvidas ou end point são chamados de User Agent (UA) que podem ser client ou server.
Uma rede baseada em SIP possui elementos ou servidores como por exemplo: Proxies, Redirect, Registrar, Back-to-back e User Agent. Nessa seção vou fazer a relação desses servidores com os elementos da rede IMS.
O User Agent client (UAC) é qualquer elemento de rede que envia as requisições (INVITE) e o melhor exemplo no VoLTE ou VoWiFi são os terminais ou telefones.
O User Agent Server (UAS) é o elemento de rede que recebe as requisições (INVITE) e envia as respostas. Pode ser, por exemplo, outro telefone ou uma plataforma de voice Mail. É importante mencionar que essas entidades são lógicas e seus papéis podem se inverter durante a transação, ou seja, todo User Agent pode atuar como UAC ou UAS.
O Servidor Proxy é responsável por encaminhar requisições SIP para o UAS e respostas SIP para o UAC. Uma requisição pode passar por mais de um proxy até alcançar o UAS, ele de maneira geral não pode iniciar requisições e também não pode modificar o conteúdo do SDP de uma mensagem INVITE. Na rede IMS um exemplo de servidor proxy é o S-CSCF.
O Servidor Registrar fornece autenticação e serviço de localização e na rede IMS quem é responsável por essas funções é o S-CSCF.
O servidor Redirect recebe a solicitação e retornar uma resposta de redirecionamento (3xx) indicando o destino. Um bom exemplo dessa função no IMS é o LRF (Location Retrival Location). Na seção de serviço de emergência apresentarei o LRF que é um elemento utilizado para informar a localização do assinante e o telefone do serviço de emergência.OBack-to-back User Agent (B2BUA) é um importante servidor para a rede IMS. Ele executa as funções de Client e Server ao mesmo tempo atuando como Server do ponto de vista do UAC e como Client do ponto de vista do UAS. O B2BUA divide a comunicação SIP em duas pernas e no IMS podemos citar como exemplos de elementos que fazem essa função os Application Server e o P-CSCF.
Forking
Outra característica muito importante do SIP e que contribuí para o serviço IMS é a possibilidade de forking ou busca paralela. O forking possibilita que várias entidades ou terminais sejam associados a um único endereço permitindo que todos os terminais sejam chamados simultaneamente. No VoLTE ou VoWiFi o serviço de Smart Watch ou MultiSIM utiliza o SIP forking para que o telefone principal e o Smart Watch recebam chamadas simultaneamente independente se estão emparelhados via bluetooth. É importante mencionar que a entidade que atender recebe a chamada.
Métodos SIP
São definidos pela RFC 3261 alguns tipos de requisições ou métodos. São exemplos: INVITE, REGISTER, BYE, ACK, CANCEL e OPTIONS.
Além desses métodos há outros definidos por outras RFC e que são importantes para o funcionamento de serviços no core IMS, como: SUBSCRIBE, NOTIFY, REFER, MESSAGE, UPDATE e PUBLISH.

Cabeçalho SIP
O propósito desse tópico é fornecer uma referência para o que considero os principais cabeçalhos SIP ou SIP headers.
Abaixo o printout de um SIP INVITE onde vou comentar os principais header:

Antes de falarmos dos headers é importante destacar a Request Line que fica na primeira linha imediatamente antes dos cabeçalhos. Nesse campo temos a resquest line com Request-URI (R-URI) e a versão do SIP (SIP/2.0). O R-URI é o endereço usado para roteamento.
Descrição dos principais cabeçalhos ou headers:
Via – Fornece informações sobre o caminho do roteamento de resposta. O roteamento de respostas SIP como “180 Ringing” ou “200 OK” são determinados pelos cabeçalhos Via.
From – Identifica o originador da solicitação ou da resposta SIP. É importante destacar que no SIP request o header From sempre será preenchido com o número de origem, porém caso o BYE (Desconexão) seja feita pelo número de destino o campo From será preenchido com o número que originalmente estava no destino, ou seja, há uma inversão entre as informações preenchidas nos headers From e To.
To – Identifica o número de destino da solicitação ou da resposta SIP. Assim como no cabeçalho From há inversão da informação preenchida no header To caso a desconexão seja feita pelo número de destino.
Call-ID – É preenchido com um ID ou código exclusivo que identifica a chamada SIP. As mensagens que contém o mesmo identificador serão atribuídas à mesma chamada SIP.
CSeq – Esse cabeçalho especifica o número de solicitações de cada tipo que foram enviadas. Por exemplo, CSeq: 10 INVITE significa que é a décima solicitação. Esse número aumenta a cada solicitação adicional do mesmo tipo.
P-Asserted-Identity – O campo de cabeçalho P-Asserted-Identity usado entre entidades SIP para transportar a identidade do usuário. Ele é usado quando é necessário ter certeza do número que originou a chamada.
P-Access-Network-Info – Este cabeçalho contém informações de localização recebida no RAT-Type da rede de acesso ou da rede WiFi onde o usuário está fazendo a chamada.
Formato VoLTE: 3GPP-E-UTRAN-FDD;utran-cell-id-3gpp=72405b2993364d03
Formato VoWiFi: IEEE-802.11;i-wlan-node-id=28833543e7dd
P-Visited-Network-ID – No processo de registro de um usuário na rede um P-Visited-Network-Id (PVNI) pode ser preenchido. Quando em Roaming Internacional esse cabeçalho indica qual país o dispositivo do usuário está sendo usado.
Respostas SIP
O SIP possui alguns códigos de resposta usados para indicar o resultado de uma solicitação ou ação realizada durante uma sessão de comunicação. As respostas são divididas em seis classes conforme tabela abaixo.
Para maiores informações é possível consultar a seção 21 da RFC 3261 que tem em detalhe todos os códigos de resposta de cada uma dessas classes.

