Linux Advanced Routing & Traffic Control HOWTO (Hubert, Graf) - страница 61

. Либо объем трафика остается ниже avrate и фильтр классифицирует его как сконфигурированный classid, либо, в случае превышения заданной границы, выполняется указанное действие, которое по-умолчанию выполняет переклассификацию.

Для оценки загруженности канала, ядро использует экспоненциальное взвешенное смещенное среднее значение, которое менее чувствительно к коротким пикам.

12.3.1.2. Token Bucket Filter.

Используются следующие параметры:

• burst/buffer/maxburst

• mtu/minburst

• mpu

• rate

Которые ведут себя идентично описанным в разделе Token Bucket Filter. Обратите внимание, если вы установите mtu слишком низким, то входящий трафик будет подавлен, в то время как исходящий TBF qdisc передаст с более низкой скоростью.

Еще одно важное отличие такого фильтра – он может только либо пропустить пакет, либо отбросить. Он не может задержать пакет на какое-то время.

12.3.2. Действия в случае превышения ограничения.

Если правило "решит", что произошло превышение заданного предела, то оно выполнит соответствующее действие. Имеются четыре вида действий:

continue

Выполняется в случае несовпадения с условной частью правила, чтобы передать пакет следующему фильтру.

drop

Очень жестокое действие, которое просто отказывает "в праве на жизнь" трафику, объем которого превысил заданную величину. Часто используется во входных фильтрах и имеет ограниченное применение. Например, представим, что имеется сервер имен, который не в состоянии работать при нагрузке выше чем 5Мбит/сек, в этом случае можно построить входной фильтр, который ограничит входящий трафик для нашего сервера.

Pass/OK

Пропустить трафик. Может использоваться для того, чтобы отключить сложный фильтр, оставив его на месте.

reclassify

Действие, заданное по-умолчанию. Наиболее часто сводится к переклассификации в Best Effort (в данном контексте фразу "Best Effort" следует понимать как — "лучшее из оставшегося". прим. перев. )

12.3.3. Примеры.

Единственный, известный нам, реальный пример приведен в разделе Защита от SYN flood.

Ограничение входящего icmp-трафика до 2 Кбит. При превышении предела — пакеты отбросить.

>tc filter add dev $DEV parent ffff: \

> protocol ip prio 20 \

> u32 match ip protocol 1 0xff \

> police rate 2kbit buffer 10k drop \

> flowid :1

Ограничить размер пакетов (т.е. все пакеты, имеющие размер более чем 84 байта, будут сброшены)

>tc filter add dev $DEV parent ffff: \

> protocol ip prio 20 \

> u32 match tos 0 0 \

> police mtu 84 drop \

> flowid :1

Этот метод может использоваться для полного подавления icmp-трафика:

>tc filter add dev $DEV parent ffff: \