126
Giuseppe M. Stephan SIP - Session Initiation Protocol Protocolo SIP Session Initiation Protocol VoIP - Voice over IP

Aula4 Telefonia+Digital+ +VoIP+SIP

Embed Size (px)

Citation preview

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Protocolo SIPSession Initiation Protocol

VoIP - Voice over IP

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Agenda 1 - Introdução

Histórico2 - Chamada SIP

Estabelecimento de uma sessão simplesChamada SIP com Proxy ServerRegistro no SIPRedirecionamento no SIPRedirecionamento SIP via servidor ProxyForkingPresença e Instant Message

3 - Características do SIPMétodos SIPTransações SIPCódigos de resposta

4 - Mensagem SIP5 - Arquitetura SIP

SIP - Session Initiation Protocol

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

Introdução ao SIP

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Introdução

Ligação VoIP

Necessita que se estabeleça uma sessão entre o emissor e o receptor.

A sessão pode ser: Simples ligação de voz entre duas pessoas

Ligação envolvendo voz, dados e vídeo

Conferência multimídia, ...

VoIP: principais protocolos de estabelecimento de sessão são:

H.323, MGCP/Megaco e o SIP.

SIP - Session Initiation Protocol

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Introdução

SIP não está limitado à Internet

• Permite estabelecer presença de usuário e localização.

Disponível para aplicações que tenham a noção de sessão:

• Sistemas de Realidade Virtual

• Games de rede

• Vídeo-conferência

• Processamento de Chamadas

• Localização de usuários

• Instant Messaging

• Presença.

SIP - Session Initiation Protocol

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Histórico

Década de 90 : O SIP foi desenvolvido pela IETF (Internet Engineering Task Force)

Mesmo grupo criador do RTP e RTCP em contrapartida ao H.323.

1996: Lançada a 1a. versão do protocolo que apenas estabelecia a sessão

Chamado inicialmente de Session Invitation Protocol.

1997: Lançada a versão 2.0

Novas funcionalidades como controles para conferências

Passou a significar Session Iniatition Protocol,

Mescla entre SIPv1 e o SCIP(Simple Conference Invitation Protocol)

Vantagem em relação aos predecessores

• Comunicação tanto por TCP como por UDP

• Incorporação dos protocolos: HTTP e SMTP.

SIP - Session Initiation Protocol

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Histórico

1999: Publicado em Abril, como RFC 2543.

2000: Escolhido como protocolo de comunicação 3GPP.

2001: IETF decide dividir o grupo de desenvolvedores do SIP

Criação de 3 grupos com focos de pesquisa diferentes:

SIP:Responsável pelas especificações do protocolo/extensões

SIPPING:Session Initiation Protocol Investigation

Investigar aplicações, desenvolver requisitos e BCP.

SIMPLE:SIP for Instant Messaging and Presence Leveraging Extensions

Padronização de Presença e Instant Messenger utilizando o SIP.

2002: A versão SIPv2 proposta como padrão e publicado como RFC 3261,

SIP - Session Initiation Protocol

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

Estabelecimento de uma sessão simples

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Estabelecimento de uma sessão simples

Premissas

• Os dispositivos podem ser telefones SIP,

hand-helds, palmtops ou ainda celulares

• É assumido que ambos os dispositivos são

conectados para um rede IP

• Cada um sabe o endereço do outro

SIP - Session Initiation Protocol

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Estabelecimento de uma sessão simples

O chamador inicia a troca de mensagens enviando um “comando” INVITE para o ponto final chamado.

O INVITE contém detalhes do tipo de sessão ou chamada requisitada.

Pode ser:• uma sessão simples de voz (áudio), • uma sessão multimídia como vídeo- conferência,• ou ainda uma sessão de jogo.

SIP - Session Initiation Protocol

INVITE

Giuseppe M. Stephan

SIP - Session Initiation Protocol

INVITE

O INVITE contém os seguintes campos:

INVITE sip:[email protected] SIP/2.0Via: SIP/2.0/UDP lab.uniminas.br:5060;branch=z9hG4bkfw19bMax-Forwards: 70To: Joao Paulo <sip:[email protected]>From: Luiz Claudio <sip:[email protected]>;tag=76341Call-ID: [email protected]: 1 INVITESubject: Aula sobre ProtocolosContact: <sip:[email protected]>Content-Type: application/sdpContent-Length: ???

v=0o=luiz 2890844526 2890844526 IN IP4 lab.uniminas.brs=Chamada Telefonicac= IN IP4 100.101.102.103t= 0 0m=audio 49170 RTP/AVP 0a=rtpmap:0 PCMU/8000

SIP - Session Initiation Protocol

INVITE

Giuseppe M. Stephan

SIP - Session Initiation Protocol

INVITE

O INVITE contém os seguintes campos:

INVITE sip:[email protected] SIP/2.0- Método usado para envio da mensagem- Request-URI: Recurso para o qual a requisição está sendo enviada (requisição destino)- Versão do SIP.

Via: SIP/2.0/UDP lab.uniminas.br:5060;branch=z9hG4bkfw19b- Versão do SIP - /Mídia de transporte- Endereço ou nome do servidor- : Número da Porta utilizada- Identificador de transação para correlação de resposta às requisições.

Max-Forwards: 70- Número inteiro inicial que é decrementado por cada servidor SIP que receber e encaminhar a requisição.

SIP - Session Initiation Protocol

INVITE

Giuseppe M. Stephan

SIP - Session Initiation Protocol

INVITE

To: Joao Paulo <sip:[email protected]>- Destino da requisição SIP.

From: Luiz Claudio <sip:[email protected]>;tag=76341- Originador da Requisição SIP.

Call-ID: [email protected] Identificador usado para manter um rastreamento de uma sessão SIP específica.

Cseq: 1 INVITE- Sequência de comando: O nro é seguido pelo méto- do e incrementado a cada nova requisição enviada.

Subject: Aula sobre Protocolos- Não é usado pelo protocolo mas pode ser mostrado durante o alerting ao ponto final chamado.

Contact: <sip:[email protected]>- Exigido pelo INVITE e contém o endereço do dispositivo chamador.

SIP - Session Initiation Protocol

INVITE

Giuseppe M. Stephan

SIP - Session Initiation Protocol

INVITE

Content-Type: application/sdp- Referencia o corpo da mensagem.

Content-Length: ???- Indica o tamanho do corpo da mensagem em octetos conforme totalização abaixo:

v=0 - Nro da versão 05o=luiz 2890844526 2890844526 IN IP4 lab.uniminas.br

- Origem 59

s=Chamada Telefonica - Assunto

c= IN IP4 100.101.102.103 - Conexão 26

t= 0 0 - Tempo 07

m=audio 49170 RTP/AVP 0 - Mídia 25

a=rtpmap:0 PCMU/8000 - Atributos 22

====================

Total: 158

SIP - Session Initiation Protocol

INVITE

Giuseppe M. Stephan

SIP - Session Initiation Protocol

INVITE

Content-Type: application/sdp- Referencia o corpo da mensagem.

Content-Length: 158- Indica o tamanho do corpo da mensagem em octetos conforme totalização abaixo:

v=0 - Nro da versão 05o=luiz 2890844526 2890844526 IN IP4 lab.uniminas.br

- Origem 59

s=Chamada Telefonica - Assunto 14

c= IN IP4 100.101.102.103 - Conexão 26

t= 0 0 - Tempo 07

m=audio 49170 RTP/AVP 0 - Mídia 25

a=rtpmap:0 PCMU/8000 - Atributos 22

====================

Total: 158

SIP - Session Initiation Protocol

INVITE

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Estabelecimento de uma sessão simples

Ringing: Resposta ao INVITE

Indica que a parte chamada recebeu o INVITE e que o Alerting está tomando lugar.

