Redes Multimídia (diário 2017-1)

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar

Endereço encurtado: http://bit.ly/rmu20171


Redes Multimidia: Diário de Aula 2017-1

Professora: Simara Sonaglio
E-mail: simara.sonaglio@ifsc.edu.br
Encontros:
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

  • Trabalho 1: trabalho prático para ser apresentado;
  • Trabalho 2: trabalho prático complementar a Trabalho 1 para ser apresentado;
  • Trabalho 3: trabalho prático complementar a Trabalho 2 para ser apresentado.

Diário das aulas

13/02 - Apresentação da disciplina

Aula 1

Apresentação da disciplina: conteúdo, bibliografia e avaliação, laboratório.

Instalação do Asterisk

apt-get update apt-get install asterisk</syntaxhighlight>

14/02 - Etapa Asterisk: Introdução, plano de discagem e contas SIP

Aula 2

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.

Voip-call.png


Nas nossas aulas faremos uso de um PBX IP Asterisk, que é um software desenvolvido pela 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.

PBX IP Asterisk


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)


Asterisk-ex1.png
Exemplo de cenário de uso do Asterisk

Instalação do Asterisk

apt-get update apt-get install asterisk</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:

; Canal 2000 (um exemplo)
[2000]
defaultuser=2000 ; 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
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=1000 ; 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
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

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:

Asterisk-fluxo.png


Um exemplo de plano de discagem simples pode ser visto abaixo:

[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

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:

exten=>identificador,prioridade,aplicação
  • 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:

exten=>identificador,prioridade,aplicação
same=>prioridade,aplicação
  • 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:

exten=>101,1,Dial(SIP/101)
same=>n,Hangup; a prioridade aqui terá o valor 2

Experimento: comunicação entre telefones IP ou softphones por meio de um PBX IP

Para realizar esses exercícios você deve usar o Asterisk em uma máquina virtual. 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. 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.

4. 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.

5. Execute o comando rasterisk -vvv no computador do Asterisk.

6. Usando o comando sip show peers, visualize os estados dos canais SIP conhecidos pelo Asterisk.

7. Refaça uma chamada entre softphone e telefone IP, e observe o que aparece na tela do rasterisk.

8. Será possível verificar que chamadas estão em andamento no Asterisk usando o rasterisk ? Pesquise como se pode fazer isso.

9. Use o rasterisk para testar chamadas. Use o comando console dial canal_SIP@contexto para chamar um canal SIP (substitua canal_SIP pelo número a ser chamado). Ao final, execute console hangup.

10. 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).

11. Teste chamadas entre os telefones usando esse novo número.

Possíveis problemas

  1. 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).
  2. 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:
    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]
    
  3. 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..
  4. 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:
    exten=>101,1,Dial(SIP/101)
    same=>n,Hangup
    

DICAS ASTERISK

Comandos válidos no CLI do Asterisk:

  1. Para entrar no CLI do Asterisk execute: rasterisk -vvv</syntaxhighlight>
  2. Recarregar as configurações do arquivo sip.conf: sip reload</syntaxhighlight>
  3. Recarregar as configurações do arquivo extensions.conf: dialplan reload</syntaxhighlight>
  4. Ver canais SIP criados: sip show peers</syntaxhighlight>
  5. Gerar uma ligação via console: console dial extensão@contexto</syntaxhighlight>

20/02 - Continuação Aula 2

21/02: Entroncamentos SIP no Asterisk

Aula 4

A empresa onde se deve implantar a infraestrutura telefônica possui uma matriz e uma filial. Ambas possuem seus próprios PBX e suas linhas telefônicas locais. Por padronização seus PBX possuem as mesmas funcionalidades. Por fim, chamadas entre ramais da matriz e filial da empresa são feitas por um tronco privativo implantado com VoIP.


A interligação entre PBX Asterisk pode ser feita via rede de dados usando os protocolos SIP ou IAX2 (porém este segundo está em desuso). No primeiro caso, o encaminhamento de uma chamada entre dois PBX funciona como uma chamada SIP usual, e isso significa que a sinalização é feita com SIP e o áudio flui em separado com RTP. No segundo caso, o protocolo IAX2 (Inter-Asterisk eXchange) encapsula tanto a sinalização quanto os fluxos de áudio, o que simplifica o estabelecimento do tronco.

Modelo-pbx-asterisk.png


Inicialmente criaremos a infraestrutura para chamadas VoIP, a qual aumentaremos gradualmente para podermos reproduzir o modelo aqui descrito.

Tronco SIP

Em um entroncamento SIP (SIP trunking), um PBX pode encaminhar chamadas através de um tronco SIP. Essas chamadas podem ser originadas de diferentes formas, tais como telefones IP ou convencionais. Entre os PBX do entroncamento, as chamadas são sinalizadas com SIP e transmitidas com RTP e algum codec.

Sip-trunk.png

A ativação de um entroncamento SIP entre dois PBX Asterisk pode ser feita seguindo o exemplo abaixo:

PBX sip.conf extensions.conf
Norte
[Sul]
type=user
secret=supersercreta
host=IP_PBX_Norte
disallow=all
allow=ulaw
;canreinvite=no
directmedia=no
context=troncoSIP
qualify=yes

[ParaSul]
type=peer
fromuser=Norte
username=Norte
secret=supersecreta
host=IP_PBX_Sul
disallow=all
allow=ulaw
;canreinvite=no
directmedia=no
qualify=yes
 [troncoSIP]
 ; Ligando para a outra central e, na sequência, o "ramal" de destino
 exten => _4XXX,1,Dial(SIP/ParaSul/${EXTEN})
 same=>n,Hangup
Sul
[Norte]
type=user
secret=supersercreta
host=IP_PBX_Sul
disallow=all
allow=ulaw
;canreinvite=no
directmedia=no
context=troncoSIP
qualify=yes

[ParaNorte]
type=peer
fromuser=Sul
username=Sul
secret=supersecreta
host=IP_PBX_Norte
disallow=all
allow=ulaw
;canreinvite=no
directmedia=yes
qualify=yes
 [troncoSIP]
 ;
 ; Ligando para a outra central e, na sequência, o "ramal" de destino
 exten => _2XXX,1,Dial(SIP/ParaNorte/${EXTEN})
 same=>n,Hangup


Outra forma de fazer um entroncamento SIP é o seguinte:

PBX sip.conf extensions.conf
Central1
[central2]
type=friend
;defaultuser=central1; Canal SIP criado na Central 1
username=central1
host=192.168.25.102 ;ip da Central 2
secret=123
context=alunos
 [alunos]
 ; Ligando para a outra central e, na sequência, o "ramal" de destino
 exten => _4XX,1,Dial(SIP/central2/${EXTEN})
 same=>n,Hangup
Central2
[central1]
type=friend
;defaultuser=central2; Canal SIP criado na Central 2
username=central2
host=192.168.25.101 ;ip da Central 1
secret=123
context=alunos
 [alunos]
 ;
 ; Ligando para a outra central e, na sequência, o "ramal" de destino
 exten => _2XX,1,Dial(SIP/central1/${EXTEN})
 same=>n,Hangup

Atividade: estabelecendo chamadas entre diferentes PBX Asterisk

Nesta atividade, vamos realizar chamadas entre softphones registrados em diferentes PBX Asterisk. Isso implica definir um plano de numeração para os ramais da empresa. Sendo assim:

  1. Defina esse plano de numeração
  2. Crie as regras de discagem entre ramais da empresa
  3. Teste as chamadas
  4. Investigue a comunicação através do tronco (use o wireshark)