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
Download

1 Camada de enlace de dados – Controle de fluxo