2.3 Proposta de uma Nova Arquitetura
2.3.4 Tratamento de Falhas
Para o tratamento de falhas na arquitetura proposta, cada RN monitora a taxa de recepção de dados em cada árvore de distribuição que está admitido. Se somente algumas dessas árvores apresentarem degradação nas transmissões, o RN requisita ao TSN que o admitiu uma readmis- são nas respectivas árvores. Desse modo, cada TSN tem como inferir, com base nas requisições de readmissão recebidas, quais nós intermediários estão falhando, reorganizando as respectivas árvores sem eles.
Quando todas as árvores de distribuição apresentam degradação nas transmissões, é pro- vável que o problema esteja no TSN. Neste caso, os RNs realizam uma readmissão completa no sistema, voltando a contatar o DNS e, posteriormente, o DSN retornado, em procedimento análogo ao da admissão inicial, porém reportando ao DSN contatado a falha ocorrida no último TSN, para que este seja excluído da lista de servidores temporários ativos. O DSN contatado, então, propagará essa informação aos demais servidores dedicados do sistema.
2.4
Trabalhos Relacionados
Esta seção apresenta uma seleção de trabalhos relacionados a sistemas peer-to-peer de fluxo de mídia, estando organizada de acordo com as topologias de rede sobreposta discutidas na Subseção 2.1.1.
2.4.1
O Sistema ABCD-P2P
Apesar das limitações da topologia de rede sobreposta baseada em árvore única (Subseção 2.1.1), há trabalhos recentes de fluxo de mídia ao vivo que ainda a utilizam. O sistema ABCD-P2P [72] é um exemplo desses trabalhos; ele busca melhorar a continuidade de reprodução do fluxo atra- vés de um mecanismo de ajuste de banda passante, bem como a diminuição da latência de reprodução através de um mecanismo de admissão próprio. Adicionalmente, o sistema ABCD- P2P constrói uma rede sobreposta que se aproxima da rede física em termos de latência de transmissão, otimizando as estruturas de distribuição para que os clientes fiquem mais próxi- mos do provedor de fluxo; com isso, tanto as latências de reprodução quanto o tempo necessário para reparo da árvore podem ser minimizados. Para a construção e manutenção da árvore, o sis- tema ABCD-P2P considera a existência de um servidor central, que pode ser tanto um tracker quanto o próprio provedor de fluxo.
O sistema ABCD-P2P é composto por cinco componentes, que atuam conjuntamente para endereçar certas questões relevantes em sistemas peer-to-peer IPTV. O primeiro deles é o es- timador de latência, que avalia a latência total de transmissão entre dois nós participantes, in- cluindo roteamento, dinâmica de rede e disponibilidade de banda e de poder computacional
dos respectivos nós. Devido às restrições temporais dos fluxos de mídia, este é o componente com a maior prioridade dentre todos. O segundo componente, denominado estimador de banda passante, mede a banda de saída disponível dos clientes para determinar o número de nós infe- riores que eles podem ter. O terceiro componente é o auxiliar de conexão, que ajuda os novos clientes a se conectarem na rede o mais breve possível, reduzindo as latências de reprodução. O quarto componente, chamado auxiliar de desconexão, é responsável por implementar um pro- cedimento de saída amigável para os clientes, evitando que seus nós inferiores sofram rupturas na recepção do fluxo.
O quinto e último componente é o estimador de tempo de sessão, que procura identificar os clientes com maior probabilidade de ficarem conectados por mais tempo para posicioná-los no topo da árvore de distribuição, fazendo o inverso com os clientes que tendem a ficar menos tempo conectados. Este é o componente com a menor prioridade dentre todos, sendo que os demais foram apresentados em ordem de prioridade. Tais prioridades são necessárias quando há conflitos de objetivo entre os componentes. Por exemplo, suponha que um cliente P tenha alta disponibilidade de banda de saída e um tempo de sessão estimado como curto, enquanto que um outro cliente P0tenha baixa disponibilidade de banda e um longo tempo de sessão estimado; neste caso, se algum deles precisasse ser selecionado, por exemplo para ser nó superior de um outro participante, o cliente P seria o escolhido, devido à prioridade maior do estimador de banda passante [72].
O mecanismo de ajuste de banda passante proposto apresenta dois procedimentos, sendo um deles executado de forma distribuída nos clientes e o outro de modo centralizado no servidor. No primeiro caso, cada cliente monitora a taxa de dados recebidos, bem como a qualidade das conexões com seus nós superiores (o sistema permite que um cliente tenha mais de um nó superior). Se qualquer um desses fatores for insatisfatório, o cliente solicita a substituição do respectivo nó superior, o que é feito com o auxílio do estimador de banda passante. O segundo caso consiste em um procedimento sendo executado no servidor para otimizar as estruturas de distribuição da árvore. Para isso, o servidor considera, nesta ordem de prioridade, as estimativas de latência, banda passante e tempo de sessão, dadas pelos respectivos componentes propostos. Quando uma possibilidade de otimização é detectada pelo servidor, por exemplo para posicionar um cliente com baixa latência, banda suficiente e tempo de sessão estimado como longo no topo da árvore, o servidor envia uma mensagem aos nós envolvidos; estes podem acatar ou não a sugestão recebida do servidor, dependendo de suas próprias métricas locais determinadas pelos respectivos componentes. Através dessa abordagem, a continuidade de reprodução do fluxo pode ser melhorada [72].
O mecanismo de admissão proposto é descrito da seguinte forma. Ao ser contatado por um novo cliente, o servidor executa o estimador de latência para determinar a latência total de transmissão entre ele e o novo cliente. Em seguida, o servidor executa o auxiliar de conexão para construir e retornar ao cliente uma lista de candidatos a nó superior que apresentem la-
2.4. Trabalhos Relacionados 35
tências similares àquela última calculada; caso o servidor não encontre nenhum candidato, ele mesmo poderá servir, temporariamente, o fluxo ao novo cliente. Ao receber a lista de candida- tos do servidor, o novo cliente executa o estimador de latência para cada nó presente na lista, selecionando aquele que apresentar a menor latência total de transmissão até ele; em seguida, ele executa o auxiliar de conexão para se conectar ao nó superior escolhido. Este último, após ter admitido o novo cliente, envia uma notificação ao servidor informando-o sobre a nova estru- tura de distribuição estabelecida, passando então a transmitir o fluxo ao novo cliente. Com essa abordagem, os novos clientes tendem a encontrar nós superiores que estejam mais próximos a eles em termos de latência total de transmissão, diminuindo, assim, as latências de reprodução. Para compensar uma das principais limitações da topologia baseada em árvore única, que é a baixa resiliência à dinâmica da rede (Tabela 2.1), o sistema ABCD-P2P propõe um pro- cedimento de desconexão amigável. Quando um usuário fecha a aplicação cliente, o auxiliar de desconexão é executado para esse fim. O cliente contata o servidor, para cancelar a sua inscrição na árvore, e contata seus nós superiores e inferiores, para que eles estabeleçam uma nova estrutura de distribuição sem ele. Após serem notificados pelo cliente que está saindo, os nós inferiores conectam-se aos nós superiores, passando a receber dois fluxos redundantes: um do nó que está saindo e outro do nó superior. Neste momento, então, os nós inferiores desconectam-se do cliente que está saindo; este, por sua vez, desconecta-se dos nós superiores, concluindo o procedimento de desconexão amigável.
Na avaliação do sistema ABCD-P2P, os autores de [72] o comparam aos sistemas NICE [10, 11] e Zigzag [155], dois outros exemplos de sistemas peer-to-peer de fluxo de mídia ao vivo baseados em árvore única.
2.4.2
O Sistema CoopNet
O sistema CoopNet [123, 125] emprega múltiplas árvores de distribuição e segue uma aborda- gem que mescla aspectos da arquitetura cliente-servidor com aspectos das redes peer-to-peer. Assim como na arquitetura cliente-servidor, há um servidor central que provê todos os fluxos de mídia (pré-gravados ou ao vivo), além de servir como “porta de entrada” para os novos clientes que queiram se conectar na rede. Assim como nas redes peer-to-peer, há conexões diretamente entre os clientes que, utilizando os recursos ociosos que possuem, auxiliam o servidor na tarefa de distribuição de conteúdo, provendo uma grande escalabilidade ao sistema. Trata-se, portanto, de um sistema peer-to-peer de fluxo de mídia ao vivo que complementa, ao invés de substituir, a arquitetura cliente-servidor.
Através de multicast na camada de aplicação, uma distribuição sincronizada de conteúdo aos clientes é realizada. Árvores de distribuição são formadas através de conexões unicast, estando o servidor em suas raízes. Cada cliente é cadastrado como nó dessas árvores, podendo ser admitido diretamente pelo servidor, caso ele tenha recursos para isso, ou por outros nós que
já estejam conectados ao sistema, escolhidos dentre aqueles que ainda tenham capacidade de admissão disponível. Cada cliente, então, repassa o fluxo recebido em uma determinada árvore a todos os seus descendentes, até que o fluxo atinja os nós folhas daquela árvore. O grau de saída de cada nó é determinado de acordo com a banda de saída disponível do cliente. Tipicamente o servidor apresenta uma banda de saída consideravelmente maior que as disponibilizadas pelos usuários.
Para minimizar os problemas de rupturas em árvores decorrentes da constante entrada e saída de clientes, o sistema CoopNet emprega, além de múltiplas árvores de distribuição, a codificação em múltiplos descritores. Com isso, utilizando uma árvore distinta para o transporte de cada descritor, o fluxo não é totalmente interrompido quando uma desconexão acontece; ao contrário, apenas um subconjunto de descritores deixa de ser entregue temporariamente, causando uma queda momentânea na qualidade de fluxo recebida. Adicionalmente, o sistema CoopNet emprega a sugestão de [23] que indica que cada cliente deve ser admitido como nó interior em uma única árvore de distribuição, sendo nó folha nas n − 1 demais. Desse modo, consegue-se construir árvores o mais curtas e disjuntas possível, diversificando os caminhos de rede para aumentar a tolerância a falhas, bem como melhor aproveitar as bandas de saída dos usuários.
O protocolo de admissão do sistema CoopNet é descrito da seguinte forma. Quando um cliente se conecta ao sistema, ele primeiramente contata o servidor, informando a sua banda de saída (é assumido que todos os clientes são homogêneos em suas bandas de entrada, ou seja, eles buscam ser admitidos em todas as árvores de distribuição existentes). O servidor, então, decide em qual das árvores o novo cliente será admitido como nó interior, escolhendo aquela que possui o menor número de nós interiores; com isso, procura-se balancear as capacidades de admissão das diferentes árvores. Na árvore escolhida, o servidor seleciona o nó mais próximo da raiz (possivelmente ele próprio) para admitir o novo cliente, fazendo uma busca top-down. Caso, nessa busca, o servidor atinja um nó folha, então o novo cliente será admitido no lugar desse nó folha, e este será readmitido de forma análoga sob outro nó, possivelmente abaixo do novo cliente, que passa a ser nó interior naquela árvore. Nas n − 1 árvores restantes, o novo cliente é admitido como nó folha, abaixo do nó mais próximo da raiz que tenha condições de admiti-lo.
Em [124], o sistema CoopNet foi evoluído para suportar heterogeneidade de clientes e con- trole de congestionamento. Para isso, adotou-se a codificação em múltiplos descritores em camadas [29] (LMDC, Subseção 2.1.2), de modo que os clientes com bandas restritas pudes- sem receber apenas os descritores da camada base, enquanto que os demais pudessem receber, adicionalmente, os descritores da camada de melhoria. Uma outra contribuição de [124] foi o protocolo de adaptação de banda passante proposto, que é implementado de forma integrada ao mecanismo de redundância de dados e de caminhos de rede. Neste protocolo, os nós su- periores e inferiores atuam conjuntamente para inferir os possíveis locais de congestionamento
2.4. Trabalhos Relacionados 37
(em seus enlaces de entrada, de saída ou em algum outro ponto intermediário no caminho de rede). Dependendo do local de congestionamento, um cliente pode se desconectar de certos nós superiores, rejeitar alguns nós inferiores ou ainda buscar novas rotas de rede conectando-se a outros nós superiores. De maneira geral, o protocolo de adaptação de banda passante proposto opera da seguinte forma:
1. Ele descarta tráfego, de entrada ou de saída, quando há congestionamento no respectivo enlace;
2. Ele adiciona tráfego, de entrada ou de saída, após um determinado período de tempo sem congestionamento no respectivo enlace.
As variações de tráfego dos clientes neste tipo de sistema ocorrem através da obtenção ou repasse de um maior ou menor número de descritores. No caso do tráfego de entrada (banda consumida), o cliente inscreve-se em mais ou menos árvores de distribuição para receber os respectivos descritores. No caso do tráfego de saída (banda cooperada), ele admite mais ou menos nós abaixo de si para repassar o descritor na árvore em que foi admitido como nó inte- rior. Para a escolha de quais descritores ou clientes serão variados, considera-se a importância relativa de cada descritor em cada camada, bem como a estrutura das árvores de distribuição, de maneira que o impacto nos nós inferiores ao cliente cujo tráfego será modificado seja mini- mizado. Por exemplo, um cliente que descarta tráfego de saída escolhe, primeiramente, aqueles nós inferiores que estejam recebendo os descritores da camada de melhoria mais alta; dentre esses, ele seleciona os que possuam o menor número de nós inferiores, idealmente nenhum. Analogamente, um cliente que descarta tráfego de entrada escolhe, primeiramente, aqueles nós superiores de quem esteja recebendo os descritores da camada de melhoria mais alta; dentre es- ses, ele seleciona os nós de quem esteja recebendo os descritores que estejam sendo repassados ao menor número de nós inferiores a ele, idealmente a nenhum.
2.4.3
O Sistema SplitStream
Um outro sistema peer-to-peer de fluxo de mídia ao vivo que emprega múltiplas árvores de distribuição e a codificação em múltiplos descritores é o SplitStream [23]. Conforme mencio- nado anteriormente, a proposta de se admitir cada cliente como nó interior em apenas uma das árvores existentes e como nó folha nas n − 1 restantes foi feita originalmente em [23]. Para isso, os autores de [23] consideraram que, em uma árvore balanceada de grau f e altura h, o número de nós interiores é ffh−1−1 e o de nós folhas é fh, sendo que este último cresce em função de f . Por exemplo, enquanto mais da metade dos integrantes de uma árvore binária são nós folhas, essa percentagem sobe para 90% em uma árvore com grau 16, ou seja, menos de 10% dos integrantes dessa árvore desempenham a tarefa de distribuição de conteúdo. Sendo assim, a
estratégia proposta promove árvores o mais disjuntas e curtas possível, aumentando a tolerância a falhas e reduzindo as latências de reprodução do sistema.
A principal diferença do sistema SplitStream com o CoopNet está no seu gerenciamento distribuído de árvores, bem como no seu protocolo de admissão. Para essas funcionalidades, o sistema SplitStream emprega os protocolos Pastry [137] e Scribe [24]. O protocolo Pas- try envolve um algoritmo de roteamento e busca em redes peer-to-peer estruturadas baseado em tabelas hash distribuídas, assim como o CAN [135], Chord [145] e Tapestry [16] (Subse- ção 2.1.1). Nesse algoritmo, cada cliente recebe um identificador único ao se conectar na rede; com base nesses identificadores, os clientes mantêm tabelas de roteamento que relacionam os seus vizinhos próximos na rede sobreposta. Quando um conteúdo é disponibilizado, cria-se um identificador único para o mesmo através de uma função hash sobre os dados (possivel- mente sobre o nome do conteúdo), que é de conhecimento de todos os clientes. O conteúdo é então encaminhado, utilizando-se as tabelas de roteamento, ao cliente cujo identificador seja mais próximo ao identificador de conteúdo, passando por clientes intermediários. Estes últimos realizam o repasse de dados, armazenando uma cópia local para promover tolerância a falhas. Posteriormente, as requisições para o mesmo conteúdo são roteadas igualmente, propagando-se até que o objeto procurado seja encontrado em um cliente intermediário ou naquele responsável por seu armazenamento principal.
O protocolo Scribe constitui um sistema de comunicação de grupos implementado na ca- mada de aplicação e sobre o protocolo Pastry. Nele, cria-se uma chave de Pastry para cada grupo, conhecida como identificador de grupo. Uma árvore multicast é, então, formada através das rotas determinadas pelo protocolo Pastry de cada membro do grupo ao cliente cujo iden- tificador seja mais próximo ao identificador de grupo. Este último é o responsável, na rede Pastry, por aquele identificador de grupo; consequentemente, ele é considerado a raiz da árvore de distribuição formada por aquele grupo. Desse modo, mensagens são distribuídas da raiz do grupo a todos os seus membros através da utilização de um roteamento por caminho reverso. Devido à natureza distribuída desta abordagem, consegue-se ter um bom desempenho mesmo com um grande número de grupos, bem como com diversos membros em cada grupo. Adici- onalmente, consegue-se tratar eficientemente as constantes adesões e saídas de membros nos diferentes grupos existentes [23].
Utilizando os protocolos Pastry e Scribe, os autores de [23] projetaram as principais ope- rações de gerenciamento de árvores e de controle de admissão do sistema SplitStream. Por exemplo, para a admissão de um cliente como nó interior em apenas uma árvore, usam-se pre- fixos distintos nos identificadores de grupo das diferentes árvores de distribuição. Com isso, somente os clientes que tenham identificadores com o mesmo prefixo de um grupo serão nós interiores na árvore daquele grupo, o que ocorre naturalmente através do roteamento provido pelo protocolo Pastry. Um outro exemplo, para implementar as restrições de banda de entrada de um cliente, inscreve-se o mesmo em um número limitado de árvores; para restringir a banda de
2.4. Trabalhos Relacionados 39
saída deste cliente, usa-se um mecanismo específico existente no protocolo Scribe denominado push-down. Adicionalmente, para maximizarem-se as chances de construção bem sucedida de um conjunto de árvores, cria-se um grupo adicional que reúne todas as bandas excedentes dos participantes; tal grupo é utilizado quando um cliente não consegue ser admitido em uma árvore de distribuição por falta de recursos.
2.4.4
O Sistema Chunkyspread
O sistema Chunkyspread [159, 160] também emprega múltiplas árvores para a distribuição de fluxos de mídia ao vivo, porém com uma abordagem de construção e manutenção das árvores diferente daquela dos sistemas CoopNet e SplitStream. Enquanto o sistema CoopNet utiliza um servidor central e o sistema SplitStream emprega redes peer-to-peer estruturadas, o sis- tema Chunkyspread propõe algoritmos simples e escaláveis para implementar uma abordagem descentralizada em redes peer-to-peer não estruturadas. Nesta abordagem, cada cliente man- tém uma lista de vizinhos na rede sobreposta, de maneira análoga aos sistemas baseados em mesh; no entanto, ao contrário destes últimos, as relações entre nós superiores e inferiores não são determinadas dinamicamente com base nas requisições de pacotes efetuadas, seguindo uma configuração duradoura que caracteriza as estruturas de distribuição fixas existentes nos sis- temas baseados em árvores. De outro modo, um determinado cliente da rede terá como nós superiores e inferiores um subconjunto de seus contatos, que poderá variar em função do tempo e de acordo com a dinâmica do sistema.
Para manter um grafo aleatório entre todos os nós participantes da rede, o sistema Chunkys- pread emprega um algoritmo distribuído denominado Swaplinks [161], que percorre, continu- amente, caminhos aleatórios com pesos simples, determinando estatisticamente o grau de cada nó com base na banda de saída disponibilizada pelo mesmo. Apesar das conexões entre nós vizinhos variarem de acordo com a dinâmica do sistema, o número de vizinhos que cada cli- ente possui tende a permanecer constante. Além dos vizinhos aleatórios determinados por essa técnica, os clientes podem encontrar outros contatos que apresentem boas medidas de latência. O provedor de fluxo, por outro lado, conecta-se a exatamente M vizinhos aleatórios, sendo M o número de subfluxos utilizados pelo sistema (os autores de [159, 160] citam a codificação em múltiplos descritores como sendo uma possibilidade de implementação desses subfluxos). Com isso, os M vizinhos do provedor de fluxo tornam-se as raízes das respectivas M árvores de