O Alerting pode ser:• um toque no telefone• uma mensagem numa tela• ou outro método que atraia a atenção da pessoa chamada.

Respostas são numéricas e classificadas pelo 1o. Dígito.

O 1, Neste caso, indica uma resposta informacional, sendo não-críticas e mostram o progresso da chamada.

SIP - Session Initiation Protocol

INVITE

180 Ringing

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Ringing

Estrutura do 180 Ringing:

SIP/2.0 180 RingingVia: SIP/2.0/UDP lab.uniminas.br:5060;branch=z9hG4bkfw19b;received=100.101.102.103To: Joao Paulo <sip:[email protected]>;tag=a53e42From: Luiz Claudio <sip:[email protected]>;tag=76341Call-ID: [email protected]: 1 INVITEContact: <sip:[email protected]>Content-Length: 0

São copiados vários campos da mensagem INVITE:Via, To, From, Call-ID e Cseq.

SIP - Session Initiation Protocol

INVITE

180 Ringing

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Ringing

Estrutura do 180 Ringing:

SIP/2.0 180 RingingVia: SIP/2.0/UDP lab.uniminas.br:5060;branch=z9hG4bkfw19b;received=100.101.102.103

- Adiciona o endereço IP, mesmo que o DNS lab.uniminas.br pertencente à linha Via.

To: Joao Paulo <sip:[email protected]>;tag=a53e42From: Luiz Claudio <sip:[email protected]>;tag=76341- To e From não são invertidos, ou seja, mantém a direção da requisição e não da resposta.- To contém a Tag gerada pelo destinatário.

Call-ID: [email protected]: 1 INVITEContact: <sip:[email protected]>- Contém agora o endereço que o destinatário pode ser contactado diretamente.

Content-Length: 0

SIP - Session Initiation Protocol

INVITE

180 Ringing

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

INVITE

180 Ringing

200 OK

OK

SIP/2.0 200 OKVia: SIP/2.0/UDP lab.uniminas.br:5060;branch=z9hG4bkfw19b;received=100.101.102.103To: Joao Paulo <sip:[email protected]>;tag=a53e42From: Luiz Claudio <sip:[email protected]>;tag=76341Call-ID: [email protected]: 1 INVITEContact: <sip:[email protected]>Content-Type: application/sdpContent-Length: 155

v=0o=luiz 2890844528 2890844528 IN IP4 lab.uniminas.brs=Chamada Telefonicac= IN IP4 200.201.202.203t= 0 0m=audio 60000 RTP/AVP 0a=rtpmap:0 PCMU/8000

- As capacidades de mídia são comunicadas no corpo da mensagem SDP.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

INVITE

180 Ringing

200 OK

OK

SIP/2.0 200 OK

O SDP contém:

200.201.202.203 -> Endereço IP do ponto final

audio -> Formato da mídia

60000 -> Número da porta

RTP -> Protocolo de mídia

PCM -Law -> Codificação da mídia

8000 -> Taxa de amostragem(MHz )

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

ACK

ACK sip:[email protected] SIP/2.0Via: SIP/2.0/UDP lab.uniminas.br:5060;branch=z9hG4bk321g;Max-Forwards: 70To: Joao Paulo <sip:[email protected]>;tag=a53e42From: Luiz Claudio <sip:[email protected]>;tag=76341Call-ID: [email protected]: 1 ACKContent-Length: 0

Neste último passo, a confirmação que Luiz recebeu de joao, a resposta com sucesso.

- A sequência de comando tem o mesmo número que o INVITE mas o método agora é ACK- O parâmetro branch contém um novo identificador de transação

INVITE

180 Ringing

200 OK

ACK

Sessão de Mídia

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

Sessão de Mídia

O método compreendendo o INVITE, 200 OK e o ACK é chamado Three-Way Handshake.

Porquê usar o Three-way ao invés do Two-way handshake?

- A partir deste ponto, é iniciada a sessão de mídia, normalmente com o protocolo RTP.

INVITE

180 Ringing

200 OK

ACK

Sessão de Mídia

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

BYE

BYE sip:[email protected] SIP/2.0Via: SIP/2.0/UDP lab.uniminas.br:5060;branch=z9hG4bk392kf;Max-Forwards: 70To : Luiz Claudio <sip:[email protected]>;tag=76341From : Joao Paulo <sip:[email protected]>;tag=a53e42Call-ID: [email protected]: 1 BYEContent-Length: 0

- O campo Via é populado com o endereço

do servidor de João e contém um novo

identificador de transação

- Os campos To e From refletem que a

requisição é originada por João

- Pode-se notar que todos os branchs

começam com z9hG4bk

INVITE

180 Ringing

200 OK

ACK

BYE

Sessão de Mídia

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

200 OK

SIP/2.0 200 OKVia: SIP/2.0/UDP lab.uniminas.br:5060;branch=z9hG4bk392kf;received=200.201.202.203To : Luiz Claudio <sip:[email protected]>;tag=76341From : Joao Paulo <sip:[email protected]>;tag=a53e42Call-ID: [email protected]: 1 BYEContent-Length: 0

- A resposta de confirmação para o BYE é um

200 OK

- Essa resposta ecoa o Cseq da requisição

original: 1 BYE.

INVITE

180 Ringing

200 OK

ACK

BYE

Sessão de Mídia

200 OK

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

Chamada SIP com Proxy Server

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Chamada SIP com Servidor Proxy

Um SIP Proxy opera de maneira similar a um proxy em HTTP e outros protocolos Internet.

Ele não configura, nem termina sessões.

Se situa no meio da troca de uma mensagem SIP, recebendo mensagens e encaminhando-as.

Como o chamador não sabe exatamente onde o destinatário da chamada está logado e qual dispositivo ele está usando, o Servidor SIP Proxy serve para rotear o INVITE.

SIP - Session Initiation Protocol

INVITE

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

INVITE

INVITE (1o.)

INVITE sip:[email protected] SIP/2.0Via: SIP/2.0/UDP 100.101.102.103:5060;branch=z9hG4bkmp17aMax forrwards: 70To : Joao Paulo <sip:[email protected]>;From : Luiz Claudio <sip:[email protected]>;tag=42Call-ID: [email protected]: 1 INVITESubject: Chamada com SIP ProxyContact: <sip:[email protected]>Content-Type: application/sdpContent-Length: 159

v=0o=luiz 2890844526 2890844526 IN IP4 100.101.102.103s=Chamada Telefonicat=0 0c= IN IP4 100.101.102.103m=audio 49170 RTP/AVP 0a=rtpmap:0 PCMU/8000

O proxy procura a SIP URI do destinatário em sua base de dados e o localiza.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

INVITE

INVITE (2o.)

INVITE sip:[email protected] SIP/2.0Via: SIP/2.0/UDP proxy.unicamp.br:5060;branch=z9hG4bk83842.1Via: SIP/2.0/UDP 100.101.102.103:5060;branch=z9hG4bkmp17aMax forrwards: 69To : Joao Paulo <sip:[email protected]>;From : Luiz Claudio <sip:[email protected]>;tag=42Call-ID: [email protected]: 1 INVITEContact: <sip:[email protected]>Content-Type: application/sdpContent-Length: 159

v=0o=luiz 2890844526 2890844526 IN IP4 100.101.102.103s=Chamada Telefonicac= IN IP4 100.101.102.103t=0 0m=audio 49170 RTP/AVP 0a=rtpmap:0 PCMU/8000

O INVITÉ é então encaminhado para o IP do destinatário encontrado adicionando o segundo campo Via.

INVITE

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

INVITE

Ringing

