Topologias

Streaming P2P baseado em árvore e malha
          Nessa seção, será apresentada uma visão sobre streaming peer-to-peer, baseado nas abordagens de árvore e malha. Em ambas as abordagens, é utilizado o MDC (Multiple Description Coding) para acomodar a heterogeneidade da banda. Em um MDC, um stream é codificado em vários sub-streams chamados de description. Cada um desses description pode ser independentemente decodificado. Porém, ao receber vários descriptions resulta em uma melhor qualidade. Isso permite aos peers receberem um número de descriptions proporcional à sua banda, o que maximiza a qualidade.
  • Streaming P2P baseado em árvore
          Na abordagem em árvore, o mecanismo de construção overlay organiza os peers participantes em diversas árvores. O quantidade de árvores que este peer vai se unir é baseada em sua banda disponível. Para minimizar o efeito do churn (dinâmica dos peers participantes) e utilizar de modo eficaz os recursos do sistema, os peers são organizados em diversas árvores. Para este fim, cada peer é colocado como um nó interno (ou seja, um nó que possui filhos) em apenas uma árvore e como um nó externo (folha, ou seja, não tem filhos) em outras árvores. Então, cada description de um conteúdo MDC codificado é entregue à uma árvore específica. A entrega de conteúdo é um mecanismo simples onde os nós internos simplesmente encaminham qualquer pacote recebido da description correspondente para cada um dos nós filhos. Assim, o componente principal do streaming P2P baseado em árvore é a construção da árvore.

- Tree Construction Algorithm
          O objetivo da construção é manter as árvores balanceadas, estáveis e pequenas. O algoritmo de construção de árvore a seguir representa uma boa solução do problema, dentro das possíveis, segundo [ 6 ].
          Cada peer é colocado como um nó interno em uma apenas árvore e como nó folha em outras árvores. Quando um peer se junta ao sistema, ele se comunica com o nó de inicialização para identificar um “pai” no número de árvores desejado. Para deixar a população de nós internos balanceada dentre as diferentes árvores, um novo nó é adicionado como um nó interno na árvore que possui o menor número de nós internos. Para manter as árvores pequenas, um novo nó interno é colocado como um “filho” para o nó com menor profundidade que pode acomodar mais um filho ou que tem um filho que é uma folha. Neste último caso, o novo nó substitui o nó folha e o nó substituído se junta novamente à árvore como folha.
          Quando um nó interno da árvore se “desconecta”, cada um de seus nós filhos, além da sub-árvore do qual eles são raiz, deverão se juntar novamente à árvore. Os peers dessa árvore particionada da árvore original aguardam o nó raiz da sub- árvore se juntar novamente à árvore principal como um nó interno. Se esta raiz não conseguir se juntar à árvore em um certo período de tempo, os peers da sub- árvore se juntam à árvore principal independentemente, na mesma posição que tinham antes (como folhas ou nós internos).
  • P2P Streaming baseado em malha
          Na abordagem em malha, os peers participantes formam um overlay conectado aleatoriamente, ou uma malha. Cada peer tenta manter um certo número de pais (grau de entrada), e também serve um certo número de filhos (grau de saída). Em sua chegada, o peer se comunica com o nó de inicialização para receber uma lista de peers que poderiam servir como pais. Isso é possível pois o nó de inicialização conhece o grau de saída de todos os peers, e então seleciona aleatoriamente uma lista de peers que pode acomodar um novo filho em resposta ao pedido por pais feito pelo peer que está chegando.
           A abordagem em malha utiliza o fornecimento de conteúdo em swarm (grupo de peers conectados entre si para compartilhar conteúdo) similar ao do BitTorrent. A maior vantagem dessa técnica é sua capacidade de utilizar de modo eficaz a banda de upload dos peers participantes conforme o tamanho do grupo aumenta. O fornecimento de couteúdo em swarm combina os anúncios de conteúdo com seus respectivos pedidos. Cada peer periodicamente anuncia seus pacotes novos disponíveis para seus peers filhos, e pede pacotes específicos dos peers pais. Um peer pai periodicamente recebe uma lista ordenada com os pedidos de pacotes de cada peer filho, e fornece os pacotes de acordo com a ordem dos pedidos. Os pacotes que serão pedidos são determinados por um algoritmo de packet scheduling em cada peer filho. Este algoritmo é a componente chave do mecanismo de streaming P2P baseado em malha, e deve atingir os seguintes objetivos:
  • Utilizar de modo eficaz a banda de todos os peers pais.
  • Conseguir um bom número de descriptions (qualidade desejada) de todos os peers pais.
  • Garantir o fornecimento dos pacotes pedidos no tempo certo.
 
          O padrão de fornecimento de conteúdo para pacotes através da malha (isto é, o caminho que o pacote atravessa para chegar em todos os peers) depende do comportamento do algoritmo de packet scheduling em cada peer, e da conectividade do overlay.
          Como exemplo de uso temos o PRIME ( Peer-to-Peer Receiver-dIven Mesh- based Streaming ) [ 7 ] , que incorpora o seguinte Packet Scheduling: Cada peer mantém 2 pedaços de informação dos pais:
  • Os pacotes disponíveis
  • A média ponderada da banda
 
          Além disso, os peers monitoram a banda de entrada agregada de todos os pais, e lentamente adapta o número de pedidos de descriptions(ou sua qualidade alvo) com a banda agregada. Dadas as informações dos pais, mais a qualidade alvo n, o algoritmo de scheduling é periodicamente invocado (isto é, uma vez a cada X segundos) para determinar uma lista de pacotes que devem ser pedidos para cada pai:
Primeiro, o scheduler identifica os pacotes com maior timestamp que se tornaram disponíveis entre os pais desde o último pedido (durante os ultimos X segundos). O algoritmo de scheduling então pede todos esses novos pacotes (até n descriptions por timestamp) dos pais correspondentes.
Em seguida, os pacotes que faltam para cada timestamp (até n descriptions por timestamp) são identificados e uma parte aleatória desses pacotes são pedidos à todos os pais, para utilizar totalmente sua banda. O número total de pacotes pedidos de cada pai é determinado por sua banda disponível. Para balancear a carga pelos pais, quando um pacote está disponível em mais de um pai, ele é pedido ao pai que tem a menor parte de sua banda utilizada.