BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 16 июн 2024, 07:13

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 16 ] 
Автор Сообщение
 Заголовок сообщения: WIFI-агент шейпинг
СообщениеДобавлено: 24 сен 2014, 10:31 
Не в сети
Клиент

Зарегистрирован: 10 окт 2012, 17:00
Сообщения: 339
Карма: 0
Настроил шейпинг с привязкой атрибутов к опциям модуля Inet. Получил верное ограничение входящего трафика и отсутствие ограничений на исходящий трафик. Такое поведение верно или нет?

Если нет, то, насколько я понимаю (а понимаю я в шейпинге мало (: ), шейпировать можно только исходящий из интерфейса трафик. Таким образом, в настройках шейпинга должны быть указаны два интерфейса (внутренний и внешний), например, для ограничения "скорости скачивания" правила шейпирования описываются на eth0, для ограничения "отдачи" - на eth1.

В настройках скриптов init_shaping.sh, shape.sh, unshape.sh есть переменные для двух интерфейсов со значениями - INDEV="eth0" и OUTDEV="eth0". Но эти скрипты, похоже, не используются при работе?

В логе manad.out всегда упоминается только eth0:

Цитата:
starting WiFi Manad:Wed Sep 24 13:52:14 2014
MANAD_INTERFACE=eth0
MANAD_PORT=4567

request =add 192.168.101.128 1024 1024
ip=192.168.101.128
downstream=1024
upstream=1024

rule =[OPEN]
/sbin/tc class add dev eth0 parent 1:0 classid 1:3 htb rate 1024kbit burst 4k prio 1
/sbin/tc qdisc add dev eth0 parent 1:3 handle 3: sfq perturb 10 quantum 1500

/sbin/tc class add dev eth0 parent 1:0 classid 1:4 htb rate 1024kbit burst 4k prio 1
/sbin/tc qdisc add dev eth0 parent 1:4 handle 4: sfq perturb 10 quantum 1500

/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 3 u32 match ip dst 192.168.101.128 flowid 1:3

/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 4 u32 match ip src 192.168.101.128 flowid 1:4
[/OPEN]

[CLOSE]
/sbin/tc filter del dev eth0 parent 1:0 protocol ip prio 3
/sbin/tc filter del dev eth0 parent 1:0 protocol ip prio 4

/sbin/tc class del dev eth0 parent 1:0 classid 1:3 htb rate 1024kbit burst 4k prio 1
/sbin/tc class del dev eth0 parent 1:0 classid 1:4 htb rate 1024kbit burst 4k prio 1
[/CLOSE]

execute:

time:Wed Sep 24 13:52:49 2014

/sbin/tc class add dev eth0 parent 1:0 classid 1:3 htb rate 1024kbit burst 4k prio 1
/sbin/tc qdisc add dev eth0 parent 1:3 handle 3: sfq perturb 10 quantum 1500

/sbin/tc class add dev eth0 parent 1:0 classid 1:4 htb rate 1024kbit burst 4k prio 1
/sbin/tc qdisc add dev eth0 parent 1:4 handle 4: sfq perturb 10 quantum 1500

/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 3 u32 match ip dst 192.168.101.128 flowid 1:3

/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 4 u32 match ip src 192.168.101.128 flowid 1:4

delete =
/sbin/tc filter del dev eth0 parent 1:0 protocol ip prio 3
/sbin/tc filter del dev eth0 parent 1:0 protocol ip prio 4

/sbin/tc class del dev eth0 parent 1:0 classid 1:3 htb rate 1024kbit burst 4k prio 1
/sbin/tc class del dev eth0 parent 1:0 classid 1:4 htb rate 1024kbit burst 4k prio 1


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

Цитата:
# tc qdisc show dev eth0
qdisc htb 1: root refcnt 2 r2q 1 default ffff direct_packets_stat 0
qdisc sfq ffff: parent 1:ffff limit 127p quantum 1500b perturb 10sec
qdisc sfq 3: parent 1:3 limit 127p quantum 1500b perturb 10sec
qdisc sfq 4: parent 1:4 limit 127p quantum 1500b perturb 10sec

# tc qdisc show dev eth1
qdisc pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

# tc class show dev eth0
class htb 1:4 root leaf 4: prio 1 rate 1024Kbit ceil 1024Kbit burst 4Kb cburst 1599b
class htb 1:ffff root leaf ffff: prio 3 rate 100000Kbit ceil 100000Kbit burst 4075b cburst 1600b
class htb 1:3 root leaf 3: prio 1 rate 1024Kbit ceil 1024Kbit burst 4Kb cburst 1599b

# tc class show dev eth1

# tc filter show dev eth0
filter parent 1: protocol ip pref 3 u32
filter parent 1: protocol ip pref 3 u32 fh 800: ht divisor 1
filter parent 1: protocol ip pref 3 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:3
match c0a86580/ffffffff at 16
filter parent 1: protocol ip pref 4 u32
filter parent 1: protocol ip pref 4 u32 fh 801: ht divisor 1
filter parent 1: protocol ip pref 4 u32 fh 801::800 order 2048 key ht 801 bkt 0 flowid 1:4
match c0a86580/ffffffff at 12

# tc filter show dev eth1



Что нужно настроить для ограничения исходящего трафика и возможно ли это?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WIFI-агент шейпинг
СообщениеДобавлено: 24 сен 2014, 16:07 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
abu писал(а):
Настроил шейпинг с привязкой атрибутов к опциям модуля Inet. Получил верное ограничение входящего трафика и отсутствие ограничений на исходящий трафик. Такое поведение верно или нет?

Если нет, то, насколько я понимаю (а понимаю я в шейпинге мало (: ), шейпировать можно только исходящий из интерфейса трафик. Таким образом, в настройках шейпинга должны быть указаны два интерфейса (внутренний и внешний), например, для ограничения "скорости скачивания" правила шейпирования описываются на eth0, для ограничения "отдачи" - на eth1.

В настройках скриптов init_shaping.sh, shape.sh, unshape.sh есть переменные для двух интерфейсов со значениями - INDEV="eth0" и OUTDEV="eth0". Но эти скрипты, похоже, не используются при работе?


Это просто значение по умолчанию. По умолчанию он пытается на одном интрефейсе зажать скорость. Чтобы как-то хоть это протсетировать, когда интерфейс всего один. В командах там оба интерфейса присутствуют. Например shape.sh:
Цитата:
##### speed server->client(downstream)
command="/sbin/tc filter add dev $INDEV parent 1:0 protocol ip prio 1 u32 match ip dst $IP flowid 1:$CLASS_DOWN"
echo $command >> shape.out
$command
### speed client->server(upstream)
command="/sbin/tc filter add dev $OUTDEV parent 1:0 protocol ip prio 2 u32 match ip src $IP flowid 1:$CLASS_UP"
echo $command >> shape.out
$command



Если у вас там интерфейса - пропишите его и заработает. Вроде бы на одном интерфейсе нельзя сразу зажимать и входящую и исходящую.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WIFI-агент шейпинг
СообщениеДобавлено: 25 сен 2014, 05:41 
Не в сети
Клиент

Зарегистрирован: 10 окт 2012, 17:00
Сообщения: 339
Карма: 0
В скриптах init_shaping.sh, shape.sh, unshape.sh я прописывал два интерфейса - не работает. Судя по всему, они нигде в других скриптах не используются (в login.sh только есть закомментированная строчка)?

Цитата:
grep -r shap /usr/local/BGInetWiFiAgent/*

/usr/local/BGInetWiFiAgent/login.sh:#use it for shaping
/usr/local/BGInetWiFiAgent/login.sh:#./shape.sh $IP $PARAM1 $PARAM2
/usr/local/BGInetWiFiAgent/shape.sh:echo $command >> shape.out
/usr/local/BGInetWiFiAgent/shape.sh:echo $command >> shape.out
/usr/local/BGInetWiFiAgent/unshape.sh:echo $command >> shape.out
/usr/local/BGInetWiFiAgent/unshape.sh:echo $command >> shape.out


Куда нужно прописать запуск этих скриптов?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WIFI-агент шейпинг
СообщениеДобавлено: 26 сен 2014, 23:30 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Там как-то запутано. Есть как миниум 2 способа
1) Делать как по документации .
поставить в файле conf.sh
Код:
USE_MANAD=1
MANAD_INTERFACE=eth0
MANAD_PORT=4567


Тогда при старте wifi запустится perl-вый скрипт wifi_manad.pl на порту 4567 и он будет зажимать скорость для абонента. И больше никаких скриптов править не надо..Но если смотреть этот скрипт, там видно что используется только один интерфейс. Там надо поправить вот этот блок
команд
Код:
"[OPEN]
/sbin/tc class add dev $MANAD_INTERFACE parent 1:0 classid 1:[N1] htb rate [DOWNSTREAM]kbit burst 4k prio 1
/sbin/tc qdisc add dev $MANAD_INTERFACE parent 1:[N1] handle [N1]: sfq perturb 10 quantum 1500

/sbin/tc class add dev $MANAD_INTERFACE parent 1:0 classid 1:[N2] htb rate [UPSTREAM]kbit burst 4k prio 1
/sbin/tc qdisc add dev $MANAD_INTERFACE parent 1:[N2] handle [N2]: sfq perturb 10 quantum 1500

/sbin/tc filter add dev $MANAD_INTERFACE parent 1:0 protocol ip prio [N1] u32 match ip dst {A}  flowid 1:[N1]

/sbin/tc filter add dev $MANAD_INTERFACE parent 1:0 protocol ip prio [N2] u32 match ip src {A} flowid 1:[N2]
[/OPEN]

[CLOSE]
/sbin/tc filter del dev $MANAD_INTERFACE parent 1:0 protocol ip prio [N1]
/sbin/tc filter del dev $MANAD_INTERFACE parent 1:0 protocol ip prio [N2]

/sbin/tc class del dev $MANAD_INTERFACE parent 1:0 classid 1:[N1] htb rate [DOWNSTREAM]kbit burst 4k prio 1
/sbin/tc class del dev $MANAD_INTERFACE parent 1:0 classid 1:[N2] htb rate [UPSTREAM]kbit burst 4k prio 1
[/CLOSE]";


сюда надо передавать 2 интерфейса, а не один как сейчас. И в командах 2 интерфейса прописать.
Т.е через wifi_manad.pl почти правильно, только надо интерфейс добавить второй.

2) Насчет закоментированных shape.sh/unshape.sh. Возможно они не нужны вообще. Или их можно использовать в более простых случаях.
Смысл wifi_manad.pl - в том, чтобы помнить номера правил, для каждого сервиса для исходящей и входящей скорости нужно генерировать новый номер класса. А с этими скриптами этого не получится. Я попробую разобраться что там задумывалось, возможно их надо удалить. А manad_perl.sh поправить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WIFI-агент шейпинг (CRM)
СообщениеДобавлено: 01 окт 2014, 12:25 
Не в сети
Клиент

Зарегистрирован: 10 окт 2012, 17:00
Сообщения: 339
Карма: 0
Цитата:
сюда надо передавать 2 интерфейса, а не один как сейчас. И в командах 2 интерфейса прописать.
Т.е через wifi_manad.pl почти правильно, только надо интерфейс добавить второй.

А в каких командах два интерфейса прописать? Прописал второй интерфейс вот так:

Цитата:
"[OPEN]
/sbin/tc class add dev $MANAD_INTERFACE parent 1:0 classid 1:[N1] htb rate [DOWNSTREAM]kbit burst 4k prio 1
/sbin/tc qdisc add dev $MANAD_INTERFACE parent 1:[N1] handle [N1]: sfq perturb 10 quantum 1500

/sbin/tc class add dev eth1 parent 1:0 classid 1:[N2] htb rate [UPSTREAM]kbit burst 4k prio 1
/sbin/tc qdisc add dev eth1 parent 1:[N2] handle [N2]: sfq perturb 10 quantum 1500

/sbin/tc filter add dev $MANAD_INTERFACE parent 1:0 protocol ip prio [N1] u32 match ip dst {A} flowid 1:[N1]

/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio [N2] u32 match ip src {A} flowid 1:[N2]
[/OPEN]

[CLOSE]
/sbin/tc filter del dev $MANAD_INTERFACE parent 1:0 protocol ip prio [N1]
/sbin/tc filter del dev eth1 parent 1:0 protocol ip prio [N2]

/sbin/tc class del dev $MANAD_INTERFACE parent 1:0 classid 1:[N1] htb rate [DOWNSTREAM]kbit burst 4k prio 1
/sbin/tc class del dev eth1 parent 1:0 classid 1:[N2] htb rate [UPSTREAM]kbit burst 4k prio 1
[/CLOSE]";


При подключении абонента получаю ошибку:

Цитата:
rule =[OPEN]
/sbin/tc class add dev eth0 parent 1:0 classid 1:3 htb rate 1024kbit burst 4k prio 1
/sbin/tc qdisc add dev eth0 parent 1:3 handle 3: sfq perturb 10 quantum 1500

/sbin/tc class add dev eth1 parent 1:0 classid 1:4 htb rate 1024kbit burst 4k prio 1
/sbin/tc qdisc add dev eth1 parent 1:4 handle 4: sfq perturb 10 quantum 1500

/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 3 u32 match ip dst 192.168.101.128 flowid 1:3

/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 4 u32 match ip src 192.168.101.128 flowid 1:4
[/OPEN]

[CLOSE]
/sbin/tc filter del dev eth0 parent 1:0 protocol ip prio 3
/sbin/tc filter del dev eth1 parent 1:0 protocol ip prio 4

/sbin/tc class del dev eth0 parent 1:0 classid 1:3 htb rate 1024kbit burst 4k prio 1
/sbin/tc class del dev eth1 parent 1:0 classid 1:4 htb rate 1024kbit burst 4k prio 1
[/CLOSE]

execute:

time:Wed Oct 1 16:20:06 2014

/sbin/tc class add dev eth0 parent 1:0 classid 1:3 htb rate 1024kbit burst 4k prio 1
/sbin/tc qdisc add dev eth0 parent 1:3 handle 3: sfq perturb 10 quantum 1500

/sbin/tc class add dev eth1 parent 1:0 classid 1:4 htb rate 1024kbit burst 4k prio 1
/sbin/tc qdisc add dev eth1 parent 1:4 handle 4: sfq perturb 10 quantum 1500

/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 3 u32 match ip dst 192.168.101.128 flowid 1:3

/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 4 u32 match ip src 192.168.101.128 flowid 1:4

RTNETLINK answers: No such file or directory
RTNETLINK answers: No such file or directory
RTNETLINK answers: Invalid argument
We have an error talking to the kernel


delete =
/sbin/tc filter del dev eth0 parent 1:0 protocol ip prio 3
/sbin/tc filter del dev eth1 parent 1:0 protocol ip prio 4

/sbin/tc class del dev eth0 parent 1:0 classid 1:3 htb rate 1024kbit burst 4k prio 1
/sbin/tc class del dev eth1 parent 1:0 classid 1:4 htb rate 1024kbit burst 4k prio 1


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WIFI-агент шейпинг (CRM)
СообщениеДобавлено: 02 окт 2014, 09:27 
Не в сети
Клиент

Зарегистрирован: 10 окт 2012, 17:00
Сообщения: 339
Карма: 0
Продублировал блок команд, описанный в переменной $RULE в wifi_manad.pl полностью для второго интерфейса и добавил:
Код:
#clear all rules
/sbin/tc qdisc del dev eth1  root 2> /dev/null
#root
/sbin/tc qdisc add dev eth1 root handle 1: htb default ffff r2q 1

#default.
/sbin/tc class add dev eth1  parent 1:0 classid 1:ffff htb rate 100mbit burst 4k prio 3.
/sbin/tc qdisc add dev eth1 parent 1:ffff handle ffff: sfq perturb 10 quantum 1500

в скрипт init_manad.sh. Шейпинг заработал в обе стороны, не знаю, правда, верно я сделал или нет. Тестирование продолжу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WIFI-агент шейпинг (CRM)
СообщениеДобавлено: 01 окт 2015, 17:30 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Поменял скрипты в сборке 6.2. Теперь жмется на 2-х разных интерфейсах. Правда в правильности я до конца не уверен.

init_manad.sh

Код:
#clear all rules
/sbin/tc qdisc del dev $MANAD_INTERFACE_IN  root 2> /dev/null
/sbin/tc qdisc del dev $MANAD_INTERFACE_OUT  root 2> /dev/null

#root
/sbin/tc qdisc add dev $MANAD_INTERFACE_IN root handle 1: htb default ffff r2q 1
/sbin/tc qdisc add dev $MANAD_INTERFACE_OUT root handle 1: htb default ffff r2q 1


#default
/sbin/tc class add dev $MANAD_INTERFACE_IN  parent 1:0 classid 1:ffff htb rate 100mbit burst 4k prio 3
/sbin/tc qdisc add dev $MANAD_INTERFACE_IN parent 1:ffff handle ffff: sfq perturb 10 quantum 1500

/sbin/tc class add dev $MANAD_INTERFACE_OUT  parent 1:0 classid 1:ffff htb rate 100mbit burst 4k prio 3
/sbin/tc qdisc add dev $MANAD_INTERFACE_OUT parent 1:ffff handle ffff: sfq perturb 10 quantum 1500


wifi_manad.pl
Код:
$RULE =

"[OPEN]
/sbin/tc class add dev $MANAD_INTERFACE_IN parent 1:0 classid 1:[N1] htb rate [DOWNSTREAM]kbit burst 4k prio 1
/sbin/tc qdisc add dev $MANAD_INTERFACE_IN parent 1:[N1] handle [N1]: sfq perturb 10 quantum 1500

/sbin/tc class add dev $MANAD_INTERFACE_OUT parent 1:0 classid 1:[N1] htb rate [UPSTREAM]kbit burst 4k prio 1
/sbin/tc qdisc add dev $MANAD_INTERFACE_OUT parent 1:[N1] handle [N1]: sfq perturb 10 quantum 1500

/sbin/tc filter add dev $MANAD_INTERFACE_IN parent 1:0 protocol ip prio [N1] u32 match ip dst {A}  flowid 1:[N1]

/sbin/tc filter add dev $MANAD_INTERFACE_OUT parent 1:0 protocol ip prio [N1] u32 match ip src {A} flowid 1:[N1]
[/OPEN]

[CLOSE]
/sbin/tc filter del dev $MANAD_INTERFACE_IN parent 1:0 protocol ip prio [N1]
/sbin/tc filter del dev $MANAD_INTERFACE_OUT parent 1:0 protocol ip prio [N1]

/sbin/tc class del dev $MANAD_INTERFACE_IN parent 1:0 classid 1:[N1] htb rate [DOWNSTREAM]kbit burst 4k prio 1
/sbin/tc class del dev $MANAD_INTERFACE_OUT parent 1:0 classid 1:[N1] htb rate [UPSTREAM]kbit burst 4k prio 1
[/CLOSE]";


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WIFI-агент шейпинг (CRM)
СообщениеДобавлено: 01 окт 2015, 17:35 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Еще мы ее используем всех возможностей tc, не строим хэшмапа для фильтров. Не знаю насколько это актуально, но вот для проводной связи одному из клиентов понадобилось для оптимизации стоить иерархию фильтров, фильтруя на каждом октете(пример выложим в wifi возможно потом, там в принципе в самих скриптах ничего почти не меняется). Тут в wifi у нас все классы и фильтры на одном уровне, при большом количестве пользователей и сетей это может создать большую нагрузку.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WIFI-агент шейпинг (CRM)
СообщениеДобавлено: 27 июн 2016, 13:27 
Не в сети

Зарегистрирован: 30 ноя 2010, 14:22
Сообщения: 118
Карма: 0
На тестовом сервере поднял агента.
Ни как не могу заставить резать исходящий канал, входящий режет нормально,
в Радиусе приходит
Код:
Time: 27.06.2016 10:19:23
Packet type: Access-Accept
Identifier: 106
Authenticator: {45 1C 29 5D 30 0D FB F3 69 AE 3E 78 D3 BC 9E 20}
Attributes:
  WiFi-Downstream-Speed-Limit=8000
  WiFi-Upstream-Speed-Limit=8000

в log/manad.out

Код:
request =add 10.0.6.172 8000 8000
ip=10.0.6.172
downstream=8000
upstream=8000

rule =[OPEN]
/sbin/tc class add dev eth0 parent 1:0 classid 1:3 htb rate 8000kbit burst 4k prio 1
/sbin/tc qdisc add dev eth0 parent 1:3 handle 3: sfq perturb 10 quantum 1500

/sbin/tc class add dev eth1 parent 1:0 classid 1:3 htb rate 8000kbit burst 4k prio 1
/sbin/tc qdisc add dev eth1 parent 1:3 handle 3: sfq perturb 10 quantum 1500

/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 3 u32 match ip dst 10.0.6.172  flowid 1:3

/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 3 u32 match ip src 10.0.6.172 flowid 1:3
[/OPEN]

[CLOSE]
/sbin/tc filter del dev eth0 parent 1:0 protocol ip prio 3
/sbin/tc filter del dev eth1 parent 1:0 protocol ip prio 3

/sbin/tc class del dev eth0 parent 1:0 classid 1:3 htb rate 8000kbit burst 4k prio 1
/sbin/tc class del dev eth1 parent 1:0 classid 1:3 htb rate 8000kbit burst 4k prio 1
[/CLOSE]

execute:


conf.sh
если указать интерфейс исх. и вход. eth1 не режет ни в одну сторону
в инет сервер выходит через eth1
Код:
USE_MANAD=1
MANAD_INTERFACE_IN=eth0
MANAD_INTERFACE_OUT=eth1
MANAD_PORT=4567


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WIFI-агент шейпинг (CRM)
СообщениеДобавлено: 27 июн 2016, 14:11 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
Здравствуйте. Разработчик wifi-агента в данный момент вышел в отпуск до 6.07.

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WIFI-агент шейпинг (CRM)
СообщениеДобавлено: 01 июл 2016, 20:06 
Не в сети

Зарегистрирован: 01 июл 2016, 19:39
Сообщения: 17
Карма: 0
Долго разбирался с вопросом шейпинга исходящего трафика и вот к чему пришел:

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

eth1 - локалка (клиенты)
eth2(nat) - мир

Для инициализации интерфейса ifb0 нужно сначала загрузить модуль управления интерфейсом:
/sbin/modprobe ifb
После успешной загрузки модуля нужно включить интерфейс:
/sbin/ip link set dev ifb0 up
Затем, после того, как интерфейс будет поднят, нужно организовать переадресацию всего исходящего трафика от пользователей на этот интерфейс:
/sbin/tc qdisc add dev eth0 ingress
/sbin/tc filter add dev eth0 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0
Теперь можно смело начинать строить классы и фильтры для входящего к пользователям трафика на интерфейсе eth1, а исходящего – на интерфейсе ifb0.

conf.sh
Код:
#!/bin/sh
...
USE_MANAD=1
MANAD_PORT=4567
MANAD_INTERFACE_IN=eth1
MANAD_INTERFACE_OUT=ifb0


засунул редирект трафика на интерфейс ifb0 сюда:
init_manad.sh
Код:
#!/bin/sh
cd ${0%${0##*/}}.
. ./conf.sh

