VÍDEO EM REDES PAR-A-PAR
Rafael Kikuchi
UNIVERSIDADE FEDERAL DO RIO DE JANEIRO
ESCOLAPOLITÉCNICA
DISCIPLINA: Redes de Computadores II (EEL879)
Programa
Motivação
Codificações
Tipos de streaming
Arquiteturas de distribuição
Poluição
Conclusão
Perguntas
Programa
Motivação
Codificações
Tipos de streaming
Arquiteturas de distribuição
Poluição
Conclusão
Perguntas
Vídeo e Internet
Popularização da difusão de fluxo contínuo
(streaming) de vídeo na Internet
YouTube, Justin.tv, SopCast
Vídeos com melhor definição
Maior demanda de banda passante
Qualidade de experiência
Menos tempo de armazenamento em buffer
Motivação
Modelo Cliente-Servidor
Crescente número de usuários
Custo elevado com banda passante
Motivação
Redes par-a-par (P2P)
Compartilhamento de recursos entre os pares
Altamente escalável
Sistemas de compartilhamento de arquivos já bem estabelecidos (BitTorrent)
Programa
Motivação
Codificações
Tipos de streaming
Arquiteturas de distribuição
Poluição
Conclusão
Perguntas
Desafios
Vídeo em sistemas par-a-par
Sistemas P2P tradicionais (compartilhamento de
arquivos) dividem arquivos em blocos pequenos para distribuir entre os nós.
Como dividir o vídeo em blocos para distribuir
entre os pares?
Como transmitir o conteúdo de forma eficiente e,
ao mesmo tempo, priorizar os blocos em reprodução?
Solução
Codificação do vídeo
Múltiplos Descritores (MDC)
Múltiplos Descritores (MDC)
Divisão do vídeo em descritores
independentes
Divisão dos descritores em blocos de tempo
(description chunks)
Cada bloco de tempo pode ser reproduzido
com apenas um descritor, embora a
qualidade máxima seja obtida somente
quando se possui todos.
Múltiplos Descritores (MDC)
Description Chunk Descritores.
.
.
.
.
.
Tempo Vídeo CodificadoMúltiplos Descritores (MDC)
Nós podem trocar informações referentes ao
mesmo período de tempo (descritores
diferentes).
Prioridade para o conteúdo de blocos ainda sem
Múltiplos Descritores (MDC)
Codificação em Camadas
Ao invés de descritores independentes, o
vídeo é divido em camadas (layers)
hierarquicamente dependentes.
Sistema de prioridades – camadas inferiores
devem estar disponíveis a todos os nós
Pares com capacidades semelhantes devem estar
conectados
Mais eficiente em termos de compactação
Camadas Dependência
.
.
.
.
.
.
Vídeo Codificado TempoCodificação em Camadas
Fonte
Programa
Motivação
Codificações
Tipos de streaming
Arquiteturas de distribuição
Poluição
Conclusão
Perguntas
Difusão
Difusão (live streaming)
Fonte transmite o mesmo conteúdo todos os nós
(como um canal de TV)
Sensibilidade a latência
Só é necessário o conteúdo sendo reproduzido no momento (descarta-se conteúdo antigo)
Codificação veloz
Vídeo sob Demanda
Vídeo sob Demanda (Video on Demand / VoD)
Usuário escolhe o conteúdo que deseja ver
Pode-se voltar ou avançar no vídeo como quiser
Como garantir compartilhamento de recursos
eficiente?
Se é garantido um período mínimo de reprodução sem interrupções, transferir dados de tempos
Programa
Motivação
Codificações
Tipos de streaming
Arquiteturas de distribuição
Poluição
Conclusão
Perguntas
Arquiteturas de Distribuição
Sistemas par-a-par são baseados em redes
sobrepostas na camada de aplicação.
Em geral, os próprios nós definem a estrutura
da rede e o modo de distribuição do conteúdo
(que devem ser eficientes).
Distribuição em Árvore
Estrutura hierárquica em árvore, em que os
pais transmitem o conteúdo recebido aos
filhos.
A raiz é a fonte do vídeo.
Nós com pouca capacidade não devem ser
pais de nós com muita capacidade.
Cada nó não deve ter muitos filhos, evitando
Distribuição em Árvore
Vantagens
Baixo overhead de controle Baixa latência
Desvantagens
A cada saída de nó, pode ser necessário
re-estruturação da árvore (intensivo em sobrecarga de controle).
Pouco robusto a flutuações freqüentes no número de usuários.
Distribuição em Árvore
Problema:
Folhas não retransmitem conteúdo (não
compartilham recursos).
Solução:
Múltiplas árvores (uma para cada sub-fluxo)
Distribuição em Malha
Estrutura dinâmica.
Interação entre pares vizinhos para descobrir
o que cada um possui.
Cada par pede explicitamente o bloco
Distribuição em Malha
Vantagens:
Robusto a entradas e saídas freqüentes dos pares.
Recebimento de dados por mais de um nó.
Desvantagens:
Alta sobrecarga de controle.
Mais tempo necessário para iniciar a reprodução
Distribuição Híbrida
Objetivos:
Robustez a oscilações no número de usuários Eficiência na distribuição de conteúdo
Baixo overhead de controle
Arquitetura em árvore e em malha possuem
características complementares – bom ponto
de partida.
Distribuição Híbrida
Solução:
Alternar entre as arquiteturas conforme o
adequado.
Inicialmente, cada nó consulta os vizinhos para
descobrir o conteúdo disponível.
Após certo tempo, um ou mais nós são escolhidos
para transmitir um sub-fluxo diretamente, sem precisar de requisição por bloco.
Escolha feita de acordo com reputação e recursos disponíveis de cada vizinho.
Programa
Motivação
Codificações
Tipos de streaming
Arquiteturas de distribuição
Poluição
Conclusão
Perguntas
Poluição
Ataque comum nos sistemas convencionais
(troca de arquivos) P2P:
Poluição – nó malicioso envia conteúdo inválido
para os demais nós, que retransmitem como conteúdo normal.
Conceito pode ser estendido para sistemas de
vídeo: blocos poluídos degeneram o áudio e a imagem.
Poluição
Listagem Negra
Identificação de nós maliciosos e bloqueio deles
pelo sistema.
Como identificar?
Em geral, atacantes disponibilizam os blocos poluídos em ordem aleatória.
Recursos anunciados muito acima da média.
Não garante detecção de ataques menos
Poluição
Encriptação de Tráfego
Vídeos transmitidos em texto puro, com padrões públicos conhecidos.
Encriptação adiciona grau de dificuldade ao atacante.
Criptografia simétrica não viável
Como trocar as chaves secretas?
Criptografia assimétrica: cada par divulga sua chave pública.
Muito custoso computacionalmente: necessário
Poluição
Assinatura de blocos
Vídeo assina cada bloco de vídeo.
Inviável computacionalmente.
Amortização de assinatura
Vídeo divido em grupos de blocos.
Cada grupo é associado a um conjunto de dados
de autenticação, assinado pela fonte.
Verifica-se a autenticidade de cada bloco a partir
Tempo Blocos de Vídeo Conjunto de Blocos Fonte Dados de Autenticação (referente ao conjunto) Rede par-a-par +
Amortização de Assinatura
Amortização de Assinatura
Dados de Autenticação
Concatena-se os hashes referentes a cada bloco
de vídeo do grupo, e se calcula o hash desta concatenação, que é assinado pela fonte.
A posição do primeiro bloco transmitido do grupo
e os hashes dos demais blocos também são informados.
Para o receptor autenticar, basta calcular o hash do bloco recebido, concatená-lo com os demais
Dados de Autenticação
Hashes
Assinatura a partir dos
hashes concatenados
Posição relativa do bloco que irá ser transmitido. Conjunto
de Blocos
Amortização de Assinatura
Programa
Motivação
Codificações
Tipos de streaming
Arquiteturas de distribuição
Poluição
Conclusão
Perguntas
Conclusão
Sistemas P2P devem ser específicos para
transmissão de vídeo.
A codificação do vídeo e a arquitetura de
distribuição adotadas devem ser escolhidas
de acordo com o tipo de serviço desejado.
Popularização de streaming na Internet torna
a questão da escalabilidade um fator
essencial para o sucesso: Redes P2P são
potenciais candidatas.
Programa
Motivação
Codificações
Tipos de streaming
Arquiteturas de distribuição
Poluição
Conclusão
Perguntas
Perguntas
(1) Quais são os tipos de difusão de fluxo
contínuo de vídeo (streaming)? Quais as
diferenças entre eles?
Perguntas
(1) – Resposta:
Os dois tipos de streaming são: difusão (ou live streaming) e vídeo sob demanda. A difusão é
baseada na propagação de um mesmo vídeo para um grupo de usuários, como um canal de
televisão. Já o vídeo sob demanda consiste em um sistema que permite que o usuário solicite o
conteúdo desejado, dando a ele o poder de avançar ou retornar na reprodução do vídeo.
Perguntas
(2) Tanto a codificação por múltiplos
descritores (MDC) quanto a codificação em
camadas dividem o vídeo em sub-fluxos e,
em seguida, os dividem em blocos na
dimensão do tempo. Quais as diferenças
entre estas codificações? Cite uma vantagem
da codificação em camadas.
Perguntas
(2) – Resposta:
A diferença principal está na dependência entre os
sub-fluxos. No MDC, os sub-fluxos são
independentes entre si, enquanto na codificação por camadas eles seguem uma relação de
dependência hierárquica – camadas superiores só podem ser decodificadas se as camadas inferiores estiverem disponíveis. A principal vantagem da codificação por camadas é sua eficiência de
compactação, que é comparável com codificações convencionais.
Perguntas
(3) Uma vantagem da arquitetura de
distribuição em árvore é sua baixa sobrecarga
de controle. No entanto, sabe-se que o
processo da definição da estrutura (alocação
dos nós na árvore) requer um overhead de
controle considerável. Aparentemente, estas
duas afirmações se contradizem, mas ambas
são verdadeiras. Explique.
Perguntas
(3) – Resposta:
De fato, a estruturação da rede em árvore requer
muitos pacotes de controle. Entretanto, uma vez estabelecida esta estrutura, cada nó só tem a
tarefa de encaminhar os pacotes de vídeo
recebidos para os seus filhos. Assim, o custo em mensagens de controle é muito baixo a longo termo.
Perguntas
(4) A arquitetura de distribuição em malha é
adotada no sistema de compartilhamento de
arquivos BitTorrent, que vem sendo usado
com sucesso há anos. No contexto de
distribuição de vídeos, cite uma vantagem e
uma desvantagem deste tipo de arquitetura.
Perguntas
(4) – Resposta:
Este tipo de arquitetura de distribuição requer
grande quantidade de mensagens de controle, fazendo com que a banda passante seja usada de modo ineficiente. Uma segunda desvantagem, em parte conseqüência do item exposto
anteriormente, é o tempo necessário até iniciar a reprodução do vídeo. A grande vantagem deste tipo de arquitetura é a robustez a entradas e
saídas freqüentes de pares do sistema, garantindo suporte a um número elevado de usuários.
Perguntas
(5) Um método para evitar ataques de
poluição é a amortização de assinatura –
envio de dados de autenticação a cada
número definido de blocos de vídeo. Após
confirmar o primeiro bloco de vídeo de um
grupo (através da verificação de assinatura da
concatenação de hashes), não é preciso fazer
o mesmo processo para verificar os outros
Perguntas
(5) – Resposta:
Como os demais hashes já são conhecidos e
comprovadamente autênticos (devido à
assinatura da fonte), basta calcular o hash de cada novo bloco recebido e compará-lo com o obtido nos dados de autenticação.