Chapitre 3 : Les composants acousto-optiques pour l’analyse
II. Le principe de diffraction simultanée
III.4. Etude de la bande passante
Alguns protocolos fazem mais do que detectar erros, eles fazem um esforço para reparar ou driblar os problemas. Os protocolos de transporte utilizam uma variedade de ferramentas para lidar com alguns dos problemas mais complicados na comunicação. Essa seção faz uma revisão de um conjunto de problemas que podem ocorrer e discute as técnicas que os protocolos usam para resolvê-los. Com as técnicas de data link discutidas anteriormente, os detalhes exatos dependem do projeto completo do protocolo switch.
9.10.1 Seqüência de Entrega Fora da Ordem
Um sistema de rede sem conexão, que pode mudar as rotas pode entregar os pacotes fora da ordem. Para entender como, considere uma seqüência de pacotes sendo enviada, e relembre que a rede tenta usar o menor caminho a todo o momento. Se um caminho mais curto se torna disponível imediatamente após o pacote de ordem i ser enviado, a rede deve enviar o pacote i+1 através do caminho mais curto, podendo este chegar mais cedo que o pacote i.
Para lidar com esse erro, o protocolo de transporte usa uma seqüência. O emissor coloca um número da seqüência em cada pacote. O receptor armazena o número da seqüência do último pacote recebido e a lista adicional dos pacotes que chegaram fora de ordem. Quando um pacote chega, o receptor examina o número da seqüência para determinar como deve lidar com esse pacote. Se o pacote é o próximo (chegou em ordem), o software de protocolos entrega o pacote a próxima camada e checa a lista para ver se há mais pacotes que podem ser entregues. Se o pacote chega fora de ordem, o software o adiciona a lista.
9.10.2 Seqüência para Eliminar Pacotes Duplicados
A seqüência resolve os problemas de duplicação. O software do receptor checa a duplicação quando examina o número do pacote que chega. Se a seqüência já tiver sido entregue ou o número bate com os pacotes que estão na lista, o software descarta a nova copia.
9.10.3 Retransmissão de Pacotes Perdidos
A perda de pacotes é um problema fundamental nas redes de computadores, pois erros de transmissão podem corromper bits, tornando o frame inválido. Quando um receptor detecta esses problemas, o frame é descartado.
Para garantir uma transferência confiável, os protocolos utilizam positive acknowledgement with retransmission. Quando um frame chega intacto, o software de protocolos do receptor envia uma pequena mensagem que reporta uma recepção de sucesso. Essa mensagem é conhecida como acknowledgement (ACK). O emissor toma a responsabilidade de assegurar que cada pacote é transferido com sucesso. Quando ele envia um pacote, o software inicia um timer. Se a ACK chegar antes do timer expirar, o software cancela o timer. Se o timer expirar antes da ACK chegar, o software envia outra cópia do pacote e começa o timer novamente. A ação de enviar uma segunda copia é conhecida como retransmissão.
A retransmissão não terá sucesso se houver uma falha de hardware como permanecer desconectado ou se o computador receptor tenha entrado em colapso. Então, protocolos que utilizam retransmissão normalmente têm um limite máximo de retransmissão. Quando este limite é atingido, o protocolo para de retransmitir e declara que a comunicação é impossível.
Note que a retransmissão pode introduzir pacotes duplicados. Porque um emissor não pode distinguir entre um pacote que foi perdido e um pacote que tenha experimentado um longo delay. Assim, protocolos, que usam retransmissão para prover confiança, deverão lidar também com o problema da duplicação.
9.10.4 Evitando Replay Causado pelo Delay Excessivo
Uma fonte de delay em um sistema de packet switching é causada pela aproximação de store-and-foward. Quando um pacote chega em um packet switch, o pacote é colocado em uma fila. Se o pacote chegar mais rapidamente que o switch possa enviá-los, a fila irá aumentar e o delay se torna excessivo. Delays extraordinários podem levar para erros de replay. Replay significa que um pacote antigo e atrasado pode afetar a comunicação futura.
Infelizmente, ao menos que o protocolo seja projetado cuidadosamente, um pacote de uma conversação antiga pode ser aceito em uma nova conversação e o pacote correto pode ser descartado.
O replay também pode ocorrer com os pacotes de controle. Por exemplo, protocolos sempre enviam pacotes especiais de controle para terminar a comunicação. Se uma cópia de um término de conversação chega da conversa anterior, pode fazer com que o software de protocolos termine a conversação imediatamente e prematuramente.
Para prevenir o replay, os protocolos fazem cada seção com um ID único, e requer um único ID para ser presente em cada pacote. O software de protocolos descarta qualquer pacote que chegue com o ID incorreto.
9.10.5 Controle de Fluxo para Evitar o Excesso de Dados
O excesso de dados acontece quando um computador envia dados mais rápido que o outro computador pode absorvê-los. Conseqüentemente, dados são perdidos.
A técnica usada é conhecida como mecanismos de controle de fluxo. A forma simples do sistema stop-and-foward no qual o emissor espera até que cada pacote seja transmitido. Quando o receptor está pronto para o próximo pacote, ele envia uma mensagem de controle, usualmente conhecida como ACK.
Embora os protocolos de stop-and-go previnem um excesso de dados, eles podem causar uma ineficiência extrema no uso da largura de banda da rede.
Para obter altas taxas de transferências, protocolos utilizam uma técnica de controle de fluxo conhecida como sliding window. O emissor e receptor são programados para utilizarem uma “janela” de tamanho fixo, que é o máximo de dados que podem ser enviados antes que a ACK chegue. Por exemplo, o emissor e receptor devem concordar em um tamanho fixo de janela para quatro pacotes. O emissor começa com os dados a serem enviados, extrai os dados para encher a primeira janela, e transmite as cópias. Se for necessário segurança, o emissor guarda uma cópia no caso da necessidade da retransmissão. O receptor deve ter um espaço de buffer pronto para receber toda a janela. Quando um pacote chega na seqüência, o receptor passa o pacote para o aplicativo receptor e transmite a ACK para o emissor. Quando um ACK chega, o emissor descarta a cópia do pacote e transmite o próximo pacote. A figura abaixo ilustra o conceito:
Uma janela deslizante pode incrementar a taxa de transferência drasticamente. Para entender como, considere a seqüência de transmissões com o esquema stop-and-go e o esquema janela deslizante. A figura abaixo faz essa comparação:
Como a figura acima mostra a seqüência de transmissões do protocolo stop-and-go. Após enviar um pacote, o protocolo espera uma ACK antes de enviar outro pacote. Se o delay requerido para enviar um único pacote é N, o delay total para enviar quatro pacotes será 8N.
Na seqüência de transmissão usando uma janela deslizante, o protocolo envia todos os pacotes numa janela, antes de esperar. Para ser realista, a figura mostra um pequeno delay entre o envio sucessivo dos pacotes. Porém o delay deve ser menor do que o mostrado, a transmissão nunca é instantânea - um tempo curto (usualmente poucos milissegundos) é requerido para o hardware completar a transmissão de um pacote, interromper a CPU, e começar a transmitir o próximo pacote. Assim, o tempo total para enviar quatro pacotes é
2N + E, onde E denota o pequeno delay.
Para entender o significado da janela deslizante, imagine uma comunicação extensa que envolva muitos pacotes. Nesses casos, o tempo total requerido para transmissão é tão grande que E pode ser ignorado. Para ver os benefícios da janela deslizante, considere uma rede com uma grande taxa de transferência e grande delay. Para essas redes, um protocolo de janela deslizante pode aumentar o desempenho por um fator muito maior que 1. De fato, o aumento do desempenho é:
Tw = Tg *W
Onde Tw é o ritmo de transferências que pode ser alcançado com um protocolo de janela
deslizante, Tg é o ritmo de transferências que pode ser alcançado em um protocolo stop-and-go,
e W é o tamanho da janela deslizante. A equação explica o porquê do protocolo de janela deslizante da figura acima ser aproximadamente 4 vezes menor do que o ritmo de transferências
do protocolo stop-and-go da mesma figura. É claro que o ritmo de transferências não pode ser feito arbitrariamente grande ao aumentar o tamanho da janela. A largura de banda de uma rede impõe um limite - bits não podem ser enviados mais rápido que o hardware possa transportá-los. Assim, a equação pode ser escrita como:
Tw = min (B, Tg *W)
9.10.6 Mecanismos para Evitar Congestionamento da Rede
Congestionamento é um problema fundamental em um sistema de pacotes switching. Para entender o porquê, considere uma rede representada pela figura abaixo:
Se um computador conectado ao nó 2 começa a enviar pacotes para um destinatário ligado ao nó 6, os pacotes devem atravessar o link do meio. Se algum computador no nó 1 estiver enviando pacotes para um computador no nó 5, os dados chegarão no nó 3 duas vezes mais rápido que possa ser enviado para o nó 4. O pacote switch que corresponde ao nó 3 coloca os pacotes que ele recebe do nó 1 e 2 em uma fila até que eles possam ser enviados, porque mais pacotes chegam e podem ser enviados, a fila cresce e o delay aumenta. A situação é conhecida como congestionamento.
Se o congestionamento persistir, o pacote switch irá ficar sem memória e começará a descartar pacotes. Mesmo que a retransmissão possa ser usada para recuperar os pacotes, ela leva muito tempo. Além do que, se a situação persistir, a rede toda se torna instável. Essa condição é conhecida como Colapso de Congestionamento. Os protocolos tentar evitar o colapso de congestionamento monitorando a rede e reagindo rapidamente uma vez que um congestionamento começa. Há duas aproximações:
Arrume pacotes switches que informem o fabricante quando um congestionamento ocorra;