#clear all rules
/sbin/tc qdisc del dev $MANAD_INTERFACE_IN  root 2> /dev/null
/sbin/tc qdisc del dev $MANAD_INTERFACE_OUT  root 2> /dev/null
#redirect to ifb0
/sbin/tc qdisc add dev $MANAD_INTERFACE_IN ingress
/sbin/tc filter add dev $MANAD_INTERFACE_IN parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev $MANAD_INTERFACE_OUT
#root
/sbin/tc qdisc add dev $MANAD_INTERFACE_IN root handle 1: htb default ffff r2q 1
/sbin/tc qdisc add dev $MANAD_INTERFACE_OUT root handle 1: htb default ffff r2q 1
#default
/sbin/tc class add dev $MANAD_INTERFACE_IN  parent 1:0 classid 1:ffff htb rate 100mbit burst 4k prio 3
/sbin/tc qdisc add dev $MANAD_INTERFACE_IN parent 1:ffff handle ffff: sfq perturb 10 quantum 1500

/sbin/tc class add dev $MANAD_INTERFACE_OUT  parent 1:0 classid 1:ffff htb rate 100mbit burst 4k prio 3
/sbin/tc qdisc add dev $MANAD_INTERFACE_OUT parent 1:ffff handle ffff: sfq perturb 10 quantum 1500


