• Nenhum resultado encontrado

Transações e diálogos SIP

No documento Introdução à Voz sobre IP e Asterisk (páginas 92-97)

\

\ SIP Transactions:

\

\ Sequência de mensagens trocada entre os elementos de uma rede SIP; \

\ Inclui zero ou mais respostas provisórias e uma ou mais respostas finais; \

\ Consiste de: \

\ Uma requisição; \

\ Várias respostas para a requisição feita.

\

\ Entidades com noção de transações são chamadas de stateful; \

\ SIP Dialogs:

\

\ Sequência de transações; \

\ Representa uma relação SIP P2P (peer-to-peer) entre dois user agents; \

\ Facilita o sequenciamento e o roteamento das mensagens entre os terminais SIP;

\

\ São identificados por Call-ID, From tag, To tag; \

\ Possuem esses campos com o mesmo valor quando pertencem ao mesmo diálogo.

Uma transação consiste de uma requisição e todas as suas respostas.

As requisições são ditas como transações do cliente ou “client transactions” e as respostas são transações do servidor ou “server transactions”.

Um diálogo representa uma relação SIP peer-to-peer entre dois user agents. Tem certo tempo de duração e é um conceito muito importante para os user agents. Os diálogos facilitam o próprio sequênciamento e roteamento das mensagens entre os terminais SIP. São identificados pelos campos Call-ID, From e To. Mensagens que pertencem ao mesmo diálogo precisam ter esses campos iguais. O campo CSeq é usado para ordenar mensagens dentro de um diálogo, contendo número que precisa ser incrementado para cada mensagem enviada dentro de um diálogo. De outro modo, o terminal iria manipular as requisições e retransmissões fora de ordem. O número

CSeq identifica a transação (requisição e respostas) dentro do diálogo. Isso significa

Capítulo 2 – P rotocolo SIP Exemplo: Cliente Invite 200 OK Bye ACK 200 OK 100 Trying Primeira transação Segunda transação Servidor

1. INVITE – contém as informações de origem e destino (no H.323 são as

informações contidas na mensagem setup) e o campo SDP com as informações de mídia (no H.323 são as informações H.245);

2. 100 Trying – chamada em progresso (na ISUP seria a mensagem Call Progress);

3. 200 OK – mensagem final de atendimento;

4. ACK – confirmação da mensagem e das mídias a serem utilizadas;

5. BYE – requisição de desconexão;

6. 200 OK – requisição aceita.

Note que neste exemplo não foi enviada a mensagem RINGING.

Cenários SIP

\

\ Alguns cenários SIP:

\ \ Registration; \ \ Session Invitation; \ \ Session Termination; Figura 2.8

Introdução à V

oz sobre IP e Asterisk

\

\ Session Invitation – usuário Agente Cliente (UAC) solicita o estabelecimento de

uma sessão a um Usuário Agente Servidor (UAS);

\

\ Session Termination – término da sessão por iniciativa do UAS ou UAC, por

temporização, destino não acessível, congestionamento na rede etc.;

\

\ Instant Messages – durante uma sessão, UAC e UAS podem enviar mensagens

sem encerrar a sessão.

SIP Registration

\

\ Tem a finalidade de registrar um user agent; \

\ Se não houver registro, usuários com intenção de se comunicar não poderão se

comunicar;

\

\ Um registro compreende:

\

\ Mensagem REGISTER enviada pelo user agent; \

\ Mensagem 200 OK enviada pelo servidor de registro, se o registro for bem-sucedido;

\

\ Mensagem 407 em caso contrário.

O registro de um cliente SIP é feito em um servidor de registro. Sua função é saber como encontrar os usuários caso haja uma ligação para eles. O registro e autenticação no SIP já pode ser feito com texto plano, mas devido a questões de segurança este método não é mais utilizado. Recomenda-se a utilização de um desafio utilizando um número aleatório enviado pelo servidor de registro. O cliente SIP faz algumas contas com o realm (domínio a que ele pertence), com o número aleatório e com uma senha simétrica, portanto de conhecimento do cliente e do servidor. Estes dados servem de parâmetros para um cálculo também conhecido por ambos. O resultado deste cálculo é enviado ao servidor, que autentica (ou não) o usuário. Desta forma, a senha não trafega pela rede, aumentando significativamente a segurança na comunicação e mantendo o sigilo da senha.

