Suponha que um escritório de pessoas deseje limitar os downloads HTTP a um máximo de 40% da largura de banda de sua velocidade de conexão com a Internet, para que não bloqueie outro tráfego.
Dizemos "ele não é suportado no seu firewall" e eles dizem que a linha inevitável "costumávamos fazer isso com o nosso Netgear / DLink / DrayTek".
Pensando nisso, um download é assim:
HTTP GET request
Server sends file data as TCP packets
Client acknowledges receipt of TCP packets
Repeat until download finished.
A velocidade é determinada pela rapidez com que o servidor envia dados para você e pela rapidez com que você os reconhece.
Portanto, para limitar a velocidade do download, você tem duas opções:
1) Instrua o servidor a enviar dados para você mais lentamente - e acho que não há nenhum recurso de protocolo para solicitar isso em TCP ou HTTP.
2) Reconheça os pacotes mais lentamente, limitando sua velocidade de upload e também arruinando sua velocidade de upload.
Como os dispositivos limitam isso? Existe uma maneira padrão?
fonte
Respostas:
O próprio TCP implementa o controle de congestionamento.
Esses limitadores de taxa simplesmente jogam pacotes fora do limite. O TCP lida com isso, garantindo que todos os pacotes cheguem e cheguem em ordem; o cliente não aceita os pacotes descartados e é reenviado pelo servidor.
A pilha TCP do servidor reenviará os pacotes e também reduzirá um pouco a taxa de envio, pois indica que há congestionamento entre ele e o cliente. Ele acelerará até que o limitador de taxa solte pacotes novamente e assim por diante.
fonte
A melhor descrição que eu já ouvi que fez sentido do método de limitação inerente do TCP foi um podcast recente do Security Now . Para citar Steve Gibson:
fonte
3) Seu dispositivo roteador / firewall coloca os dados recebidos em um depósito de QoS e esvazia esse depósito apenas na taxa solicitada. Os dados recebidos se adaptarão a essa velocidade, pois os computadores internos verão apenas o recebimento de confirmação nessa velocidade. Além disso, o pacote descartado ocasional (propositalmente) funciona muito bem para diminuir a velocidade da conexão.
Ao tentar encontrar um dispositivo que lide com isso, procure QoS (Qualidade de Serviço) na configuração / documentação. As caixas Linux (ou BSD) também são úteis para isso.
fonte
Você usa um firewall ou dispositivo que suporte a limitação de QoS (qualidade de serviço).
Você pode criar um sistema Linux para atuar como o gateway do escritório e usar a modelagem de tráfego para conseguir isso. Só precisa de várias NICs instaladas e, em seguida, todas as máquinas apontadas são como um gateway.
Como bônus, você também pode configurar um servidor proxy para facilitar o tráfego. Algo como Lula. Pode haver distribuições de dispositivo de roteamento turnkey que também podem fazer isso.
fonte
O protocolo HTTP não fornece recursos para limitar a largura de banda usada, e mesmo que isso acontecesse, seria uma configuração do lado do cliente, na qual os administradores de rede não poderiam ter nenhum controle.
A limitação de largura de banda (também conhecida como "Qualidade de Serviço") geralmente é gerenciada em roteadores / firewalls, que controlam todo o tráfego de entrada e saída de / para uma rede; os que oferecem suporte a isso geralmente permitem configurar políticas como "permitir que qualquer computador cliente use no máximo 10% de toda a largura de banda disponível" ou "dar prioridade ao SMTP sobre o FTP para que os emails possam fluir mesmo quando alguém estiver fazendo um download pesado" "
Como exatamente isso é feito depende do roteador / firewall usado, mas a maneira mais básica é simplesmente jogar fora os pacotes que excedem os limites configurados; O TCP garantirá que eles sejam retransmitidos e eventualmente passará pelo gargalo.
fonte