Fiabilidade de Sistemas Informáticos

24
Fiabilidade de Sistemas Informáticos Trabalho elaborado por: Nelson de Sousa, n.º 20825 Reliable Message Delivery

description

Trabalho elaborado por: Nelson de Sousa, n.º 20825. Fiabilidade de Sistemas Informáticos. Reliable Message Delivery. Introdução. Objectivos : Numa rede de computadores conectados, para todos os pares de nós “i” e “j”, existe um caminho entre eles no grafo. - PowerPoint PPT Presentation

Transcript of Fiabilidade de Sistemas Informáticos

Page 1: Fiabilidade de Sistemas Informáticos

Fiabilidade de Sistemas Informáticos

Trabalho elaborado por:

Nelson de Sousa, n.º 20825

Reliable Message Delivery

Page 2: Fiabilidade de Sistemas Informáticos

Objectivos : Numa rede de computadores conectados, para todos os pares de nós “i” e “j”, existe um caminho entre eles no grafo.

Uma sequência de mensagem m1... mn enviada do emissor ao receptor deve chegar :

● Não corrompida (i.e modificada ou alterada)● Com a mesma ordem de origem

Introdução

Page 3: Fiabilidade de Sistemas Informáticos

Problematica : Como satisfazer essas duas propriedades quando há falhas na rede, sabendo que perdas de mensagens e erros de comunicação são factos em meios de comunicação reais? Essas falhas podem ter varias origens (software,hardware,fisicas...) podem ser pontuais, temporárias o definitivas, e o que resulte na desaparição de nós do grafo da rede

Limitações : Consideramos que quando há uma falha, o grafo da rede fica único, i.e, não há partição na rede (o grafo é conexo) Existe sempre um caminho entre dois nós O emissor e o receptor ficam sempre activos

Introdução

Page 4: Fiabilidade de Sistemas Informáticos

Detecção de erros :

● Detectado pelo receptor● Codificação da informação de maneira que qualquer alteração da mensagem pode ser verificada● Métodos como bits de paridade e CRC são muito usados● Se a mensagem foi corrompida, é rejeitada. ● Supõe-se que os erros são detectados por mecanismos de detecção e falhas permanentes de um nó são detectadas por outros nós.

Soluções

Page 5: Fiabilidade de Sistemas Informáticos

Ordem e Entrega Garantida :

Um protocolo de comunicação oferece dois diferentes tipos de comunicação entre dois nós:

● “connection-oriented” (TCP) : ● Estabelece primeiramente uma conexão ● Depois transfere a informação usando essa a conexão

● “connection-less” (UDP) :● Cada mensagem contem o endereço de destino e é roteada

independentemente das outras● É possível que alguma mensagem se perca, ou chegue fora de

ordem no destino● Para suportar as propriedades desejadas, um serviço orientado à conexão é necessário

Soluções

Page 6: Fiabilidade de Sistemas Informáticos

Protocolos de entrega :

● Muitos protocolos permitem a entrega de mensagem fiável ● Uma família de protocolos conhecida é o RDT (Reliable Data Transfert) de 1.0 a 3.0● Outra família de protocolos é o de “Sliding Windows”

● “Go-Back-N” e o “Selective Repeat”

Soluções

Page 7: Fiabilidade de Sistemas Informáticos

Rdt 1.0 : ● Implemente a transferência fiável sobre um canal fiável● Considera-se que não há erros e perda de pacotes● O remetente envia os dados no canal fiável● Exige-se a criação do pacote e o envia no canal não fiável ● O destinatário recebe na saída desse canal e recupera os dados● O destinatário não envia informações ao remetente.

rdt_send() : os dados são transmitidos ã camada superior do receptor.udt_send() : chamado por o protocolo rdt para a transferência dos pacotes

sobre o canal não fiávelrdt_rcv() : chamado a chegada dos pacotes sobre o canal do lado do receptordeliver_data() : chamado por o protocolo rdt para emitir os dados a camada

superior

Protocolos de entrega

Page 8: Fiabilidade de Sistemas Informáticos

Rdt 2.0 : ● Protocolo com um canal com erros mas sem perdas● O destinatario que recebeu correctamente um pacote envia um ACK (acknowledge), ou em caso contrario um NAK (negative ACK).● O remetente implementa o protocolo “stop and wait”, o seja, fica a espera da recepção de um pacote ACK do destinatário antes de enviar os outros● Mas se o receptor recebe um NAK, ele ré-envia o pacote que foi alterado● Vantagem : assegura uma transferência num canal com erros mas

