1 Camada de enlace de dados – Controle de fluxo A camada de enlace de dados realiza o controle do estabelecimento da comunicação de dados sobre a camada física. É necessário portanto, que se tenha um protocolo para essa camada. Na camada de enlace de dados, segmenta-se os dados e envia-se os dados em blocos chamados quadros ou frames. Deve ser realizado o sincronismo do quadro, bem como seu controle de fluxo e controle de erro. O controle de fluxo assegura que o transmissor não sobrecarregue o receptor com dados, evitando o estouro da capacidade de armazenamento do buffer. Os dados são fragmentados em frames pequenos pois: • Tamanho do buffer é limitado; • Erros são detectados mais cedo; • Em caso de erro, pequena quantidade de dados é retransmitida; • Evita-se que um transmissor ocupe o canal por muito tempo. 1.1 Stop & Wait É a forma mais simples de controle de fluxo. Nesta forma, o transmissor (fonte) envia um quadro, o receptor recebe e envia uma confirmação (Acknowledgment – ACK). A fonte então, espera por tal confirmação (ACK) antes de enviar o próximo quadro, Figura 1. O receptor, deste modo, pode parar o fluxo não enviando um ACK. O Stop & Wait funciona bem para poucos frames formados por uma sequência longa de bits, não é eficiente para taxas altas de dados, pois apenas um frame por vez pode estar em trânsito entre Tx e Rx . Figura 1: Controle de fluxo – Stop & Wait. 1.2 Janela deslizante (Sliding window) A eficiência de controle de fluxo pode ser melhorada se vários frames puderem transitar no canal ao mesmo tempo. O protocolo de janela deslizante permite o trânsito de vários 1 frames. Isto é possível porque o receptor tem buffer de comprimento W frames. Assim o transmissor pode enviar até W frames sem ACK, cada frame é numerado de tal forma que o ACK inclui o número do próximo frame esperado. A sequência numérica é limitada pelo tamanho, k, do campo de bits, isto é, o número de frames vai de 0 até 2k − 1. Os frames são numerados empregando módulo 2k , em outras palavras, toma–se como sendo a nova numeração de um quadro a ser enviado o resto da divisão de seu número por 2k . Por exemplo, Se k = 2, o tamanho da janela deslizante é 3, ou seja, 4 frames sem enviar ACK, a numeração desses frames irá de 0 a 3 – (0 a 22 − 1). A numeração dos frames segue a: • 0 22 tem resto 0 então, 0 módulo 22 = 0; • 1 22 tem resto 1 então, 1 módulo 22 = 1; • 2 22 tem resto 2 então, 2 módulo 22 = 2; • 3 22 tem resto 3 então, 3 módulo 22 = 3; • 4 22 tem resto 0 então, 4 módulo 22 = 0; • 5 22 tem resto 1 então, 5 módulo 22 = 1. Figura 2: Controle de fluxo – janela deslizante na Figura 2, os frames 0, 1 e 2 podem ser enviados sem ACK, então, Tx recebendo o ACK do frame 0, pode deslocar a janela e enviar os frames 1, 2 e 3. Tx recebendo o ACK do frame 1 pode enviar os frames 2, 3 e 4. Outra opção seria o receptor enviar um ACK cumulativo representando vários frames recebidos. Assim, o transmissor somente enviaria o conjunto de frames quando o buffer no receptor estivesse livre, ou parte do buffer estivesse livre. Quanto maior for o tempo de ida e volta (ACK) (round-trip time) dos dados, maior é o benefício da aplicação da técnica de janela deslizante. Po exemplo, em transmissão de dados via satélite, há uma economia bastante significativa de tempo de transmissão quando se faz o uso da técnica (sliding window). 2 2 Utilização do canal Abaixo, estão os tempos considerados para verificar a utilização do canal de comunicações: • Tempo de propagação (Tprop ), tempo para um bit atravessar o enlace de comunicação entre Tx e Rx ; • Tempo de frame (Tf rame ), tempo para transmitir um frame; • Tempo de processamento (Tproc ), tempo por exemplo, para determinar em um nó a rota do frame; • Tempo de acknowledgment (Tack ), tempo para confirmação. Em geral, Tproc e Tack são desprezíveis se comparados aos tempos relativos a Tprop e Tf rame . Assim o tempo total aproximado para se enviar os dados é: Ttotal = (2Tprop + Tf rame ) × n, (1) em que n é o número de frames. Note que do tempo total n×Tf rame é gasto apenas transmitindo dados, assim a eficiência ou a utilização do canal para o Stop & Wait é: U(stop & wait) = n × Tf rame , n × (2 × Tprop + Tf rame ) (2) dividindo por Tf rame (o numerador expressará o número de frames, isto é, n frames) se tem a = TTfprop (nesse caso se tem número de frames dentro de Tprop segundos) então a Equação rame 2 pode ser escrita: 1 U(stop & wait) = . (3) 2a + 1 Caso a janela seja deslizante, transmite-se W frames de uma vez. Se a transmissão começa em t = 0 o primeiro frame chega a Rx em (t = Tf rame + Tprop ). Incluindo o tempo para confirmação (quadro de ack) ter-se-ia o tempo de (t = Tf rame + 2Tprop ) segundos para a chegada dos W − 1 frames restantes . Assim, pode-se considerar duas situações: Todos os W frames chegando em um tempo maior ou igual a (t = Tf rame + 2Tprop ) segundos ou todos os W frames chegando em um tempo menor que (t = Tf rame + 2Tprop ) segundos. Portanto: 1. Se W ≥ (2a + 1): o quadro de ACK alcança Tx antes de Tx ter terminado de enviar W frames. Portanto, a eficiência é U(janela deslizante) = 1; 2. Se W < (2a + 1): o quadro de ACK alcança Tx após Tx ter enviado W frames. A eficiência é, então: W . (4) U(janela deslizante) = 2a + 1 3 3 Exercícios 1. Um canal de comunicação tem uma taxa de 4Kbps e um atraso de propagação de 20ms. Para que faixa de tamanho de quadro o Stop & Wait apresenta uma eficiência de no mínimo 50% ? 2. Considere o uso de frames de 1000 bits sobre um canal de satélite de 1Mbps, com atraso de propagação de 270ms. Qual a utilização do enlace para: (a) Stop & Wait; (b) Janela deslizante com W=127, W=255 e W=511. 4