Tenho dificuldade em derivar um modelo / equação matemática para estimar a latência de ida e volta entre dois nós que se comunicam usando TCP / IP. Os nós estão trocando dados com base no protocolo HTTP. Nesse modelo, os fatores mais importantes a serem estudados são a distância física entre dois nós na rede, número de saltos intermediários, largura de banda, atraso no processamento a cada salto. Pesquisei na web, mas não consegui encontrar nada nesse sentido, mas encontrei algo sobre redes de comutação de circuitos e protocolo UDP. Posso personalizá-los para caber no TCP?
ipv4
tcp
protocol-theory
layer4
transport-protocol
Espanta
fonte
fonte
httping
httping -Gbg www.google.com -c 5
Respostas:
Este é um processo muito complicado, portanto, é extremamente difícil formular uma equação que possa ser útil para prever com precisão as RTTs. Na melhor das hipóteses, eu diria que você poderia criar um modelo que, usando um monte de médias para cada estágio, pudesse ajustar se você "soubesse" melhor de uma situação em particular o mais próximo possível. Atualmente, estou estudando isso para que eu possa lhe dizer o que sei até agora (desde o início, começando na camada física):
Veja minhas perguntas no Electronics SE; Atraso de codificação da Ethernet e a relação com a classificação de frequência do cabo e Velocidade da eletricidade (propagação de sinal?) Através do cobre para atraso de comunicação . Como você usaria velocidades padronizadas (100 Mbps, 1 Gbps, 10 Gbps etc.), não trate fibra ou cobre de maneira diferente. O "atraso" nos dois é quase o mesmo, mas o cobre não pode transmitir um sinal tão obviamente. Eu tenho essa pergunta no site da Physics SE, que eu sei a resposta agora. Eu só preciso encontrar tempo para corrigi-lo, então fique de olho nisso, se você estiver interessado (estarei postando mais algumas perguntas relacionadas ao uso de telecomunicações de fibra para as quais agora eu sei a resposta quando tiver uma chance )
Muito mais atraso será adicionado pelos dispositivos no final de um link. Não existe uma maneira padrão de dizer "oh 2 switches ao longo de um caminho é atraso de Xms, 4 switches são 2 * Xms, 2 roteadores são Yms ... etc". Supondo que você esteja usando, digamos, 1Gpbs, por exemplo, e os dispositivos no caminho a seguir na taxa de linha, sabemos que é 1000000000bps; portanto, a interface física está executando a uma taxa de codificação fixa (variando de 1 nanossegundo por bit até o máximo do esquema de codificação de símbolos em uso é, como 10b )
Existem três tipos principais de atraso (na camada física) dos quais você precisa estar ciente e levar em consideração; Atraso de serialização, atraso de codificação, atraso de propagação (e atraso de processamento, atraso de enfileiramento, atraso de codificação e decodificação, mas estes estão acima da camada física, mas precisam ser mencionados!). Estes documentos estão razoavelmente bem documentados na Internet, VoIP: uma análise aprofundada , slide 13 aqui , carrega no Google Scholar e muito mais.
À medida que avançamos na pilha de protocolos, eu trabalhava no pressuposto de que o MAC de destino está em cada tabela de comutadores e, na camada IP, o MAC de destino nas tabelas ARP. O atraso extra induzido por esses processos de descoberta ocorre apenas para o primeiro pacote em um fluxo, para que eles possam ser contornados aumentando os tempos limites e enviando ARPs gratuitos etc.
À medida que você chega à camada do aplicativo, isso fica realmente difícil, porque isso depende do servidor (por exemplo) processar a solicitação, que estará sujeita a um atraso de interrupção. O número de interrupções necessárias para processar a solicitação e as alternâncias de contexto devido ao carregamento é imprevisível.
Gostaria muito de ajudá-lo com sua pergunta. Infelizmente, é tudo o que tenho tempo agora. Vou atualizar esta resposta talvez mais tarde hoje à noite ou amanhã, eu queria postar o que tenho até agora.
Nesse meio tempo, a maioria das pessoas tende a trabalhar com o valor do atraso em uma camada física de cobre / fibra de cerca de 0,6 * c (C = velocidade da luz). Além disso, você precisa pensar na troca de ACKs do TCP a cada pacote X, o que difere se você estiver usando o SACK, por exemplo, e se estiver usando jumbo-frames e / ou tamanho MSS maior (agora o MTU também precisa ser considerado!) , se você estiver enviando mais ACKs intermediários (se o volume de dados transferidos for do seu interesse). Você também precisa levar em consideração o famoso produto de atraso de largura de banda e não fazer a interpretação estúpida que eu fiz dessa página. Comecei a fazer várias calculadoras de dados simples (e muito feias) aqui. Novamente um trabalho em andamento, tentarei atualizá-los em breve. Pretendo adicionar uma calculadora semelhante ao que você está tentando fazer. Também fiz algumas calculadoras de luz e fibra, se você estiver interessado, mas, novamente, não há tempo !, ainda não consegui carregá-las. Vou tentar o mais rápido possível para atualizar esta resposta um pouco mais, nos próximos dias.
PS Eu esqueci de mencionar QoS! Se a QoS estiver em jogo em qualquer lugar do caminho, será muito difícil calcular a RTT!
fonte
(Quero ressaltar que outras pessoas publicaram excelentes respostas sobre como os atrasos e outros funcionam e o que os causa. Mas o OP perguntou sobre modelagem; um modelo básico é simples e basta inserir números de exemplo. Se você quer saber por que os atrasos são o que são e, em seguida, veja as respostas de todos os outros: ^)
A latência da rede é simplesmente o tempo de trânsito de um ponto final para o outro ponto final, abrangendo N saltos entre eles .
Então você tem N segmentos (saltos) com nós intermediários N-1. Cada nó tem um atraso (o efeito cumulativo de várias coisas nesse nó, como atraso na fila, atrasos no processamento, etc.) e cada segmento tem um atraso no trânsito. No geral, são 2N - 1 variáveis independentes. Então é seg1 + nó1 + seg2 ... + nó (N-1) + segN Um salto, é apenas = seg1, duas esperanças são seg1 + nó1 + seg2, etc.
Em seguida, você deve definir o que são todas essas peças. Portanto, você pode construir uma rede modelo com uma rede CATV, um link de satélite, um link de fibra óptica, uma Ethernet, etc. Para cada uma dessas tecnologias, é necessário procurar informações de exemplo.
Os atrasos no trânsito seriam aproximadamente o tamanho dos dados dividido pela velocidade de transmissão do segmento. Se você precisar de um modelo mais preciso, adicione o atraso no tempo de vôo - aproximadamente o comprimento do segmento, dividido pela velocidade do fluxo de dados (aproximadamente a velocidade da luz). Isso importa se você tiver um link de satélite; A subida e descida do satélite geossíncrono é significativa.
Os atrasos em cada nó que você terá que estimar com base no equipamento que você está colocando no seu modelo.
Se você deseja a latência do aplicativo (por exemplo, o atraso até o início do fluxo de dados de uma transferência FTP), acumula-se contando quantas vezes sua latência de rede entra em jogo. Por exemplo, um handshake TCP de três vias adiciona a latência de rede tripla e assim por diante, criando o que o aplicativo vê.
fonte
Você pode estimar a latência de ida e volta fazendo uma captura de pacotes em ambos os lados e depois medindo o atraso entre as solicitações que saem da máquina monitorada e as respostas que retornam. Por exemplo, se você marcar a hora em que um SYN saiu para a máquina remota e marcar a hora em que a resposta SYN + ACK chegou, a diferença forneceria uma estimativa muito boa da latência TCP de ida e volta.
Lembre-se de que isso será maior que a verdadeira latência da rede e quanto maior depende de quão pesada a máquina está.
fonte
O atraso entre dois hosts dependerá de vários fatores:
Atraso na propagação é quanto tempo leva fisicamente para os pacotes viajarem entre dois locais. A velocidade da luz na fibra é de cerca de 200000 km / s. A Suécia, onde moro, tem cerca de 1570 km, o que equivale a 7,85 m, mas, na realidade, é mais porque essa é a distância via vista dos pássaros.
Atraso de serialização é quanto tempo leva para serializar o pacote através do meio físico, ou seja, as interfaces no dispositivo de rede. Se você possui uma conexão de 2 Mbit e está enviando um pacote de 1500 bytes que seria de 6 ms para serializar o pacote (12000/2000000).
Atraso no enfileiramento / armazenamento em buffer é quanto tempo o pacote precisa permanecer em uma fila / buffer antes de ser enviado à interface. Dependendo da velocidade da interface e de como os buffers grandes são usados, isso pode ser o próximo, sem nada ou com um atraso significativo.
Depois, haveria algum atraso nos hosts para gerar os pacotes e para o aplicativo lidar com eles. Existem aplicativos para medir o atraso HTTP. As pessoas não aceitam muito atraso nos sites antes de desistir deles, por isso é um fator importante.
fonte