SIP/2.0 180 Ringing Via: SIP/2.0/UDP proxy.unicamp.br:5060;branch=z9hG4bk83842.1;received=100.101.102.105Via: SIP/2.0/UDP 100.101.102.103:5060;branch=z9hG4bkmp17aTo : Joao Paulo <sip:[email protected]>;tag=314159From : Luiz Claudio <sip:[email protected]>;tag=42Call-ID: [email protected]: 1 INVITEContact: <sip:[email protected]>Content-Length: 0

Com a presença de dois campos Via, Joao, sabe que o INVITE foi roteado através de um servidor proxy.

Recebido o INVITE, ele envia uma resposta para o proxy por meio do 180 Ringing.

Apenas o 1o. Campo Via contém o parâmetro received.

INVITE

180 Ringing

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

INVITE

Ringing

SIP/2.0 180 Ringing Via: SIP/2.0/UDP 100.101.102.103:5060;branch=z9hG4bkmp17aTo : Joao Paulo <sip:[email protected]>;tag=314159From : Luiz Claudio <sip:[email protected]>;tag=42Call-ID: [email protected]: 1 INVITEContact: <sip:[email protected]>Content-Length: 0

O proxy recebe a resposta, checa que o 1o.

Campo Via contém seu próprio endereço,

usa o identificador de transação, remove o

campo Via e encaminha a resposta para o

endereço designado, neste caso,

100.101.102.103 na porta 5060.

INVITE

180 Ringing180 Ringing

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

INVITE

200 OK (1o.)

SIP/2.0 200 OK Via: SIP/2.0/UDP proxy.unicamp:5060;branch=z9hG4bk83842.1;received=100.101.102.105Via: SIP/2.0/UDP 100.101.102.103:5060;branch=z9hG4bkmp17aTo : Joao Paulo <sip:[email protected]>;tag=314159From : Luiz Claudio <sip:[email protected]>;tag=42Call-ID: [email protected]: 1 INVITEContact: <sip:[email protected]>Content-Length: 159

v=0o=joao 2890844526 2890844526 IN IP4 200.201.202.203s=Chamada Telefonicac= IN IP4 200.201.202.203t=0 0m=audio 49172 RTP/AVP 0a=rtpmap:0 PCMU/8000

A resposta deve ser roteada pelo mesmo conjunto de proxies que efetuou a requisição.A chamada é aceita e Joao envia uma resposta 200 OK.

INVITE

180 Ringing180 Ringing

200 OK

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

INVITE

200 OK (2o.)

SIP/2.0 200 OK Via: SIP/2.0/UDP 100.101.102.103:5060;branch=z9hG4bkmp17aTo : Joao Paulo <sip:[email protected]>;tag=314159From : Luiz Claudio <sip:[email protected]>;tag=42Call-ID: [email protected]: 1 INVITEContact: <sip:[email protected]>Content_Type: application/sdpContent-Length: 159

v=0o=joao 2890844526 2890844526 IN IP4 200.201.202.203c= IN IP4 200.201.202.203t=0 0m=audio 49170 RTP/AVP 0a=rtpmap:0 PCMU/8000

A resposta deve ser roteada pelo mesmo conjunto de proxies que efetuou a requisição.A chamada é aceita e Joao envia 200 OK.

INVITE

180 Ringing180 Ringing

200 OK200 OK

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

INVITE

ACK

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP 100.101.102.103:5060;branch=z9hG4bkka42Max Forwards: 70To : Joao Paulo <sip:[email protected]>;tag=314159From : Luiz Claudio <sip:[email protected]>;tag=42Call-ID: [email protected]: 1 ACKContent-Length: 0

A presença do campo Contact com o endereço de Joao no 200 OK permite que Luiz envie um ACK diretamente para o destinatário, bypassando o proxy.

INVITE

180 Ringing180 Ringing

200 OK200 OK

ACK

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

INVITE

Sessão de mídia

Na realidade, o servidor proxy não “está na chamada”.

Ele simplesmente facilita aos dois pontos finais, localizarem e contactarem um ao outro.

O servidor proxy pode derrubar o caminho de sinalização se extrapolar um determinado tempo sem troca de mensagens.

A mensagem pode ser forçada a ser roteada por ele pela inserção do campo, Record-Route.

Pode-se notar que a sessão de mídia é sempre fim-a-fim.

INVITE

180 Ringing180 Ringing

200 OK200 OK

ACK

Sessão de mídia

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

INVITE

BYE

BYE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP 200.201.202.203:5060;branch=z9hG4bk4332Max Forwards: 70To : Luiz Claudio <sip:[email protected]>;tag=42From : Joao Paulo <sip:[email protected]>;tag= 314159Call-ID: [email protected]: 2000 BYEContent-Length: 0

A sessão de mídia é finalizada quando Joao envia uma mensagem BYE.

Nota-se que Cseq foi inicializado com 2000. Isto porque cada dispositivo SIP controle sua sequência de numeração de forma independente.

INVITE

180 Ringing180 Ringing

200 OK200 OK

ACK

Sessão de mídia

BYE

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

INVITE

200 OK

SIP/2.0 200 OKVia: SIP/2.0/UDP 200.201.202.203:5060;branch=z9hG4bk4332To : Luiz Claudio <sip:[email protected]>;tag=42From : Joao Paulo <sip:[email protected]>;tag= 314159Call-ID: [email protected]: 2000 BYEContent-Length: 0

A sessão de mídia é finalizada quando Joao envia uma mensagem BYE.

Nota-se que Cseq foi inicializado com 2000. Isto porque cada dispositivo SIP controle sua sequência de numeração de forma independente.

INVITE

180 Ringing180 Ringing

200 OK200 OK

ACK

Sessão de mídia

BYE

200 OK

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

Registro no SIP

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

Registro no SIP

Quando um agente é conectado a um sistema de telefonia baseado em SIP, o primeiro passo é se registrar em um servidor de registro.

Dessa forma, as mensagens de entrada no sistema que sejam destinadas ao usuário poderão ser encaminhadas corretamente para a localização corrente do usuário.

O processo de registro pode ser feito de modo direto como no exemplo a seguir ou, como é feito geralmente, através de um servidor proxy.

No exemplo, Ana Claudia envia uma requisição SIP REGISTER para um servidor conhecido como Servidor de Registro.

Maria

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

Registro no SIP

O servidor de registro:- recebe a mensagem- trata a informação contida na requisição- atualiza o banco de dados usado pelos proxies para rotear as mensagens SIP.

REGISTER sip:registrar.uniminas.br SIP/2.0Via: SIP/2.0/UDP 200.201.202.203:5060;branch=z9hG4bkus19Max-Forwards: 70To: Ana Claudia<sip:[email protected]>From: Ana Claudia<sip:[email protected]>;tag=3431Call-ID: [email protected]: 1 REGISTERContact: sip:[email protected]: 3600Content-Length: 0

To: Endereço de registro, ou seja, o endereço a ser associado ao usuário sendo registrado.

From: Endereço do indivíduo que iniciou o registro.

Maria

REGISTER

Contact: sip:[email protected]

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

Registro no SIP

Contact: Identificação do usuário e a localização atual do usuário para onde futuras mensagens SIP serão envidas.

Expire: Indica o tempo (segundos) solicitado para se manter o registro ativo no servidor de registro.

HLR x Servidor de Registro

O registro é similar ao processo executado no telefone móvel quando ele é ligado.

Da mesma forma que este envia sua identidade para uma BS que encaminha a localização e o número do telefone para o HLR, o servidor de registro pode armazenar as informações do usuário SIP.

Este banco, tal qual o HLR, é consultado é para se saber informações dos envolvidos na comunicação.

Maria

REGISTER

Contact: sip:[email protected]

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

Registro no SIP

O servidor de registro reconhece o pedido e promove a aceitação deste enviando uma resposta 200 OK para maria.

