A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Reliable Message Delivery

Apresentações semelhantes


Apresentação em tema: "Reliable Message Delivery"— Transcrição da apresentação:

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

2 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. 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 2

3 Introdução 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

4 Soluções 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.

5 Soluções 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

6 Soluções 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”

7 Protocolos de entrega 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ável rdt_rcv() : chamado a chegada dos pacotes sobre o canal do lado do receptor deliver_data() : chamado por o protocolo rdt para emitir os dados a camada superior

8 Protocolos de entrega 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

9 Protocolos de entrega 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.

10 Protocolos de entrega 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

11 RDT 3.0 em acção

12 RDT 3.0 em acção

13 “Sliding-Windows” 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

14 “Sliding-Windows” « 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”.

15 “Sliding-Windows” « 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.

16 “Selective Repeat” em acção

17 ”Routing Algorithms” 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)

18 Algoritmo de Dijkstra 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 Repetir N′ = {u} Procurar w ε N' tal que D(w) seja minimal Para 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 */

19 Algoritmo de Djikstra em acção :

20 “Distance Vector” 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]

21 “Distance Vector” 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

22 “Distance Vector”

23 Reliable Data Delivery
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 : www2.rad.com/networks/2004/sliding-windows

24


Carregar ppt "Reliable Message Delivery"

Apresentações semelhantes


Anúncios Google