sábado, 24 de julho de 2010

De onde vem a latência da rede ?

Hilton Garcia Fernandes



No texto Latência e largura de banda [1], neste blog Tecnologias sem Fio [2], foi discutido o modelo linear


no qual a latência α é um custo constante em tempo da transmissão de n bytes. O fator β multiplicado pelo número de bytes, é associado à máxima banda disponível na rede. Isto é: 1/β é a banda máxima disponível.

Entendidos os conceitos no modelo linear, falta tentar entender o que causa os custos.

A latência pode ser associada a vários fatores

  • em uma rede cabeada do tipo Ethernet [3], é necessário evitar colisões [4]. Ou seja: dois pacotes serem enviados ao mesmo tempo na mesma rede. Há um algoritmo chamado CSMA/CD [5], que permite detectar colisões.
    Seu custo é aproximadamente fixo para um único pacote;


  • em uma rede sem fio do tipo Wi-Fi [6], há um problema semelhante. Neste caso, devido a características do meio físico das ondas eletromagnéticas, o algoritmo é chamado de CSMA/CA [7], e busca evitar colisões (ou collision avoidance), em vez de detectá-las.
    Aqui, o custo também é relativamente fixo para um único pacote;


  • outro problema, a cada dia mais relevante no mundo de internets [8], ou redes interconectadas -- e da Internet [9], ou grande rede mundial -- é a transferência entre redes, ou roteamento [10]. Neste caso, os pacotes de informação são reescritos, para levar em conta a entrada em outras rede. E isto tem um custo, de novo a cada pacote;


  • ainda há um outro componente dos custos fixos: o chamado encapsulamento e desencapsulamento de pacotes de dados -- tanto do ponto de vista teórico da arquitetura OSI [11], ou daquele em geral implementado, a arquitetura TCP/IP [12].
    Em um caso ou outro, a rede é dividida em diversos níveis (ou camadas), o que permite, por exemplo, a independência de tecnologias -- redes usando diferentes suportes físicos conseguem comunicar entre si: computadores ligados em redes 3G [13] podem se falar com outros em redes DSL [14]
    O custo de de transferir pacotes entre diferentes camadas da rede também ocorre pacote a pacote.


  • fragmentação de pacotes [15]: pacotes muito grandes podem ter que ser quebrados em pedaços menores, se forem maiores que o tamanho máximo de pacotes naquele segmento de rede, o MTU [16].




Todos estes custos ocorrem pacote a pacote. Sendo assim, se uma mensagem for suficientemente longa para ser quebrada em vários pacotes na rede, sofrerá várias vezes as mesmas negociações de colisão, de roteamento etc. ?

De fato, isto ocorrerá. Mas há efeitos que minoram este poder multiplicativo:

  • aquisição do meio: quando um computador começa a transmitir pela rede, mantém durante algum tempo o direito de transmitir. Isto está incorporado aos algoritmos de tratamento de colisões justamente para minimizar os custos de seguidas negociações;


  • pipelining [17], ou efeito "linha de montagem": em uma linha de montagem [18], o fato de haver várias unidades trabalhando em paralelo em diferentes partes de um bem a ser montado garante que o intervalo entre o término de diferentes produtos seja menor do que o tempo total de produção de um produto.
    Um velho professor explicava pipelines dizendo que o tempo total para produzir um Volkswagen Sedan (o popular fusca) era de 48 horas. Contudo, o tempo entre um Sedan e outro era de apenas 40 minutos.
    No caso de uma transmissão de rede, há pelo menos dois níveis de paralelismo: a CPU, que processa o encapsulamento dos pacotes e a placa de rede, que faz as negociações de nível mais baixo, necessárias para encaminhar a mensagem pela rede, fazendo negociações CSMA/CA, por exemplo.




Em próximas postagens em Tecnologias sem Fio serão apresentados mais detalhes da estimativa dos importantes parâmetros latência e largura de banda, bem como parâmetros complementares -- que podem melhorar a compreensão das redes.

Referências


[1] Latência e largura de banda
http://tecnologiassemfio.wordpress.com/2010/07/07/latencia-e-largura-de-banda/
Visitado em 16/07/2010

[2] Tecnologias sem Fio
http://tecnologiassemfio.wordpress.com/
Visitado em 16/07/2010

[3] Ethernet
https://secure.wikimedia.org/wikipedia/pt/wiki/Ethernet
Visitado em 16/07/2010

[4] Colision domain
https://secure.wikimedia.org/wikipedia/en/wiki/Collision_domain
Visitado em 16/07/2010

[5] CSMA/CD
https://secure.wikimedia.org/wikipedia/en/wiki/CSMA/CD
Visitado em 16/07/2010

[6] Wi-Fi
https://secure.wikimedia.org/wikipedia/pt/wiki/Wi-fi
Visitado em 16/07/2010

[7] CSMA/CA
https://secure.wikimedia.org/wikipedia/en/wiki/CSMA/CA
Visitado em 16/07/2010

[8] Internetworking
https://secure.wikimedia.org/wikipedia/en/wiki/Internetworking
Visitado em 16/07/2010

[9] Internet
https://secure.wikimedia.org/wikipedia/en/wiki/Internet
Visitado em 16/07/2010

[10] Roteamento
https://secure.wikimedia.org/wikipedia/pt/wiki/Roteamento
Visitado em 16/07/2010

[11] OSI model
https://secure.wikimedia.org/wikipedia/en/wiki/OSI_model

Visitado em 16/07/2010

[12] TCP/IP model
https://secure.wikimedia.org/wikipedia/en/wiki/TCP/IP_model
Visitado em 16/07/2010

[13] 3G
https://secure.wikimedia.org/wikipedia/pt/wiki/3G
Visitado em 16/07/2010

[14] DSL
https://secure.wikimedia.org/wikipedia/pt/wiki/
Visitado em 16/07/2010

[15] IP fragmentation
https://secure.wikimedia.org/wikipedia/en/wiki/IP_fragmentation
Visitado em 16/07/2010

[16] Maximum transfer unit
https://secure.wikimedia.org/wikipedia/en/wiki/Maximum_transmission_unit
Visitado em 16/07/2010

[17] Pipelining
https://secure.wikimedia.org/wikipedia/en/wiki/Pipelining
Visitado em 16/07/2010

[18] Assembly line
https://secure.wikimedia.org/wikipedia/en/wiki/Assembly_line
Visitado em 16/07/2010

Nenhum comentário:

Postar um comentário