A resposta ecoa a informação Contact que foi armazenada no banco de dados.

O Tag para o campo To é incluído.

SIP/2.0 200 OKVia: SIP/2.0/UDP 200.201.202.203:5060;branch=z9hG4bkus19To: Ana Claudia<sip:[email protected]>;tag=8771From: Ana Claudia<sip:[email protected]>;tag=3431Call-ID: [email protected]: 1 REGISTERContact: sip:[email protected];expires=3600Content-Length: 0

Maria

REGISTER

Contact: sip:[email protected]

200 OK

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

Registro SIP através de Proxy

O usuário do agente utiliza um esquema simples de autenticação com o servidor proxy.

O registro é aceito pelo servidor de registro.

Fluxo da mensagem

Assim que o usuário inicializa o agente, uma requisição REGISTER é enviada para a servidor proxy

Maria

REGISTER

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

Registro SIP através de Proxy

Fluxo da mensagem

- O servidor proxy recebe a requisição REGISTER

- Envia a resposta 100 Trying para o usuário

- A resposta serve para informar ao usuário que

a requisição foi recebida

- Dispensa a necessidade de retransmiti-la.

Maria

REGISTER

100 Trying

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

Maria

REGISTER

100 Trying

REGISTER

Registro SIP através de Proxy

Fluxo da mensagem

- O esquema de autenticação é simplificado

- O servidor proxy não precisa trocar maiores

mensagens como o usuário para autenticá-lo

- O servidor proxy simplesmente encaminha a

requisição REGISTER para o servidor de registro

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

Maria

REGISTER

100 Trying

REGISTER

Registro SIP através de Proxy

Fluxo da mensagem

- O servidor de registro envia a resposta 200 OK

para o servidor proxy.

- A operação de registro não utiliza a mensagem

ACK.

200 OK

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

Maria

REGISTER

100 Trying

REGISTER

200 OK

200 OK

Registro SIP através de Proxy

Fluxo da mensagem

- O servidor proxy encaminha a resposta 200 OK

para o usuário

- Esse passo notifica que o usuário está

registrado no sistema.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

Redirecionamentono SIP

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Redirecionamento no SIP

Durante o estabelecimento de comunicação entre os participantes de uma chamada SIP, normalmente é necessário determinar a localização desses participantes.

Esse processo é feito como o apoio do Servidor de Redirecionamento.

A solicitação do serviço de redirecionamento deve ser feita com o envio da requisição INVITE para o servidor de redirecionamento.

No cabeçalho da mensagem, o campo From indica o endereço do usuário que solicita o mapeamento.

O campo To indica o endereço do usuário a ser localizado

INVITE sip:[email protected] SIP/2.0

Via: SIP/2.0/UDP lab.uniminas.br

From: Luiz Claudio <[email protected]>

To: Pedro Henrique <[email protected]>

Call-ID: [email protected]

Cseq: 1 INVITE

Subject: Redirecionamento no SIP

Content-Length: 256

Content-Type: application/sdp

(corpo da mensagem)

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Redirecionamento no SIP

Operação de localização requer um serviço que mantém mapeamentos entre uma única URI e um conjunto de uma ou mais localizações alternativas que permitem encontrar o elemento referenciado pela URI.

Contact: Mostra a lista de uma ou mais localizações alternativas.

Resposta: Classe 3xx

Quando o originador de uma requisição recebe a informação de redirecionamento, a mensagem de requisição ACK é enviada para o servidor de redirecionamento.

SIP/2.0 302 Moved Temporarily

Via: SIP/2.0/UDP lab.uniminas.br

From: Luiz Claudio <[email protected]>

To: Pedro Henrique <[email protected]>

Call-ID: [email protected]

Cseq: 1 INVITE

Contact: <sip:[email protected]>

Expire: 3600

Content-Length: 0

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Redirecionamento no SIP

Em seguida, uma nova requisição é enviada com base na URI ou URIs recebidas, podendo ser URIs não SIP.

O usuário Luiz manda uma nova mensagem INVITE para o usuário Pedro.

A URI SIP fornecida pelo servidor de redirecionamento é utilizada na linha de início da mensagem.

INVITE sip:[email protected] SIP/2.0

Via: SIP/2.0/UDP lab.uniminas.br

From: Luiz Claudio <[email protected]>

To: Pedro Henrique <[email protected]>

Call-ID: [email protected]

Cseq: 2 INVITE

Subject: Redirecionamento no SIP

Content-Length: 256

Content-Type: application/sdp

(corpo da mensagem)

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

RedirecionamentoSIP via servidor Proxy

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

Redirecionamento

Quando o serviço de redirecionamento é utilizado no modo indireto, o servidor

proxy recebe a requisição INVITE do usuário e encaminha essa requisição para

o servidor de redirecionamento.

Em seguida, o servidor proxy utiliza a URI ou URIs, da resposta enviada pelo

servidor de redirecionamento para realizar a nova requisição INVITE em

benefício do usuário.

Pode-se então, entender o fluxo de mensagens para efetivar a comunicação

entre dois agentes devidamente registrados através de servidores proxy.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

REGISTER

B1 - O agente A envia

uma requisição

INVITE para o

servidor proxy

encaminhar para o

usuário B.

A

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

A

REGISTER

100 Trying

B2 - O servidor proxy

de A recebe o

INVITE, e notifica o

usuário A enviando

a resposta 100

Trying.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

A

REGISTER

100 Trying

B

INVITE

3 - O esquema de

autenticação é

simplificado e

servidor proxy não

troca maiores

mensagens com o

agente para

autenticação. Ele

simplesmente

encaminha o INVITE

para o servidor de

redirecionamento.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

A

REGISTER

100 Trying

B

INVITE

302 Moved Temp

4 - O servidor de

redirecionamento

envia a resposta

302 Moved

Temporarily com o

mapeamente obtido

a partir do serviço

de localização.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

A

REGISTER

100 Trying

B

INVITE

302 Moved Temp

ACK

5 - O servidor proxy

de A envia a

requisição ACK para

o servidor de

redirecionamento a

fim de completar o

3-handshake.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

A

REGISTER

100 Trying

B

INVITE

302 Moved Temp

ACK

INVITE

6 - O servidor proxy

de A utiliza a

informação de

mapeamento da

resposta recebida

para gerar um novo

INVITE a ser

enviado para

servidor proxy de B.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

A

REGISTER

100 Trying

B

INVITE

302 Moved Temp

ACK

INVITE

100 Trying

7 - O servidor proxy

de B recebe o

INVITE e notifica o

servidor proxy de A

enviando a resposta

100 Trying.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

A

REGISTER

100 Trying

B

INVITE

302 Moved Temp

ACK

INVITE

100 Trying

INVITE

8 - O servidor proxy

de B encaminha a

requisição INVITE

para o servidor de

redirecionamento.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

A

REGISTER

100 Triyng

B

INVITE

302 Moved Temp

ACK

INVITE

100 Triyng

INVITE

302 Moved Temp

9 - O servidor de

redirecionamento

envia a resposta

302 Moved

Temporarily com o

mapeamento obtido

a partir do serviço

de localização.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

A

REGISTER

100 Triyng

B

INVITE

302 Moved Temp

ACK

INVITE

100 Triyng

INVITE

302 Moved Temp

ACK

1 - O servidor proxy

de B envia a

requisição ACK para

o servidor de

redirecionamento a

fim de completar o

3-handshake.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

A

REGISTER

100 Triyng

B

INVITE

302 Moved Temp

ACK

INVITE

100 Triyng

INVITE

302 Moved Temp

ACK INVITE

11 - O servidor

proxy de B utiliza a

informação de

mapeamento da

resposta recebida

para gerar um novo

INVITE a ser

enviado para o

agente B.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

A

REGISTER

