Ответить
  • ded_mopozzz Neophyte Poster
    офлайн
    ded_mopozzz Neophyte Poster

    2

    13 лет на сайте
    пользователь #374220

    Профиль
    Написать сообщение

    2
    # 18 февраля 2011 22:39
    Mr.Smith:

    bogatoff,

    tc qdisc del dev br0 root

    tc qdisc add dev br0 root handle 1: htb default 0

    tc class add dev br0 parent 1: classid 1:1 htb rate 980kbit

    tc class add dev br0 parent 1:1 classid 1:3 htb rate 256kbit ceil 256kbit

    tc class add dev br0 parent 1:1 classid 1:4 htb rate 724kbit ceil 256kbit

    tc filter add dev br0 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.1.2 flowid 1:3

    tc filter add dev br0 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.1.3 flowid 1:4

    как-то так (по памяти)

    А если сделать так:

    tc qdisc del dev br0 root

    tc qdisc add dev br0 root handle 1: htb default 0

    tc class add dev br0 parent 1: classid 1:1 htb rate 980kbit

    tc class add dev br0 parent 1:1 classid 1:3 htb rate 256kbit ceil 256kbit

    tc filter add dev br0 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.1.2 flowid 1:3

    tc filter add dev br0 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.1.3 flowid 1:1

    То достанется вся пропускная способность канала пользователю с 192.168.1.3? А 192.168.1.2 как прийдется, но не более 256kbit? Правильно понял?

  • ded_mopozzz Neophyte Poster
    офлайн
    ded_mopozzz Neophyte Poster

    2

    13 лет на сайте
    пользователь #374220

    Профиль
    Написать сообщение

    2
    # 20 февраля 2011 15:23

    Всё работает. Обратите внимание в последних прошивках файл лежит в /rwfs/rc.d/S15shaper

    И ещё момент после рестарта службы, почему то идет ругань:

    код выделить все

    ~ # /rwfs/rc.d/S15shaper start
    Disable fastpath if shaper is up.
    RTNETLINK answers: No such file or directory

    Не знаю, влияет ли на работу.

    И ещё не стартует сам после перезагрузки роутера (галочки в веб интерфейсе стоят).

  • predka Junior Member
    офлайн
    predka Junior Member

    61

    17 лет на сайте
    пользователь #94917

    Профиль
    Написать сообщение

    61
    # 28 февраля 2011 16:25

    Добрый день. Нужна помощь.

    Есть 3 компьютера и Byfly за 100 тысяч, скоростью в 3Mbits.

    Необходимо разделить по такой схеме:

    На 1ый компьютер 2Mbits, если нету других подключенных то 3Mbits;

    На 2ой компьютер 0.5Mbits, если нету других подключенных то 3Mbits;

    На 3ий компьютер 0.5Mbits, если нету других подключенных то 0.5Mbits;

    Если 2 компьютер(1,3 подключены) не подключен, скорость отдать на 1. Соответственно и с 3им компьютером.

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

    "Rate" это гарантированная полоса, а "ceil" возможная?

    код выделить все

    #Первое деление.
    tc class add dev br0 parent 1: classid 1:1 htb rate 90mbit quantum 1500 burst 500k

    #Делим на три класса. Соответственно 1:2 получает гарантированную полосу в 2мбпс и если нету остальных компьютеров то 3мбпс?
    #соответственно и с остольными.
    tc class add dev br0 parent 1:1 classid 1:2 htb rate 2000Kbps ceil 3000Kbps prio 1 quantum 1500
    tc class add dev br0 parent 1:1 classid 1:3 htb rate 500Kbps ceil 3000Kbps prio 2 quantum 1500
    tc class add dev br0 parent 1:1 classid 1:4 htb rate 500Kbps ceil 500Kbps prio 3 quantum 1500

    #Присваиваем каждый класс к определенному IP
    tc filter add dev br0 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.1.33 flowid 1:2
    tc filter add dev br0 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.1.34 flowid 1:3
    tc filter add dev br0 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.1.35 flowid 1:4

    Данный код я должен положить в rwfs/rc.d/S15shaper

    Между строчек:

    код выделить все
    #--------------------------------------------INCOMING---------------------------------------------------------------
    #all output traffic for ppp0
    $LOG "All incoming ppp rate: normal $BANDWIDTHDOWN_LIMIT , maximum $BANDWIDTHDOWN (kbit/s)"
    tc qdisc add dev br0 root handle 1: htb default 22

    И

    код выделить все
    #---------------------------------------------OUTGOING--------------------------------------------------------------

    Остальной текст в группе INCOMING, как я понимаю, приоритет по типу трафика, он мне не нужен?.

    Извиняюсь ответы на некоторые вопросы я видел, просто хочется уточнить.

    Я уважаю Ваш труд.

    Спасибо!icon_beer.gif

    -----Дополненно-----

    Попробовал изменить шепер, как написал выше. Неудачно. Работает по правилам описанные в веб интерфейсе.

    Я запутался.:(

    -----Дополненно-----

    Завтра попробую со скриптом, который находится на 3ей странице.

  • Mr.Smith Senior Member
    офлайн
    Mr.Smith Senior Member

    837

    17 лет на сайте
    пользователь #99530

    Профиль
    Написать сообщение

    837
    # 1 марта 2011 16:32

    То достанется вся пропускная способность канала пользователю с 192.168.1.3? А 192.168.1.2 как прийдется, но не более 256kbit? Правильно понял?

    ага

    tc class add dev br0 parent 1: classid 1:1 htb rate 90mbit quantum 1500 burst 500k

    1:2 - потомок 1:1, которому ты дал 90мбит

    выводы делай сам =)

    он сожрет весь канал и остальным ничего не оставит

    в остальном все правильно

    Остальной текст в группе INCOMING, как я понимаю, приоритет по типу трафика, он мне не нужен?.

    тебе решать, что тебе нужно =)

    не совсем понял суть вопроса

    куда класть я и сам не знаю....я пока теоретик, но в ближайшие пару недель напишу подробную статью по шейперу в этом модеме с примерами

    собственно, статья уже в разработке, черновик частично написан

    пишу по ходу разбирательства, в основном для себя

    IMHO.
  • predka Junior Member
    офлайн
    predka Junior Member

    61

    17 лет на сайте
    пользователь #94917

    Профиль
    Написать сообщение

    61
    # 1 марта 2011 20:18

    Хм, а кто будет "отжирать" весь канал, если я данный класс никому не присвоил?

    Фактически есть 3 компа и соответственно классы 1:2,3,4, которые и должны брать интернет.

    Тут мне совсем не понятно, тогда сколько должно быть у класса 1:1 скорости, максимально возможная?

    Очень буду ждать статью.

  • Mr.Smith Senior Member
    офлайн
    Mr.Smith Senior Member

    837

    17 лет на сайте
    пользователь #99530

    Профиль
    Написать сообщение

    837
    # 2 марта 2011 10:51

    Тут мне совсем не понятно, тогда сколько должно быть у класса 1:1 скорости, максимально возможная?

    ...для канала, не для интерфейса

    то есть 3мбит а не 100 (~90MBit)

    правильнее будет разделить 90 и 3 - 1:1 и 1:2 соотв.

    1:2 поделить на нужные полосы - 1:21, 1:22, ... - и порезать как душенька пожелает

    IMHO.
  • predka Junior Member
    офлайн
    predka Junior Member

    61

    17 лет на сайте
    пользователь #94917

    Профиль
    Написать сообщение

    61
    # 2 марта 2011 14:16

    Примерно так?

    код выделить все

    tc class add dev br0 parent 1: classid 1:1 htb rate 87mbit quantum 1500 burst 500k
    tc class add dev br0 parent 1: classid 1:2 htb rate 3mbit quantum 1500 burst 500k

    tc class add dev br0 parent 1:2 classid 1:21 htb rate 2000Kbps ceil 3000Kbps prio 1 quantum 1500
    tc class add dev br0 parent 1:2 classid 1:22 htb rate 500Kbps ceil 3000Kbps prio 2 quantum 1500
    tc class add dev br0 parent 1:2 classid 1:23 htb rate 500Kbps ceil 500Kbps prio 3 quantum 1500

    #Присваиваем каждый класс к определенному IP
    tc filter add dev br0 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.1.33 flowid 1:21
    tc filter add dev br0 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.1.34 flowid 1:22
    tc filter add dev br0 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.1.35 flowid 1:23

    На выходных попробую.

    Вот в стандарном скрипте и скрипте на 3ей странице, есть строчка следующего вида:

    код выделить все
    tc qdisc add dev br0 parent 1:21 handle 21: esfq perturb 10 hash dst quantum 1500

    Что она значит?

  • Mr.Smith Senior Member
    офлайн
    Mr.Smith Senior Member

    837

    17 лет на сайте
    пользователь #99530

    Профиль
    Написать сообщение

    837
    # 2 марта 2011 17:48
    код выделить все
    tc qdisc add dev br0 parent 1:21 handle 21: esfq perturb 10 hash dst quantum 1500

    определить дисциплину для класса 1:21 как esfq с пертурбациями (перетасовками) пакетов в очереди каждые 10 сек, признаком "честности" определить dst

    подробно на англ

    http://www.knowplace.org/pages/howtos/traffic_shaping_with_linux/examples.php

    IMHO.
  • Mr.Smith Senior Member
    офлайн
    Mr.Smith Senior Member

    837

    17 лет на сайте
    пользователь #99530

    Профиль
    Написать сообщение

    837
    # 2 марта 2011 18:05

    Примерно так?

    не совсем внимательно читал мои посты =)

    3Мбит - твой полный канал, bandwidth

    чтобы управлять пакетами, их нужно поставить в очередь queue

    чтобы создать очередь, нужно придержать ВСЕХ - то есть создать плотину и управлять потоками на плотине

    иначе никак не получится

    поэтому, создавая очередь, нужно уменьшить скорость на шейпере 3Мбит минус 5-10%, подбирается эмпирически

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

    но эти строчки

    tc class add dev br0 parent 1: classid 1:1 htb rate 87mbit quantum 1500 burst 500k

    tc class add dev br0 parent 1: classid 1:2 htb rate 3mbit quantum 1500 burst 500k

    мне кажутся странными в принципе...

    если учесть, что br0 - это бридж между ppp0 и eth0, то есть между wan и lan интерфейсами, то можно сделать вывод, что ~90 Мбит нужен для отрезания трафика wi-fi и между портами на свиче, а шейпер оперирует только трафиком, идущим с ppp0

    получается что 1:1 - это тот кусок трафика, куда должно попадать четко все, что идет по вафле и от других LAN клиентов.

    1:2 - чисто для интернетовского трафика

    ну как-то так вобщем

    IMHO.
  • AtZako Neophyte Poster
    офлайн
    AtZako Neophyte Poster

    16

    17 лет на сайте
    пользователь #85554

    Профиль
    Написать сообщение

    16
    # 5 мая 2011 16:04

    Разделить канал между компьютерами уже получилось. Теперь хочу сделать ограничение по скорости на битторрент-трафик и весь остальной трафик внутри канала, выделенного отдельному компьютеру.

    Например, айпи получает rate=1000кбит. Внутри этих 1000кбит я выделяю для торрентов rate=300,ceil=1000 кбит, а остальной трафик получает rate=700,ceil=1000 кбит.

    В S12iptables торрент-трафик помечается отметкой 22:

    код выделить все

    if [ "$L7_SUPPORT" = "on" ]; then
    ...
    $INCOMING -i ppp+ -p tcp -m layer7 --l7proto bittorrent -j MARK --set-mark 22
    $INCOMING -i ppp+ -p udp -m layer7 --l7proto bittorrent -j MARK --set-mark 22

    В оригинальном файле настройки шейпера пакеты с этой меток ловятся так:

    код выделить все

    tc filter add dev br0 parent 1:0 prio 1 protocol ip handle 22 fw flowid 1:22

    Фильтрую трафик по айпи таким образом:

    код выделить все

    tc filter add dev br0 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.1.0/24 flowid 1:20

    Теперь проблема/задача: как совместить фильтрацию по айпи с метками?

    Пробовал делать так:

    код выделить все

    # torrent
    tc filter add dev br0 parent 1:0 prio 3 protocol ip handle 22 fw u32 match ip dst 192.168.1.0/24 flowid 1:202
    # other
    tc filter add dev br0 parent 1:0 prio 1 protocol ip u32 match ip dst 192.168.1.0/24 flowid 1:201

    Но ожидаемый эффект не наблюдается. Каким способом можно сделать такую фильтрацию?

    Скрипт целиком: http://pastebin.com/Be0A8FZJ

    Обновление

    Нашел подходящий вариант для ограничения скорости закачек с сохранением скорости для серфинга: http://pupa.da.ru/tc/ (в самом низу).

    Но у меня не заработал. А так идея хороша: давать первые n-кб (1000Кб) на максимальной скорости (160кбит), а потом ограничивать скорость до средней (80кбит).

    Вот выдержка кода:

    код выделить все
    #User 1
    tc class add dev eth0 parent 2:6 classid 2:100 htb rate 160Kbit quantum 3000 # << max speed for user
    tc class add dev eth0 parent 2:100 classid 2:100d htb rate 80Kbit cburst 1000kb quantum 3000 #<< average speed and averaging amount of data
    tc qdisc add dev eth0 parent 2:100d sfq
    tc filter add dev eth0 parent 2:6 protocol ip pref 4 u32 match ip dst 192.168.1.4 classid 2:100d

    Обновление

    Только к вечеру осознал, что мой скрипт неправильный:

    1. Выделяется один класс на подсеть, в то время как думалось, что это выделит по классу каждому айпи в подсети.

    2. Для эффективного ограничения торрентов нужно выставлять их классу приоритет и(или) занижать ceil.

    Тем не менее вышеописанный вопрос остался (как фильтровать по метке И айпи).

    И еще появились новые: 1. можно ли цеплять фильтры не к корневому классу? Там http://lartc.org/howto/lartc.qdisc.filters.html сказано, что

    with HTB, you should attach all filters to the root!

    . Во всех скриптах, что видел здесь в ветке и в самом модеме как раз и используется htb очередь. Если можно было бы цеплять фильтры к любому классу, то и фильтрацию по метке и айпи очень просто разделить..

    2. Есть ли возможность шейпить трафик, заранее не зная всех айпи адресов (выдаются DHCP)?

    3. Также в недоумении насчет этих строк (из оригинального скрипта):

    код выделить все
    tc class add dev br0 parent 1:1 classid 1:3 htb rate 80 \
    ceil 90mbit prio 0 quantum 1500 burst 100k

    tc class add dev br0 parent 1:2 classid 1:20 htb rate ${BANDWIDTHDOWN_LIMIT}kbit \
    ceil ${BANDWIDTHDOWN}kbit prio 1 quantum 1500 # в объявлении класса указывается тип и параметры очереди??
    tc class add dev br0 parent 1:2 classid 1:21 htb rate ${BANDWIDTHDOWN_LIMIT}kbit \
    ceil ${BANDWIDTHDOWN}kbit prio 2 quantum 1500
    tc class add dev br0 parent 1:2 classid 1:22 htb rate ${BANDWIDTHDOWN_LIMIT}kbit \
    ceil ${BANDWIDTHDOWN}kbit prio 3 quantum 1500

    tc qdisc add dev br0 parent 1:3 handle 3: esfq perturb 10 hash dst quantum 1500
    # а здесь добавляется (или заменяется вышеуказанная??) очередь другого типа
    tc qdisc add dev br0 parent 1:20 handle 20: esfq perturb 10 hash dst quantum 1500
    tc qdisc add dev br0 parent 1:21 handle 21: esfq perturb 10 hash dst quantum 1500
    tc qdisc add dev br0 parent 1:22 handle 22: esfq perturb 10 hash dst quantum 1500

    По этому вопросу выше уже отвечали, в ссылке можно найти:

    tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10 - attach another qdisc handle to class 1:10 using SFQ - this implements the SFQ round robin qdisc inside the HTB that kicks in only when the queue is saturated to ensure that no one "conversation" hogs the pipe.

    Значит ли это, что можно цеплять несколько очередей на класс?

  • Mr.Smith Senior Member
    офлайн
    Mr.Smith Senior Member

    837

    17 лет на сайте
    пользователь #99530

    Профиль
    Написать сообщение

    837
    # 9 мая 2011 00:06

    AtZako,

    Теперь проблема/задача: как совместить фильтрацию по айпи с метками?

    можно метки выставлять в IPTABLES

    я думаю, и 2 фильтра написать с одним classid тоже никто не запретит :lol:

    Значит ли это, что можно цеплять несколько очередей на класс?

    некорректно сформулировано, я бы сказал

    никто никуда ничего не цепляет :)

    есть, грубо говоря, таблица, поля в которой заполняются с помощью фильтров, например, строка в таблице создается, как только фильтр срабатывает и может выделить трафик по критерию (IP адрес назначения, к примеру)

    к строке применяется дисциплина

    класс - это просто элемент в дереве иерархий, то есть правило, которое применяется к строке в этой таблице (ограничить скорость, например)

    как видно из цитаты, HTB позволяет применить несколько дисциплин на класс, но, видимо, только на root

    вышеуказанный фрагмент мне тоже кажется очень странным.... но это ж китайцы =)

    никто и не утверждал, что после увольнения того, кто начал писать скрипт, его потомок будет понимать, что было сделано до него :D

    а у китайцев все так по жизни....

    IMHO.
  • AtZako Neophyte Poster
    офлайн
    AtZako Neophyte Poster

    16

    17 лет на сайте
    пользователь #85554

    Профиль
    Написать сообщение

    16
    # 11 мая 2011 10:32
    Mr.Smith:

    AtZako,

    [я думаю, и 2 фильтра написать с одним classid тоже никто не запретит :lol:

    Если написать два фильтра, то условия в фильтрах сложатся по операции "ИЛИ" (с учетом порядка добавления). А меня интересует одновременное выполнение двух условий: условие1 "И" условие2. Для этого нужно записать все в одном фильтре. Я правильно рассуждаю?

    После всех плясок возле модема, добрался наконец до вывода реально используемых фильтров/классов/дисциплин в модеме через

    код выделить все
    tc -details class|qdisc|filter show dev br0

    И был очень удивлен тем, что модем вывел то, что прописано в оригинальном S15shaper (три класса для трех уровней приоритета трафика, выбор осуществляется по меткам, метки ставятся либо в iptables, либо по протоколам выбирается прямо в S15shaper). Но перед этим я заменил оригинальный файл своим, добавил права на выполнение, сохранил и ребутнул

    код выделить все
    service rwfs save && reboot

    и для надежности через фтп проверил, что файл мой остался на месте.

    Но модем упорно работает по оригинальному шейперу. К слову сказать, вполне нормально делит скорости. Даже торренты более-менее прижимает.

    Что можно с этим делать? Сбросить все настройки и попробовать заново? Перепрошить на версию поновее (последний раз прошилось неудачно, пришлось паять провода и восстанавливать, поэтому как-то не хочется возиться с этим второй раз)? Или я что-то упустил?

  • Mr.Smith Senior Member
    офлайн
    Mr.Smith Senior Member

    837

    17 лет на сайте
    пользователь #99530

    Профиль
    Написать сообщение

    837
    # 14 мая 2011 10:36

    После всех плясок возле модема, добрался наконец до вывода реально используемых фильтров/классов/дисциплин в модеме через

    просто ты не читал мои предыдущие посты

    здесь их никто походу не читает :D

    шапку сделать невозможно, поэтому я бы тебе посоветовал здесь такие темы не обсуждать - здесь нет знающих людей

    Но модем упорно работает по оригинальному шейперу.

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

    IMHO.
  • Pranker Senior Member
    офлайн
    Pranker Senior Member

    1361

    15 лет на сайте
    пользователь #156096

    Профиль
    Написать сообщение

    1361
    # 24 декабря 2011 22:41 Редактировалось Pranker, 1 раз.

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

  • purler Member
    офлайн
    purler Member

    434

    18 лет на сайте
    пользователь #46543

    Профиль
    Написать сообщение

    434
    # 4 марта 2012 18:44

    У меня так и получалось при стандартном шейпере и настройке только галочками. Если один комп свой канал не добирает, то второму больше будет, но если с первого компа начинаешь качать, то на двоих делит примерно поровну. Еще в настройках шейпера надо ставить 80% от реального канала иначе шейпер при торентах с одного компа забивающего весь канал не очень то замечает еще что-то с другого компа.
    Поэксперементируйте с двумя компами и с выключенным шейпером. Разница будет очевидна.

  • svin0 IRC Team
    офлайн
    svin0 IRC Team

    6763

    17 лет на сайте
    пользователь #76857

    Профиль
    Написать сообщение

    6763
    # 2 мая 2012 19:30

    Между прочим, проект Wive сворачивает поддержку Acorp.

    Устройства снятые с поддержки:
    W422Gv3/v4/W510N/W520N/LAN110/LAN410/USBv3/WR-150N/WR-300N

  • _abdulla_ Senior Member
    офлайн
    _abdulla_ Senior Member

    672

    15 лет на сайте
    пользователь #190569

    Профиль
    Написать сообщение

    672
    # 30 января 2015 17:20 Редактировалось _abdulla_, 5 раз(а).

    del

    Верблюд может две недели не пить. Уважаю.