Mudanças entre as edições de "Redes Multimídia (diário 2014-1)"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 297: Linha 297:
  
 
===02/04===
 
===02/04===
Entrega: ''codecs'' personalizados por canal/tronco:
+
Entrega: ''codecs'' personalizados por canal/tronco.
 
* Configurar o ambiente para clonar o repositório <tt>git</tt> com as configurações vistas em aula:  
 
* Configurar o ambiente para clonar o repositório <tt>git</tt> com as configurações vistas em aula:  
 
<syntaxhighlight lang=bash>
 
<syntaxhighlight lang=bash>

Edição das 17h11min de 9 de abril de 2014

Endereço encurtado desta página: http://bit.ly/rmu20141

Sobre a disciplina

Metodologia

Metodologia orientada a projeto, sendo esse o desenvolvimento de uma solução de comunicação segura entre diversos nós espalhados pela Internet. Será usado, para tal, um concentrador que atuará como autenticador e ponto de integração com outras redes. A comunicação entre os nós poderá ser intermediada pelo concentrador ou mesmo direta entre os terminais. É obrigatória a segurança de todos os dados trafegados (sinalização e transmissão de mídia). A qualidade de serviço será necessária, seja intra-rede ou entre redes locais conectadas à Internet. Como o IFSC será uma dessas redes locais, o uso de IPv6 será necessário - tendo assim pilha dupla de operação. Novas tecnologias serão contempladas, como WebRTC e novos codecs projetados para redes IP.

Ferramentas

Avaliação

  • Serão realizadas avaliações por temática/projeto em sala.
  • Para aprovação: no máximo 2 Ds, e para cada D um A correspondente. Exceção: para o último projeto o conceito mínimo deve ser C.

Aulas

Apresentação da disciplina e oportunidades

10/02

  • Apresentação da disciplina: metodologia e avaliação.

12/02

  • Definição da metodologia e escopo do problema: a rede de comunicação.

17/02

Não houve aula.

19/02

Com a possibilidade de troca de professor da disciplina, foi tratado um tema relevante: o mercado de trabalho de Telecomunicações na Grande Florianópolis.

Sinalização

24/02

26/02

  • O protocolo SIP - RFC 3261.

10/03

  • SIP, intracentral.
  • Um cenário possível para o experimento:

  1. Geral

global[compact]=False global[mem]=64 global[vm]=4 global[clean]=False global[path]=/tmp/rmu20141/cenario0/lab

  1. Roteador

rt0[type]=router

  1. Rede 0
  2. Equipamentos

r0sw0[type]=switch r0pbx0[type]=pbx r0pc0[type]=generic r0pc1[type]=generic

  1. Enlaces intra-rede

r0sw0[eth0]=p00 rt0[eth0]=p00:ip=192.168.0.254/24 r0sw0[eth1]=p01 r0pbx0[eth0]=p01:ip=192.168.0.1/24 r0sw0[eth2]=p02 r0pc0[eth0]=p02:ip=192.168.0.100/24 r0sw0[eth3]=p03 r0pc1[eth0]=p03:ip=192.168.0.101/24

  1. Rotas

r0pbx0[default_gateway]=192.168.0.254 r0pc0[default_gateway]=192.168.0.254 r0pc1[default_gateway]=192.168.0.254

  1. Arquivos a salvar

r0pbx0[preserve]=/usr/local/asterisk/etc/asterisk/sip.conf:/usr/local/asterisk/etc/asterisk/extensions.conf r0pc0[preserve]=/root/pjsua.cfg r0pc1[preserve]=/root/pjsua.cfg

  1. Rede 1
  2. Equipamentos

r1sw0[type]=switch r1pbx0[type]=pbx r1pc0[type]=generic r1pc1[type]=generic

  1. Enlaces intra-rede

r1sw0[eth0]=p10 rt0[eth1]=p10:ip=192.168.1.254/24 r1sw0[eth1]=p11 r1pbx0[eth0]=p11:ip=192.168.1.1/24 r1sw0[eth2]=p12 r1pc0[eth0]=p12:ip=192.168.1.100/24 r1sw0[eth3]=p13 r1pc1[eth0]=p13:ip=192.168.1.101/24

  1. Rotas

r1pbx0[default_gateway]=192.168.1.254 r1pc0[default_gateway]=192.168.1.254 r1pc1[default_gateway]=192.168.1.254

  1. Arquivos a salvar

r1pbx0[preserve]=/usr/local/asterisk/etc/asterisk/sip.conf:/usr/local/asterisk/etc/asterisk/extensions.conf r1pc0[preserve]=/root/pjsua.cfg r1pc1[preserve]=/root/pjsua.cfg </syntaxhighlight>

