1 / 24

Fiabilidade de Sistemas Informáticos

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.

isla
Download Presentation

Fiabilidade de Sistemas Informáticos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  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 • Rdt1.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 : • www.fr.wikipedia.org • www.en.wikipedia.org • www.mathiaz.com/routage • www2.rad.com/networks/2004/sliding-windows • www.cse.ohio-state.edu/~sharpr/classes/667/applets • www.univ-orleans.fr/plone/...

More Related