100 Triyng

B

INVITE

302 Moved Temp

ACK

INVITE

100 Triyng

INVITE

302 Moved Temp

ACK INVITE

100 Triyng

12 - O agente B

recebe o INVITE e

notifica o servidor

proxy de B

enviando a resposta

100 Trying.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

Forking

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

Forking

Quando um agente se encontra registrado em mais de uma localização, após

consulta ao servidor de redirecionamento, o servidor proxy recebe várias URIs

associadas ao agente, cada uma referente a uma localização distinta.

Para tentar contactar o agente, o servidor proxy recorre à operação forking, em

que um INVITE é enviado para as diferentes localizaçãoes, em paralelo ou

sequencialmente.

No modo paralelo, o servidor proxy recebe várias respostas 180 Ringing. Assim

que o primeiro atender ele envia um 200 OK e para os demais enviará a

mensagem CANCEL. Por fim, deverá receber um 200 OK de todos estes últimos.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

A B

Tomando a sequência do

fluxo apresentado

anteriormente.

11 - O SPb utiliza a

informação de

mapeamento da resposta

recebida para gerar um

novo INVITE a ser

enviado para o usuário B.

12 - O SPb utiliza a

informação de

mapeamento da resposta

recebida para gerar um

novo INVITE a ser

enviado ao agente C.

C

SPb (Servidor Proxy B) SPa (Servidor Proxy A)

INVITE

INVITE

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

A B

13 - O agente C recebe o

INVITE e notifica o SPb

enviando a resposta 100

Trying. A resposta de um

agente pode chegar

antes da resposta de

outro, no forking paralelo.

14 - O agente B recebe o

INVITE e notifica o SPb

enviando a resposta 100

Trying.

C

SPb (Servidor Proxy B) SPa (Servidor Proxy A)

INVITE

INVITE

100 Trying

100 Trying

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

A B

15 - O agente C aceita a

descrição da sessão e

envia a resposta 180

Ringing indicando que o

agente está sendo

notificado da existência

de uma chamada. Essa

mensagem será roteada

através do sistema até o

agente A com base nos

campos Header Via.

16 - O SPb encaminha a

mensagem 180 Ringing

do agente C para ao SPa.

C

SPb (Servidor Proxy B) SPa (Servidor Proxy A)

INVITE

INVITE

100 Trying

100 Trying

180 Ringing180 Ringing

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

A B

17 - O SPa encaminha a

mensagem 180 Ringing

do agente C para o

agente A.

18 - O agente B aceita a

descrição da sessão e

envia a resposta 180

Ringing indicando que o

usuário está sendo

notificado da existência

de uma chamada. Essa

mensagem será roteada

através do sistema até o

agente A, com base nos

campos header Via.

C

SPb (Servidor Proxy B) SPa (Servidor Proxy A)

INVITE

INVITE

100 Trying

100 Trying

180 Ringing180 Ringing180 Ringing

180 Ringing

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

A B

19 - O SPb encaminha a

mensagem 180 Ringing

do usuário B para o SPa.

20 - O SPa encaminha a

mensagem 180 Ringing

do usuário B para o

usuário ª

21 - Quando o usuário C

atende à chamada, a

resposta 200 OK é

enviada para o SPb.

C

SPb (Servidor Proxy B) SPa (Servidor Proxy A)

INVITE

INVITE

100 Trying

100 Trying

180 Ringing180 Ringing180 Ringing

180 Ringing180 Ringing 180 Ringing

200 OK

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

A B

22 - Assim que recebe a

resposta 200 OK do

agente C, o SPb envia um

CANCEL para o agente B.

23 - O SPb encaminha o

200 OK do agente C para

o usuário A.

24 - O SPa encaminha o

200 OK do agente C para

o agente A.

C

SPb (Servidor Proxy B) SPa (Servidor Proxy A)

INVITE

INVITE

100 Trying

100 Trying

180 Ringing180 Ringing180 Ringing

180 Ringing180 Ringing

200 OK

200 OK200 OK

180 Ringing

CANCEL

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

A B

25 - Assim que recebe o

CANCEL, o agente B

envia a resposta 200 OK

para o SPb.

26 - O agente A, tendo

recebido as respostas

180 Ringing e 200 OK,

envia um ACK para o SPa.

27 - O SPa encaminha o

ACK do agente A para o

SPb.

28 - O SPb encaminha o

ACK do agente A para o

agente C.

C

SPb (Servidor Proxy B) SPa (Servidor Proxy A)

INVITE

INVITE

100 Trying

100 Trying

180 Ringing180 Ringing180 Ringing

180 Ringing180 Ringing

200 OK

200 OK200 OK

200 OK

180 Ringing

CANCEL

ACKACK

ACK

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

A B

29 - Os dois canais de

mão única esatabelecidos

entre os agentes, um de

A para C e outro de C

para A, através de RTP,

são utilizados pelos

usuários para

conversação.

C

SPb (Servidor Proxy B) SPa (Servidor Proxy A)

INVITE

INVITE

100 Trying

100 Trying

180 Ringing180 Ringing180 Ringing

180 Ringing180 Ringing

200 OK

200 OK200 OK

200 OK

180 Ringing

CANCEL

ACKACK

ACK

VOZ (RTP)

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

A B

30 - Para encerrar a

comunicação, o agente C

envia um BYE para o SPb.

31 - O SPb encaminha o

BYE do agente C para o

SPa.

32 - O Spa encaminha o

BYE do agente C para o

agente A.

C

SPb (Servidor Proxy B) SPa (Servidor Proxy A)

INVITE

INVITE

100 Trying

100 Trying

180 Ringing180 Ringing180 Ringing

180 Ringing180 Ringing

200 OK

200 OK200 OK

200 OK

180 Ringing

CANCEL

ACKACK

ACK

BYE BYE BYE

VOZ (RTP)

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

A B C

SPb (Servidor Proxy B) SPa (Servidor Proxy A)

INVITE

INVITE

100 Trying

100 Trying

180 Ringing180 Ringing180 Ringing

180 Ringing180 Ringing

200 OK

200 OK200 OK

200 OK

180 Ringing

200 OK200 OK200 OK

CANCEL

ACKACK

ACK

BYE BYE BYE

VOZ (RTP)

33 - O agente A recebe a

requisição BYE e envia a

resposta 200 OK para o

SPa, finalizando a

chamada e fechando o

canal de voz.

34 - O SPa encaminha o

200 OK do agente A para

o SPb.

35 - O SPb encaminha o

200 OK do agente A para

o agente C.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

N o modo sequencial, o servidor proxy deve encaminhar o INVITE para

cada localização, uma por vez.

O encaminhamento é feito para a próxima localização apenas se a

localização corrente não atender à chamada.

A busca é encerrada se alguma das localizações atender à chamada

ou se delas nenhuma atender à chamada.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

Presença e Instant Message

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

Presença

Estado de um usuário ou dispositivo em um momento particular.

• Autenticado ou não

• Ativo ou inativo em sua estação

• Desocupado ou distante

• Localização baseado em coordenadas

• Termos gerais como “no escritório”, “viajando” ou “no

laboratório”

• Smiles que retratam que está relaxando, trabalhando ou

stressado.

SUBSCRIBE : requisita status ou atualizações de presença do servidor

de presença.

NOTIFY: entrega a informação para o requisitante.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

No exemplo ao lado, Carlos deseja se

comunicar com Paulo e para encontrar o

status de Paulo, ele subscreve a

informação de presença para Paulo

enviando uma mensagem SUBSCRIBE.

SUBSCRIBE sip:[email protected] SIP/2.0

Via SIP/2.0/TCP lab.academia.br:5060;

branch=z9hG4bk348471123

Max-Forwards: 70

To: Paulo Maia <sip:[email protected]>