sem perdas● Defeito : se os ACK/NAK são alterados, o remetente pode retransmitir pacote já enviados, então, como é que o emissor e o receptor gerar esses casos

Protocolos de entrega

Page 9: Fiabilidade de Sistemas Informáticos

Rdt 2.1 :● Protocolo com ACK e NAK alternados● Gera a duplicação dos pacotes● O emissor adiciona um numero de sequência nos pacotes● O receptor recebe um pacote que tem o mesmo numero que o precedente é que esse pacote é duplicado, então ele rejeita-o, senão envia um ACK● O receptor recebe um pacote corrompido ou um NAK, ele re-envia o ultimo pacote

Rdt 2.2 :● Protocolo sem NAK● Mesmas funcionalidades que o rdt 2.1 mas só usa o ACK● Em vezes do NAK, o receptor envia o ACK do ultimo pacote bem recebido● O receptor inclua o numero de sequência do ultimo pacote bem recebido● O emissor recebe um ACK duplicado significa que o ultimo pacote não foi bem recebido, e então a sua retransmissão é efectuada.

Protocolos de entrega

Page 10: Fiabilidade de Sistemas Informáticos

Rdt 3.0 : ● Protocolo com canal com erros e perdas● O mais proximo da realidade ● As soluções descritas precedentemente não são suficiente para gerar todos os casos● O emissor deve esperar um tempo razoável a chegada do ACK● O timeout deve no mínimo corresponder o tempo de ida e volta de um pacote entre os dois nó de uma rede● Se o timeout acabou-se e que não foi recebido o ACK, o pacote é retransmitido● Se o pacote chega, mas depois do timeout, a duplicação de dados pode ser resolvida com o uso de numero de sequência●Problema do rdt 3.0 é escolher um timeout correcto :

● não acaba sempre antes da recepção● não fica a espera muito tempo● senão o desempenho protocolo é medíocre

Protocolos de entrega

Page 11: Fiabilidade de Sistemas Informáticos

RDT 3.0 em acção

Page 12: Fiabilidade de Sistemas Informáticos

RDT 3.0 em acção

Page 13: Fiabilidade de Sistemas Informáticos

Características : ● Melhoramento do rdt 3.0● Satisfaz as duas propriedades e executa o controle de fluxo● “sending-windows” : o remetente possui uma lista de números sequenciais que correspondem às mensagens que ele é autorizado a enviar e contem as mensagens enviadas mas ainda não confirmadas, as quais uma retransmissão pode ser necessária. ● Uma nova mensagem transmitida recebe o próximo maior número sequencial, e a parte superior da janela avança● Quando alguma ACK chega, a parte inferior da janela avança● Se o timeout acaba supõe-se que a mensagem foi perdida, e esta é retransmitida.● “receiving-windows” : o receptor mantém uma lista de números sequenciais das mensagens que ele está autorizado a receber● Uma mensagem recebida com número sequencial diferente é rejeitada● Uma mensagem com um número sequencial igual ao menor número da janela é recebido, então a parte inferior da janela avança, e um ACK desta mensagem é enviada ao emissor

“Sliding-Windows”

Page 14: Fiabilidade de Sistemas Informáticos

« Go-Back-N » :● O janela tem um tamanho máximo de N pacotes ainda não “ACKados”● O receptor pode enviar uma confirmação por vários pacotes● ACK(M) : confirma a recepção dos pacotes com um número de sequência inferior o igual a M● O emissor usa um timeout por os pacotes não “ACKados”● Timeout(M) : permite a retransmissão de todos os pacotes que são superior a M e na “sending-windows”● Problemas :

● O receptor pode enviar “ACK” varias vez por um mesmo pacote● O receptor não tem buffer, e sabe unicamente o numero do pacote a

seguir, então se ele recebe um pacote com um numero maior que o que ele pretende ele envia um “ACK”.

“Sliding-Windows”

Page 15: Fiabilidade de Sistemas Informáticos

« Selective Repeat » :● O emissor ré-envia unicamente os pacotes por quais ele não recebeu confirmação dentro do timeout● Se o emissor recebe o “ACK” por o mais pequeno pacote ainda não confirmado então a base da janela muda para o próximo pacote com um numero de sequência ainda não “ACKado”● O receptor confirma individualmente os pacotes correctamente recebidos, e se foram recebidos na ordem, mete os pacotes num buffer para mais tarde ser transmitidos a camada aplicativa.

