• Nenhum resultado encontrado

3 Distribuição de Vídeo em Redes de Dados

3.2 Multicast

3.2.3 Multicast em Nível de Aplicação

3.2.3.2 Abordagem Dirigida por Dados

As estruturas de overlay tentam imitar a estrutura de árvores de roteamento do

multicast IP, utilizando equipamentos de usuários finais (programáveis e extensíveis)

como nós internos na árvore, atuando como repetidores para outros nós. Overlays têm se mostrado muito promissores para aplicações multicast; no entanto, muitas pesquisas argumentam que estruturas em árvore possuem limitações fundamentais tanto com relação à largura de banda quanto à confiabilidade. Uma das maiores dificuldades com árvores está relacionada ao fato de que a largura de banda decresce descendo a árvore. Qualquer perda no alto da árvore reduzirá a banda disponível para receptores abaixo na árvore. A largura de banda disponível para qualquer usuário é limitada pela banda disponível de seu antecessor na árvore. Portanto, outra abordagem para distribuição de conteúdo ao vivo, que tem recebido muita atenção, é a dirigida por dados, a qual utiliza a disponibilidade de dados para guiar o fluxo de dados ao invés de manter uma estrutura explicita (tal como uma árvore) para distribuição de dados. Para tal finalidade existem dois tipos de algoritmos: os algoritmos “gossip-based”, nos quais os nós escolhem outros nós para transmitir dados de maneira aleatória, e os algoritmos “pull-based”, nos quais os equipamentos de usuários finais trocam informação sobre os dados que cada um possuí, solicitando explicitamente os dados que precisam.

Os requisitos de tempo real de uma transmissão ao vivo implicam que os segmentos do fluxo de vídeo precisam ser obtidos em tempo hábil para a exibição, sendo necessário um mecanismo que consiga agendar os segmentos que devem ser obtidos dos vários pares (peers) para garantir que a exibição seja executada em um tempo limite máximo. De outra maneira, a exibição do conteúdo poderia ser interrompida ou degradada.

Existem diversas propostas de solução que utilizam esta abordagem, tais como CoolStreaming (ZHANG, X. ET AL., 2005), Chainsaw (PAI ET AL., 2005) e AnySee (LIAO ET AL., 2006), entre outros. Nesta seção, o CoolStreaming será apresentado com a finalidade de mostrar o funcionamento da abordagem dirigida por dados. Como o CoolStreaming segue esta abordagem dirigida por dados, não existe uma estrutura formal pré-definida para transmitir os dados através dos clientes/peers, i.e., uma estrutura formal para distribuição dos dados. Vale notar que o CoolStreaming

utiliza um algoritmo pull-based para obter os dados que ele necessita, i.e., clientes explicitamente requisitam os segmentos que precisam. A vantagem deste tipo de algoritmo comparado aos gossip-based está no fato de que a redundância pode ser evitada uma vez que um nó solicita determinado dado somente se ele ainda não o possui.

Um fluxo de vídeo é dividido em segmentos de tamanho uniforme e a disponibilidade dos segmentos ativos no buffer de um nó é representada através de um mapa do

buffer (Buffer Map – BM). Os nós mantêm um conjunto de parceiros com os quais

trocam informações de disponibilidade de dados (trocando BMs). Isso permite a um nó definir qual segmento solicitar a determinado parceiro. Na Figura 3.6 podem ser vistos diversos nós trocando seus BMs, no qual o nó A é a fonte do conteúdo.

Figura 3.6 - CoolStreaming/DONet (ZHANG, X. ET AL., 2005)

O progresso da exibição do conteúdo nos clientes é semi-sincronizado (i.e., os clientes estão assistindo a mesma parte do conteúdo, porém não exatamente o mesmo instante), e qualquer segmento obtido após seu instante de exibição será inútil. Portanto, o desempenho do algoritmo de agendamento é muito importante para a exibição contínua.

Em um sistema de transferência de arquivos, tal como o BitTorrent, cada cliente/peer sabe as partes do arquivo completo que ele já possui e as que ele precisa obter, sendo que a ordem na qual estes pedaços são obtidos não faz diferença, pois a meta é obter o arquivo completo antes de utilizá-lo. O CoolStreaming utiliza a mesma idéia que o BitTorrent, porém como um fluxo de vídeo possui requisitos temporais, o conceito de uma janela deslizante representando a parte ativa do fluxo é utilizado, sendo que a parte representada pela janela é a única que realmente

importa num determinado instante, uma vez que os clientes precisam desta parte para exibir o vídeo. A Figura 3.7b mostra a janela deslizante e o ponto de exibição.

Arquivo todo

(a)

(b) ponto de exibição

janela deslizante

Figura 3.7 - Captura do buffer no (a) BitTorrent e (b) CoolStreaming (LIU, J. ET AL., 2008) O CoolStreaming adota uma janela deslizante de 120 segmentos, com um segundo de vídeo cada. Portanto, um BM consiste de um vetor (array) de 120 bits, cada um indicando a disponibilidade do segmento correspondente. Um número de seqüência é usado para localizar a janela deslizante no fluxo de vídeo.

O algoritmo de agendamento precisa levar em conta o tempo limite para exibição de cada segmento e a taxa de transmissão heterogênea dos parceiros.

No estudo realizado por Liu et al. (2005, p. 2109, tradução nossa), é concluído que o

CoolStreaming “apresenta overhead de controle relativamente baixo (1% do tráfego

de vídeo)”, além de que “a continuidade na exibição dos vídeos é muito melhor comparada a apresentada por overlays baseados em árvores, particularmente em ambientes de alta dinamicidade”, e que “o atraso fim-a-fim é comparável com o de

overlays baseados em árvores”.

Observe que a avaliação acima foi realizada pelos desenvolvedores do CoolStreaming, contudo, não existem detalhes suficientes sobre os critérios de comparação, parâmetros e procedimentos utilizados para comprovar a validade desta avaliação. Adicionalmente, a abordagem baseada em árvore mencionada refere-se única e exclusivamente a uma árvore, e não a abordagem de múltiplas árvores que, como explicado no tópico 3.2.3.1, é uma evolução dessa abordagem que melhora o desempenho do sistema. Finalmente, enquanto que a latência para o início da exibição pode ser da mesma ordem nas duas abordagens, a afirmação com relação ao atraso fim-a-fim não é muito fundamentada, considerando que no

CoolStreaming há um buffer de 120 segundos e, portanto, o atraso do instante de exibição com relação ao conteúdo sendo transmitido pela fonte em um dado momento é muito alto (minutos) comparado ao baixo atraso apresentado nas abordagens baseadas em árvore (centenas de milissegundos ou alguns segundos).

Documentos relacionados