Buscar

Atraso em Redes de Comutação de Pacotes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

1 
 
Atraso Fim-a-Fim em Redes de Comutação de Pacotes 
Caroline Carvalho Machado 
 
I. Introdução 
Atualmente as redes de computadores utilizam amplamente a comutação de pacotes 
devido a facilidade para interconectar redes com diferentes arquiteturas, além de fornecer 
alocação dinâmica de recursos e ter boa confiabilidade contra falhas de nó e enlace (link). Por 
outro lado, a comutação de pacotes oferece pouco controle sobre o atraso de pacotes para os 
comutadores [2]. O maior exemplo de rede de comutação de pacotes é a Internet. 
Para que um sistema final possa enviar dados para outro sistema final, o emissor deve 
segmentar os dados em pacotes que serão enviados através de uma série de nós (sistemas finais 
ou roteadores) até o destino. Os sistemas finais estão conectados por links e comutadores. Uma 
característica inerente ao processo de troca de pacotes é o atraso. 
O atraso médio necessário para enviar um pacote da origem ao destino é uma das mais 
importantes medidas de desempenho de redes. Considerações de atraso tem grande influência 
na escolha e desempenho de algoritmos, tais como roteamento e controle de fluxo. Conhecendo 
a distribuição do atraso ao longo da rede é possível redimensionar caminhos ou redesenhar 
partes da rede que atualmente não oferecem atraso limites aceitáveis [1, 3]. Para entender 
profundamente a rede de comutação de pacotes é necessário entender a natureza desses atrasos. 
O objetivo desse trabalho é compreender o atraso de pacotes em redes de 
computadores que se utilizam de comutação de pacotes. Entender o atraso possibilita uma boa 
concepção de algoritmos de rede, tais como algoritmos de roteamento e controle de fluxo, o 
dimensionamento de buffers e capacidade de links. 
 
II. Atraso Fim-a-Fim 
De acordo com o RFC 2212 da Internet Engineering Task Force (IETF) [15], a 
qualidade de serviço da Internet depende do atraso e da largura de banda. Como garantia, limites 
para o atraso são estabelecidos. Ao combinar os parâmetros dos diversos elementos em um 
caminho, é possível calcular o atraso máximo que um pacote de dados experimentará ao ser 
transmitido através desse percurso. O atraso será estável desde que o caminho não mude. 
Atraso total entre dois sistemas finais pode ser dividido em quatro categorias principais 
descritas em [1, 2, 9]: 
 Atraso de processamento (Dp): tempo necessário para examinar o cabeçalho do pacote e 
determinar para onde direcioná-lo, incluindo fatores como o tempo necessário para verificar 
os erros em bits existentes no pacote que ocorreram durante a transmissão. Quase sempre é 
desprezível, no entanto, tem forte influência sobre a produtividade máxima de um roteador 
Independe da quantidade de tráfego tratado pelo nó desde que o poder computacional não 
seja um recurso limitante, caso contrário, uma fila de processamento separada deve ser 
introduzida antes da fila de transmissão. Atrasos em roteadores de alta velocidade são da 
ordem de microssegundos ou menos. 
2 
 
 Atraso de fila (Dq): quando um ou mais pacotes chegam no roteador eles são absorvidos 
pelo buffer e formam uma fila, o tempo decorrido enquanto o pacote espera para ser 
transmitido no enlace é o atraso de fila. Depende da quantidade de outros pacotes que 
chegaram antes. Se a fila estiver vazia e não houver outro pacote sendo transmitido, então 
o tempo de fila do pacote é zero. Varia da ordem de micro a milissegundos. 
 Atraso de transmissão (Dt): tempo necessário para que o primeiros e o último bit do pacote 
sejam transmitidos. Da ordem de micro a milissegundos. 
 Atraso de propagação (Dew): Tempo necessário para propagar um bit desde o início do 
enlace até o roteador seguinte. É determinado pelo tempo necessário para que uma onda 
eletromagnética atravesse o meio físico. É independente do tráfego no enlace. 
Para simplificar o cálculo do atraso fim-a-fim será omitida a possibilidade de um 
pacote requerer retransmissão em um link devido a erros, congestionamento e perda de pacotes. 
Esses problemas não ocorrem com frequência, mas são problemas sérios que quando não 
tratados provocam um aumento significativo do atraso. 
O atraso fim-a-fim pode ser dado pelo acúmulo dos atrasos nodais [9]. Supondo que 
haja N-1 roteadores entre a máquina de origem e a máquina de destino e que a rede não esteja 
congestionada (atrasos de fila desprezíveis), o atraso fim-a-fim (Dee) é dado por: 
𝐷𝑒𝑒 = 𝑁(𝐷𝑝 + 𝐷𝑡 + 𝐷𝑒𝑤) 
Entretanto, o atraso varia de pacote para pacote. O protocolo TCP inclui melhorias no 
algoritmo de retransmissão por timeout que levam em consideração o tamanho do pacote. 
Pacotes longos apresentam atrasos duas ou três vezes menores do que pacotes mais curtos. 
Mensagens de pacote único são favorecidas em detrimento das mensagens multi-pacotes [11]. 
 