Este método é baseado no esquema de desafio implementado pelo HTTP, e está descrito na RFC 2617 (foi estendido pela RFC 3310).

Capítulo 2 – P rotocolo SIP Exemplo: 3. Register 4. 200 OK 1. Register 2. 100 Trying 5. 200 OK Servidor de registro

Agente A Servidor de proxy REGISTER sip:registrar.bsb.com.br SIP/2.0

Via: SIP/2.0/UDP cxo.bsb.com.br From: <sip:claudio@bsb.com.br> To: <sip:claudio@bsb.com.br> Call-ID: 12345@cxo.bsb.com.br Cseq: 1 REGISTER Contact: <sip:claudio@cxo.bsb.com.br> Expire: 3600 Content-Length: 0

1. O cliente solicita o registro;

2. Servidor proxy repassa a solicitação de registo para o servidor de registro;

3. Servidor de registro verifica os dados e autentica ou nega a autenticação;

4. Neste exemplo, o registro foi aceito e confirmado pela mensagem 200 OK.

Session Invitation

\

\ Consiste em uma requisição INVITE, geralmente enviada ao proxy; \

\ O proxy imediatamente envia uma resposta com a mensagem 100 Trying; \

\ Finalidade: acabar com as retransmissões; \

\ Todas as respostas geradas pelo UA chamado são devolvidas ao UA chamador.

O convite (Invitation) talvez seja a mensagem mais comum no SIP, e deve ser respondido imediatamente com um “100 Trying” para indicar ao chamador que o convite foi recebido e está sendo tratado.

1. Invite 2. 100 Trying

3. Invite 4. 100 Trying 5. 180 Ringing

Chamador Servidor proxy Chamado

Introdução à V

oz sobre IP e Asterisk

1. Como o chamador geralmente não tem a informação do endereço de destino, solicita ao servidor proxy o encaminhamento da requisição INVITE para o chamado;

2. O servidor proxy envia mensagem informativa de chamada em progresso, indicando que está tratando a chamada;

3. O servidor localiza o endereço do destino e envia o INVITE. O servidor poderia ter vários endereços do destino, caso em que seriam enviados diversos INVITES, um para cada destino;

4. O usuário chamado envia ao servidor a informação de que está processando a chamada (100 Trying);

5. Na sequência, informa para o proxy que o telefone está chamando e aguardando atendimento;

6. O servidor proxy repassa ao chamador a informação de que o destino está recebendo (Ring). Neste momento, o telefone do chamador começa a tocar;

7. O atendimento acontece e a mensagem 200 OK é enviada ao proxy;

8. O proxy envia para o chamador a resposta 200 OK, para que retire o tom de controle e abra os canais de áudio RTP/RTCP;

9. Uma última confirmação é enviada do chamador para o chamado através da mensagem ACK;

10. É dado o início ao transporte da mídia, voz ou vídeo.

Session Termination

\

\ Tem a finalidade de terminar uma sessão; \

\ Possui dois tipos de término de sessão:

\ \ Direta;

\

\ Envia uma requisição BYE para o outro UA envolvido, e este responde com uma mensagem 200 OK.

\

\ Via proxy.

Assim como o INVITE, a terminação da chamada pode ser realizada de forma direta ou indireta, ou seja, a mensagem utilizada para desconexão da chamada (BYE) pode ser enviada diretamente para o usuário na outra ponta da chamada ou através do proxy. Em ambientes em que é necessário ter controle total das chamadas, por exemplo para fins de bilhetagem (cobrança das chamadas), é imprescindível que o BYE seja enviado para o proxy, para que este possa registrar o final das chamadas.

Capítulo 2 – P rotocolo SIP Exemplo: UA1 1. BYE 2. 200 OK 1. Bye 2. Bye 3. 200 OK 4. 200 OK Forma direta Forma indireta

SIP proxy UA2

A figura ilustra duas situações de como pode ocorrer o término de uma sessão. A primeira mostra a forma direta, na qual os dois users agents negociam o término da sessão diretamente. A segunda mostra a forma indireta, onde um SIP proxy está no meio da comunicação entre os dois clientes, roteando as mensagens.

No documento Introdução à Voz sobre IP e Asterisk (páginas 92-97)

Documentos relacionados