Назад | Перейти на главную страницу

Как настроить управление полосой пропускания IP с помощью TC?

Требования:

В каждой группе может быть произвольное количество пользователей. Пропускная способность для любой конкретной группы составляет 1000 кбит / с. Пропускная способность для каждого пользователя в группе составляет 70 кбит / с. В любое время ни один пользователь не должен использовать пропускную способность более 70 кбит / с. Я использую tc & iptables & ipset.

ipset -L slowips

Name: slowips
Type: hash:ip
Revision: 1
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 240
References: 3
Members:
172.16.79.3
172.16.79.4

IPTABLES:

iptables -t mangle -I POSTROUTING -m set --match-set slowips dst -j CLASSIFY --set-class 1:12

Мой сценарий для TC:

#!/bin/bash
tc qdisc del dev eth0 root
tc qdisc del dev eth1 root

tc qdisc add dev eth0 parent root handle 1: hfsc default 11
tc class add dev eth0 parent 1: classid 1:1 hfsc sc rate 1000kbps ul rate 1000kbps
tc class add dev eth0 parent 1:1 classid 1:11 hfsc sc rate 1000kbps ul rate 1000kbps
tc class add dev eth0 parent 1:1 classid 1:12 hfsc sc rate 70kbps ul rate 70kbps

tc qdisc add dev eth0 parent 1:11 handle 11:1 pfifo
tc qdisc add dev eth0 parent 1:12 handle 12:1 pfifo

При описанной выше настройке один пользователь получает полосу пропускания 70 кбит / с, когда другой пользователь входит в систему, пропускная способность 70 кбит / с делится между ними. На самом деле я хочу, чтобы только что вошедший пользователь получил пропускную способность 70 кбит / с, поскольку slab - 1000 кбит / с.