Mudanças entre as edições de "Redes Multimídia (diário 2016-2)"
Linha 710: | Linha 710: | ||
Usar o comando: <code>sudo apt-get install asterisk</syntaxhighlight> | Usar o comando: <code>sudo apt-get install asterisk</syntaxhighlight> | ||
+ | |||
+ | Um PBX IP funciona como uma central telefônica, porém intermediando chamadas VoIP. Com isso, as chamadas são feitas de um telefone IP em direção ao PBX IP, que a encaminha ao telefone IP de destino de acordo com suas regras de discagem. A figura abaixo ilustra como funciona uma chamada VoIP típica através de um PBX IP. | ||
+ | |||
+ | [[imagem:Voip-call.png|500px]] | ||
+ | |||
+ | |||
+ | Nas nossas aulas faremos uso de um PBX IP [http://www.asterisk.org/ Asterisk], que é um software desenvolvido pela [http://www.digium.com/ Digium]. O Asterisk roda em computadores do tipo PC que possuem sistema operacional baseado em Linux. Sua licença é livre, o que significa que não há custo de licenciamento para utilizá-lo. | ||
+ | * [http://www.asterisk.org/get-started Uma visão geral sobre Asterisk] | ||
+ | |||
+ | === PBX IP Asterisk === | ||
+ | |||
+ | * [http://tele.sj.ifsc.edu.br/~msobral/rmu/slides/aula-25.pdf Transparências] | ||
+ | * [http://www.asterisk.org Site oficial do Asterisk] | ||
+ | * [http://www.asteriskguru.com/ Asterisk Guru] | ||
+ | * [http://www.voip-info.org/wiki Dicas sobre Asterisk] | ||
+ | * [http://www.asteriskdocs.org/ Livro online gratuito sobre Asterisk] | ||
+ | * [http://www.packetizer.com/ipmc/sip/papers/understanding_sip_voip/ Introdução a VoIP e SIP] | ||
+ | * Livro [http://www.shopvoip.com.br/index.php?route=product/product&product_id=1263 ''Asterisk: Guia de Configuração - 5a geração''], de Flávio Gonçalves. | ||
+ | |||
+ | |||
+ | '''Asterisk:''' uma solução completa de PABX baseado em software, permitindo ligar o mundo IP ao mundo da rede pública de telefonia comutada. | ||
+ | |||
+ | '''Características Básicas:''' faz tudo que um PABX pequeno e simples faz e pouco mais | ||
+ | * Transferência, música de espera, siga-me, etc. | ||
+ | * Conferência, correio de voz, URA, fila de chamadas, monitoramento de chamadas, integração com o Jabber (Google talk) | ||
+ | |||
+ | |||
+ | [[imagem:Asterisk-ex1.png|400px]] | ||
+ | <br>''Exemplo de cenário de uso do Asterisk'' | ||
+ | |||
+ | |||
+ | <!-- [[imagem:Asterisk-arch.png|500px]] | ||
+ | <br>''Arquitetura modular do Asterisk'' ---> | ||
+ | |||
+ | ==== Plano de discagem ==== | ||
+ | |||
+ | O plano de discagem define como cada chamada deve ser processada. As instruções de processamento residem no arquivo de configuração ''/etc/asterisk/extensions.conf''. O fluxo de processamento de chamadas pode ser visto resumidamente abaixo: | ||
+ | |||
+ | [[imagem:Asterisk-fluxo.png|400px]] | ||
+ | |||
+ | |||
+ | Um exemplo de plano de discagem simples pode ser visto abaixo: | ||
+ | |||
+ | <syntaxhighlight lang=text> | ||
+ | [alunos]; o nome deste contexto | ||
+ | |||
+ | # Chamadas para o número 101 são feitas via SIP para o canal "maria" | ||
+ | exten=>101,1,Dial(SIP/maria) | ||
+ | same=>n,Hangup() | ||
+ | |||
+ | # Chamadas para "teste" serão atendidas com um som de beep, seguido | ||
+ | # da reprodução do arquivo de som "hello-world", em seguida outro beep e | ||
+ | # enfim se encerra a chamada. | ||
+ | exten=>teste,1,Playback(beep) | ||
+ | same=>n,Wait(1) | ||
+ | same=>n,Playback(hello-world) | ||
+ | same=>n,Wait(1) | ||
+ | same=>n,Playback(beep) | ||
+ | same=>n,Hangup | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | A estrutura do plano de discagem é composta por ''extensões'' (um termo específico do Asterisk). Cada extensão identifica um número (ou usuário) que pode ser chamado, e como essa chamada deve ser processada. A sintaxe pode ser vista abaixo: | ||
+ | |||
+ | <syntaxhighlight lang=text> | ||
+ | exten=>identificador,prioridade,aplicação | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | * '''identificador''': o número ou usuário chamado | ||
+ | * '''prioridade''': a prioridade da extensão. Isso determina a ordem de execução das extensões que tratam do mesmo identificador. | ||
+ | * '''aplicação''': uma ação a ser realizada quando a extensão for processada. Por exemplo, a aplicação ''Dial'' determina que deve ser encaminhada a outro canal. | ||
+ | |||
+ | Como o processamento de uma chamada usualmente envolve uma sequência de extensões, existe uma sintaxe opcional para simplificar a declaração: | ||
+ | |||
+ | <syntaxhighlight lang=text> | ||
+ | exten=>identificador,prioridade,aplicação | ||
+ | same=>prioridade,aplicação | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | *'''same''': declara uma nova extensão com mesmo identificador da extensão imediatamente anterior | ||
+ | |||
+ | Por fim, a ''prioridade'' (que define a ordem com que as extensões são processadas) declarada com o valor ''n'' equivale à prioridade da extensão imediatamente anterior incrementada em uma unidade: | ||
+ | |||
+ | <syntaxhighlight lang=text> | ||
+ | exten=>101,1,Dial(SIP/101) | ||
+ | same=>n,Hangup; a prioridade aqui terá o valor 2 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ==== Canais SIP ==== | ||
+ | |||
+ | Cada telefone SIP deve ter seu identificador cadastrado no Asterisk. O identificador pode tanto ser um número, análogo a um ramal, ou uma string alfanumérica. No terminologia do Asterisk, cada telefone SIP é chamado de ''canal SIP'', e deve estar declarado em /etc/asterisk/sip.conf: | ||
+ | |||
+ | <syntaxhighlight lang=text> | ||
+ | ; Canal 2000 (um exemplo) | ||
+ | [2000] | ||
+ | defaultuser=maria ; o nome do usuário para fins de autenticação | ||
+ | secret=kabrum | ||
+ | type=friend ; pode efetuar e receber chamadas | ||
+ | host=dynamic ; pode conectar-se a partir de qualquer endereço IP | ||
+ | insecure=port,invite ; | ||
+ | context=alunos ; o contexto do plano de discagem para chamadas originadas neste canal | ||
+ | disallow=all | ||
+ | allow=gsm ; habilita este codec para o João. | ||
+ | allow=alaw ; outro codec | ||
+ | allow=ulaw ; mais um codec | ||
+ | qualify=yes; monitora o UAC | ||
+ | |||
+ | ; Canal 1000 (outro exemplo) | ||
+ | [1000] | ||
+ | defaultuser=joao ; o nome do usuário para fins de autenticação | ||
+ | secret=blabla | ||
+ | type=friend ; pode efetuar e receber chamadas | ||
+ | host=dynamic ; pode conectar-se a partir de qualquer endereço IP | ||
+ | insecure=port,invite ; | ||
+ | context=alunos ; o contexto no plano de discagem para chamadas originadas neste canal | ||
+ | disallow=all | ||
+ | allow=gsm ; habilita este codec | ||
+ | allow=alaw ; outro codec | ||
+ | allow=ulaw ; mais um codec | ||
+ | qualify=yes; monitora o UAC | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Como se pode notar, a declaração de um canal SIP envolve muitos parâmetros que envolvem autenticação, controle de acesso, localização na rede, codecs e possivelmente outras capacidades. Como os valores de alguns parâmetros podem ser iguais para vários canais, o Asterisk possibilita a declaração de perfis (''templates''): | ||
+ | |||
+ | <syntaxhighlight lang=text> | ||
+ | ; Perfil alunos | ||
+ | [alunos](!); a sequência "(!)" define isto como um perfil | ||
+ | type=friend ; pode efetuar e receber chamadas | ||
+ | host=dynamic ; pode conectar-se a partir de qualquer endereço IP | ||
+ | insecure=port,invite ; | ||
+ | context=alunos ; o contexto no plano de discagem para chamadas originadas neste canal | ||
+ | disallow=all | ||
+ | allow=gsm ; habilita este codec | ||
+ | allow=alaw ; outro codec | ||
+ | allow=ulaw ; mais um codec | ||
+ | qualify=yes; monitora o UAC | ||
+ | |||
+ | ; Canal 2000 | ||
+ | [2000](alunos); a sequência "(alunos)" copia as definições do perfil "alunos" | ||
+ | defaultuser=maria ; o nome do usuário para fins de autenticação | ||
+ | secret=kabrum | ||
+ | |||
+ | ; Canal joao | ||
+ | [joao](alunos) | ||
+ | defaultuser=joao ; o nome do usuário para fins de autenticação | ||
+ | secret=blabla | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Experimento: comunicação entre telefones IP ou softphones por meio de um PBX IP === | ||
+ | |||
+ | Para realizar esses exercícios você deve usar o Asterisk na máquina virtual ''rmu-asterisk''. Para testar as chamadas, use um softphone em seu celular ou em um computador, e um telefone IP ou ATA. | ||
+ | |||
+ | |||
+ | 1. Criar os seguintes canais SIP: 100 e 101 (escolha usuários e senhas para autenticação) | ||
+ | |||
+ | 2. Crie um plano de discagem em que todos podem fazer chamadas para todos (isso é, 100 pode chamar 101, e vice-versa). | ||
+ | |||
+ | 3. Execute o softphone, configurando-o de forma autônoma (sem registrar em um servidor SIP ou PBX IP) | ||
+ | |||
+ | 4. Instale um telefone IP, configurando-o também de forma autônoma. | ||
+ | |||
+ | 5. A partir do softphone faça uma chamada para a conta do telefone IP. Verifique se o telefone IP acusou o recebimento de chamada. Caso isso não tenha ocorrido, verifique seu plano de discagem. | ||
+ | |||
+ | 6. Agora configure o softphone de forma que se registre no PBX Asterisk, usando uma das contas SIP criadas previamente. Faça o mesmo com o telefone IP ou ATA. | ||
+ | |||
+ | 7. A partir do softphone faça uma chamada para a conta do telefone IP. Verifique se o telefone IP acusou o recebimento de chamada. Caso isso não tenha ocorrido, verifique seu plano de discagem. Em seguida faça uma chamada em sentido contrário. | ||
+ | |||
+ | 8. Execute o comando ''rasterisk -vvv'' no computador do Asterisk. | ||
+ | |||
+ | 9. Usando o comando ''sip show peers'', visualize os estados dos canais SIP conhecidos pelo Asterisk. | ||
+ | |||
+ | 10. Refaça uma chamada entre softphone e telefone IP, e observe o que aparece na tela do ''rasterisk''. | ||
+ | |||
+ | 11. Será possível verificar que chamadas estão em andamento no Asterisk usando o ''rasterisk'' ? Pesquise como se pode fazer isso. | ||
+ | |||
+ | 12. Use o ''rasterisk'' para testar chamadas. Use o comando ''console dial canal_SIP'' para chamar um canal SIP (substitua ''canal_SIP'' pelo número a ser chamado). Ao final, execute ''console hangup''. | ||
+ | |||
+ | 13. Acrescente mais um canal SIP, editando o arquivo ''sip.conf''. Configure o softphone para usar esse novo canal (ou o telefone IP para se associar também a esse canal SIP). | ||
+ | |||
+ | 14. Teste chamadas entre os telefones usando esse novo número. | ||
+ | |||
+ | ==== Possíveis problemas ==== | ||
+ | |||
+ | # Em cada softphone ou telefone IP crie uma conta SIP, que deve ser identificada por ''ramal@IP_do_PBX'' (ex: se o PBX tiver IP 192.168.2.110, as contas de alunos podem ser 100@192.168.2.110 e 101@192.168.2.110). | ||
+ | # Após definir as contas, verifique se os telefones indicaram que elas estão disponíveis (''online''). Você pode fazer essa verificação também no próprio Asterisk. Neste caso execute o seguinte comando para acessar o console do Asterisk: <syntaxhighlight lang=bash> | ||
+ | sudo rasterisk -vvv | ||
+ | host*CLI> sip show peers | ||
+ | host*CLI> sip show peers | ||
+ | Name/username Host Dyn Nat ACL Port Status | ||
+ | 101/101 192.168.2.10 D 11270 OK (6 ms) | ||
+ | 102/102 192.168.2.210 D 63169 OK (12 ms) | ||
+ | 2 sip peers [Monitored: 2 online, 0 offline Unmonitored: 0 online, 0 offline] | ||
+ | </syntaxhighlight> | ||
+ | # Se algum dos telefones não aparecer como ''OK'' no console do Asterisk, verifique se o número de ramal e a senha configuradas no telefone são os mesmos declarados em ''/etc/asterisk/sip.conf''. Outro teste que se pode fazer é acessar o console do Asterisk, e depois tentar ativar as contas SIP nos telefones (i.e. colocá-las para indisponível ou ''offline'', e depois reativá-las). O Asterisk irá mostrar algumas linhas informativas sobre os registros dos telefones.. | ||
+ | # Se as contas SIP estão devidamente registradas no Asterisk, mas ainda assim as chamadas não são realizadas, o problema deve estar no plano de discagem. Neste caso, acesse o console do Asterisk e tente novamente fazer a chamada. Veja se o Asterisk informa na tela o motivo para a chamada não ser realizada. Em seguida, confira se seu plano de discagem (''/etc/asterisk/extensions.conf'') possui uma extensão que satisfaça a chamada que se deseja realizar. Isso é, se você estiver tentando chamar o ramal SIP 101@192.168.2.110, deve haver uma extensão assim: <syntaxhighlight lang=text> | ||
+ | exten=>101,1,Dial(SIP/101) | ||
+ | same=>n,Hangup | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ===DICAS ASTERISK=== | ||
+ | |||
+ | Comandos válidos no CLI do Asterisk: | ||
+ | |||
+ | #Recarregar as configurações do arquivo sip.conf: <code> sip reload</syntaxhighlight> | ||
+ | #Recarregar as configurações do arquivo extensions.conf: <code> dialplan reload</syntaxhighlight> | ||
+ | #Ver canais SIP criados: <code> sip show peers</syntaxhighlight> | ||
+ | #Gerar uma ligação via console: <code>console dial canal_sip@extensão</syntaxhighlight> | ||
{{collapse bottom | Aula 13}} | {{collapse bottom | Aula 13}} |
Edição das 08h58min de 20 de setembro de 2016
Endereço encurtado: http://bit.ly/rmu20162
Redes Multimidia: Diário de Aula 2016-1
Professora: Simara Sonaglio
E-mail: simara.sonaglio@ifsc.edu.br
Encontros: 3a feira/13:30, 5a feira/13:30
Atendimento paralelo:
Bibliografia
- Livros sobre Redes de Computadores (por ordem de preferência):
- KUROSE, James F. e ROSS, Keith W. Redes de computadores e a Internet, Uma abordagem Top-Down. 5a edição. Editora Addison Wesley SP, 2010.
- Sérgio Colcher, Antônio Tadeu Azevedo Gomes, e Anderson Oliveira da Silva. VoIP: Voz sobre IP. Campus, 1a edição, 2005.
- STALLINGS, W. Redes e sistemas de comunicação de dados. Editora Elsevier RJ, 2005.
- TANENBAUM, Andrew S. Redes de Computadores, tradução da quarta edição. Editora Campus RJ, 2003
- FOROUZAN, Behrouz. Comunicação de Dados e Redes de Computadores, 3a/4a edicão. Editora Bookman, 2004.
Softwares
Avaliações
Diário das aulas
11/08/16: Apresentação da disciplina
Aula 1 |
---|
Apresentação da disciplina: conteúdo, bibliografia e avaliação, laboratório. |
12/08/16: Caracterização de midias
Aula 2 |
---|
Compressão de video
Técnicas usadas para compressão de video:
Compressão de audioTécnicas usadas:
AtividadeAtividade compressão de imagem
1.1) Qual o tamanho dessa imagem no formato BMP com 24 bpp ? 1.2) Qual o tamanho dessa imagem no formato PNG ? E no formato JPG ? 1.3) Crie uma nova imagem com dimensões 128x128 pixels e que seja toda preta, e determina seu tamanho nos formatos BMP com 24 bpp, PNG e JPG. 1.4) O que se pode concluir quanto à representação digital das imagens ?
Atividade compressão de áudio
|
18/08/16: Caracterização de midias - Continuação
Aula 3 |
---|
19/08/16: Transmissão de midias
Aula 4 |
---|
Aluno não compareceu. |
25/08/16: Transmissão de midias
26/08/16: Transmissão de midias
Aula 6 |
---|
Atividade Resolver Problemas 10, 11 e 12 da 5ª ed. do Kurose para entregar. |
30/08/16: Transmissão de midias - exercícios
Aula 7 |
---|
Aluno não compareceu. |
01/09/16: O protocolo SIP
Aula 8 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
O protocolo SIPO protocolo SIP segue um modelo P2P (peer-to-peer), em que dois ou mais participantes, chamados de agentes, trocam mensagens com a finalidade de estabelecerem algum tipo de sessão (de voz no nosso caso, mas pode ser de video, mensagem instantânea, ou algum outro tipo de serviço). Assim, cada agente em uma sessão SIP se comporta tanto como cliente (quando envia requisições SIP) quanto servidor (quando responde a requisições SIP). A parte que inicia requisições se chama UAC (User Agent Client), e a que responde requisições é denominada UAS (User Agent Server), estando ambas implementadas nos telefones IP e similares. Uma sessão SIP envolve a interação entre duas entidades lógicas, que no caso de chamadas VoIP são por vezes chamadas simplesmente de usuários. A diferença entre entidade lógica e agente é que a primeira é o usuário (recurso) que inicia ou recebe chamadas, e o segundo é a aplicação que contém os mecanismos para efetuar e receber chamadas - pense que a entidade seria uma pessoa, e o agente o aparelho telefônico em uma chamada telefônica convencional. Cada entidade é identificada por uma URI (Uniform Resource Indicator) SIP, semelhante a um número de telefone. Além de identificar uma entidade lógica, a informação em uma URI SIP indica a forma com que essa entidade deve ser contatada via SIP. Exemplos de URI SIP seguem abaixo: # Uma URI simples, tipicamente usada em mensagens INVITE (que iniciam sessões SIP)
sip:1234@biloxi.example.com
# Uma URI mais elaborada, tipicamente usada em alguns cabeçalhos SIP (ex: Contact ou Refer-to)
sip:joseph.fourier@transform.org:5060;transport=udp;user=ip;method=INVITE;ttl=1;
maddr=240.101.102.103?Subject=FFT
As comunicações SIP seguem uma hierarquia, cujos níveis são:
Mensagens SIPO protocolo SIP tem uma estrutura simplificada com mensagens de pedido e resposta, assemelhando-se ao protocolo HTTP. Essas mensagens possuem a seguinte estrutura: Linha inicial
Cabeçalho1: valor do cabeçalho 1
Cabeçalho2: valor do cabeçalho 2
...
CabeçalhoN: valor do cabeçalho N
<linha em branco>
corpo da mensagem (opcional)
A diferença básica entre pedidos e respostas SIP está na linha inicial: pedidos contém um método SIP e seus parâmetros, e respostas possuem um código de status junto com um curto texto informativo. Abaixo são mostradas duas mensagens SIP: um pedido e sua respectiva resposta. Nesse exemplo, ambas mensagens não possuem um corpo de mensagem (lembre que isso é opcional):
REGISTER sips:ss2.biloxi.example.com SIP/2.0
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
Max-Forwards: 70
From: Bob <sips:bob@biloxi.example.com>;tag=a73kszlfl
To: Bob <sips:bob@biloxi.example.com>
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 1 REGISTER
Contact: <sips:bob@client.biloxi.example.com>
Content-Length: 0
Resposta: SIP/2.0 200 OK
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashd92
;received=192.0.2.201
From: Bob <sips:bob@biloxi.example.com>;tag=ja743ks76zlflH
To: Bob <sips:bob@biloxi.example.com>;tag=37GkEhwl6
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 2 REGISTER
Contact: <sips:bob@client.biloxi.example.com>;expires=3600
Content-Length: 0
O pedido exemplificado foi uma mensagem do tipo REGISTER, que é um tipo de método SIP. Um método pode ser entendido como um comando enviado de um participante a outro. A resposta contém o status 200 OK, que significa que o pedido foi atendido com sucesso. Por fim, ambas mensagens contiveram um conjunto de cabeçalhos necessários para caracterizá-las, dentre eles Via, From, To, Call-Id, CSeq, Contact e Content-Length. As tabelas a seguir descrevem resumidamente os principais métodos e cabeçalhos SIP.
Tabela de métodos SIP (não exaustiva ... apenas os principais métodos)
Tabela de cabeçalhos SIP (não exaustiva ... apenas os principais cabeçalhos) Diagramas de chamadasAlguns tipos de chamadas VoIP com SIP são recorrentes, estando representadas nas subseções a seguir. Registro de agente SIP em um proxy SIPEsta chamada ocorre entre um agente SIP e um servidor de registro SIP (SIP Registar), que está implementado tipicamente em um proxy SIP, um gateway de media, ou um PBX IP (este último incorpora as funções dos dois primeiros com as de um PBX). O registro do agente SIP tem por finalidade fazer com que o servidor de registro SIP conheça a localização do agente (endereço IP e port usado pelo UAS). Fone 1 Proxy SIP ou PBX IP
| |
| REGISTER |
|---------------------------->|
| 401 Unauthorized |
|<----------------------------|
| REGISTER |
|---------------------------->|
| 200 OK |
|<----------------------------|
| |
Chamada direta entre dois agentes SIPUma chamada direta entre dois agentes envolve uma transação INVITE, em que um agente convida o outro a estabelecer uma sessão SIP com um determinado tipo de media (ex: audio). A chamada é finalizada quando um dos agentes inicia uma transação BYE. Fone 1 Fone 2
| |
| INVITE |
|----------------------->|
| 180 Ringing |
|<-----------------------|
| |
| 200 OK |
|<-----------------------|
| ACK |
|----------------------->|
| RTP Media |
|<======================>|
| |
| BYE |
|<-----------------------|
| 200 OK |
|----------------------->|
| |
Chamada entre dois agentes SIP com intermediação de um Proxy SIPA principal diferença entre este tipo de chamada e o anterior é o uso de um (ou mais) proxy SIP entre os dois agentes. O proxy SIP tem por finalidade ajudar na realização das chamadas, uma vez que usualmente incorpora a função de servidor de registro. Um proxy SIP encaminha chamadas para o agente chamado, ou para outro proxy mais próximo do destino, podendo aplicar regras de controle de acesso quanto a quem pode realizar chamadas para quem. Fone 1 Proxy SIP ou PBX IP Fone 2
(directmedia=yes)
| | |
| INVITE | |
|--------------->| INVITE |
| 100 Trying |--------------->|
|<---------------| 100 Trying |
| |<---------------|
| | |
| | 180 Ringing |
| 180 Ringing |<---------------|
|<---------------| |
| | 200 Ok |
| 200 Ok |<---------------|
|<---------------| |
| ACK | |
|--------------->| ACK |
| |--------------->|
| | |
| RTP Media |
|<===============================>|
| | |
| | BYE |
| BYE |<---------------|
|<---------------| |
| 200 Ok | |
|--------------->| 200 Ok |
| |--------------->|
| | |
| | |
Chamada entre dois agentes SIP com intermediação de um gateway de mediaEste caso é parecido com o anterior, que usa um proxy SIP. A diferença está na intermediação do fluxo de media, que é feita pelo gateway de media. Isso possibilita que dois agentes estabeleçam uma chamada mesmo usando codecs diferentes, pois o gateway de media fará a tradução entre codecs. Fone 1 PBX IP Fone 2
(directmedia=no)
| | |
| INVITE | |
|--------------->| INVITE |
| 100 Trying |--------------->|
|<---------------| 100 Trying |
| |<---------------|
| | 180 Ringing |
| 180 Ringing |<---------------|
|<---------------| |
| | 200 Ok |
| 200 Ok |<---------------|
|<---------------| |
| ACK | |
|--------------->| ACK |
| |--------------->|
| RTP Media | RTP Media |
|<==============>|<==============>|
| BYE | |
|--------------->| BYE |
| |--------------->|
| | 200 Ok |
| 200 Ok |<---------------|
|<---------------| |
| | |
Chamada entre dois agentes SIP com intermediação de um gateway de media e uso de re-INVITEO uso de re-invite possibilita que o fluxo de media seja estabelecido diretamente entre os agentes SIP, caso usem o mesmo codec. Assim, evita-se a carga de processamento envolvida na intermediação pelo gateway de media. Isso é feito com o envio pelo gateway de media (representado abaixo por um PBX IP) de um novo INVITE para cada agente SIP, após a sessão SIP estar estabelecida. Esse novo INVITE contém uma descrição de media (mensagem SDP embutida no corpo da mensagem INVITE) com a localização do outro agente SIP - isso é, seu endereço IP, port UDP para a stream RTP e codec a ser usado. Fone 1 PBX IP Fone 2
(directmedia=yes)
| | |
| INVITE | |
|--------------->| INVITE |
| 100 Trying |--------------->|
|<---------------| 100 Trying |
| |<---------------|
| | 180 Ringing |
| 180 Ringing |<---------------|
|<---------------| |
| | 200 Ok |
| 200 Ok |<---------------|
|<---------------| |
| ACK | |
|--------------->| ACK |
| INVITE |--------------->|
|<---------------| INVITE |
| 200 OK |--------------->|
|--------------->| 200 OK |
| ACK |<---------------|
|--------------->| ACK |
| |<---------------|
| |
| RTP Media |
|<===============================>|
| BYE | |
|--------------->| BYE |
| |--------------->|
| | 200 Ok |
| 200 Ok |<---------------|
|<---------------| |
| | |
Correção para o wiresharkO wireshark instalado no Ubuntu 14.04, como nas VM do laboratório, possui um bug que impede que se visualize a análise do fluxo de chamadas VoIP. Nessa versão, quando se seleciona no menu Telephony->VoIP Calls, e em seguida clica-se em uma das chamadas apresentadas e depois o botão Flow, o wireshark termina a execução. A solução para esse problema envolve instalar uma versão mais recente do wireshark: sudo add-apt-repository ppa:wireshark-dev/stable
sudo apt-get update
sudo apt-get install wireshark-gtk
... e após a instalação execute wireshark-gtk.
|
06/09/16: O protocolo SIP e SDP
Aula 9 |
---|
SDP (Session Description Protocol)Ao iniciar uma chamada com SIP, a negociação de midia a ser transmitida é especificada no corpo da mensagem INVITE. O formato da especificação é descrito pelo protocolo SDP (Session Description Protocol), contendo as seguintes informações:
Assim como SIP, SDP codifica suas informações em texto simples. Uma mensagem SDP é composta por linhas de texto chamadas de campos, cujos nomes são abreviados por uma única letra. Os campos de uma mensagem SDP são:
Lista de exercícios |
08/09/16: O transporte do audio nas chamadas VoIP
Aula 10 | ||||
---|---|---|---|---|
Protocolo RTP
RTCPAlém do RTP, o protocolo auxiliar RTCP (Real-Time Control Protocol, também definido na RFC 3550) foi definido para o monitoramento da entrega dos pacotes (recepção da stream). Com esse protocolo, os participantes de uma sessão de media podem fazer o intercâmbio de relatórios e estatísticas. Cada tipo de relatório é transportado por um tipo de pacote RTCP. O uso de relatórios possibilita o feedback sobre a qualidade da comunicação, incluindo informações como:
Os cinco tipos de relatórios são:
Como o tráfego RTCP é puramente overhead, o protocolo foi projetado para que seu consumo da capacidade da rede seja constante, não importa quantos participantes da sessão de media existam. A ideia é que quanto mais participantes houver, menos frequentemente os relatórios RTCP são enviados. Por exemplo, se em uma conferência houver somente dois participantes, os relatórios podem ser enviados a cada 5 segundos. Se houver quatro participantes, os relatórios são enviados a cada 10 segundos. Com isso o consumo de banda para relatórios se mantém constante e previsível. |
13/09/16: Aula de exercícios
Aula 11 |
---|
15/09/16: Avaliação
Aula 12 |
---|
Avaliação escrita abrangendo os seguintes temas:
Todos os conteúdos se encontram no capítulo 7 da 5ª edição do livro do Kurose. |
20/09/16: Equipamentos SIP e instalação do Asterisk
Aula 13 |
---|
Instalação do AsteriskUsar o comando:
|