Tópicos

Introdução

Um dos conceitos mais importantes durante o desenvolvimento de aplicações baseadas na utilização de infraestruturas de rede, é o princípio end-to-end.

Este princípio diz que deverá existir algum cuidado sobre o facto de ser transparente, aos utilizadores (end users), a forma como as comunicação funcionam under the hood. Isto é, tudo o que concerne à camada aplicacional fica nas pontas e faz uso de camadas inferiores bem estabelecidas.

Client-server

Arquitetura baseada em dois componentes: servidor e cliente.

Servidor

  • “Sempre” ligado
  • IP estático

Cliente

  • Comunica com o servidor
  • Pode realizar várias sessões com um mesmo servidor
  • IP dinâmico
  • Não comunica diretamente com outros clientes

Peer-to-peer

Neste caso, não existe um servidor central sempre ligado. Existe, sim, uma rede constituída por vários clientes interligados. A gestão de uma rede como estas é muito mais complexa.

Self scalability

A entrada de novos nós (peers) aumenta a capacidade da rede, permitindo que mais pedidos sejam solicitados.

Outros factos

  • Peers realizam o upload de chunks, para outros, à medida que recebem um ficheiro.
  • Os peers contactados mudam ao longo do tempo
  • Quando um peer possui, totalmente, um ficheiro pode continuar a contribuir para a rede (seeding) ou sair

Sockets

A comunicação entre os diferentes intervenientes da rede é feita utilizando sockets. Estes, fazem uso de protocolos da camada de transporte, tais como: TCP e UDP. Existem, ainda, os RAW sockets, que utilizam diretamente o protocolo ICMP.

Existe uma necessidade de identificar os sockets pelo IP do host e uma porta. Isto pois, podemos ter vários processos a fazer uso de sockets. Algumas portas são reservadas a serviços e protocolos já existentes e bem estabelecidos.

  • HTTP server: porta 80
  • Mail server: porta 25
  • SSH server: porta 22

TCP

Protocolo reliable, isto é, existe uma garantia de que as mensagens vão desde a fonte até ao destino.

Controlo de fluxo, onde a fonte tem o cuidado de não encher o destino com demasiadas mensagens (provocando um overflow dos buffers de receção).

Controlo de congestão, como forma de não congestionar a rede.

Orientada à conexão, isto é, existe um momento de estabelecimento de conexão entre o cliente e o servidor.

Não providencia taxa mínima de débito e garantias de segurança (autenticidade, integridade e segurança). Pode-se, no entanto, utilizar o TLS/SSL para obter estas garantias.

UDP

Protocolo unreliable, onde, ao contrário do TCP, não existe a garantia de que as mensagens chegam ao destino.

Não providencia todos os fatores a favor do TCP.

File Distribution

O tempo para difundir um determinado ficheiro numa rede, depende, obviamente, da arquitetura da mesma.

Sendo o tamanho do ficheiro, a taxa de upload e a taxa de download mínima.

Client-server

Neste caso, o servidor deverá enviar, sequencialmente, o ficheiro para cada um dos clientes.

Servidor

  • Tempo para enviar uma cópia:
  • Tempo para enviar cópias:

Cliente

  • Tempo mínimo de transferência por parte de um cliente:

Assim, o tempo máximo para distribuir um ficheiro de tamanho pela rede, é de: Ou seja, o tempo cresce linearmente com o número de clientes.

Peer-to-peer

Desta vez, o servidor apenas necessita de disponibilizar uma cópia do ficheiro, que será consumida individualmente por cada um dos nós.

Servidor

  • Tempo para enviar uma cópia:

Cliente

  • Tempo mínimo de transferência por parte do cliente:

Clientes No entanto, mal um cliente receba chunks de um ficheiro pode começar a enviá-los para os restantes peers.

Ou seja, o tempo máximo para distribuir um ficheiro de tamanho pela rede, é de: Tempo, na maioria dos casos, menor que no caso de uma arquitetura baseada em cliente-servidor. Pelos motivos já ditos anteriormente.

CDNs

O foco aqui passa por ter redes de distribuição de conteúdo altamente escaláveis, onde se suporte um número astronómico de clientes.

A solução passa por guardar cópias dos conteúdos em pontos de acesso geograficamente distantes, através de duas possíveis estratégias.

Enter deep

  • Esta estratégia consiste em colocar múltiplos servidores pequenos nas pontas da rede de acesso, perto dos utilizadores finais.
  • Possui a vantagem de ter baixa latência e uma carga mais distribuída pela rede.

Bring home

  • Esta estratégia consiste em ter grandes servidores (clusters) localizados em pontos centrais e consoante utilização por parte dos utilizadores finais.
  • Possui a vantagem de ser mais fácil de gerir, mas terá uma maior latência em alguns casos.

Devido à homogeneidade dos vários clientes (débitos diferentes, por exemplo) torna-se um grande desafio criar uma rede que os acomode a todos igualmente.

Vídeo

