Eu sei que posso moldar o tráfego de saída com tc
uma ferramenta semelhante. No entanto, quero moldar o tráfego de entrada agora – na verdade, quero priorizar o download de arquivos de determinado tipo por meio de uma conexão lenta e com perdas.
Eu sei que o motivo tc
só pode moldar o tráfego de saída: o próprio host não tem controle direto sobre a quantidade de tráfego de entrada. Por outro lado, o TCP possui algumas medidas incorporadas que evitam que o tráfego TCP transborde em uma conexão lenta. Então, posso alterar algo no cabeçalho TCP para que o host remoto pense que minha conexão é mais lenta do que pensa?
Suponha que eu consiga definir a marca correspondente em ambos os tipos de conexões com iptables
. Existe alguma maneira de reduzir a largura de banda de entrada das conexões do primeiro tipo, mas somente se houver conexões do segundo tipo?
Responder1
Você está se referindo à notificação de congestionamento explícito TCP (http://en.wikipedia.org/wiki/Explicit_Congestion_Notification.) Não acho que o que você está procurando seja tecnicamente possível, pois no momento em que o pacote é recebido pelo próprio servidor Linux, você já os recebeu e está tentando ajustá-los após o fato .
Realisticamente, se você deseja QOS ou modelagem de tráfego, isso deve ser feito em seu provedor upstream, não no receptor. Em outras palavras, toda modelagem de tráfego é feita na origem e não no destino.
Responder2
Existem soluções muito boas para isso disponíveis, infelizmente nenhuma delas está disponível gratuitamente no Linux. Atrasar ou descartar os pacotes funciona muito, muito mal. Você pode fazer isso se for necessário, mas os resultados são, na melhor das hipóteses, adequados. No momento em que você recebe um pacote, ele já consumiu a largura de banda de entrada que você está tentando proteger.
A maneira correta de fazer isso é desfigurar os anúncios da janela TCP de saída, anunciando uma janela menor para o outro lado. Existem implementações de hardware e software que fazem isso, mas que eu saiba, nenhuma está disponível gratuitamente no Linux.
Esseroteiroexplica uma maneira de fazer isso e tem alguns comentários muito detalhados explicando a teoria e as limitações.