From: Carlos Lara

<sip:[email protected]>;tag=21171

Cseq: 3412 SUBSCRIBE

Allow_events: presence

Allow: ACK, INVITE, CANCEL, BYE, NOTIFY, SUBSCRIBE,

MESSAGE

Contact: <sip:[email protected];transport=tcp>

Event: presence

Content-Length: 0

Carlos SUBSCRIBE

Paulo

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

Presença

TCP é usado como transporte.

Isto é indicado no campo Via e no parâmetro transport=tcp do campo

Contact.

Contém os campos Allow Allow-Events que são usados para advertir sobre

as capacidades.

• Carlos suporta receber sete métodos (Allow) e também subscrição de

presença contido em Allow-Event.

• SUBSCRIBE está criando um diálogo de maneira análoga ao INVITE.

• O campo From contém um tag mas o campo To ainda não.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

Paulo aceita a requisição de subscrição

enviando uma resposta 202 Accepted de

volta a Carlos.

SIP/2.0 202 Accepted

Via SIP/2.0/TCP lab.academia.br:5060;

branch=z9hG4bk348471123;received=19.34.3.1

To: Paulo Maia <sip:[email protected]>;tag=25140

From: Carlos Lara

<sip:[email protected]>;tag=21171

Call-ID: 58dkfj349241k34452k592520

Cseq: 3412 SUBSCRIBE

Allow_events: presence

Allow: ACK, INVITE, CANCEL, BYE, NOTIFY, SUBSCRIBE,

MESSAGE

Contact: <sip:[email protected];transport=tcp>

Event: presence

Expires=3600

Content-Length: 0

Carlos Paulo SUBSCRIBE

202 Accepted

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

A subscrição atual é iniciada por Paulo

enviando o primeiro NOTIFY de volta para

Carlos.

NOTIFY sip: [email protected] SIP/2.

Via SIP/2.0/TCP sipping.ietf.org:5060;

branch=z9hG4bk348471123;received=19.34.3.1

To: Carlos Lara <sip:[email protected]>;tag=21171

From:Paulo Maia <sip:[email protected]>;tag=25140

Call-ID: 58dkfj349241k34452k592520

Cseq: 1026 NOTIFY

Allow: ACK, INVITE, CANCEL, BYE, NOTIFY, SUBSCRIBE,

MESSAGE

Allow_events: dialog

Contact: <sip:[email protected];transport=tcp>

Subscription-State: active;expires=3600

Event: presence

Content_Type: application/cpim-pidf+xml

Content-Length: 244

Carlos Paulo SUBSCRIBE

202 Accepted

NOTIFY

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

<?xml version=“1.0” encoding=“UTF-8”?>

<presence xmlns=“urn:ietf:params:xml:ns:cpim-pidf”

entity=“sip:[email protected]”>

<tuple id=“452426775”>

<status>

<basic>closed</basic>

</status>

</tuple>

</presence>

O NOTIFY é enviado dentro de um diálogo

estabelecido com o SUBSCRIBE.

Ele usa o mesmo identificador de diálogo

(Call-ID, local e tags remotas).

A requisição é enviada para o Contact

fornecido por Carlos na chamada da

subscrição.

Carlos Paulo SUBSCRIBE

202 Accepted

NOTIFY

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

O campo Subcription-State indica que a

subscrição foi autorizada e ativada e que irá

expirar em 1 hora, a não ser que seja

atualizada por Carlos.

Commom Presence and Instant Message

Presence Information Data Format (CPIM

PIDF) é o corpo da mensagemem XML que

contém a informação de status de que Paulo

está atualmente off-line (closed).

Carlos Paulo SUBSCRIBE

202 Accepted

NOTIFY

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

Carlos envia uma resposta 200 Ok para o

NOTIFY para confirmar que foi recebido com

sucesso.Carlos Paulo

SUBSCRIBE

202 Accepted

NOTIFY

200 Ok

SIP/2.0 200 OK

Via SIP/2.0/TCP sipping.ietf.org:5060;

branch=z9hG4bk4321;received=24.32.1.3

To: Carlos Lara <sip:[email protected]>;tag=21171

From:Paulo Maia <sip:[email protected]>;tag=25140

Call-ID: 58dkfj349241k34452k592520

Cseq: 1026 NOTIFY

Content-Length: 0

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

Mais tarde, quando Paulo se conecta, esta

informação é fornecida em um segundo

NOTIFY contendo a alteração do status.Carlos Paulo

SUBSCRIBE

202 Accepted

NOTIFY

200 Ok

NOTIFY

Mais tarde...

NOTIFY sip: [email protected] SIP/2.

Via SIP/2.0/TCP sipping.ietf.org:5060;

branch=z9hG4bk334241

To: Carlos Lara <sip:[email protected]>;tag=21171

From:Paulo Maia <sip:[email protected]>;tag=25140

Call-ID: 58dkfj349241k34452k592520

Cseq: 1027 NOTIFY

Allow: ACK, INVITE, CANCEL, BYE, NOTIFY, SUBSCRIBE,

MESSAGE

Allow_events: presence

Contact: <sip:[email protected];transport=tcp>

Subscription-State: active;expires=1800

Event: presence

Content_Type: application/cpim-pidf+xml

Content-Length: 325

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

<?xml version=“1.0” encoding=“UTF-8”?>

<presence xmlns=“urn:ietf:params:xml:ns:cpim-pidf”

entity=“sip:[email protected]”>

<tuple id=“452426775”>

<status>

<basic>open</basic>

</status>

<contact>sip:[email protected];transport=tcp

</contact>

</tuple>

</presence>

O tempo de expiração indicado no campo

Subscription-State indica que 30 minutos se

passaram desde que a subscrição foi

estabelecida.

O CPIM PIDF XML indica que Paulo está on-line

(open) e pode ser acessado via a URI

sip::[email protected];transport=tcp.

Carlos Paulo SUBSCRIBE

202 Accepted

NOTIFY

200 Ok

NOTIFY

Mais tarde ...

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

Carlos confirma o recebimento do NOTIFY com

um 200 OK de resposta.

Carlos Paulo SUBSCRIBE

202 Accepted

NOTIFY

200 Ok

NOTIFY

Mais tarde ...

200 OK

SIP/2.0 200 OK

Via SIP/2.0/TCP sipping.ietf.org:5060;

branch=z9hG4bk334241;received=24.32.1.3

To: Carlos Lara <sip:[email protected]>;tag=21171

From:Paulo Maia <sip:[email protected]>;tag=25140

Call-ID: 58dkfj349241k34452k592520

Cseq: 1027 NOTIFY

Content-Length: 0

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

Agora que Carlos sabe que Paulo está on-line,

ele envia um instant-message para ele usando

o Contact URI do NOTIFY.Carlos Paulo

SUBSCRIBE

202 Accepted

NOTIFY

200 Ok

NOTIFY

Mais tarde

200 OK

MESSAGE

MESSAGE sip:[email protected] SIP/2.0

Via SIP/2.0/TCP lab.academia.br:5060;

branch=z9hG4bk3gtr2

Max-Forwards: 70

To: Paulo Maia <sip:[email protected]>

From: Carlos Lara <sip:[email protected]>;tag=4542

Call-ID: 9dkei93vjq1ei3

Cseq: 15 MESSAGE

Allow_events: presence

Allow: ACK, INVITE, CANCEL, BYE, NOTIFY, SUBSCRIBE,

MESSAGE

Content-Type: text/plain

Content-Length: 10

Ow, ta ai?

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

A resposta 200 OK é usada para reconhecer o

recebimento do instant-message.

Carlos Paulo SUBSCRIBE

202 Accepted

NOTIFY

200 Ok

NOTIFY

Mais tarde

200 OK

MESSAGE