III. Distribuição do Atraso 
A melhor forma de analisar o atraso é separá-lo em duas partes, uma fixa ou 
determinística (Dd) e outra indeterminada ou estocástica (Ds). O atraso fixo depende do caminho 
escolhido e não é determinado pelas normas de qualidade de serviços, mas sim pelo mecanismo 
de configuração. Apenas o atraso indeterminado, mais especificamente um dos componentes, 
o atraso de fila, é determinado pelas normas. 
Antes de apresentar as equações para o atraso determinístico e para o estocástico é 
necessário discutir uma característica do atraso de processamento (Dp). Ele é determinado pelo 
poder computacional do nó, pela complexidade dos protocolos e dificilmente é afetado pelo 
tráfego na rede. Entretanto, o atraso de processamento varia de pacote para pacote devido às 
múltiplas tarefas executadas no roteador, portanto também possui uma parte indeterminada [3, 
7]. Logo, Dp é dividido em duas partes, uma fixa (Dpd) e outra indeterminada (Dps): 
𝐷𝑝 = 𝐷𝑝𝑑 + 𝐷𝑝𝑠 
Agora é possível obter as equações separadas para o atrasos fixo (Dd) e para o atraso 
indeterminado (Ds): 
𝐷𝑑 = 𝐷𝑝𝑑 + 𝐷𝑡 + 𝐷𝑒𝑤 
𝐷𝑠 = 𝐷𝑝𝑠 + 𝐷𝑞 
3 
 
Umas típica distribuição de atraso fim-a-fim é mostrada na Figura 1. Cerca de 80% 
das distribuições de atraso pertencem a essa classe conhecida com o heavy-tail, outras 
distribuições de atraso são estudadas em [3, 7]. 
Figura 1 – Histograma de distribuição heavy-tail com a separação entre Dd e Ds. 
 
Fonte: BOVY, C. J. et al., 2002 
O atraso estocástico é fortemente influenciado pelo tráfego, o modelo analítico de 
Poisson foi bastante utilizado mas estudos comprovaram que o tráfego na rede é melhor 
modelado utilizando processos auto-similares devido a função de densidade da cauda cair mais 
lentamente que uma exponencial. A cauda é regida pela lei de potência Pr(X(t) > x) ∼ Kx−α, 
com um índice de cauda α ∈ (0, 2) e uma expansão da constante K [10]. 
Modelos usando Poisson ou outros que não refletem exatamente a dependência de 
longo alcance em tráfego real resultará em simulações e análises que subestimam 
significativamente as medidas de desempenho, tais como atraso médio de pacotes ou tamanho 
máximo da fila [13]. O modelo de Poisson falha em demonstrar a influência de vários fatores 
importantes como tamanho do buffer e duração do congestionamento para o tamanho da fila e 
consequentemente para o atraso. 
 
IV. Atraso de Fila 
Para iniciar um estudo sobre o atraso de fila é importante entender como ele varia em 
função da intensidade do tráfego, esse estudo é feito por Kurose e Ross (2010). Tomando a 
como a taxa média com que os pacotes chegam a fila (pacotes/segundo), R como a taxa de 
transmissão de dados (bits/segundo), L como o tamanho do pacote (bits), então a intensidade 
do tráfego (It) é dada por: 
4 
 
𝐼𝑡 = 
𝐿𝑎
𝑅
 
