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.