Estas redes têm, por base, a difusão de ficheiros em formato de vídeo. Um vídeo é simplesmente uma sequência de imagens. Por exemplo, 24 imagens por segundo.

Encoding

O envio de um vídeo pode ser otimizado ao nível do espaço, diminuindo o número de bits enviados pela rede.

Spatial Em vez de enviarmos uma sequência de vários pixeis da mesma cor, enviamos apenas um e o número de valores repetidos.

Temporal Entre frames, enviamos apenas as diferenças.

DASH

Dynamic Adaptive Streaming over HTTP.

Protocolo que potencia a transmissão de um vídeo a diferentes taxas de débito, com o objetivo de atender clientes com necessidades defasadas.

O cliente tem a responsabilidade de determinar qual o melhor débito para si, podendo realizar uma série de probes inicialmente até chegar ao débito ideal.

Questões

1. As aplicações em rede assentam normalmente em paradigmas cliente-servidor ou peer-to-peer.

a. Explique em que se diferenciam ambos os modelos, salientando o papel das principais entidades envolvidas.

O modelo cliente-servidor segue uma abordagem baseada em duas principais entidades: o cliente e o servidor. Neste, podem existir vários clientes que contactam um mesmo servidor central. De salientar, ainda, que a comunicação é sempre realizada entre clientes e servidor e nunca entre os próprios clientes.

Por outro lado, o modelo peer-to-peer segue uma abordagem distribuída, onde existem vários clientes (os peers), que atuam como clientes e servidores simultaneamente. Os peers comunicam entre si diretamente, partilhando recursos de forma cooperativa.

b. Enuncie vantagens e desvantagens de cada paradigma e casos de aplicação.

Uma das grandes vantagens de seguir uma arquitetura cliente-servidor é a facilidade de implementação, dada a baixa complexidade. Uma desvantagem é o facto de existir uma baixa tolerância a falhas - a dependência num só servidor, que se prova, também, um ponto de contenção. Um caso de aplicação comum para esta arquitetura são os serviços web, baseados em HTTP.

De outra forma, a vantagem de utilizar uma arquitetura distribuída, peer-to-peer, é a enorme tolerância a falhas que existe, até porque estão sempre nós a entrar e a sair da rede (churn). Ou seja, um cliente (peer) verá o seu pedido mais facilmente concluído. Além disso, se falarmos no que toca a partilha de ficheiros, o tempo máximo de difusão de um ficheiro na rede será mais reduzido, se comparado com o caso do cliente-servidor. Um caso de aplicação comum para esta arquitetura é a partilha de ficheiros, por exemplo, via redes torrent.

3. Considere a topologia da figura abaixo onde será distribuído um ficheiro de tamanho 4 Gbits entre N nodos (hosts). Assuma que os débitos de download e upload do nodo i. são respetivamente d i e ui. Assuma ainda que: (i) os hosts estão dedicados à distribuição do ficheiro, i.e. não realizam outras tarefas; e (ii) o núcleo da rede (core) não apresenta qualquer estrangulamento (bottleneck) em termos de largura de banda, i.e., qualquer eventual limitação existe nas redes de acesso dos vários n i.

Sabendo que o servidor tem um débito de upload =2Gbps, e que =200Mbps, calcule, justificando, o tempo mínimo de distribuição de F pelos N nodos quando N=10, N=100 e N=1000, e para débitos de upload u i de: a) 2Mbps; b) 10Mbps e c) 20Mbps, usando os modelos de distribuição: (i) cliente-servidor e (ii) peer-to-peer. Apresente os resultados numa tabela comparativa, bem como o processo de cálculo. Que conclusões pode tirar? Note que: 1kbits de dados a transmitir são 1024 bits e um débito de 1kbps são 1000 bits por segundo.

Sabe-se que F será igual a e igual a .

E que para o caso de uma arquitetura cliente-servidor, o tempo mínimo de distribuição será dado pela seguinte fórmula: Para N igual a 10 e, calculando a primeira parcela: E, agora, a segunda: Neste caso, os valores são iguais e o máximo é igual a 20. Assim, o tempo mínimo para distribuir um ficheiro numa rede com 10 nós é de 20 segundos.

Para uma arquitetura peer-to-peer, o tempo mínimo irá ser dado pela seguinte fórmula: Neste caso iremos usar um N igual a 1000 e igual a 200 Mbps, calculamos a primeira parcela: A segunda já foi anteriormente calculada, sendo igual a 20.

Finalmente, a terceira: O somatório irá corresponder ao número de peers (1000, neste caso) a multiplicar pelo débito de upload de cada um deles (200 Mbps, neste caso, e igual para todos).

Assim, o tempo mínimo para distribuir o ficheiro numa rede peer-to-peer com 1000 nós é de 20 segundos.

Facilmente, depreendemos que este valor é igual ao valor para uma rede baseada em cliente-servidor com apenas 10 nós. Demonstrando, assim, a eficácia de uma rede peer-to-peer.