Se It > 1 então a velocidade com que os bits chegam a fila excederáa velocidade com 
que eles podem ser transmitidos para fora da fila. Nessa situação a fila tenderá a aumentar sem 
limite e o atraso tenderá ao infinito, entretanto a fila possui um limite, o tamanho do buffer, 
uma fila cheia provoca perda de pacotes deteriorando com facilidade a qualidade de serviço da 
rede. 
Para o caso em que It ≤ 1, o atraso na fila será influenciado pela natureza do tráfego. 
Se pacotes chegarem a cada L/R segundos, então a fila estará vazia e não haverá atraso no envio. 
Se pacotes chegarem em rajadas, mas periodicamente, poderá ter um significativo atraso de fila 
médio. Os pacotes que estão na fila sofrem são diferentes, se N pacotes chegarem ao mesmo 
tempo a cada (L/R) N segundos, então o primeiro pacote não sofrerá atraso, o segundo sofrerá 
atraso de L/R segundos e o enésimo de (N-1) L/R segundos. 
Para garantir que os serviços na rede não sofram atrasos de fila muito longos, 
especificações de garantia foram estabelecidas pela IETF [15] levando em consideração um 
modelo de fluido no qual a geração de pacotes é representada por um fluido e o número de 
pacotes na fila é obtido por equações que regem a variação do fluxo. O atraso de fila é medido 
em função de dois parâmetros o tamanho do buffer (B) e a taxa de transmissão de dados (R). 
Esses dois valores estão sobre o controle da aplicação, se o atraso for maior que o esperado, a 
aplicação pode manipular esses valores de forma a reduzi-lo. 
Outros dois termos de erro são importantes para avaliar o atraso de fila, eles descrevem 
o desvio local máximo do modelo de fluido. O termo C é o erro dependente da taxa de 
transmissão R, representa o atraso que um pacote pode experimentar devido aos parâmetros de 
taxa de fluxo. O termo D é o erro por elemento independente de R, representa a pior variação 
do tempo através do elemento da rede. O elemento da rede deve se assegurar que o atraso de 
fila (Dq) para qualquer pacote seja: 
𝐷𝑞 < (
𝐵
𝑅
+
𝐶
𝑅
+ 𝐷) 
Entre as categorias, o atraso de fila sempre foi o mais preocupante, falhas no controle 
do atraso de fila podem provocar problemas graves, nas seções seguintes são apresentadas 
questões intrinsecamente relacionadas ao atraso e tamanho de fila. Ao compreendê-las é 
possível ter uma noção da necessidade de tantos estudos e esforços direcionados a esse tipo de 
atraso. 
 
V. Perda de Pacote 
Em situações normais, perda de pacote ocorre aleatoriamente e com pouca frequência 
devido a erros de transferência (<1%). Entretanto, em situações de congestionamento, quando 
o tráfego está muito intenso, a fração de pacotes perdidos aumenta significativamente [2, 8, 9]. 
Isso ocorre porque o buffer está cheio e, sem espaço para armazenar, o roteador deverá descartar 
os pacotes que estão chegando. 
Quando um pacote é perdido, a aplicação tenta o reenvio. Se a rede estiver 
congestionada, continuar tentando o reenvio até que o pacote encontre espaço na fila apenas 
5 
 
fará com que o congestionamento se agrave e a fila dificilmente diminuirá. Essa situação será 
aprofundada em VI. 
Na tentativa de evitar filas cheias e perda de pacote verificou-se ao longo dos anos um 
aumento significativo no tamanho dos buffers, o que acabou gerando outro problema conhecido 
como bufferbloat que será abordado em VIII. 
 
VI. Congestionamento 
Congestionamento ocorre quando a demanda de um recurso excede a capacidade 
disponível. Os efeitos de tal congestionamento incluem longos atrasos na entrega de dados, 
desperdício de recursos devido à perda de pacotes e até mesmo a ocorrência de colapsos, nos 
quais praticamente toda a comunicação na rede cessa. Em outubro de 1986 a Internet sofreu o 
primeiro de uma série de “colapsos de congestionamento”, durante este período a taxa de 
transferência de dados entre LBL e UC Berkeley caiu de 32 Kbps para 40 bps. 
Uma rede sobrecarregada ou congestionada é identificada através da perda de pacotes, 
que se torna significativo apenas quando a fila está cheia e o tráfego intenso, e através de 
transmissão interrompida por timeout, que geralmente ocorre devido à perda de pacotes. 
A carga sobre a rede pode ser medida através do tamanho médio da fila em intervalos 
fixos de tempo, aproximadamente o tempo de ida e volta de um pacote (RTT). Se Li é a carga 
em um intervalo de tempo i, uma rede é dita não congestionada quando Li varia muito pouco 
no intervalo de tempo. 
𝐿𝑖 = 𝑁 (N constante) 
Se a rede está sujeita a congestionamento, o modelo de ordem zero se torna inválido e 
o tamanho médio da fila se torna a soma de dois termos. O N representa a taxa de chegada de 
novo tráfego e o atraso relacionado a ele, enquanto que o novo termo representa o que ainda 
resta do tráfego do intervalo de tempo anterior e os efeitos dessa sobra, como retransmissão 
devido a timeout. 
𝐿𝑖 = 𝑁 + 𝛾𝐿𝑖−1 
Quando a rede está congestionada, γ se torna grande e o tamanho da fila cresce 
exponencialmente. Para que a rede se estabilize, γ voltar a ser zero, a fontes do tráfego devem 
desacelerar, no mínimo tão rapidamente quanto as filas estão crescendo [8]. 
Há duas estratégias para lidar com o congestionamento. Uma delas é denominada 
“congestion control” que age apenas quando o congestionamento é detectado, enquanto a outra 
é denominada “congestion avoidance” com avanços direcionados para o gerenciamento ativo 
de fila (AQM) e age quando o congestionamento é esperado [14]. 
A estratégia para evitar o congestionamento consiste em duas partes. Primeiro a rede 
deve ser capaz de sinalizar as fontes de tráfego que um congestionamento está ocorrendo ou 
prestes a ocorrer, em contrapartida, as fontes devem desacelerar o tráfego enquanto receberem 
o sinal e acelerarem quando deixarem de receber. 
A outra parte da estratégia consiste em reduzir o tamanho da janela W indicado no 
cabeçalho TCP do pacote. O decréscimo d é multiplicativo e se torna exponencial caso o 
6 
 