SIP/2.0 200 OK

Via SIP/2.0/TCP lab.academia.org:5060;

branch=z9hG4bk3gtr2;received=19.34.3.1

To: Paulo Maia <sip:[email protected]>;tag=2321

From:Carlos Lara <sip:[email protected]>;tag=4542

Call-ID: 9dke193vjq1e13

Cseq: 15 MESSAGE

Content-Length: 0

200 Ok

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

Paulo responde com uma mensagem, com

novo Call-ID e novo tag From (um instant-

message nunca é enviado em uma resposta

200 OK).Carlos Paulo

SUBSCRIBE

202 Accepted

NOTIFY

200 Ok

NOTIFY

Mais tarde

200 OK

MESSAGE

200 Ok

MESSAGE sip:[email protected] SIP/2.0

Via SIP/2.0/TCP sipping.ietf.org:5060;

branch=z9hG4bk4526245

Max-Forwards: 70

To: Carlos Lara <sip:[email protected]>

From:Paulo Maia <sip:[email protected]>;tag=14083

Call-ID: 1k34452k592520

Cseq: 2321 MESSAGE

Allow_events: presence

Allow: ACK, INVITE, CANCEL, BYE, NOTIFY, SUBSCRIBE,

MESSAGE

Content-Type: text/plain

Content-Length: 23

to sim, e as novidades? MESSAGE

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

E uma nova resposta é enviada.

Carlos Paulo SUBSCRIBE

202 Accepted

NOTIFY

200 Ok

NOTIFY

Mais tarde

200 OK

MESSAGE

200 Ok

MESSAGE

200 Ok

SIP/2.0 200 OK

Via SIP/2.0/TCP sipping.ietf.org:5060;

branch=z9hG4bk4526245;received=24.32.1.3

To: Carlos Lara

<sip:[email protected]>;tag=mc3bg5q77wms

From: Paulo Maia <sip:[email protected]>;tag=14083

Call-ID: 1k34452k592520

Cseq: 2321 MESSAGE

Content-Length: 0

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP - Session Initiation Protocol

Características do SIP

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Descrição do protocolo

6 tipos de serviços

Localização do Usuário: Localizar o terminal para estabelecer a conexão

Disponibilidade do Usuário: Estabelecer uma sessão de comunicação

Recursos do Usuário: Determinar os meios a serem utilizados.

Características de Negociação: Negociar e acordar funcionalidades entre as

partes

Gestão da Sessão : Iniciar, terminar ou colocar em espera as sessões

Modificar Sessão : Modificar uma sessão em andamento.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Características

• Protocolo tipo Cliente/Servidor (porta 5060)

• Escalabilidade e simplicidade (Princípio KISS – Keep It Simple Stupid)

• Cada funcionalidade como proxying, redirection, location, ou registration pode

residir em servidores físicos distintos

• Mobilidade: terminais diferentes, mesma identificação

• Localização do usuário através de um endereçamento tipo e-mail

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Características

• URLs para endereçamento

• Comunicação entre domínios admistrativos através de DNS

• Herança do protocolo HTTP: requisições e respostas no formato texto

• MIME-TYPES: conteúdo no corpo das mensagem: fotos, vídeos, páginas web,

etc.

• Independência do protocolo de rede (UDP, TCP, SCTP, AAL5, X.25)

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Características

O SIP utiliza um modelo cliente-servidor:

UAC: user-agent client (Cliente) => Aplicação chamadora

UAS: user-agent server (Servidor) => Aceita, redireciona e recusa

chamadas

E ainda:

redirect server: Solicitações de redirecionamento

proxy server: Servidor + Cliente

registrar: tracking de localização de usuários.

Ao iniciar, o Cliente se registra de forma autenticada em um Servidor (via

multicast) de modo a informar o local proxy de sua localização.

Este registro expira conforme configuração do servidor.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Características

Decisões de design:

• Pode ser executado sobre camadas confiáveis (TCP, SCTP) ou não-confiáveis

(UDP)

• Requisição de roteamento: direto (performance) ou por proxy (controle)

• Separação em sinalização e descrição da mídia

• Extensibilidade: indica e requer capacidades dos proxies e UAs

• Requisições subsequentes e retransmissões podem tomar rotas diferentes

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Métodos SIP

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Transações SIP

• Compostas por dois tipos de métodos:

• requisições iniciadas pelo CLIENTE e

• respostas enviadas pelo SERVIDOR.

• Define poucos métodos, de modo a reduzir a complexidade e novos

métodos podem ser introduzidos sem necessidade de mudança no

protocolo.

• Requisições e respostas podem conter qualquer tipo de objeto (binário/texto).

• Requisições contém a descrição da sessão (mídia), enquanto as respostas

contém a descrição da sessão em caso de sucesso, HTML ou texto puro em

caso de falha.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Métodos

A RFC 3261 (SIP) introduziu seis métodos de requisição:

• INVITE : Indica que o usuário/serviço foi convidado a participar da sessão.

• ACK: Funciona como a confirmação de um INVITE.

• OPTIONS: Indaga as capacidades do SERVIDOR.

• BYE: CLIENTE indica ao SERVIDOR que deseja encerrar a chamada.

• CANCEL: Cancela uma requisição pendente mas ainda não completada.

• REGISTER: Registra o endereço do usuário em um Servidor SIP.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Métodos

Outras requisições introduzidas a posteriori no SIP foram:

PRACK: Confirma o provisionamento.

SUBSCRIBE: Registra-se para uma Notificação de Evento do Notifier

NOTIFY: Notifica o assinante de um novo evento.

INFO: Usado para transportar informações “out-of-band” (dígitos DTMF).

MESSAGE: Utilizada para transportar mensagens instantâneas usando SIP.

UPDATE: Modifica o estado da sessão sem modificar o estado do diálogo.

REFER: Solicita ao destinatário que envie uma requisição SIP (transferência de chamada).

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Códigos de Resposta

Mensagem gerada por um UAS ou um servidor SIP, para responder a uma

solicitação. Existem 6 tipos de classes de Códigos de Resposta:

1xx: Informação. Recebe informação sobre o progresso do pedido. A 1a.

mensagem dessa classe recebida pelo usuário, confirma o recebimento do

INVITE pelo servidor e indica que o usuário deve parar de enviar

solicitações INVITE. [Searching, Ringing, Trying...]

2xx: Sucesso. Informa que o pedido foi aceito e atendido. No caso de ser uma

solicitação INVITE, deve ser enviado um ACK confirmando. [Sucess]

3xx: Redirecionamento. Em geral, enviado por um servidor SIP de

redirecionamento, serve para indicar que o destinatário não está nessa

localização e informar sua nova a localização. [Forwarding]

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Códigos de Resposta

4xx: Erro por parte do Cliente. Informa que houve um erro na solicitação por

parte do cliente, que deverá refazer a solicitação de acordo com o erro

indicado. [Client Mistakes]

5xx: Erro por parte do Servidor. Informa que a mensagem não pode ser

enviada com sucesso em decorrência de um erro com o servidor. [Server

Failures]

6xx: Classe Erro Global. Informa que houve um erro e que essa mensagem irá

falhar em qualquer servidor, portanto não deverá ser reenviada. [Busy,

Refuse, not available anywhere]

Caso uma mensagem em particular não possa ser entendida por um UAC, ele

deverá entendê-la pela descrição da classe, por exemplo, um UAC recebe uma

mensagem 599 (servidor desconectado) e não compreende a mensagem, ele

deverá interpretá-la como a classe 5xx, erro do servidor.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Códigos de Resposta

1xx – I nf ormativo Pedido recebido, continuando aprocessar o pedido

100 Tentando180 Chamando181 Chamada sendo retransmitida182 Colocado na fi la

