Mudanças entre as edições de "Redes Multimídia (diário 2017-1)"
Linha 271: | Linha 271: | ||
{{collapse top | Aula 5}} | {{collapse top | Aula 5}} | ||
+ | * [http://tele.sj.ifsc.edu.br/~msobral/rmu/slides/aula-02.pdf Slides] | ||
+ | |||
+ | A transmissão de dados multimidia está sujeita a alguns fatores, destacando-se: | ||
+ | * ''Banda disponível:'' cada tipo de transmissão demanda uma certa banda mínima (ver o exemplo dos videos gerados na aula anterior, que demandam em torno de 250 kbps). A banda requerida depende do codec, podendo mesmo ser variável (ver figura abaixo). Se a banda disponível na rede não for suficiente, a reprodução dos dados transmitidos não será possível (quer dizer, a reprodução contínua simultânea ao recebimento dos dados).<br>[[imagem:Rt-transmission.png|600px]] | ||
+ | * ''Atrasos fim-a-fim:'' alguns tipos de transmissão são mais sensíveis a atrasos fim-a-fim, como por exemplo conversações VoIP, porém todas transmissões de dados multimidia apresentam pouca tolerância a variações de atraso. A variação de atraso excessiva causa a perda de sincronismo entre a transmissão e a recepção, impedindo a reprodução contínua dos dados recebidos. | ||
+ | |||
+ | === Componentes do atraso fim-a-fim === | ||
+ | |||
+ | O atraso fim-a-fim, contado portanto desde a origem de um pacote até seu destino, se compõe de um conjunto de tempos despendidos ao longo de sua transmissão. Alguns desses tempos são constantes, porém outros são variáveis. | ||
+ | |||
+ | {| border="1" cellpadding="2" | ||
+ | !Atraso | ||
+ | !Descrição | ||
+ | !Tipo | ||
+ | !Expressão<br>(F: tamanho de um pacote em bytes,<br>B: taxa de bits do link) | ||
+ | |- | ||
+ | |''Transmissão'' || Tempo entre o início da saída do 1o bit até a saída do último bit de um pacote pela interface de rede. Depende basicamente da taxa de bits do link onde se dá a transmissão. || Variável (depende do tamanho do pacote) || <math>A_t = \frac{F}{B}</math> | ||
+ | |- | ||
+ | |''Propagação'' || Tempo entre a saída do 1o bit de um pacote da interface de rede do equipamento transmissor, e sua chegada na interface de rede do equipamento receptor. Depende basicamente da latência do meio de transmissão. || Constante || <math>A_p</math> | ||
+ | |- | ||
+ | |''Processamento'' || Tempo entre a recepção de um pacote e a ação a ser feita sobre ele dentro de um equipamento de rede (seja encaminhá-lo por outro link, ou entregá-lo a uma aplicação que o consumirá) || Usualmente desprezível || <math>A_x</math> | ||
+ | |- | ||
+ | |''Enfileiramento'' || Tempo de espera de um pacote na fila de saída de uma interface de rede por onde deve ser transmitido. Depende de quantos pacotes (e quantos bytes) estão na sua frente nessa fila. || Variável || <math>A_q = \sum_{F \in Fila} \frac{F}{B}</math> | ||
+ | |} | ||
+ | |||
+ | |||
+ | No exemplo abaixo, os links LAN (link1, link2, link7 e link8) possuem taxa de 1 Gbps, e os links WAN (demais links) possuem taxa de 10 Mbps. As filas dos roteadores podem conter até 100 pacotes de 1500 bytes (tamanho máximo de pacote). Os links WAN possuem latência de 2 ms (a dos links LAN é desprezível). Sendo assim, calcular o atraso mínimo e máximo que cada pacote pode sofrer entre sua saída do servidor de video e sua chegada no reprodutor. Os pacotes de vídeo têm tamanho de 1500 bytes: | ||
+ | |||
+ | [[imagem:Componentes-atraso.png]] | ||
+ | |||
+ | {|border="1" cellpadding="2" | ||
+ | |- | ||
+ | |''Atrasos de transmissão nos links WAN:''||<math>A_{wan}=\frac{1500 \cdot 8}{10 \cdot 10^{6}}=1,2 \cdot 10^{-3} s</math> | ||
+ | |- | ||
+ | |''Atrasos de transmissão nos links LAN:''||<math>A_{lan}=\frac{1500 \cdot 8}{1 \cdot 10^{9}}=12 \cdot 10^{-6} s</math> | ||
+ | |- | ||
+ | |''Atraso de enfileiramento em roteador: melhor caso<br>(fila vazia)'' || <math>A_q=0~s</math> | ||
+ | |- | ||
+ | |''Atraso de enfileiramento em roteador: pior caso<br>(fila cheia):''|| <math>A_q=100 \cdot \frac{1500 \cdot 8}{10 \cdot 10^{6}} = 120 \cdot 10^{-3} s</math> | ||
+ | |} | ||
+ | |||
+ | O menor atraso pode ser calculado assim: | ||
+ | |||
+ | <math>A_{min}=4 \cdot A_{lan} + 4 \cdot A_{wan} + 4 \cdot A_p = 12,848 \cdot 10^{-3} s</math> | ||
+ | |||
+ | |||
+ | ... e o maior atraso possível é: | ||
+ | |||
+ | <math>A_{max}=4 \cdot A_{lan} + 4 \cdot A_{wan} + 4 \cdot A_p + 4 \cdot A_q = 492,848 \cdot 10^{-3} s</math> | ||
+ | |||
+ | Com isso, uma transmissão de video nessa rede está sujeita a atrasos máximo de cerca de 492 ms por pacote, e variação de atraso de até <math>A_{max} - A_{min} = 480 ms</math>. Note-se que, nessa rede, a variação de atraso se deve essencialmente a atrasos de enfileiramento nos roteadores. Em outras redes pode haver fatores adicionais para variações de atraso: perdas de pacotes por erros de transmissão ou congestionamento, priorização de pacotes, e até o controle de congestionamento TCP (se esse protocolo for usado para a transmissão). | ||
+ | |||
+ | O exemplo acima diz respeito a uma pequena rede com bons links WAN e pequeno número de saltos (roteadores intermediários) entre origem e destino. Em um cenário mais realista, como um usuário doméstico acessando videos no Youtube, a situação pode ser bem pior. Para fins de comparação, da rede da escola até o Youtube foram contados 9 saltos, e de casa se contaram 8 saltos (o caso do Youtube é um pouco mais complicado, pois [http://tele.sj.ifsc.edu.br/~msobral/rmu/youtube-architecture.pdf sua infraestrutura é baseada em um tipo de CDN]). | ||
+ | |||
+ | Se cada pacote está sujeito a um atraso variável, o reprodutor de video no receptor precisa de algum mecanismo para compensar essas variações e apresentar o video de forma contínua. O mesmo raciocínio vale para transmissões de audio. | ||
+ | |||
+ | === Estratégias para tratar a variação de atraso === | ||
+ | |||
+ | Mecanismos para compensar atraso e variação de atraso da rede: | ||
+ | * Numerar cada mensagem com um número de sequência. | ||
+ | * Registrar o instante em que cada mensagem foi gerada (i.e. registrar seu ''timestamp''). | ||
+ | * Atrasar a reprodução do conteúdo no receptor, para compensar variações de atraso. | ||
+ | |||
+ | [[imagem:Rt-traffic.png|400px]] | ||
+ | <br>''Atrasos devido a transmissão'' | ||
+ | |||
+ | |||
+ | Esses mecanismos são combinados nas seguintes estratégias para compensar variação de atraso: | ||
+ | |||
+ | |||
+ | ==== Atraso de reprodução fixo==== | ||
+ | |||
+ | Compensa atrasos de mensagens com a imposição de um atraso fixo ''q'' no reprodutor de midia. Mensagens recebidas após seu instante de reprodução (i.e. chegam após ''timestamp + q'') são descartados. | ||
+ | |||
+ | |||
+ | [[imagem:Atraso-de-reproducao-fixo.png]] | ||
+ | <br>'''Atraso de reprodução:''' ''midia será tocada somente no instante <math>p^{'}</math>, sendo que <math>p^{'} = r + q</math>. O atraso ''q'' corresponde ao atraso de reprodução imposto do lado do cliente, para compensar variações de atraso das mensagens.'' | ||
+ | |||
+ | |||
+ | Por exemplo, uma sequência de mensagens pode ser reproduzida da seguinte forma se for imposto um atraso fixo: | ||
+ | |||
+ | [[imagem:Atraso-de-reproducao-fixo2.png|400px]] | ||
+ | |||
+ | ==== Atraso de reprodução adaptativo ==== | ||
+ | |||
+ | Procura minimizar o atraso de reprodução, estimando o atraso da rede e sua variação. O atraso de reprodução assim calculado é imposto no receptor antes de cada rajada de mensagens (isso faz mais sentido em transmissão de voz). | ||
+ | |||
+ | |||
+ | Por exemplo, uma sequência de mensagens pode ser reproduzida da seguinte forma se for imposto um atraso adaptativo: | ||
+ | |||
+ | [[imagem:Atraso-de-reproducao-adaptativo-1.png|400px]] | ||
+ | |||
+ | |||
+ | Se uma determinada mensagem se atrasar além do tolerável, será descartada (não reproduzida): | ||
+ | |||
+ | [[imagem:Atraso-de-reproducao-adaptativo-2.png|400px]] | ||
+ | |||
+ | == Estratégias para abrandar a perda de mensagens == | ||
+ | |||
+ | |||
+ | Reprodução de mensagens perdidas inadequada para aplicações interativas | ||
+ | * Mensagens que realmente não chegaram | ||
+ | * Mensagens que chegaram após instante de reprodução | ||
+ | |||
+ | |||
+ | Técnicas para abrandar a perda de mensagens e preservar uma boa (?!) qualidade de áudio | ||
+ | * Correção antecipada de erros (FEC - Forward Error Correction) | ||
+ | * Intercalação | ||
+ | |||
+ | ==== Correção antecipada de erros ==== | ||
+ | |||
+ | Emissor envia dados redundantes em suas mensagens, também conhecidos como um '''código de correção de erro'''. | ||
+ | |||
+ | '''Exemplo 1:''' envio de uma mensagem redundante para cada grupo de ''n'' mensagens. A mensagem redundante é calculada fazendo '''XOR''' das demais mensagens do grupo. | ||
+ | * Tolera a perda de 1 mensagem | ||
+ | * Aumento de banda de ''1/n'' | ||
+ | |||
+ | [[imagem:Rmu-fec.png|400px]] | ||
+ | <br>''Uso de mensagem redundante com '''XOR''''' | ||
+ | |||
+ | |||
+ | '''Exemplo 2:''' envio de fluxos redundantes de diferentes qualidades. | ||
+ | * Pode-se enviar um fluxo de qualidade inferior junto com o fluxo principal. | ||
+ | |||
+ | ==== Intercalação ==== | ||
+ | |||
+ | |||
+ | Consiste no resequenciamento das unidades de áudio antes de transmiti-las, de forma que unidades que estavam originalmente próximas sejam separadas por uma certa distância no fluxo a ser transmitido. | ||
+ | |||
+ | No exemplo abaixo, cada unidade de áudio tem 5 ms, e cada mensagem contém quatro unidades (totalizando 20 ms). | ||
+ | |||
+ | |||
+ | [[imagem:Rmu-intercalacao.png|400px]] | ||
+ | |||
+ | === Atividade === | ||
+ | |||
+ | Pesquise sobre o uso de técnicas de abrandamento de perdas de mensagens em diferentes tipos de transmissão de midia: VoIP, video, radio on-line, ... | ||
{{Collapse bottom | Aula 5}} | {{Collapse bottom | Aula 5}} |
Edição das 17h05min de 1 de fevereiro de 2017
Endereço encurtado: http://bit.ly/rmu20162
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
Diário das aulas
13/02 - Apresentação da disciplina
Aula 1 |
---|
Apresentação da disciplina: conteúdo, bibliografia e avaliação, laboratório. |
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.
PBX IP Asterisk
Características Básicas: faz tudo que um PABX pequeno e simples faz e pouco mais
Canais SIPCada 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=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
Plano de discagemO 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:
[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
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
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 IPPara 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.
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
DICAS ASTERISKComandos válidos no CLI do Asterisk:
|
20/02 - Etapa Asterisk: Caracterização de mídia
Aula 3 |
---|
Compressão de áudio |
21/02 - Etapa Asterisk: Caracterização de mídia
Aula 4 |
---|
Compressão de vídeo |
06/03 - Etapa Asterisk: Transmissão de mídia
Aula 5 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
A transmissão de dados multimidia está sujeita a alguns fatores, destacando-se:
Componentes do atraso fim-a-fimO atraso fim-a-fim, contado portanto desde a origem de um pacote até seu destino, se compõe de um conjunto de tempos despendidos ao longo de sua transmissão. Alguns desses tempos são constantes, porém outros são variáveis.
O menor atraso pode ser calculado assim:
Com isso, uma transmissão de video nessa rede está sujeita a atrasos máximo de cerca de 492 ms por pacote, e variação de atraso de até . Note-se que, nessa rede, a variação de atraso se deve essencialmente a atrasos de enfileiramento nos roteadores. Em outras redes pode haver fatores adicionais para variações de atraso: perdas de pacotes por erros de transmissão ou congestionamento, priorização de pacotes, e até o controle de congestionamento TCP (se esse protocolo for usado para a transmissão). O exemplo acima diz respeito a uma pequena rede com bons links WAN e pequeno número de saltos (roteadores intermediários) entre origem e destino. Em um cenário mais realista, como um usuário doméstico acessando videos no Youtube, a situação pode ser bem pior. Para fins de comparação, da rede da escola até o Youtube foram contados 9 saltos, e de casa se contaram 8 saltos (o caso do Youtube é um pouco mais complicado, pois sua infraestrutura é baseada em um tipo de CDN). Se cada pacote está sujeito a um atraso variável, o reprodutor de video no receptor precisa de algum mecanismo para compensar essas variações e apresentar o video de forma contínua. O mesmo raciocínio vale para transmissões de audio. Estratégias para tratar a variação de atrasoMecanismos para compensar atraso e variação de atraso da rede:
Atraso de reprodução fixoCompensa atrasos de mensagens com a imposição de um atraso fixo q no reprodutor de midia. Mensagens recebidas após seu instante de reprodução (i.e. chegam após timestamp + q) são descartados.
Atraso de reprodução adaptativoProcura minimizar o atraso de reprodução, estimando o atraso da rede e sua variação. O atraso de reprodução assim calculado é imposto no receptor antes de cada rajada de mensagens (isso faz mais sentido em transmissão de voz).
Estratégias para abrandar a perda de mensagensReprodução de mensagens perdidas inadequada para aplicações interativas
Correção antecipada de errosEmissor envia dados redundantes em suas mensagens, também conhecidos como um código de correção de erro. Exemplo 1: envio de uma mensagem redundante para cada grupo de n mensagens. A mensagem redundante é calculada fazendo XOR das demais mensagens do grupo.
IntercalaçãoConsiste no resequenciamento das unidades de áudio antes de transmiti-las, de forma que unidades que estavam originalmente próximas sejam separadas por uma certa distância no fluxo a ser transmitido. No exemplo abaixo, cada unidade de áudio tem 5 ms, e cada mensagem contém quatro unidades (totalizando 20 ms). AtividadePesquise sobre o uso de técnicas de abrandamento de perdas de mensagens em diferentes tipos de transmissão de midia: VoIP, video, radio on-line, ... |
7/03 - Etapa Asterisk: Estudo do protocolo SIP
Aula 6 |
---|
|
13/03 - Etapa Asterisk: Estudo do protocolo SIP e SDP
Aula 7 |
---|
|
14/03 - Etapa Asterisk: Estudo do protocolo RTP
Aula 8 |
---|
|
20/03 - Etapa Asterisk: Análise dos protocolos SIP, SDP e RTP utilizando o wireshark
Aula 9 |
---|
|
21/03 - Etapa Asterisk: Asterisk e NAT
Aula 10 |
---|
|
27/03 - Etapa Asterisk: Funções de PABX
Aula 11 |
---|
|
28/03 - Etapa Asterisk: Padrões de extensões e variáveis
Aula 12 |
---|
|
03/04 - Etapa Asterisk: Padrões de extensões e variáveis
Aula 13 |
---|
|
04/04 - Etapa Asterisk: URA
Aula 14 |
---|
|
10/04 - Etapa Asterisk: Interconexão de PABX utilizando SIP
Aula 15 |
---|
|
11/04 - Etapa Asterisk: Desenvolvimento do trabalho
Aula 16 |
---|
|
17/04 - Etapa Asterisk: Desenvolvimento do trabalho
Aula 17 |
---|
|
18/04 - Etapa Asterisk: Desenvolvimento do trabalho
Aula 18 |
---|
|
24/04 - Etapa Asterisk: Desenvolvimento do trabalho
Aula 19 |
---|
|
25/04 - Etapa Asterisk: Apresentação do trabalho
Aula 20 |
---|
|
02/05 - Etapa QoS: Introdução à Qualidade de Serviço
Aula 21 |
---|
|
08/05 - Etapa QoS: Conceitos básicos de QoS
Aula 22 |
---|
|
09/05 - Etapa QoS: QoS em roteador Linux
Aula 23 |
---|
|
15/05 - Etapa QoS: QoS em roteador Linux
Aula 24 |
---|
|
16/05 - Etapa QoS: Exercícios práticos
Aula 25 |
---|
|
22/05 - Etapa QoS: Desenvolvimento do trabalho (continuação Etapa Asterisk)
Aula 26 |
---|
|
23/05 - Etapa QoS: Desenvolvimento do trabalho (continuação Etapa Asterisk)
Aula 27 |
---|
|
29/05 - Etapa QoS: Desenvolvimento do trabalho (continuação Etapa Asterisk)
Aula 28 |
---|
|
30/05 - Etapa QoS: Apresentação do trabalho (continuação Etapa Asterisk)
Aula 29 |
---|
|
05/06 - Etapa Firewall: Introdução a Firewall
Aula 30 |
---|
|
06/06 - Etapa Firewall: Firewall com iptables
Aula 31 |
---|
|
12/06 - Etapa Firewall: Exercícios práticos
Aula 32 |
---|
|
13/06 - Etapa Firewall: Exercícios práticos
Aula 33 |
---|
|
19/06 - Etapa Firewall: Desenvolvimento do trabalho (continuação Etapa QoS)
Aula 34 |
---|
|
20/06 - Etapa Firewall: Desenvolvimento do trabalho (continuação Etapa QoS)
Aula 35 |
---|
|
26/06 - Etapa Firewall: Desenvolvimento do trabalho (continuação Etapa QoS)
Aula 36 |
---|
|
27/06 - Etapa Firewall: Apresentação do trabalho (continuação Etapa QoS)
Aula 37 |
---|
|
03/07 - Recuperação
Aula 38 |
---|
|
04/07 - Recuperação
Aula 39 |
---|
|