Streaming com o protocolo BitTorrent é possível? (V.2, N.9, P.7, 2019)
Tempo estimado de leitura: 10 minute(s)
Divulgador da ciência: Prof. Carlo Kleber da Silva Rodrigues
Universidade Federal do ABC, Centro de Matemática, Computação e Cognição (CMCC)
Já ouviu falar de streaming? Pois é, usando as redes de comunicação de dados, essa tem sido a tecnologia base para a distribuição de conteúdo multimídia como filmes, séries de TV, músicas etc. (Olá, Netflix!). E tem mais, as redes móveis sem fio têm sido cada vez mais empregadas, trazendo constantes desafios para o emprego efetivo dessa tecnologia.
As redes móveis sem fio são usualmente categorizadas de duas maneiras: infraestruturadas e sem infraestrutura. Na categoria infraestruturada, há um sistema fixo e cabeado que provê a comunicação entre os nós móveis. Por outro lado, na categoria sem infraestrutura, que também é conhecida pelo acrônimo MANET (Mobile Ad Hoc Network ou Redes Móveis Ad Hoc), os próprios nós móveis atuam como servidores, clientes e roteadores, havendo a comunicação sem infraestrutura fixa.
A arquitetura Peer-to-Peer (P2P) se torna especialmente atrativa para o desenvolvimento de aplicações de streaming sob demanda quando há limitações de banda nos servidores, o que é típico em cenários de crescente utilização de tecnologias móveis. Paradigmas tradicionais, como Cliente/Servidor, são mais propensos a desbalancear o tráfego na rede, a consumir vorazmente a banda dos enlaces de comunicação e a exaurir a capacidade de processamento dos servidores, resultando em ineficiência e baixa escalabilidade.
O protocolo P2P mais eficiente para a replicação de arquivos na Internet é o BitTorrent. Sob esse protocolo, o arquivo é dividido em pedaços e os peers (pares ou colegas, em inglês) que mais colaboram na disseminação desses pedaços são aqueles que mais rapidamente recebem novos pedaços. Toda essa eficiência motivou propostas de sua adaptação para streaming sob demanda em redes com fio, que também são chamadas de redes cabeadas.
Em sua maioria, as adaptações do BitTorrent para atender ao streaming sob demanda baseiam-se em modificações de suas políticas de seleção de peers e de seleção de pedaços. Essas adaptações são necessárias porque, no BitTorrent, os pedaços são solicitados e recebidos fora de ordem, o que impede a reprodução contínua desde o início da recepção e inviabiliza o serviço de streaming sob demanda. Consegue imaginar assistir a um filme na Netflix dividido em um monte de partes recebidas fora de ordem?
Apesar disso, aplicações que admitem a interatividade dos clientes em MANETs ainda não são plenamente contempladas e muitas pesquisas têm sido realizadas recentemente. Essa interatividade se refere às ações que podem ser executadas pelo cliente durante a reprodução do arquivo, como Play, Stop, Pause, Jump Forwards e Jump Backwards, que são as ações usualmente admitidas.
Como é a operação do BitTorrent?
No BitTorrent, o arquivo a ser transmitido é dividido em pedaços e esses pedaços são divididos em blocos. Apesar de os blocos serem a unidade de dados na rede física, a análise da replicação considera apenas os pedaços transferidos.
Dois conceitos são importantes no BitTorrent: torrent e swarm. Para entendê-los, precisamos, primeiro, falar sobre dados e metadados. Dados são as informações que comunicamos, processamos ou consumimos. Já os metadados descrevem e fornecem informações sobre esses dados. Eles são dados sobre os dados.
Voltando àqueles conceitos importantes, um torrent pode ser um único arquivo de metadados ou mesmo um conjunto de arquivos descritos por metadados. Em particular, no caso de ser um arquivo de metadados, ele tem a extensão “.torrent” e possui os metadados relacionados ao arquivo que se deseja baixar, como, por exemplo, nome e tamanho do arquivo, além do endereço IP do tracker. Mas o que é esse tracker? Bem, ele é a entidade central do sistema que coordena a comunicação entre os peers que cooperam entre si para replicar o arquivo. Já um swarm, é o conjunto de peers que deseja um certo arquivo.
Como então fazer parte de um swarm?
Para participar de um swarm, ou seja, fazer parte do grupo que quer baixar um arquivo, um peer tem que, primeiro, baixar o arquivo de metadados “.torrent” de um servidor web da Internet. Em seguida, esse peer deve contatar o tracker para receber uma lista que contém outros peers que já estão no swarm.
O peer tenta então, de maneira aleatória, estabelecer conexões do tipo TCP com outros peers dessa lista. Os peers com os quais ocorrem conexões bem-sucedidas constituem o conjunto de vizinhos do primeiro peer. Os vizinhos são, portanto, os peers para os quais e a partir dos quais o peer inicial pode enviar e receber pedaços.
Há dois tipos de peers no swarm: leechers e seeds. Um leecher é um peer que está baixando pedaços de um arquivo, mas que também permite que outros peers baixem pedaços dele. Um seed é um peer que já tem todos os pedaços do arquivo desejado, mas que permanece no sistema para permitir que outros peers baixem pedaços dele. O intercâmbio de pedaços entre os peers é controlado pelas políticas de seleção de peers e de seleção de pedaços. Complicou? Calma, já vamos explicar essa parte!
A política de seleção de peers, também chamada algoritmo de choke (estrangulamento ou bloqueio, em inglês), permite que cada peer do swarm escolha quais peers, dentre os seus vizinhos, podem receber os pedaços que ele possui. Os três vizinhos que fornecem pedaços com as mais altas taxas de upload são os escolhidos. Os escolhidos são colocados no estado de unchoked (desbloqueado), e os demais são colocados no estado de choked (bloqueado). Essa seleção é repetida tipicamente a cada 10 segundos, sendo denominada de regular unchoking. Há também o denominado optimistic unchoking. Nesse caso, tipicamente a cada 30 segundos, cada peer do swarm seleciona aleatoriamente um outro peer de seu conjunto de vizinhos para receber pedaços que ele possui. Um slot de upload de dados do peer é alocado para cada vizinho escolhido.
Por sua vez, a política de seleção de pedaços é usada para que os peers decidam sobre que pedaços solicitar quando seu status é de unchoked, ou seja, quando podem baixar os pedaços. Cada peer do swarm possui um conjunto de pedaços mais raros, aqueles pedaços menos replicados no conjunto de vizinhos. Após passar para o estado de unchoked, o peer então solicita o próximo pedaço considerando seu conjunto de pedaços mais raros e os pedaços disponíveis no vizinho que o passou para o estado unchoked. Após receber o pedaço, o peer então avisa a todos os seus vizinhos sobre esse pedaço recebido.
Como adaptar o BitTorrent para redes móveis? Quais os critérios mais utilizados?
Inúmeros critérios têm sido utilizados para adaptar o BitTorrent para redes móveis. Contudo, dois critérios se destacam nas mais recentes propostas, mostrando-se de fato efetivos. São eles: a distância D, aplicado à política de seleção de peers, e a janela deslizante W, aplicada à seleção de pedaços.
D se refere à distância geográfica entre o peer solicitante e aquele peer que recebe a solicitação. O peer que apresenta o menor valor de D, ou seja, que estiver mais próximo geograficamente dentre os peers solicitantes de pedaços, tem a prioridade de ser selecionado pelo peer que recebe a solicitação. Em caso de empate, a escolha é aleatória. Este critério estimula compartilhamentos de dados entre membros que estão geograficamente próximos entre si, incitando a formação e a longevidade de grupos de membros.
Para a seleção de pedaços, o critério consiste no uso de uma janela deslizante W. Essa janela delimita o conjunto de pedaços que podem ser solicitados ao longo da reprodução do arquivo, sendo então atualizada dinamicamente. O primeiro pedaço corresponde sempre ao ponto de reprodução em que o peer que solicita o pedaço está. A escolha do próximo pedaço pode ser feita de duas maneiras: com base na raridade do pedaço (i.e., pedaço menos replicado) ou de maneira sequencial (i.e., pedaço seguinte ao anterior). Veja que o emprego dessa janela estabelece um compromisso entre a diversidade de pedaços, responsável pela eficiência da replicação no BitTorrent, e a continuidade da reprodução, imprescindível para garantir uma satisfatória qualidade de serviço (QoS).
Para terminar, cabe ressaltar que a interatividade dos clientes de sistemas de streaming em MANETs ainda permanece como uma área de intensa pesquisa, consequentemente muitas propostas com novos critérios têm sido frequentemente apresentadas na literatura científica. Então, caso você queira saber o que há de mais novo nesse campo, é necessário estar alerta para as novidades!
Fontes principais
Cruz, E. P. F. (2018). A Comprehensive Survey in Towards to Future FANETs. IEEE Latin America Transactions, v. 16, n. 3, pp. 876–884.
Mantzouratos, S. et al. (2012). Survey of Cross-layer Proposals for Video Streaming over Mobile Ad hoc Networks (MANETs). In: International Conference on Telecommunications and Multimedia (TEMU), July, Chania, Greece.
Rodrigues, C. K. S. (2018). Efficient BitTorrent-Like Algorithms for Interactive On-Demand Multimedia Streaming over MANETs. In: 24th Brazillian Symposium on Multimedia and the Web (WebMedia’18), Salvador, BA, Brazil.
Rodrigues, C. K. S; Rocha, V. E. M. (2019). Uma Adaptação do BitTorrent para Streaming de Vídeo sob Demanda Interativo em Redes Móveis Ad Hoc. In: Anais do 18º Workshop de Desempenho em Sistemas Computacionais e de Comunicação (WPerformance / CSBC 2019). Belém, PA.
Rodrigues, C. K. S; Rocha, V. E. M. (2019). BT-MANET: A Novel BitTorrent-Like Algorithm for Video On-Demand Streaming over MANETs. IEEE Latin America Transactions, v. 17, n. 1, pp. 78–84.
Xiang, S. and Yang, J. (2018). Performance reliability evaluation for mobile ad hoc networks. Reliability Engineering & System Safety, v. 169, pp. 32–39.
Acesse às redes sociais do blog. Estamos no Twitter!