congestionamento persista. O tamanho da janela deve retornar ao normal ao fim do 
congestionamento [8]. 
𝑊𝑖 = 𝑑𝑊𝑖−1 (d < 1) 
 
VII. Gerenciamento Ativo de Fila e o Algoritmo RED 
Algoritmos de gerenciamento de fila administram o comprimento das filas de pacotes, 
descartando pacotes quando necessário ou conveniente evitando atrasos de fila muito grandes. 
Tradicionalmente, quando não há AQM, é definido um tamanho máximo em termo de pacotes 
para cada fila, ela deve aceitar pacotes até que seu comprimento máximo seja alcançado e então 
rejeita pacotes até que a fila diminua ao terminar de enviar um dos pacotes. 
Esta técnica é conhecida como "queda de cauda", uma vez que o pacote que chegou 
mais recentemente é descartado quando a fila está cheia. Este método tem duas desvantagens 
importantes. Em algumas situações ela permite que alguns fluxos monopolizem o espaço de 
fila, impedindo que outras conexões obtenham espaço no buffer. Também permite que a fila 
fique cheia ou quase cheia por longos períodos de tempo [4]. É importante reduzir o tamanho 
da fila em seu estado estável, caso contrário, mesmo em uma situação normalizada, os pacotes 
terão de sofrer um atraso de fila considerável. 
O ponto forte do gerenciamento ativo de filas é impedir que o buffer estoure, ele reage 
ao congestionamento rejeitando pacotes antes da fila encher. Descartar pacotes antes do 
transbordamento do buffer, permite que roteadores controlem quando e quantos pacotes irão 
descartar. Um dos mais conhecidos algoritmos de gerenciamento ativo de filas é o Random 
Early Detection (RED). 
O RED descarta pacotes probabilisticamente. A probabilidade de descartar um pacote 
aumenta à medida que o tamanho de fila médio, estimado em certo período de tempo, também 
cresce. De forma que, se a fila estevevazia em um passado recente, os pacotes não serão 
descartados, entretanto, se recentemente a fila esteve cheia ou quase cheia, indicando 
congestionamento persistente, pacotes recém chegados estarão suscetíveis a rejeição. Em 
resumo, o RED é composto por duas partes: a estimativa do tamanho médio da fila e a decisão 
de ter ou não de descartar um pacote [6]. 
De forma simples, um mecanismo de gerenciamento ativo de filas pode fornecer as 
seguintes vantagens para fluxos responsivos (que desaceleram na ocorrência de um 
congestionamento): reduz o número de pacotes descartados em roteadores, proporciona atrasos 
inferiores e permite que novas conexões obtenham espaço no buffer. 
 
VIII. Bufferbloat 
Devido às dificuldades para se implementar AQM’s, se tornou comum a ideia de que 
buffers maiores impediriam o problema de filas cheias. Infelizmente isso acabou gerando um 
problema conhecido como bufferbloat, buffers excessivamente largos e frequentemente cheios 
[5]. Como observado anteriormente em atraso de fila, quando uma fila tende a aumentar sem 
limites, o atraso de fila tende ao infinito. Buffers excessivamente largos, permitem filas 
7 
 
