LINUX.ORG.RU
ФорумAdmin

Шейпинг исходящего трафика


0

2

Добрый день. Помогите пожалуйста разобраться в чем дело? Мне нужно настроить отслеживание исходящего трафика на шлюзе, читая форумы нашел инфу, что для этого необходимо использовать псевдоинтерфейс ifb делать редирект всего трафика на него и уже вешать шейпер на данный псевдоинтерфейс. Вопрос в создании данного интерфейса:

modprobe ifb
ip link set dev ifb0 up
tc qdisc add dev eth1 ingress/n tc filter add dev eth1 parent ffff: protocol ip u32 match / u32 0 0 action mirred egress redirect dev ifb0

В результате после последнего действия получаю ошибку:

Action 4 device ifb0 ifindex 9
RTNETLINK answers: No such file or directory
We have an error talking to the kernel

Что я делаю не так?

tc qdisc add dev eth1 ingress/n tc filter add dev eth1 parent ffff: protocol ip u32 match / u32 0 0 action mirred egress redirect dev ifb0

чё, правда так и написал? =)

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

tc qdisc add dev eth1 ingress tc filter add dev eth1 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0

ну вот так.... не придирайтесь, очепятался немного

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

tc qdisc add dev eth1 ingress tc filter add dev eth1 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0
очепятался немного

и сейчас тоже?

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

хз, умвр, по крайней мере такой ошибки не возникает если эти 4 команды правильно ввести

af5 ★★★★★ ()
Последнее исправление: af5 (всего исправлений: 2)

Для исходящего трафика ifb не нужен. Нужно шейпить прямо на интерфейсе. Ifb нужен для шейпинга входяшего.

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

нет, в общем случае ifb вообще не нужен, но если на внешнем интерфейсе нат, то исходящий трафик надо шейпить на ifb

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

ТС нат как то не упоминал.

юзкейс этих команд именно для ситуации когда на входящем интерфейсе нат.

А то что вы описали - это не исходящий трафик, а входящий на downlink интерфейсе.

входящий трафик не шейпят, поэтому его делают исходящим (в данном случае для ifb0)

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

входящий трафик не шейпят, поэтому его делают исходящим (в данном случае для ifb0)

Спасибо что научили меня.

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

Если все настроите верно). Неплохо бы только описать подробнее трафик откуда куда шейпить собрались и вот ситуацию с нат огласить.

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

нат есть, работает на внешнем интерфейсе,

Описание задачи:

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

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

На внутреннем интерфейсе вы будете шейпить исходящий-из-интернетов трафик. А на ifb0 - исходящий-из-локалки

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

т.е. без ifb0 никак не обойтись в случае, если я хочу отслеживать с какой скоростью каждый пользователь отдает что-либо во внешний мир?

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

В вашем случае стоит делать с ifb. Но если вот прямо религия не позволяет есть варианты:
- imq (кажется уже мертво)
- полисинг, а не шейпинг, прямо на внутреннем интерфейсе.
- tc skbedit - по полю priority метить клиентов на интерфесе к юзерам , а потом на апстрим интерфейсе разбрасывать по классам. (костыли)
- iptables mark (костыли еще хуже)

Можно еще придумать вариантов типа выстрелить в ногу, но ifb все же самый юзабельный.

ventilator ★★★ ()
Последнее исправление: ventilator (всего исправлений: 1)
Ответ на: комментарий от ventilator

я за день кое-что понял. Вот что я делаю для определения скорости скачивания:


tc qdisc add dev ifb0 root handle 1: htb
tc class add dev ifb0 parent 1: classid 1:1 htb rate 90kbps ceil 90kbps
tc filter add dev ifb0 parent 1: protocol ip prio 1 u32 match ip src xx.xx.xx.xx/32 flowid 1:1

начинаю качать wget'ом, пакеты понятно идут на eth0, я делаю редирект на ifb0
tc qdisc add dev eth0 ingress
tc filter add dev eth0 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0

Срабатывает ограничение в 90kbps, но мне то надо узнать скорость скачивания/отдачи. Выполняю команду:
tc -s class show dev ifb0 classid 1:1
Ее вывод:
class htb 1:1 root prio 0 rate 720000bit ceil 720000bit burst 1599b cburst 1599b
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate XXXXbit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 17776960 ctokens: 17776960
Как я понял поле rate ХХХХbit есть искомая величина скорости скачивания. Пол задачи есть. А теперь вопрос! Где посмотреть скорость отдачи?

з.ы. Поле sent это СУММАРНОЕ кол-во отданных байт.

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

Так вам трафик шейпить или считать надо? не могу понять
Если считать то ставьте nfsen
Или iftop чтоб по-быстрому глянуть

af5 ★★★★★ ()
Последнее исправление: af5 (всего исправлений: 1)
Ответ на: комментарий от vaclandic

Как я понял поле rate ХХХХbit есть искомая величина скорости скачивания. Пол задачи есть. А теперь вопрос! Где посмотреть скорость отдачи?

Это и есть скорость отдачи.
Скорость закачки смотрите на внутреннем интерфейсе.

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

т.е. если я вешаю шейпер на внутренний интерфейс, он показывает мне скорость скачивания, а если я если я повешу его на внешний интерфейс то поле rate ХХХХbit будет показывать мне скорость отдачи?

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

http://pastebin.com/NSgMrrMC - пример моего скрипта нарезки скорости

Мониторинг примерно таким скриптом:

#!/bin/bash

export n=114
watch -n1 '
 tc -s class show dev ku0 classid 1:${n};
 tc -s class show dev ifb0 classid 1:${n};
'
unset n

При просмотре онлайн видео на компе с адресом xxx.114 сейчас показало:

class htb 1:114 root prio 0 rate 2400Kbit ceil 2400Kbit burst 1599b cburst 1599b 
 Sent 125982194 bytes 85801 pkt (dropped 16173, overlimits 0 requeues 0) 
 rate 1113Kbit 94pps backlog 0b 0p requeues 0 
 lended: 42320 borrowed: 0 giants: 0
 tokens: -5008036 ctokens: -5008036

class htb 1:114 root prio 0 rate 460000bit ceil 460000bit burst 1599b cburst 1599b 
 Sent 2711414 bytes 45290 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 22872bit 49pps backlog 0b 0p requeues 0 
 lended: 45231 borrowed: 0 giants: 0
 tokens: 26886854 ctokens: 26886854

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