старт виртуального интерфейса прописал в rc.local
/sbin/modprobe ifb
/sbin/ip link set dev ifb0 up

_________________
BGBilling 7.0
Centos 6.6 (Linux amd64, 2.6.32-504.8.1.el6.x86_64)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WIFI-агент шейпинг (CRM)
СообщениеДобавлено: 03 июл 2016, 09:36 
Не в сети
Клиент

Зарегистрирован: 09 фев 2011, 15:28
Сообщения: 1092
Карма: 135
шейпить исходящий с NAT можно с помощью маркировки пакетов. можно одиночные правила писать, а можно использовать модуль IPMARK, всё зависит от нагрузки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WIFI-агент шейпинг (CRM)
СообщениеДобавлено: 03 июл 2016, 21:32 
Не в сети

Зарегистрирован: 01 июл 2016, 19:39
Сообщения: 17
Карма: 0
barguzin2 писал(а):
шейпить исходящий с NAT можно с помощью маркировки пакетов. можно одиночные правила писать, а можно использовать модуль IPMARK, всё зависит от нагрузки.

Понятное дело, что всё это можно настроить своими силами и разными способами. Только я надеялся, что у WiFi-агента всё уже реализовано:
"Шейпинг осуществляется с помощью iproute2. Его реализация происходит через внешний скрипты и настраиваемые RADIUS-атрибуты, получаемые в Accept-пакете от Access-сервера. Вы можете реализовать свой вариант или изменить наш под ваши нужды."