Experimentos

Ligação direta entre terminais

Foi utilizado o aplicativo siprtp em ambos os terminais:

  • Terminal 0, r0pc0 (192.168.0.100), que operará como UAS:

siprtp -i 192.168.0.100 </syntaxhighlight>

  • Terminal 1, r0pc1 (192.168.0.101), que operará como UAC:

siprtp -i 192.168.0.101 sip:192.168.0.100 </syntaxhighlight>

Ligação intermediada por SIP Registrar/Proxy

Foi utilizado o aplicativo pjsua nos terminais e Asterisk no servidor:

  • Servidor r0pbx0 (192.168.0.1) como SIP Registrar e Proxy. Foram configurados duas contas SIP no arquivos /etc/asterisk/sip.conf:

[100] type=friend ; ambos os sentidos host=dynamic defaultuser=100 context=rmu20141 canreinvite=no

[101] type=friend host=dynamic defaultuser=101 context=rmu20141 canreinvite=no </syntaxhighlight>

  • E no arquivo /etc/asterisk/extensions.conf o plano de discagem:

[rmu20141] exten => _1XX,1,Dial(SIP/${EXTEN}) exten => _1XX,n,Hangup() </syntaxhighlight>

  • Ainda no mesmo servidor, foi iniciado o serviço e verificadas as configurações (quem pode ligar, peers, e quem pode receber, users):

asterisk -c sip show peers sip show users dialplan show rmu20141 </syntaxhighlight>

  • Depois, foi configurada a primeira conta (100) no terminal r0pc0, no arquivos /root/pjsua.cfg:

--registrar sip:192.168.0.1 --proxy sip:192.168.0.1;lr --realm * --id sip:100@192.168.0.1 --username 100 --local-port 5060 --null-audio </syntaxhighlight>

  • O mesmo foi feito para a segunda conta (101), em r0pc1 (mesmo arquivo):

--registrar sip:192.168.0.1 --proxy sip:192.168.0.1;lr --realm * --id sip:101@192.168.0.1 --username 101 --local-port 5060 --null-audio </syntaxhighlight>

  • Para acompanhar o registro, foi ativada a depuração de mensagens SIP no servidor (na CLI do Asterisk):

sip set debug on </syntaxhighlight>

  • E, em cada terminal (r0pc0 e r0pc1), foi executado o comando que inicia o registro das contas SIP:

pjsua --config-file=/root/pjsua.cfg </syntaxhighlight> Por fim, faltou apenas iniciar uma chamada telefônica.

12/03

  • SIP, aplicação em sala de ligação intracentral.

17/03

24/03

Entrega: sinalização com SIP. A seguir, o roteiro.

  • Em cada VM, iniciar o monitor de rede tshark (onde <maquina> é o nome da VM):

tshark -i eth0 -f "udp" -w /tmp/<maquina>.pcap & </syntaxhighlight>

  • Realizar a ligação entre: r0pc0 e r1pc1 (r0pc0-r0pbx0-r1pbx0-r1pc1) e r1pc0 e r0pc1 (r1pc0-r1pbx0-r0px0-r0pc1).
  • Encerrar as ligações.
  • Encerrar o monitor de rede. Em cada VM:

killall -TERM tshark sleep 2 killall -KILL tshark </syntaxhighlight>

  • Copiar os arquivos gerados (*.pcap) para a máquina virtualizadora. O diretório /hostlab da VM se refere ao diretório lab da máquina real. Em cada VM (onde <maquina> é o nome da VM):

cp /tmp/<maquina>.pcap /hostlab/ </syntaxhighlight>

  • Enviar, por email os 6 (seis) arquivos .pcap:
    • lab/r0pc0.pcap
    • lab/r0pc1.pcap
    • lab/r0pbx0.pcap
    • lab/r1pc0.pcap
    • lab/r1pc1.pcap
    • lab/r1pbx0.pcap

Descrição de Mídia

26/03

31/03

  • SIP com SDP, definição de codecs.
  • Roteiro utilizado

cat > ${HOME}/.gitconfig << EOF [http] sslVerify = no EOF

cd /tmp/ git clone https://tele.sj.ifsc.edu.br/projetos/rmu20141

cd /tmp/rmu20141/cenario0 ~/netkit/bin/gnome-netkit

em cada VM: tshark -i eth0 -f udp -w /tmp/MAQUINA.pcap -q &

