+ Responder ao Tópico



  1. #1

    Question Controlar Upload de clientes em um provedor

    Boa noite amigos, estou tendo um problema com meu controle de banda no IpCop, eu uso o HTB e estou satisfeito, é perfeito, mais não estou sabendo como controlar a saída dos meus clientes, pois o controle está sendo feito por uma classe por cliente e ficou atribuído a mesma velocidade para down e up, e quando alguns deles fazem upload rebenta a minha rede. Segue as regras que uso:

    #Classes por Ip's

    tc qdisc add dev eth0 root handle 1: htb default 30
    tc class add dev eth0 parent 1: classid 1:1 htb rate 720kbps
    tc class add dev eth0 parent 1:1 classid 1:21 htb rate 128kbit ceil 300kbit
    tc class add dev eth0 parent 1:1 classid 1:22 htb rate 64kbit ceil 300kbit
    tc class add dev eth0 parent 1:1 classid 1:23 htb rate 64kbit ceil 300kbit
    tc class add dev eth0 parent 1:1 classid 1:24 htb rate 64kbit ceil 300kbit
    tc class add dev eth0 parent 1:1 classid 1:25 htb rate 64kbit ceil 300kbit
    tc class add dev eth0 parent 1:1 classid 1:26 htb rate 64kbit ceil 300kbit
    tc class add dev eth0 parent 1:1 classid 1:27 htb rate 64kbit ceil 300kbit
    tc class add dev eth0 parent 1:1 classid 1:28 htb rate 64kbit ceil 300kbit
    tc class add dev eth0 parent 1:1 classid 1:29 htb rate 64kbit ceil 300kbit
    tc class add dev eth0 parent 1:1 classid 1:30 htb rate 300kbit ceil 300kbit

    #Filtros

    tc filter add dev eth0 protocol ip parent 1:0 prio 4 u32 match ip dst 10.0.0.21 flowid 1:21
    tc filter add dev eth0 protocol ip parent 1:0 prio 4 u32 match ip src 10.0.0.21 flowid 1:21
    tc filter add dev eth0 protocol ip parent 1:0 prio 5 u32 match ip dst 10.0.0.22 flowid 1:22
    tc filter add dev eth0 protocol ip parent 1:0 prio 5 u32 match ip src 10.0.0.22 flowid 1:22
    tc filter add dev eth0 protocol ip parent 1:0 prio 5 u32 match ip dst 10.0.0.23 flowid 1:23
    tc filter add dev eth0 protocol ip parent 1:0 prio 5 u32 match ip src 10.0.0.23 flowid 1:23
    tc filter add dev eth0 protocol ip parent 1:0 prio 5 u32 match ip dst 10.0.0.24 flowid 1:24
    tc filter add dev eth0 protocol ip parent 1:0 prio 5 u32 match ip src 10.0.0.24 flowid 1:24
    tc filter add dev eth0 protocol ip parent 1:0 prio 5 u32 match ip dst 10.0.0.25 flowid 1:25
    tc filter add dev eth0 protocol ip parent 1:0 prio 5 u32 match ip src 10.0.0.25 flowid 1:25
    tc filter add dev eth0 protocol ip parent 1:0 prio 5 u32 match ip dst 10.0.0.26 flowid 1:26
    tc filter add dev eth0 protocol ip parent 1:0 prio 5 u32 match ip src 10.0.0.26 flowid 1:26
    tc filter add dev eth0 protocol ip parent 1:0 prio 5 u32 match ip dst 10.0.0.27 flowid 1:27
    tc filter add dev eth0 protocol ip parent 1:0 prio 5 u32 match ip src 10.0.0.27 flowid 1:27
    tc filter add dev eth0 protocol ip parent 1:0 prio 5 u32 match ip dst 10.0.0.28 flowid 1:28
    tc filter add dev eth0 protocol ip parent 1:0 prio 5 u32 match ip src 10.0.0.28 flowid 1:28
    tc filter add dev eth0 protocol ip parent 1:0 prio 5 u32 match ip dst 10.0.0.29 flowid 1:29
    tc filter add dev eth0 protocol ip parent 1:0 prio 5 u32 match ip src 10.0.0.29 flowid 1:29

    Aqui estão alguns em uso, notem que tem a mesma definição de velocidade para down e up, já que o src e dst é atribuído para a mesma classe.

    Acho que é necessário utilizar o comando police rate no filtro, mais não sei como faço isso.

    Grato pela ajuda

  2. #2

    Padrão

    para tu ter uma idéia tu pode usar o htb-tools e gerar o script e dar ir implementando,
    comando
    htb ethx generate
    Download
    $TC qdisc add dev $interface root handle 1: htb
    $TC class add dev $interface root classid 1: htb rate 512kbit
    $TC class add dev $interface parent 1: classid 1:$mark htb rate "$download"kbit ceil "$download"Kbit burst 15k prio 1 quantum 1536 mtu 1500
    $TC qdisc add dev $interface parent 1:$mark handle $mark: sfq perturb 10
    $TC filter add dev $interface parent 1:0 protocol ip prio 1 u32 match ip dst ${remoteIP}/32 flowid 1:${mark}


    Upload
    $TC qdisc add dev eth1 root handle 1: htb
    $TC class add dev eth1 root classid 1: htb rate 512kbit
    $TC class add dev eth1 parent 1: classid 1:$mark htb rate "$download"kbit ceil "$download"Kbit burst 15k prio 1 quantum 1536 mtu 1500
    $TC qdisc add dev eth1 parent 1:$mark handle $mark: sfq perturb 10
    $TC filter add dev eth1 parent 1:0 protocol ip prio 1 handle $mark fw classid 1:${mark}

    e não se esqueça de marca os pacotes com o iptables

    iptables -t mangle -A POSTROUTING -d ip -j MARK --set-mark 21
    iptables -t mangle -A FORWARD -s ip -j MARK --set-mark 21

    Testa ae e posta o resultado depois

  3. #3

    Smile

    Acabei de fazer uma modificação, parece que funcionou, mais só vou ter certeza a noite quando tiver mais usuários, amanhã posto o resultado...valew

  4. #4

    Question

    Deu certo não, tô enrrolado com esse negócio! Tem como você postar ai um exemplo usado minhas configurações? Não estou entendendo direito. É criada a mesma classe tanto para up e Down?

  5. #5

    Padrão

    Citação Postado originalmente por Josue Guedes Ver Post
    Deu certo não, tô enrrolado com esse negócio! Tem como você postar ai um exemplo usado minhas configurações? Não estou entendendo direito. É criada a mesma classe tanto para up e Down?
    tenta colocar assim na tua regra de upload

    Subistitui essa
    tc filter add dev eth0 protocol ip parent 1:0 prio 5 u32 match ip src 10.0.0.29 flowid 1:29
    por essa e testa.
    tc filter add dev eth0 parent 1:1 protocol ip prio 1 handle 29 fw classid 1:29
    iptables -t mangle -A FORWARD -s 10.0.0.29 -j MARK --set-mark 29

    ou se não experimenta colocar o parent como 1:1

  6. #6

    Smile

    Beleza, amigo, me fala mais uma coisa: Presciso setar a velocidade de cada um para 32kbit, onde eu vou fazer isso? Devo criar mais outra sequência de classes? Como ficaria? Já tenho a classe 1:, seria outra, tipo 2: ? Desde já agradeço sua atenção.