LINUX.ORG.RU
ФорумAdmin

Шейпинг трафика с помощью tc. Простенький вопрос


0

1

Если я с помощью фильтров отнесу трафик с нескольких нужных мне хостов к одному классу, у которого будет ограничение на полосу пропускания, то это ограничение будет действовать на суммарный трафик от этих хостов, или трафик каждого хоста будет иметь это ограничение, независимо от остальных?

Ну или иными словами. Если я хочу для 10 хостов ограничить трафик по 512 kbit для каждого. То достаточно сделать один класс с ограничением в 512 kbit, или придется делать 10 классов с ограничением в 512 kbit для каждого хоста персонально?

весь трафик попавший в определённый класс «суммируется» и после этого наследует ограничения этого класса. иными словами: 1000 соединений с любого количества хостов будут делить между собой ограничения класса, в который попали (это один из вариантов распределения полосы)

cac2s
()
Ответ на: комментарий от cac2s

Т.е. чтобы нарезать полосу для каждого хоста персонально, нужно создасть столько классов, сколько хостов.

zloy_starper ★★★
() автор топика
Ответ на: комментарий от zloy_starper

именно.

ещё есть возможность делить ширину класса поровну между потребляющими в данный момент хостами:

#!/bin/bash

IPT="/sbin/iptables"
TC="/sbin/tc"
IP="/bin/ip"

DEV_IN="eth0"
RATE_IN="2500"

$TC qdisc del dev $DEV_IN root >/dev/null 2>&1
$IP link set dev $DEV_IN qlen 32
$TC qdisc add dev $DEV_IN root handle 1: htb
  $TC class add dev $DEV_IN parent 1: classid 1:1 htb rate ${RATE_IN}kbit
    $TC class add dev $DEV_IN parent 1:1 classid 1:10 htb rate $[50*$RATE_IN/100]kbit ceil ${RATE_IN}kbit
      $TC qdisc add dev $DEV_IN parent 1:10 handle 10: sfq perturb 10
        $TC filter add dev $DEV_IN parent 10: protocol ip handle 10 flow hash keys dst divisor 256

$IPT -t mangle -D POSTROUTING -o $DEV_IN -j SHAPER-IN >/dev/null 2>&1
$IPT -t mangle -F SHAPER-IN >/dev/null 2>&1
$IPT -t mangle -X SHAPER-IN >/dev/null 2>&1

$IPT -t mangle -N SHAPER-IN
$IPT -t mangle -I POSTROUTING -o $DEV_IN -j SHAPER-IN

$IPT -t mangle -A SHAPER-IN -d 192.168.0.0/24 -j CLASSIFY --set-class 1:10

благодаря фильтру $TC filter add dev $DEV_IN parent 10: protocol ip handle 10 flow hash keys dst divisor 256, добавленного к дисциплине класса 1:10, ширина, равная $[50*$RATE_IN/100]kbit, т.е. 50%, будет делиться более-менее поровну между активными в данный момент хостами подсети 192.168.0.0/24

cac2s
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.