The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Шейпинг в линукс"
Отправлено aleks, 07-Фев-06 14:26 
В итоге я реализовал шейпинг следующим образом:
# Создаю очереди на внешнем (eth1) и внутреннем (eth2) интерфейсе
tc qdisc add dev eth1 root handle 1:0 cbq avpkt 10000 bandwidth 100mbit
tc qdisc add dev eth2 root handle 2:0 cbq avpkt 10000 bandwidth 100mbit

# Создаю 2 класса трафика на внешнем и внутреннем интерфейсах
tc class add dev eth1 parent 1:0 classid 1:10001 cbq rate 128kbit allot 1500 bounded isolated
tc class add dev eth2 parent 2:0 classid 2:20001 cbq rate 128kbit allot 1500 bounded isolated

# Загоняю исходящий траффик относительно интерфейсов сервера в соответствующие классы.
# IP рабочей станции в локалке 1.1.1.101, локальная сеть 1.1.1.0/24
tc filter add dev eth1 parent 1:0 protocol ip handle 10001 fw flowid 1:10001
tc filter add dev eth2 parent 2:0 protocol ip handle 20001 fw flowid 2:20001
iptables -t mangle -A POSTROUTING -d 1.1.1.101 -s ! 1.1.1.0/24 -j MARK --set-mark 20001
iptables -t mangle -A PREROUTING  -s 1.1.1.101 -d ! 1.1.1.0/24 -j MARK --set-mark 10001

Проверка на практике показала что вроде бы всё получилось. Трафик жмётся в обе стороны. Причём при одновременной заливке и скачивании, сумарная пропускная способнось немного привышает 128К. На фре решение безусловно выглядело красивее :).

Но вот с чем я попутно столкнулся. На самом деле интерфейсы eth1 и eth2 у меня объединины в бридж с помощью "brctl":
# brctl addbr br0
# brctl addif br0 eth1
# brctl addif br0 eth2
# ifconfig br0 up
Я подумал что интерфейс br0 является исходящим и для пакетов уходящих через бридж от компов локалки в интернет и для пакетов приходящих из интернет в локалку. Исходя из этих соображений я решил повесить очередь, классы и фильтры на интерфейс br0 (тем самым я надеялся получить полный аналог pipe - FreeBSD):

tc qdisc add dev br0 root handle 1:0 cbq avpkt 10000 bandwidth 100mbit
tc class add dev br0 parent 1:0 classid 1:10001 cbq rate 128kbit allot 1500 bounded isolated
tc filter add dev br0 parent 1:0 protocol ip handle 10001 fw flowid 1:10001
iptables -t mangle -A POSTROUTING -d 1.1.1.101 -s ! 1.1.1.0/24 -j MARK --set-mark 10001
iptables -t mangle -A PREROUTING  -s 1.1.1.101 -d ! 1.1.1.0/24 -j MARK --set-mark 10001

Но к сожалению такая конфигурация не заработала. Трафик ходил через сервер без всякого шейпинга. По всей видимости "tc" не может работать с бридж-интерфейсом. Или я что-то сделал не так?

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру