Baixe o app para aproveitar ainda mais
Prévia do material em texto
Arquitetura de Redes (Infraestrutura de Redes) Aula 9 - Equipamentos de rede - Parte 1 INTRODUÇÃO Uma das funções importantes de algumas implementações de camada de enlace é a transmissão con�ável. Por transmissão con�ável, entende-se a capacidade de emitir dados ao receptor, de modo a que os dados cheguem ordenados, livre de perdas e de erros de transmissão. Nesta aula, estudaremos os principais protocolos de transmissão con�ável. Analisaremos as limitações de alguns e estudaremos como as soluções mais elaboradas contornam essas limitações. Em seguida, estudaremos o padrão IEEE 802, abordando sua arquitetura e os respectivos formatos de quadro 802.3 que surgiram desde a publicação da norma. Para cada variação de formato de quadro 802.3 estudados, veremos exemplos de sistemas operacionais/protocolos que adotam. OBJETIVOS Analisar os protocolos de transmissão con�ável; Veri�car a arquitetura IEEE 802 e os tipos de quadros IEEE 802.3. PROTOCOLOS DE TRANSMISSÃO CONFIÁVEL No contexto de redes de computadores, transferência con�ável de dados signi�ca que os dados transferidos possuem algumas características ao serem entregues ao destinatário: Antes de iniciar o estudo de protocolos de transferência con�ável, é importante que você mantenha em mente essas três características. É importante, também, que você não confunda o conceito de transferência con�ável de dados com a ideia de segurança em redes de computadores. Para garantir que você compreenda bem a diferença entre a transferência con�ável de dados e a segurança de dados, vamos brevemente destacar a diferenças entre os dois conceitos. Em redes de computadores, os protocolos de transferência con�áveis mais usados são baseados em uma ideia simples: tudo o que for transmitido pelo nó remetente deve ser con�rmado ou refutado pelo nó destinatário. Dessa maneira, o remetente saberá o que não foi recebido corretamente e, portanto, precisa ser retransmitido. Protocolos baseados nessa ideia de con�rmações e transmissões são amplamente conhecidos como protocolos ARQ (Automatic Repeat reQuest, ou solicitação automática de repetição). Para implementar protocolos ARQ, o transmissor e o receptor devem ter em mente que o caminho entre os dois é um meio hostil que pode gerar diversos tipos de empecilhos à transferência con�ável (glossário). Como os erros de transmissão podem ocorrer tanto sobre os pacotes de dados quanto sobre os ACKs/NACKs, então uma técnica de detecção de erros pode ser usada (já estudamos essas técnicas em uma aula anterior). Uma técnica comumente usada é a soma de veri�cação (checksum) adicionadas a campos de cabeçalho, tanto dos pacotes de dados quanto dos ACKs/NACKs. Assim, ambos os lados conseguem identi�car se o que receberam está livre de erros. Vamos fazer uma pausa para re�etir sobre a seguinte questão: Um ACK/NACK contendo um checksum permite que o transmissor detecte se esses pacotes de retorno estão livres de erros. Entretanto, se o transmissor detecta, usando o checksum, que o ACK/NACK está corrompido, como ele saberá se o que foi enviado pelo receptor foi um ACK ou um NACK? Dê a sua opinião. Resposta Correta Para facilitar a compreensão, vamos analisar dois exemplos. Considere o caso em que o último pacote de dados tenha sido corrompido antes de chegar ao receptor, e o NACK enviado pelo receptor também chega corrompido no transmissor. Suponha que o transmissor, cuidadoso, retransmite o último pacote de dados que, por sorte, chega íntegro ao receptor. O receptor, que anteriormente havia enviado um NACK, agora enviará um ACK. Se supormos que o ACK chegará corretamente ao transmissor, então o problema foi resolvido. Fonte da Imagem: Agora suponha um segundo cenário onde o receptor recebe corretamente um pacote e envia ACK ao transmissor. Imagine que o ACK seja corrompido no caminho até o transmissor. Agora, o transmissor realizará uma retransmissão do último pacote de dados. Entretanto, o receptor já havia recebido corretamente um pacote de dados e agora se confundirá achando que está recebendo um novo pacote, e não uma retransmissão. Felizmente, esse problema é facilmente contornável se o transmissor incluir mais um campo de cabeçalho nos pacotes enviados: o número de sequência. Através da checagem do número de sequência, o receptor facilmente identi�ca se um pacote recebido é um novo pacote ou uma retransmissão. Fonte da Imagem: Se o receptor também usar números de sequência para identi�car seus ACKs, então ele pode simpli�car o processo de con�rmações, eliminando os pacotes NACK. Por exemplo, suponha que o receptor recebeu um pacote de dados com número de sequência 0, e tenha enviado um ACK com número de sequência 0 para con�rmar ao transmissor que tudo ocorreu bem. O transmissor dará seguimento e enviará o próximo pacote de dados, com número de sequência 1. Se esse pacote chegar corrompido ao receptor, ao invés de enviar um NACK, ele pode retransmitir o ACK 0 para informar ao transmissor que algo deu errado com o novo pacote, e que a última coisa que foi corretamente recebida foi o pacote 0. Como o transmissor sempre envia apenas um pacote por vez, e �ca aguardando uma con�rmação, basta que o número de sequência tenha apenas um único bit. Dessa forma: • Dois pacotes seguidos com o mesmo valor binário no número de sequência (exemplo: pacote 1 e depois pacote 1) equivalem a uma retransmissão; • Dois pacotes seguidos com número de sequência distintos (exemplo: pacote 1 e depois pacote 0) indicam que o segundo pacote é um novo pacote de dados. O CANAL COMUNICAÇÃO TAMBÉM PODE PERDER PACOTES? Até agora, estudamos como o uso de checksum e de números de sequência, tanto nos pacotes de dados quanto nos ACKs, permitem criar um protocolo simples de transmissão con�ável que é capaz de contornar problemas de erros de transmissão tanto no pacote de dados quanto nos ACKs. Então, vamos analisar um cenário ainda mais real, onde o canal de comunicação também pode perder pacotes. Para o protocolo de transmissão con�ável que estudamos acima, caso um pacote de dados ou um ACK seja perdido, o transmissor �cará eternamente aguardando um ACK. A forma mais comum de contornar esse problema é incluir um temporizador no transmissor. Cada vez que o transmissor transmite um pacote de dados, ele inicia um temporizador para limitar a espera por um ACK. Caso o temporizador expire, o transmissor retransmite o pacote de dados (lembre-se, contendo checksum e número de sequência) e inicia um novo temporizador para aguardar por um ACK. O temporizador será �nalizado quando o transmissor receber um ACK com o mesmo número de sequência do pacote para o qual aguarda con�rmação. O PROBLEMA NO USO DOS TEMPORIZADORES Um problema de se usar temporizadores é de�nir por quanto o transmissor deve esperar para realizar uma retransmissão. Obviamente, é desejável que o transmissor aguarde no mínimo o tempo de um atraso de ida e volta (RTT – Round Trip Time) entre ele e o destinatário. Em muitas redes, o atraso de ida e volta é difícil de ser estimado, e, pior, pode variar bastante ao longo do tempo. Se o transmissor de�nir um temporizador muito longo, ele demorará muito para retransmitir o pacote, o que afetará negativamente o desempenho. Por outro lado, se o transmissor de�nir um temporizador curto demais (exemplo: menor do que o RTT), então, ele realizará retransmissões desnecessárias, já que fará retransmissões antes do tempo necessário para os ACKs chegarem. Qual é o mais indicado? Uma solução comumente usada é ir calculando o RTT médio durante a transmissão de dados. Para isso, o transmissor calcula o intervalo de tempo entre o momento em que um pacote de dados é enviado e o momento em que o ACK chega, e calcula uma média ponderada, onde o histórico de medições tem um peso maior, e a última medição feita tem um peso menor. O protocolo de transmissão con�ável que estudamos até agora usa números de sequência (pacotes de dados e ACKs) e checksum (pacote de dados e ACKs), além de temporizadores no transmissor. Esse protocoloé considerado o tipo mais simples de protocolo ARQ capaz de fornecer transmissão con�ável em redes reais, que oferecem todo tipo de obstáculo à transmissão con�ável: perda e corrompimento, tanto de pacotes de dados quanto de ACKs. Esse protocolo é comumente chamado de protocolo Stop-And-Wait (para e espera). Observe, abaixo, exemplos que ilustram o funcionamento do protocolo Stop-And-Wait para dois outros cenários, um com perda de um ACK (esquerda) e outro com temporizador prematuramente expirado (direita). A grande desvantagem desse protocolo é que o transmissor transmite um único pacote de dados por vez, e, então, suspende a transmissão para aguardar por um ACK. Esse comportamento incorre em limitação do desempenho que é diretamente proporcional ao RTT entre o transmissor e o receptor. Ou seja, quanto maior for o RTT, maior será a porcentagem de tempo que o transmissor passará aguardando que seu pacote viaje até o destinatário, e que o ACK viaje de volta para con�rmar que tudo ocorreu conforme o esperado. Observe, abaixo, a ilustração dessa desvantagem. O transmissor (Tx) inicia a transmissão de um pacote de dados (Rx) no instante t . Se supormos um pacote de tamanho L = 12000 bits (exemplo: 1500 bytes), e um link com taxa de transmissão de R = 100Mbps, então, o tempo de transmissão do pacote será de L/R = 12.000/100.000.000 = 0.12 milissegundos. Para não sermos muito pessimistas, vamos supor um valor baixo para RTT: 1 milissegundo. O tempo total necessário para transmitir e con�rmar um pacote é calculado como RTT + L/R = 1 + 0.12 = 1.12s. Desse total, o tempo em que o transmissor esteve efetivamente transmitindo dados pela rede foi de 0.12ms. 0 Logo, se de�nirmos a utilização U como sendo a porcentagem de tempo em que o transmissor efetivamente está transmitindo dados, então, U pode ser calculado como: Portanto, o transmissor, em um cenário otimista, passa apenas 10.7% do tempo transmitindo dados, e 89.3% do tempo aguardando pelo retorno do ACK. Um desempenho sofrível! Dica , Se considerarmos que protocolos ARQ também podem ser usados na camada de transporte (Na Internet, o TCP!), e que hosts remotos na Internet se deparam com RTTs acima de 100ms, então, a utilização da rede �cará abaixo 0.12%. Ou seja, um host �caria mais de 99.88% do tempo parado aguardando a chegada de ACKs, e menos de 0.12% do tempo efetivamente transmitindo dados. Um desempenho totalmente inviável. Uma classe de protocolos ARQ denominados protocolos de janelas deslizantes, ou protocolos com paralelismo (pipeline), buscam melhorar o desempenho através do envio de múltiplos pacotes de dados seguidos mesmo antes que algum ACK seja recebido, conforme ilustrado na imagem a seguir. A única alteração de cabeçalhos dos pacotes de protocolos com pipeline em relação ao protocolo Stop-And-Wait é que o número de sequência não pode mais ser apenas 0 e 1. Isso ocorre porque vários pacotes �cam simultaneamente pendentes de con�rmação. Os dois protocolos de transmissão con�ável (protocolos ARQ) com paralelismo mais amplamento conhecidos e usados são: O Go-Back-N (glossário) (GBN) e o Selective Repeat (SR). Ambos os protocolos possuem a mesma característica básica: são protocolos ARQ em que o transmissor tem permissão para transmitir N pacotes de dados seguidos sem esperar por um ACK. O número de pacotes “viajando pela rede e pendentes de con�rmação” não pode ultrapassar o limite N. Alguns autores dizem que esses são protocolos de janelas deslizantes com janela do transmissor de tamanho N. Na imagem, o transmissor emitiu 8 pacotes antes de receber o primeiro ACK. Nesse caso, então, podemos dizer que N=8, caso o transmissor não tivesse permissão de transmitir mais do que 8 pacotes em pipelining antes de receber um ACK. Vamos compreender as diferenças entre os protocolos Go-Back-N e Selective Repeat: Go-Back-N Suponha que um pacote com número de sequência 6 enviado pelo transmissor é perdido. Se a janela do transmissor possui tamanho N=8, então o transmissor transmitirá os pacotes 6,7,8,9,10,11,12 e 13, sem ter recebido o ACK para o pacote 6. O receptor não receberá o pacote 6 que foi perdido, mas receberá os pacotes 7,8,9,10,11,12 e 13. Como o receptor Go-Back-N somente é capaz de receber o pacote com o número de sequência aguardado (6), então, os pacotes com número de sequência de 7 a 13 serão descartados. Consequentemente, o transmissor, ao notar que o temporizador do pacote 6 expirou, será obrigado a retransmitir todos os pacotes de sua janela (de 6 a 13) na esperança de que dessa vez os pacotes cheguem ao receptor livre de perdas. Em resumo, o protocolo Go-Back-N é mais e�ciente do que o Stop-And-Wait, pois usa pipelining, mas não é muito e�ciente para se recuperar de perdas, já que o transmissor precisa retransmitir todos os pacotes de sua janela. Selective Repeat A recuperação de perdas é justamente o ponto em que o protocolo Selective Repeat (Retransmissão Seletiva) busca melhorar. Nesse protocolo, o receptor possui janela de recepção maior do que um, ou seja, é capaz de receber e armazenar no buffer pacotes fora de ordem. Suponha que um pacote com número de sequência 6 enviado pelo transmissor é perdido. Se a janela do transmissor possui tamanho N = 8, então, o transmissor transmitirá os pacotes 6,7,8,9,10,11,12 e 13 sem ter recebido o ACK para o pacote 6. Agora suponha um receptor Selective Repeat com janela de recepção N=8, assim como o transmissor. O receptor também não receberá o pacote 6, já que este pacote foi perdido. Porém, ao receber os pacotes 7,8,9,10,11,12 e 13 fora de ordem (pois o 6 não chegou), o receptor não os descarta. Ao contrário, os pacotes com número de sequência de 7 a 13 são armazenados no Buffer do receptor. Quando o temporizador do transmissor Selective Repeat expirar, ele precisará retransmitir apenas o pacote de número 6. Claramente, o protocolo Selective Repeat é capaz de se recuperar de perdas de maneira mais e�ciente do que o Go-Back-N. ARQUITETURA IEEE 802 E OS TIPOS DE QUADROS IEEE 802.3 A arquitetura IEEE (glossário) 802 especi�ca um modelo de 3 camadas para as redes locais. Essas camadas correspondem basicamente às camadas 1 e 2 do modelo ISSO/OSI, conforme mostrado na tabela abaixo. O IEEE 802 (OSI como referência) e suas tecnologias de subcamada LLC, MAC e de camada física O LLC tem como objetivo proporcionar diversos serviços da camada de enlace, por exemplo: No exemplo abaixo, um quadro 802.3 é apresentado com destaque aos bytes de sincronização, e depois o quadro 802.3 é detalhado. Em seguida, mostramos um quadro 802.2 encapsulado em um quadro 802.3, conforme especi�cado na norma IEEE 802. Para efeitos de sincronização, o quadro 802.3 se inicia com uma sequência de 8 bytes: 7 bytes contendo 10101010 (preâmbulo), que são usados para sincronização entre as interfaces transmissora e receptora, seguido de um byte conhecido por SFD (“Start Frame Delimiter”) contendo 10101011, que permite aos receptores detectarem o início efetivo do quadro. Os quadros 802.3 usam um cabeçalho de 14 bytes: • 6 bytes para o endereço de origem; • 6 bytes para o endereço de destino; • 2 bytes contendo o comprimento em bytes do campo de dados. Após o campo de dados, pode existir o campo PAD que é adicionado para que o quadro tenha o comprimento mínimo exigido (512 bits, ou seja, 64 bytes). Por �m, o campo FCS (Frame Check Sequence) é usado para veri�cação de erros de transmissão. Os formatos de quadro IEEE 802.3/802.2 não são meticulosamente seguidos por todos os sistemas operacionais. Em muitos casos, o quadro a trama 802.3 é diretamente usado, como é, é o caso do TCP/IP (glossário) e IPX. TIPOS DE QUADROS Há quatro tipos de quadros podem existir em uma rede Ethernet: Quadro Ethernet II Também conhecido como quadro DIX (Digital; Intel; Xerox), é o quadro padrão usado por redes TCP/IP. Consequentemente, é o tipo mais comum atualmente. Campo EthetType (Tpo) é usado para multiplexar/identi�car o protocolo da camada superior. Por exemplo, o protocolo IP possui Ethertype= 80 e o ARP possui Ethertype = 806. Quadro 802.3 RAW Corresponde ao uso de um quadro 802.3 “cru” que não especi�ca nenhuma forma de multiplexar/identi�car protocolos da camada superior. Esse formato foi inicialmente usado por redes Novel/Netware com o protocolo IPX, mas caiu em desuso atualmente. Quadro 802.2/802.3 Corresponde à aplicação correta da norma IEEE 802, ou seja, o encapsulamento de um quadro 802.2 em um quadro 802.3. O quadro LLC – Logical Link Control (802.2) tem como principal objetivo de�nir um mecanismo de multiplexagem que permita que vários protocolos de cama superior usem, simultaneamente, o mesmo nó da rede. Assim, a cada protocolo é atribuído um valor único de SAP, o que evita con�itos entre protocolos. Para isso, o quadro 802.2 adiciona ao quadro 802.3: • Os campos DSAP (Service Access Point de destino) de 1 byte; • SSAP (Service Access Point de Origem) de 1 byte; • Control de 1 byte. Esse formato é usado por versões mais atuais de redes IPX/SPX. Por exemplo, o protocolo IPX atual usa o SAP de valor E0. Um dos problemas desse formato é que o número de bytes do cabeçalho é ímpar (17 bytes), o que gera di�culdades de implementações em equipamentos com arquitetura de 32 bits. Além disso, o SAP de 1 byte é muito limitado, pois só é capaz de identi�car 255 protocolos diferentes. Para contornar essas limitações, criou-se uma variação denominada Ethernet SNAP (Sub- Network Access Protocol). Quadro Ethernet SNAP (Sub-Network Access Protocol) Obedece ao formato da norma IEEE 802, mas adiciona mais um campo conhecido por SNAPID de 5 bytes, que garante o alinhamento de 32 bits do cabeçalho. Para manter total coerência com o IEEE 802, quadros "Ethernet SNAP" usam sempre os valores de SAP “AA”, que foi reservado para identi�car quadros SNAP. O campo SNAPID é dividido em duas subpartes, os 3 bytes mais signi�cativos identi�cam a organização, e é denominado OUI (Organizational Unit Identi�er). Esse campo atualmente não é usado, com uma exceção ao protocolo AppleTalk. Os dois octetos menos signi�cativos identi�cam o protocolo, usando valores idênticos ao EtherType do “Ethernet II”. O sistema operacional MAC OS usa encapsulamento IEEE 802.2 LLC SAP/SNAP para a suíte de protocolos Appletalk v2 sobre redes Ethernet (“EtherTalk”). ATIVIDADES Para �nalizarmos esta aula, responda as atividades a seguir. 1. Explique como protocolos ARQ de janelas deslizantes (paralelismo/pipeline) contornam o problema de baixa taxa de transmissão do protocolo Stop-And-Wait. Resposta Correta 2. Comente sobre a diferença do método de recuperação de perdas entre o Go-Back-N e o Selective Repeat. Resposta Correta Glossário EMPECILHOS À TRANSFERÊNCIA CONFIÁVEL • Pacotes de dados (transmissor->receptor) podem ser perdidos; • ACKs (receptor->transmissor) podem ser perdidos; • Pacotes de dados (transmissor->receptor) podem ser corrompidos por erros de transmissão (exemplo: interferência eletromagnética); • ACKs/NACKs (receptor->transmissor) podem ser corrompidos por erros de transmissão (exemplo: interferência eletromagnética). GO-BACK-N No protocolo Go-Back-N, o receptor não é capaz de receber pacotes fora de ordem. Em outras palavras, a janela do receptor possui tamanho 1. O receptor Go-Back-N mantém uma variável indicando o número de sequência do pacote esperado, e, caso receba algum pacote com número de sequência diferente do esperado, o pacote é simplesmente descartado. IEEE Institute of Electrical and Electronic Engineers (Instituto de Engenheiros Eletricistas e Eletrônicos). IP Internet Protocol, Protocolo de Internet, que de�ne formato do cabeçalho, endereçamento IP e fragmentação de datagramas.
Compartilhar