Ultimamente eu estava trabalhando no upload de arquivos grandes para o site, esse upload consumiu toda a largura de banda e prejudicou minha rede. Então eu implementei um pedaço de 1 MB por segundo e está funcionando, mas agora estou pensando em usar o controle de tráfego para obter o mesmo com melhor resultado.
Minha pergunta: o controle de tráfego é tão inteligente e pode distinguir entre a navegação em www e o upload / download em massa de arquivos grandes em www.
tc qdisc add dev imq0 root handle 1:0 htb default 666
tc class add dev imq0 parent 1:0 classid 1:1 htb rate 90000kbit ceil 90000kbit
tc class add dev imq0 parent 1:1 classid 1:888 htb rate 10000kbit ceil 40000kbit prio 0 # browse www traffic
tc class add dev imq0 parent 1:1 classid 1:666 htb rate 10000kbit ceil 40000kbit prio 1 # bulk www traffic
tc filter add dev imq0 protocol ip parent 1:1 prio 2 u32 match ip tos 0x08 0xff flowid 1:666 # bulk www traffic
tc filter add dev imq0 protocol ip parent 1:0 prio 2 u32 match ip sport 80 0xffff flowid 1:888 # http
tc filter add dev imq0 protocol ip parent 1:0 prio 2 u32 match ip sport 443 0xffff flowid 1:888 # https
Algo assim funcionaria? (Não posso verificar agora.)
Sua solução depende do comportamento do navegador da Web para definir o campo IP ToS de acordo. Isso pode ser invocado apenas em ambiente confiável.
Posso escrever facilmente regras de mangle em minha máquina para nivelar todos os ToS em um único valor e suas regras de TC não seriam capazes de distinguir meu volume da navegação.
Além disso, eu não teria certeza de que todos os navegadores e outros softwares http (s) sempre usam os mesmos ToS para as mesmas coisas. Existem muitos desses softwares: wget e outros downloaders; espelhamento de sites (o wget também pode fazer isso, mas existe um software especializado) que baixa não apenas alguns arquivos grandes, mas também todos os requisitos da página; muitos navegadores, incluindo firefox, lynx, links, ie, edge, chrome-based - todos eles usam mecanismos diferentes e podem exibir comportamentos de rede diferentes; Coisas relacionadas ao REST, que apenas enviam pequenas mensagens por http para frente e para trás. No mundo da web também existe a solução Websocket, que é completamente diferente do que você conhece sobre http.
Portanto, a dependência de ToS é útil apenas se você controlar cuidadosamente sua rede.
No caso geral, a diferença é que a navegação usa rajadas curtas de tráfego, enquanto o download preenche a capacidade do canal. Você pode definir uma velocidade média de HTB bastante baixa, que corresponderá à velocidade média de navegação e download, mantendo o tamanho do bucket (tamanho de rajada) bastante grande para acomodar a página da Web completa. Em seguida, a navegação na Web será experimentada com a mesma rapidez (por causa do grande bucket), mas como as buscas de página são raras, haveria tempo suficiente para reabastecer o bucket para a próxima página. Por outro lado, o download esgotaria o balde e não daria tempo livre para reabastecê-lo, sendo tão lento quanto seu limite.
Muitas ferramentas de upload populares fornecem um mecanismo para limitar a quantidade de largura de banda que a transferência pode consumir.
Se você estiver usando
rsync
para fazer upload de seus arquivos grandes, use a--bwlimit
opção:Se você estiver simplesmente usando
scp
, use a-l
opção:Se você estiver usando
wpu
, ele também reconhecerá o-l
switch (também--limit-rate=
):ou
Se você estiver usando outra coisa, consulte a
man
página do seu carregador de escolha para ver se ele oferece um recurso semelhante.