2xx – Sucesso A ação f oi recebida, entendida eaceita com sucesso

200 OK3xx - Redirecionamento Uma ação adicional deve ser

tomada para completar o pedido300 Múltiplas escolhas

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Códigos de Resposta

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Mensagem SIP

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Mensagens SIP

Transação

• Sequência de mensagens SIP iniciada com um pedido

• Pode conter uma ou mais respostas temporárias (1xx)

• Contém uma ou mais respostas finais (não 1xx)

Diálogo

• Sequência de mensagens entre dois agentes usuários

• Iniciado em geral com um pedido INVITE e finalizado com BYE

• Constituído por uma ou mais transações sucessivas

Chamada

• Sequência de mensagens originadas por um INVITE de um agente usuário

• Inclui um diálogo ou múltiplos diálogos no caso de chamadas em

conferência

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Mensagens SIP

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Mensagens SIP

Cabeçalho das mensagens

• Campos com informação útil para o processamento da mensagem

Campos do cabeçalho (mais importantes)

• Via: Mostra o protocolo de transporte usado e a rota requisitada.

Cada proxy adiciona uma linha a este campo

• From: Mostra o endereço do originador da mensagem

• To: Mostra o endereço de destinatário da mensagem

• Call ID: Identificador único da chamada a que corresponde a

mensagem

• Cseq: Inicia com um nro aleatório e sequencialmente identifica a msg

• Contact: Endereço (s) que podem ser usados para contactar o usuário

• User-Agent:O cliente que negocia a comunicação.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Estrutura da mensagem SIP

Cabeçalho

Via: Campo obrigatório e grava as rotas SIP tomadas por uma requisição e é usado para rotear as resposta de volta ao originador. Por meio dele pode-

se enxergar todos os proxies percorridos pelo caminho. Cada proxy adiciona um branch contendo um tag criptografado.

From(f): Cabeçalho necessário em toda comunicação SIP, ele identifica o transmissor de determinada requisição.

Exemplo de uso:

From:<sip:[email protected].

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Estrutura da mensagem SIP

Cabeçalho

To: Exigido em todo cabeçalho para indicar o destinatário da requisição. Qualquer resposta gerada pelo user agent adicionará ao cabeçalho um campo

tag.

Contact: Usado para manter uma URI que identifica o recursos requisitado ou o originador da requisição, dependendo se está presente na requisição ou na resposta. Uma vez recebido, o Contact pode ser cacheado e usado para roteamento de futuras requisições dentro do diálogo que permitirão

bypassar o proxy. Esta ação é inibida pelo Recording-Route

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Estrutura da mensagem SIP

Cabeçalho

Call-ID: cabeçalho indispensável numa comunicação SIP, ele serve como identificador único para uma mensagem, ele é gerado localmente de maneira randômica, contem um @ e um endereço de IP do transmissor.

Exemplo de uso:

i:[email protected]

Cseq: Cabeçalho obrigatório que funciona como um contador para cada requisição feita, com exceção de ACK e CANCEL. O Cseq é utilizado pelos UAS para diferenciar uma requisição nova de uma retransmissão e utilizado pelos UAC para identificar a qual requisição uma determinada resposta pertence.

Exemplo de Uso:

CSeq: 3 OPTIONS

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Arquitetura SIP

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Arquitetura SIP

Servidor Redirect

Servidor de

Locatização

Servidor Registrar

Agente de Usuário

Proxy Server

Gateway

RTPC

Proxy Server

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP User Agents

Aplicação que inicia, recebe e termina chamadas:

Ele pode agir tanto como:

• Agente de Usuário Cliente ou CLIENTE ou UAC:

=> Entidade que inicia a chamda, enviando requisições e recebendo

respostas

• Agente de Usuário de Servidor ou SERVIDOR ou UAS:

=> Entidade que recebe uma chamada, enviando respostas e

recebendo requisições.

Os usuários são identificados por nomes ou por endereços de email;

O usuário chamado é alcançado, não importando onde o usuário esteja ou qual endereço IP o seu host esteja utilizando no momento.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP Proxy Server

• Tipo de servidor intermediário do SIP, que atua também como cliente e servidor, recebendo as requisições e passando adiante para servidores mais próximos do destino

Provê um mecanismo centralizado de roteamento das mensagens SIP:

• Usuários enviam pedidos de sessão a um servidor Proxy

• Proxy encaminha os pedidos para o Proxy do domínio de destino

• Proxy do domínio de destino consulta o Servidor de Registro

• Proxy do domínio de destino encaminha o pedido para o usuário

• Dois tipos de Proxy:Outbound Proxy : Envia sinalização para outros

domínios

Inbound Proxy : Envia sinalização para o mesmo domínio

• Funções do Proxy:Resolução de endereçosGerenciamento de políticasFirewalls e Call path hiding

• Existem dois tipos de servidores : Stateful Proxy Server e Stateless Proxy Server

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Stateful Proxy Servers

• Mantém o estado das transações

• Permite dividir a chamada (Fork) para múltiplos servidores na tentativa de localizar o usuário, dessa maneira, cria uma árvore de busca

• Possuem maior confiabilidade

• Capacidade de computar o gasto do cliente

• Utilizam protocolo TCP

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Stateless Proxy Servers

• Não armazenam o estado da transação apenas envia adiante as

requisições e as respostas

• Possuem maior velocidade

• Menos confiabilidade

• Incapacidade de computar gastos do cliente.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP Redirect Server

• Tipo de servidor SIP com a função de informar que determinado usuário está registrado em outro domínio

• Recebe um pedido de sessão e responde com as localizações do

destinatário

• O originário recebe a informação e envia o pedido para o destinatário

• Não reencaminha os pedidos

• Alta capacidade de processamento devido ao menor número de

msgs para processar

• Serviços são dependentes do dispositivo client

Giuseppe M. Stephan

SIP - Session Initiation Protocol

SIP Registrar Server

• O servidor Registrar pode aceitar a autenticação

• Realiza o registro dos agentes de usuários

• Servidor que armazena a localização dos usuários:

usuario@endereçoIP:porta

• Associa identificadores humanos ([email protected]) com endereços IPs dinâmicos

• Fornece um serviço de localização.

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Questões

1) Quais as primitivas do protocolo SIP?

2) Quais os mecanismos de segurança em SIP?

3) Quais as principais vantagens do protocolo SIP?

4) Por que o SIP utiliza o Three-way Handshake em vez do Two- way Handshake?

5) Quais são os três tipos de servidores da arquitetura SIP?

6) Das estruturas do H.323: H.323, H.225.0 + RAS, H.245 e gatekeeper, a que estruturas se referem no SIP?

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Respostas

1) As três primitivas do protocolo SIP são: inicialização, modificação e a finalização das sessões.

2) Encriptação, autenticação e esteganografia.

3) A sua simplicidade, eficiência, flexibilidade e facilidade de comunicação com os protocolos da Internet HTTP e SMTP.

4) Ao enviar uma solicitação de INVITE, o receptor pode demorar muito tempo pra responder, e ao responder pode ser que o emissor não esteja mais conectado, uma maneira de contornar foi o three way handshake, primeiro o emissor solicita um INVITE, o receptor ao confirmar envia uma mensagem 200 OK e caso o emissor ainda esteja conectado, é enviado automaticamente um ACK.

5) Proxy, redirect e registrar

6) SIP + SDP, SIP, SDP+ SMIL, proxy

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Fim

Giuseppe M. Stephan

SIP - Session Initiation Protocol

Pesquisa:

Tema: Tem a ver com: Responsável:===== =======================

- URI: URL/URN/RFC 3305

- Codec: Perdas/Taxas de Bits

- IAD: Características

- ATA: FXO/FXS/Características

- Proxy: Características

- RTP: RTCP/UDP