forum.bitel.ru http://forum.bitel.ru/ |
|
WIFI-агент шейпинг (CRM) http://forum.bitel.ru/viewtopic.php?f=44&t=9751 |
Страница 1 из 1 |
Автор: | abu [ 24 сен 2014, 10:31 ] |
Заголовок сообщения: | WIFI-агент шейпинг |
Настроил шейпинг с привязкой атрибутов к опциям модуля 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 Что нужно настроить для ограничения исходящего трафика и возможно ли это? |
Автор: | stark [ 24 сен 2014, 16:07 ] |
Заголовок сообщения: | Re: WIFI-агент шейпинг |
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 Если у вас там интерфейса - пропишите его и заработает. Вроде бы на одном интерфейсе нельзя сразу зажимать и входящую и исходящую. |
Автор: | abu [ 25 сен 2014, 05:41 ] |
Заголовок сообщения: | Re: WIFI-агент шейпинг |
В скриптах 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 Куда нужно прописать запуск этих скриптов? |
Автор: | stark [ 26 сен 2014, 23:30 ] |
Заголовок сообщения: | Re: WIFI-агент шейпинг |
Там как-то запутано. Есть как миниум 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 поправить. |
Автор: | abu [ 01 окт 2014, 12:25 ] |
Заголовок сообщения: | Re: WIFI-агент шейпинг (CRM) |
Цитата: сюда надо передавать 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 |
Автор: | abu [ 02 окт 2014, 09:27 ] |
Заголовок сообщения: | Re: WIFI-агент шейпинг (CRM) |
Продублировал блок команд, описанный в переменной $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. Шейпинг заработал в обе стороны, не знаю, правда, верно я сделал или нет. Тестирование продолжу. |
Автор: | stark [ 01 окт 2015, 17:30 ] |
Заголовок сообщения: | Re: WIFI-агент шейпинг (CRM) |
Поменял скрипты в сборке 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]"; |
Автор: | stark [ 01 окт 2015, 17:35 ] |
Заголовок сообщения: | Re: WIFI-агент шейпинг (CRM) |
Еще мы ее используем всех возможностей tc, не строим хэшмапа для фильтров. Не знаю насколько это актуально, но вот для проводной связи одному из клиентов понадобилось для оптимизации стоить иерархию фильтров, фильтруя на каждом октете(пример выложим в wifi возможно потом, там в принципе в самих скриптах ничего почти не меняется). Тут в wifi у нас все классы и фильтры на одном уровне, при большом количестве пользователей и сетей это может создать большую нагрузку. |
Автор: | Villian [ 27 июн 2016, 13:27 ] |
Заголовок сообщения: | Re: WIFI-агент шейпинг (CRM) |
На тестовом сервере поднял агента. Ни как не могу заставить резать исходящий канал, входящий режет нормально, в Радиусе приходит Код: 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 |
Автор: | Artur [ 27 июн 2016, 14:11 ] |
Заголовок сообщения: | Re: WIFI-агент шейпинг (CRM) |
Здравствуйте. Разработчик wifi-агента в данный момент вышел в отпуск до 6.07. |
Автор: | jocker1alex [ 01 июл 2016, 20:06 ] |
Заголовок сообщения: | Re: WIFI-агент шейпинг (CRM) |
Долго разбирался с вопросом шейпинга исходящего трафика и вот к чему пришел: Если на интерфейсе висит 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 |
Автор: | barguzin2 [ 03 июл 2016, 09:36 ] |
Заголовок сообщения: | Re: WIFI-агент шейпинг (CRM) |
шейпить исходящий с NAT можно с помощью маркировки пакетов. можно одиночные правила писать, а можно использовать модуль IPMARK, всё зависит от нагрузки. |
Автор: | jocker1alex [ 03 июл 2016, 21:32 ] |
Заголовок сообщения: | Re: WIFI-агент шейпинг (CRM) |
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. |
Автор: | stark [ 06 июл 2016, 21:11 ] |
Заголовок сообщения: | Re: WIFI-агент шейпинг (CRM) |
Villian писал(а): На тестовом сервере поднял агента. Ни как не могу заставить резать исходящий канал, входящий режет нормально, Тут вопрос в правильности команд. Те что в документации, указаны как пример и мы их исправляем в соответствии с советами пользователей. У abu вроде как заработал этот вариант( или нет?) Если получите правильный вариант и опишите его нам, то готов исправить команды в дистрибутиве. |
Автор: | stark [ 06 июл 2016, 21:38 ] |
Заголовок сообщения: | Re: WIFI-агент шейпинг (CRM) |
jocker1alex писал(а): Долго разбирался с вопросом шейпинга исходящего трафика и вот к чему пришел: Если на интерфейсе висит nat, то и шейпить на нем исходящий трафик от клиентов не получится. Что бы решить данную проблему, можно завернуть весь входящий трафик от клиентов на интерфейсе без nat-а в виртуальный интерфейс ifb0. Вопрос, требует отдельного изучения. У нас там описано не совсем готовое решение, а просто как пример. Там изначально вообще были правила для одного интерфейса, на нем пытались регулировать и входящую и исходящую скорость, это исправили. Теперь проблема в том что в случае NAT на одном из интерфейсов уже нет локального ip и мы не можем по нему шейпить? И поэтому вы создайте некоторый промежуточный виртуальный интрефейс ifb0, на котором зажимаете исходящую скорость. Я правильно вас понимаю? Тогда я я могу дополнить скрипты в дистрибутиве вашим вариантом (или выложить на wiki ). Еще можно попробовать вообще отказаться от этого перлового демона, он нужен сейчас только ради того чтобы создавать и помнить номера [N1] для каждого клиента. Можно попробовать взять в качестве этого идентификатора 3 и 4 байты адреса, если у вас используется 16-ая сеть и эти 2 байта уникальны. Нечто подобное описано вот тут P.S. Возможно стоить уже вынести примеры настройки wifi-портала уже в wiki и убрать из документации . |
Автор: | jocker1alex [ 08 июл 2016, 01:29 ] |
Заголовок сообщения: | Re: WIFI-агент шейпинг (CRM) |
stark писал(а): Вопрос, требует отдельного изучения. У нас там описано не совсем готовое решение, а просто как пример. Там изначально вообще были правила для одного интерфейса, на нем пытались регулировать и входящую и исходящую скорость, это исправили. Теперь проблема в том что в случае NAT на одном из интерфейсов уже нет локального ip и мы не можем по нему шейпить? И поэтому вы создайте некоторый промежуточный виртуальный интрефейс ifb0, на котором зажимаете исходящую скорость. Я правильно вас понимаю? Тогда я я могу дополнить скрипты в дистрибутиве вашим вариантом (или выложить на wiki ). да, зажимаю исходящую скорость на промежуточном интерфейсе ifb0 (до применения NAT). Нашел эту схему на просторах интернета. stark писал(а): Еще можно попробовать вообще отказаться от этого перлового демона, он нужен сейчас только ради того чтобы создавать и помнить номера [N1] для каждого клиента. Можно попробовать взять в качестве этого идентификатора 3 и 4 байты адреса, если у вас используется 16-ая сеть и эти 2 байта уникальны. Нечто подобное описано вот тут шейпинг на iproute2 для меня пока что лес дремучий ![]() stark писал(а): P.S. Возможно стоить уже вынести примеры настройки wifi-портала уже в wiki и убрать из документации . Дк если пример будет в дистрибутиве, то, полагаю, и в документации должно быть его описание. |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |