Não é possível obter tc para limitar o tráfego de rede

6

Com base nesta seção do Roteamento avançado de Linux & Como fazer o controle de tráfego , não consigo usar tc para limitar a velocidade da rede no meu computador.

O roteador é um modem Motorola SurfBoard com alguns recursos de roteamento e firewall. A máquina que eu quero limitar o tráfego é 192.168.0.5 , e também o script está sendo executado em 192.168.0.5 .

Aqui está minha adaptação dos comandos no link acima para /etc/NetworkManager/dispatcher.d/ :

#!/bin/sh -eu

# clear any previous queuing disciplines (qdisc)
tc qdisc del dev wlan0 root 2>/dev/null ||:

# add a cbq qdisc; see 'man tc-cbq' for details
if [ $2 = up ]; then
    # set to a 3mbit interface for more precise calculations
    tc qdisc add dev wlan0 root handle 1: cbq avpkt 1000  \
        bandwidth 3mbit

    # leave 30KB (240kbps) to other machines in the network
    tc class add dev wlan0 parent 1: classid 1:1 cbq      \
        rate 2832kbit allot 1500 prio 5 bounded isolated

    # redirect all traffic on 192.168.0.5 to the previous class
    tc filter add dev wlan0 parent 1: protocol ip prio 16 \
        u32 match ip dst 192.168.0.5 flowid 1:1

    # change the hashing algorithm every 10s to avoid collisions
    tc qdisc add dev wlan0 parent 1:1 sfq perturb 10
fi

O problema é que tentei configurar 2832kbit para valores muito pequenos para teste (como 16kbit ), mas ainda posso navegar na web em alta velocidade. O problema não está em NetworkManager , porque estou testando o script manualmente.

EDITAR: Descobri que alterando dst 192.168.0.5 para src 192.168.0.5 , a velocidade de upload é limitada de forma confiável, mas ainda não entendi como fazer com que a velocidade do download funcione, o que é o mais importante para mim.

    
por Teresa e Junior 06.09.2014 / 23:40

1 resposta

1

Você não pode limitar o tráfego de entrada na máquina de destino porque já chegou.

Para fazer corretamente o que você quer fazer, você precisa colocar tc em seu gateway. Esta provavelmente não é uma opção para você, mas é o caminho.

O tráfego de entrada só pode ser policiado, na medida em que descarta pacotes que excedem o limite de velocidade. Isso é ineficiente porque agora você usa mais largura de banda para receber o mesmo pacote novamente. Isso funciona um pouco mais ou menos porque o TCP é projetado para lidar com a perda de tráfego diminuindo a velocidade quando os pacotes são perdidos, mas você acaba ficando cada vez mais lento e mais rápido à medida que o TCP é dimensionado.

No entanto, existe uma maneira de transformar o seu sistema em um gateway, empurrando um 'Dispositivo de Bloqueio Funcional Intermediário ' no caminho da sua rede. Eu sugiro ler sobre isso e, em seguida, tentar isso para limitar a taxa de entrada.

Veja esta discussão 'Teoria' sobre modelagem / policiamento do INGRESS / EGRESS no site do Gentoo.

    
por 15.09.2014 / 14:03