excessivamente grande e atrasos de fila absurdamente maiores. Isso fez com que atrasos de fila 
passa da ordem de milissegundos para vários segundos [12]. 
É importante destaca que filas/buffers em si não são o problema. A fonte do problema 
está no descompasso entre o tamanho da janela do pacote e o largura de banda do gargalo da 
rede. Buffers são colocados em frente a enlaces de comunicação para absorver os pacotes que 
chegam e não podem ser atendidos enquanto outros pacotes estiverem ocupando o enlace, a fila 
gerada nesse processo é a fila boa. Os pacotes não podem chegar ao destino mais rápido do que 
o tempo que leva para enviar um pacote no enlace com a menor taxa de transferência [5]. 
Quando o fluxo de chegada de pacotes se estabiliza, a fila não aumenta nem diminui, 
gerando apenas excesso de atraso, essa é a fila ruim. O caminho para detectar o bufferbloat é 
separar o bom do ruim. A fila boa desaparece em cerca de um RTT, enquanto que a fila ruim 
persiste por vários RTT. Uma maneira para separar os dois tipos de fila é levar em consideração 
o comprimento mínimo da fila ao longo de um intervalo de tempo. 
Os algoritmos CoDel (Controlled Delay Management) usam o comprimento local 
mínimo da fila e o tempo de permanência do pacote através da fila [12]. O menor atraso de fila 
para determinado intervalo é armazenado. Se o tempo de permanência na fila é maior do que o 
calculado, então o algoritmo descarta pacotes para fazer com que o atraso volte ao tamanho 
apropriado. 
 
Referências 
 
[1] BERTSEKAS, D.; GALLAGHER, R. Data Networks. 2ª ed. Prentice Hall, 1991. 
[2] BOLOT, J.-C. End-to-end packet delay and loss behavior in the Internet. Proc. SIGCOM'93, p. 289-
298, 1993. 
[3] BOVY, C. J.; MERTODIMEDJO, H. T.; HOOGHIEMSTRA, G.; UIJTERWAAL, H.; MIEGHEM, 
P. V. Analysis of end-to-end delay measurements in Internet. Proc. PAM 2002, Mar. 2002. 
[4] BRADEN, B; CLARK, D.; CROWCROFT, J.; DAVIE, B.; DEERING, S.; ESTRIN, D.; FLOYD, 
S.; JACOBSON, V.; MINSHALL, G.; PARTRIDGE, C.; PETERSON, L.; RAMAKRISHNAN, K.; 
SHENKER, S.; WROCLAWSKI, J.; ZHANG, L. Recommendations on queue management and 
congestion avoidance in the internet. Network Working Group, RFC, v. 2309, 1998. 
[5] FLOYD, S.; JACOBSON, V. Random Early Detection gateways for Congestion Avoidance, 
IEEE/ACM Transactions on Networking, v.1 n.4, Agosto 1993, p. 397-413, 1993. 
[6] GETTYS, J.; NICHOLS, K. Bufferbloat: Dark buffers in the Internet. Communications of the ACM, 
v. 55 n. 1, p. 57–65, 2012. 
[7] HOOGHIEMSTRA, G.; MIEGHEM, P. V. Delay distributions on fixed Internet paths. Delft 
University of Technology. 2001. 
[8] JACOBSON, V. Congestion avoidance and control. ACM SIGCOMM Computer Communication 
Review. ACM, p. 314-329, 1988. 
[9] KUROSE, J.F.; ROSS, K.W. Redes de Computadores e a Internet: Uma Abordagem Top-Down. 5ª 
ed. Pearson Education, 2010. 
[10] LIEBEHERR, J.; BURCHARD, A.; CIUCU, F. Delay bounds in communication networks with 
heavy-tailed and self-similar traffic. IEEE Transactions on Information Theory, v. 58, n. 2, p. 1010-
1024, 2012. 
8 
 
[11] MILLS, D. Internet delay experiments. RFC 889, 1983. 
[12] NICHOLS, K.; VAN JACOBSON. Controlling Queue Delay. Queue, v. 10, n. 5. 2012. 
[13] PAXSON, V.; FLOYD, S. Wide Area Traffic: The Failure of Poisson Modeling. IEEE/ACM Trans. 
Networking, vol. 3, no. 3, 1995, p. 226-244, 1995. 
[14] RYU, S.; RUMP, C.; QIAO, C. Advances in internet congestion control. Communications Surveys 
& Tutorials, IEEE, v. 5, n. 1, p. 28-39, 2003. 
[15] SHENKER, S.; PARTRIDGE, C.; GUERIN, R. Specification of guaranteed quality of service. 
Network Working Group, RFC, v. 2212, 1997.

Outros materiais

Outros materiais