nos PBXs: /usr/local/asterisk/sbin/asterisk -c

nos terminais: pjsua --config-file=pjsua.cfg

r0pc0: ligar para D (r1pc1): m, sip:0101@192.168.0.1 qualidade da ligação: dq

r1pc1: atender a ligação: a, 200 qualidade da ligação: dq

r0pc0: parar o processo pjsua: Ctrl + z cp /tmp/r0pc0.pcap /hostlab/ retomar o processo pjsua: fg

r1pc1: parar o processo pjsua: Ctrl + z cp /tmp/r1pc1.pcap /hostlab/ retomar o processo pjsua: fg

no ambiente real: wireshark /tmp/rmu20141/cenario0/lab/r0pc0.pcap wireshark /tmp/rmu20141/cenario0/lab/r1pc1.pcap

nos PBXs: parar o processo asterisk: Ctrl + z editar os codecs: vi /etc/asterisk/sip.conf [100] disallow=all allow=alaw [101] disallow=all allow=alaw [r0pbx0-r1pbx0] disallow=all allow=alaw [r1pbx0-r0pbx0] disallow=all allow=alaw retomar o asterisk: fg atualizar a configuração: sip reload

r0pc0: desligar a atual ligação: h ligar para D (r1pc1): m, sip:0101@192.168.0.1 qualidade da ligação: dq

r1pc1: atender a ligação: a, 200 qualidade da ligação: dq

r0pc0: parar o processo pjsua: Ctrl + z cp /tmp/r0pc0.pcap /hostlab/ retomar o processo pjsua: fg

r1pc1: parar o processo pjsua: Ctrl + z cp /tmp/r1pc1.pcap /hostlab/ retomar o processo pjsua: fg </syntaxhighlight>

02/04

Entrega: codecs personalizados por canal/tronco.

  • Configurar o ambiente para clonar o repositório git com as configurações vistas em aula:
cat > $HOME/.gitconfig << EOF
[http]
sslVerify=no
EOF
  • Para evitar sobreposição de arquivos, e como o git é um DCVS, é fortemente recomendado o seu uso no diretório /tmp:
 
cd /tmp
rm -rf rmu20141
git clone https://tele.sj.ifsc.edu.br/projetos/rmu20141
cd rmu20141/cenario0
gnome-netkit

e abrir o laboratório /tmp/rmu20141/cenario0/lab.conf.

  • Rodar os casos de ligações entre A-M-N-D e C-N-M-B (8 no total):
    1. As ligações são estabelecidas utilizando apenas G711 lei A (alaw); ou seja, em ambos os sentidos em cada ligação.
    2. As ligações são estabelecidas utilizando apenas GSM (gsm).
    3. As ligações não podem ser estabelecidas por incompatibilidade de codec.
    4. As ligações podem ser estabelecidas porque há um 'gateway' de mídia; ou seja, a transcodificação é necessária - em ambos os sentidos.

Dicas: o que ajuda no Asterisk de comando:

core show translation
core show channels
core show channel (nome do canal)

Transmissão de Mídia

07/04

09/04

  • Transmissão de mídia, RTP/RTcP.
  • Entrega: análise latência, jitter e perda de pacotes e impacto na mídia.

Qualidade de Serviço

14/04

16/04

  • Filas e priorização em redes sem QoS.
  • Entrega: ambiente com e sem protocolo de QoS.

Segurança

21/4

  • Estudo de Google Hangouts.
  • Criptografia.
  • Convidado: Patricia Domingos e/ou Paulo Vitor Chirolli Almeida.

23/4

  • SSL, TLS, SIP com TLS.

28/4

  • SRTP e zRTP.

30/4

  • Criptografia opcional e obrigatório.
  • Entrega: sinalização e mídia criptografados sob demanda, opcional e obrigatório.

Novas Tecnologias

05/05

  • Estudo de caso: WebRTC.
  • Novas tecnologias e a WWW.
  • Convidado: Felipe Silva Borges.

07/05

  • Servidor Web, HTML5, Javascript.

12/05

  • HTML5, Javascript, WebRTC.

14/05

  • HTML5, Javascript, WebRTC.
  • Entrega: ligação entre ramal analógico e canal WebRTC.

IP

19/05

  • IPv4, NAT, STUN, ICE, túneis (seguros ou não).

21/05

  • IPv4, NAT, STUN, ICE, túneis (seguros ou não).

26/05

  • IPv6.

28/05

  • IPv6.

02/07

  • IPv6.

04/07

  • IPv6.
  • Entrega: ligação entre canais com terminações IPv4 e IPv6.