Вот тут https://docs.bitel.ru/pages/viewpage.action?pageId=43385934 написано:
"Пусть у нас имеется Linux-маршрутизатор c двумя сетевыми интерфейсами: eth0 - локальный (сеть 172.16.1.0/24, через него выходя клиенты WiFi), eth1 - внешний интерфейс для выхода в интернет (имеет внешний ip - 81.30.199.220)."
Полагаю, что это свидетельствует о том, что в примере доступ в интернет организован через NAT.

И вот здесь https://docs.bitel.ru/pages/viewpage.action?pageId=43385937 в описании скриптов фигурирует ограничение по скорости как downstream, так и upstream.

А оказалось, что с NAT-ом решение из коробки работает только с ограничением на downstream.

_________________
BGBilling 7.0
Centos 6.6 (Linux amd64, 2.6.32-504.8.1.el6.x86_64)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WIFI-агент шейпинг (CRM)
СообщениеДобавлено: 06 июл 2016, 21:11 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Villian писал(а):
На тестовом сервере поднял агента.
Ни как не могу заставить резать исходящий канал, входящий режет нормально,



Тут вопрос в правильности команд. Те что в документации, указаны как пример и мы их исправляем в соответствии с советами пользователей. У abu вроде как заработал этот вариант( или нет?)
Если получите правильный вариант и опишите его нам, то готов исправить команды в дистрибутиве.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WIFI-агент шейпинг (CRM)
СообщениеДобавлено: 06 июл 2016, 21:38 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
jocker1alex писал(а):
Долго разбирался с вопросом шейпинга исходящего трафика и вот к чему пришел:

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


