Re: Limiter la vitesse de download

Top Page

Reply to this message
Author: Frédéric
Date:  
To: Guilde
Subject: Re: Limiter la vitesse de download
Le 20/09/2016, Frédéric a écrit :

> Hello,
>
> J'ai des soucis avec mon routeur, qui plante la connexion dès que
> j'utilise toute la bande passante (pendant un gros téléchargement).
>
> Du coup, je voudrais limiter la vitesse de download sur ma machine.
>
> Quelqu'un aurait-il un bout de script qui permet de faire ça simplement ?
> J'en ai trouvé sur le net, mais qui ne fonctionne pas :o(


Bon, j'ai finalement trouvé ; en fait, dans les codes que j'avais vu, il
fallait que ça se fasse sur un routeur (entrée par une interface, sortie
par une autre).

Si on veut le faire sur une machine en bout, il faut créer une interface
de type ifb (Intermediate Functional Block).

Ci-joint le code que j'ai écris, qui est une synthèse de plusieurs codes.

Si vous voyez des trucs louches, n'hésitez pas à commenter ; je ne
maîtrise pas tout, même si j'ai à peu près saisi ce que ça fait...

--------------------------------------------------------------------

#!/bin/bash

# Rates
UPLINK=1Mbps
DOWNLINK=1Mbps

# Interfaces
IFB=ifb0
DEV=eth0

start()
{
    modprobe ifb
    ip link set dev $IFB up


    tc qdisc add dev $DEV ingress
    tc filter add dev $DEV parent ffff: protocol ip u32 match ip \
      dst 0/0 flowid 1:1 action mirred egress redirect dev $IFB


    tc qdisc add dev $DEV root handle 1:0 htb default 1
    tc class add dev $DEV parent 1:0 classid 1:1 htb rate ${UPLINK}


    tc qdisc add dev $IFB root handle 1:0 htb default 1
    tc class add dev $IFB parent 1:0 classid 1:1 htb rate ${DOWNLINK}
}


stop()
{
    tc qdisc del dev $DEV root
    tc qdisc del dev $DEV ingress
    tc qdisc del dev $IFB root


    rmmod ifb
}



case "$1" in

  start)
    start
    ;;


  stop)
    stop
    ;;


*)

    echo "Usage: speed_limit.sh {start|stop}"
    ;;
esac


exit 0

-- 
    Frédéric