
Uma conexão via satélite geralmente tem um RTT em torno de 500ms. As conexões geralmente sofrem velocidades de transferência abaixo do ideal, apesar de grandes quantidades de largura de banda, porque as confirmações TCP demoram muito para chegar.
Meu entendimento é que uma boa maneira de resolver esse problema com conexões TCP é definir o tamanho da janela TCP para a velocidade da conexão (em bits) multiplicada pelo RTT (em segundos). Portanto, uma conexão de 1Mbps via satélite deve ter um tamanho de janela de 512kb.
Que armadilhas estão envolvidas nisso? Existem outros ajustes semelhantes que devem ser feitos para otimizar as conexões via satélite? Entendo que muitos sistemas operacionais modernos modificarão o tamanho da janela automaticamente, mas serão agressivos o suficiente para tornar os tamanhos das janelas grandes o suficiente para funcionar na comunicação via satélite?
Além disso, assumirei que um tamanho de janela grande não é desejável em redes que descartam pacotes com frequência, pois a retransmissão será no tamanho da janela e você poderá dedicar grande parte de sua largura de banda à sobrecarga de retransmissão.
Obrigado, ainda estou aprendendo muito sobre networking e agradeço sua contribuição.
Responder1
Geralmente, você deve usar uma pilha TCP que implemente o dimensionamento adequado do Windows. Mas é claro que você está certo ao dizer que o tamanho da sua janela precisa corresponder ao produto de atraso de largura de banda (BDP). Caso você tenha um BDP variável, você pode definir o tamanho da janela para algo que você esperaria como o "pior" caso comum. Curiosamente, a maioria das conexões não sofre muito se o tamanho da janela for maior que o BDP (não deveria sercaminhomuito grande, é claro), mas apresentam desempenho degradado se o tamanho da janela for muito menor que o BDP.
Para verificar se sua pilha TCP/IP está aumentando adequadamente o tamanho da janela, você deve empregar o Wireshark ou qualquer outro farejador de tráfego. Você pode olhar diretamente para o sinalizador de tamanho da janela no cabeçalho (com os fatores de escala em mente!). O Wireshark também pode mostrar o tamanho efetivo da janela levando em consideração o fator de escala.
Confira este tutorial sobre como plotar o tamanho da janela TCP em função do tempoaqui.
Responder2
Isso é totalmente acadêmico porque ninguém usa TCP em conexões via satélite. Não conheço um único provedor de satélite que faça isso. Todos eles executam protocolos específicos de satélite no satélite e colocam o terminal TCP na estação terrestre.
Quando uma máquina na rede envia um pacote TCP SYN para o terminal satélite, o terminal satélite envia uma solicitação de proxy TCP para o satélite. Isso instrui a estação terrestre a abrir uma conexão TCP com algum servidor na Internet. A estação terrestre fala TCP com o servidor da Internet. O terminal de satélite não fala TCP através do satélite, mas em vez disso fala um protocolo otimizado para uso de satélite. A estação terrestre atua como um proxy entre o terminal satélite e o servidor da Internet.
Responder3
Por uma questão de conveniência, existem calculadoras de produtos com atraso de largura de banda disponíveis - uma dessas calculadoras éaqui. Quanto às janelas grandes que causam problemas em caso de perda de pacotes - é exatamente por isso que as janelas TCP são variáveis. Após a perda de pacotes, o tamanho da janela diminuirá, permitindo menos dados em voo e uma conseqüente redução na velocidade de transmissão. Após um período de tempo, o tamanho da janela será renegociado.
Na verdade, sua latência não é tão ruim para o satélite - um RTT de 1s a 1M é uma janela de apenas 125K. Um bom número de sistemas operacionais modernos suportaria isso facilmente, portanto, modificações adicionais podem não ser necessárias.
Além disso, alguns tiveram muita sorte com os vários otimizadores de WAN disponíveis no mercado. Eles tendem a otimizar os tamanhos das janelas TCP, bem como a utilizar cache e compactação para impulsionar mais o link e melhorar a capacidade de resposta aparente.