“Sliding-Windows”

Page 16: Fiabilidade de Sistemas Informáticos

“Selective Repeat” em acção

Page 17: Fiabilidade de Sistemas Informáticos

●Características : ●Decide qual é o caminho percorrido por uma mensagem para atingir seu destino com a maior eficácia● Um algoritmo de roteamento é usado numa rede para rotear mensagens do nó « i » para o nó « j » através do nó « k »● Se o nó « k » falha o algoritmo rotea as mensagens através de outro caminho● Para tratar falhas é necessário rotear de acordo com as mudanças na topologia da rede● Dois tipos de algoritmo :

● conhecimento global da rede (Djikstra)● informação distribuída (Distance Vector)

”Routing Algorithms”

Page 18: Fiabilidade de Sistemas Informáticos

Principios :● A topologia completa da rede e os custos de todos as ligações entre os nós são conhecidos.● O principio de este algoritmo é de calcular os caminhos mais curtos desde de uma fonte até todos os outros nos.

Parâmetros :● c(x, y) : custo do ligação do nó x o no y, +∞ se não é vizinho direito● D(v) : valor corrente do caminho do fonte ao destino v● p(v) : nó precedente de v no caminho da fonte a v● N′ : conjunto de nó por os quais o caminho mais surto é definitivamente conhecido

Iniciação : Algoritmo :

€ : não pertence a RepetirN′ = {u} Procurar w ε N' tal que D(w) seja minimalPara todos os nos v Acrescentar w ao N' Se v é vizinho de u Actualizar D(v) para todos vizinho v de w e € N′ então D(v) = c(u, v) D(v) = min(D(v),D(w) + c(w, v)) Senão D(v) = ∞ até que todos os nós sejam em N'

/* O novo custo por v é o antigo custo de v ou o custo do caminho mais curto para w mais o custo de w a v */

Algoritmo de Dijkstra

Page 19: Fiabilidade de Sistemas Informáticos

Algoritmo de Djikstra em acção :

Page 20: Fiabilidade de Sistemas Informáticos

Principios :● Ao principio, um nó só conhece o seus vizinhos direitos e o custo para eles.● As informações são trocadas graças a comunicação entre os nós do seus conhecimentos● Ao final o nó tem o conhecimento global da topologia da rede e do melhor caminho para todos o outros nós● A vantagem principal é que quando um no falha os vizinhos estão avisados e podem procurar outro caminho para o destinatário

Parâmetros :● Dx(y) : estimação do custo menor de x a y● Vector de distancia : Dx = [Dx (y) : y Є N]● O nó x conhece o custo para cada um dos seus vizinhos v : c(x, v)● O nó x mantém Dx = [Dx (y) : y Є N]● O nó x mantém também os vectores de distancias dos seus vizinhos● Para cada vizinho v, x mantém Dv = [Dv (y) : y Є N]

“Distance Vector”

Page 21: Fiabilidade de Sistemas Informáticos

Explicações Algoritmo :● Cada nó envia periodicamente a sua própria estimação do vector de distancia ao seus vizinhos● Quando um nó detecta uma mudança nó custo local, actualiza as informação e calcula novamente o vector de distancia● Quando um nó x recebe um novo vector de um vizinho, ele actualiza o seu próprio vector usando a equação de Bellman-Ford :

● Dx(y) : minv{c(x, v) + Dv (y)}, V y Є N● e se necessário avisa os seus outros vizinhos

● Problema :● As boas novidades repercutem-se depressa mas as más demoram

muito tempo

“Distance Vector”

Page 22: Fiabilidade de Sistemas Informáticos

“Distance Vector”

Page 23: Fiabilidade de Sistemas Informáticos

Conclusões :● A entrega fiável e segura de mensagens é assegurada por vários protocolos e algoritmos ● Protocolos de roteamento garante a entrega (rede)● Protocolos de janela deslizante garante a ordem correta (transporte)● Para mais eficácia tem de se combinar soluções das vários camadas da topologia de redes.

Bibliografia :www.fr.wikipedia.orgwww.en.wikipedia.orgwww.mathiaz.com/routagewww2.rad.com/networks/2004/sliding-windowswww.cse.ohio-state.edu/~sharpr/classes/667/appletswww.univ-orleans.fr/plone/...

Reliable Data Delivery

Page 24: Fiabilidade de Sistemas Informáticos