Вопрос, требует отдельного изучения. У нас там описано не совсем готовое решение, а просто как пример. Там изначально вообще были правила для одного интерфейса, на нем пытались регулировать и входящую и исходящую скорость, это исправили. Теперь проблема в том что в случае NAT на одном из интерфейсов уже нет локального ip и мы не можем по нему шейпить? И поэтому вы создайте некоторый промежуточный виртуальный интрефейс ifb0, на котором зажимаете исходящую скорость. Я правильно вас понимаю? Тогда я я могу дополнить скрипты в дистрибутиве вашим вариантом (или выложить на wiki ).

Еще можно попробовать вообще отказаться от этого перлового демона, он нужен сейчас только ради того чтобы создавать и помнить номера [N1] для каждого клиента. Можно попробовать взять в качестве этого идентификатора 3 и 4 байты адреса, если у вас используется 16-ая сеть и эти 2 байта уникальны. Нечто подобное описано вот тут

P.S. Возможно стоить уже вынести примеры настройки wifi-портала уже в wiki и убрать из документации .


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WIFI-агент шейпинг (CRM)
СообщениеДобавлено: 08 июл 2016, 01:29 
Не в сети

Зарегистрирован: 01 июл 2016, 19:39
Сообщения: 17
Карма: 0
stark писал(а):
Вопрос, требует отдельного изучения. У нас там описано не совсем готовое решение, а просто как пример. Там изначально вообще были правила для одного интерфейса, на нем пытались регулировать и входящую и исходящую скорость, это исправили. Теперь проблема в том что в случае NAT на одном из интерфейсов уже нет локального ip и мы не можем по нему шейпить? И поэтому вы создайте некоторый промежуточный виртуальный интрефейс ifb0, на котором зажимаете исходящую скорость. Я правильно вас понимаю? Тогда я я могу дополнить скрипты в дистрибутиве вашим вариантом (или выложить на wiki ).

да, зажимаю исходящую скорость на промежуточном интерфейсе ifb0 (до применения NAT). Нашел эту схему на просторах интернета.
stark писал(а):
Еще можно попробовать вообще отказаться от этого перлового демона, он нужен сейчас только ради того чтобы создавать и помнить номера [N1] для каждого клиента. Можно попробовать взять в качестве этого идентификатора 3 и 4 байты адреса, если у вас используется 16-ая сеть и эти 2 байта уникальны. Нечто подобное описано вот тут

шейпинг на iproute2 для меня пока что лес дремучий :)
stark писал(а):
P.S. Возможно стоить уже вынести примеры настройки wifi-портала уже в wiki и убрать из документации .

Дк если пример будет в дистрибутиве, то, полагаю, и в документации должно быть его описание.

_________________
BGBilling 7.0
Centos 6.6 (Linux amd64, 2.6.32-504.8.1.el6.x86_64)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.213s | 48 Queries | GZIP : On ]