Page 2 of 5 FirstFirst 1234 ... LastLast
Results 16 to 30 of 66

Thread: Шейпер с приоретизацией по портам

  1. #16

    Шейпер с приоретизацией по портам

    Пользуюсь µTorrent, если в нём не ставить ограничения на скорость, то странички в инете открываются очень медленно, закачки с HTTP умирают. Пытаюсь решить эту проблему шейпером, сделать приоритеты по виду трафика.

    Нашёл скрипт, который должен делать такое. Немного подправил (как смог), работает. Торрент определённо стал душить закачки с HTTP меньше. Странички стали открываться несколько быстрее, но далеко не так быстро как при отключенном торренте.
    Заметил, что шейпер «душит» исходящий трафик у торрента, как в моём скрипте исключить влияние на исходящий трафик? Как отключить шейпер для определённых IP? Можно ли ещё ускорить HTTP, при наличии закачки торрентом?
    Помогите довести шейпер до ума, на сколько это возможно.

    #!/bin/sh

    IPTABLES=/sbin/iptables
    TC=/usr/sbin/tc
    DEV_IN=br0

    # входящая скорость из инета 512 кбит/с
    # устанавливаем чуть меньше
    RATE_IN=480

    # задаём гарантированную полосу
    RATE_IN1=10

    # задаём максимальный обьём данных который может быть пропущен без переключения на другие классы
    # высокопиоритетный троафик
    BURST0=25600
    # низкоприоритетный трафик
    BURST1=256

    case "$1" in
    start)
    ########################## IN #############################
    $TC qdisc add dev $DEV_IN root handle 1:0 htb default 99


    echo "Корневой класс 1:1"
    $TC class add dev $DEV_IN parent 1:0 classid 1:1 htb rate ${RATE_IN}kbit ceil ${RATE_IN}kbit


    echo "0"
    $TC class add dev $DEV_IN parent 1:1 classid 1:10 htb rate 50kbit ceil ${RATE_IN}kbit prio 0 burst ${BURST0}
    echo "1"
    $TC class add dev $DEV_IN parent 1:1 classid 1:25 htb rate 400kbit ceil ${RATE_IN}kbit prio 1 burst ${BURST0}
    echo "2"
    $TC class add dev $DEV_IN parent 1:1 classid 1:50 htb rate ${RATE_IN1}kbit ceil ${RATE_IN}kbit prio 2 burst ${BURST1}
    echo "3"
    $TC class add dev $DEV_IN parent 1:1 classid 1:75 htb rate ${RATE_IN1}kbit ceil ${RATE_IN}kbit prio 3 burst ${BURST1}
    echo "4"
    $TC class add dev $DEV_IN parent 1:1 classid 1:99 htb rate ${RATE_IN1}kbit ceil ${RATE_IN}kbit prio 4 burst ${BURST1}



    echo "qdisc"
    $TC qdisc add dev $DEV_IN parent 1:10 handle 10: pfifo limit 5
    $TC qdisc add dev $DEV_IN parent 1:25 handle 25: sfq perturb 10
    $TC qdisc add dev $DEV_IN parent 1:50 handle 50: sfq perturb 10
    $TC qdisc add dev $DEV_IN parent 1:75 handle 75: sfq perturb 10
    $TC qdisc add dev $DEV_IN parent 1:99 handle 99: sfq perturb 10


    #### Маркировка пакетов
    echo "Маркировка"
    # добавить цепочку MYSHAPER-IN в таблицу mangle - сейчас мы настроим таблицу,которую будем
    # использовать для фильтрациии установки fwmark
    iptables -t mangle -N MYSHAPER-IN
    iptables -t mangle -I POSTROUTING -o $DEV_IN -j MYSHAPER-IN

    # маркируем пакеты с помощью fwmark - устанавливаем значения 10-99 в зависимости от
    # нужного класса. Высший приоритет - 10.

    # Низкоприоритетный трафик
    echo "Низкоприоритетный трафик"
    iptables -t mangle -A MYSHAPER-IN -p tcp --sport 0:1024 -j MARK --set-mark 99
    iptables -t mangle -A MYSHAPER-IN -p tcp --dport 0:1024 -j MARK --set-mark 99

    # порт ftp-data, низкий приоритет
    echo "FTP"
    iptables -t mangle -A MYSHAPER-IN -p tcp --sport 20 -j MARK --set-mark 50

    # WebMoney Keeper
    echo "WM"
    iptables -t mangle -A MYSHAPER-IN -p tcp --sport 2802 -j MARK --set-mark 75

    # интернет-пейджер aol
    echo "Аська"
    iptables -t mangle -A MYSHAPER-IN -p tcp --sport 5190 -j MARK --set-mark 50

    # приёмка почты
    echo "Почта POP3"
    iptables -t mangle -A MYSHAPER-IN -p tcp --sport 110 -j MARK --set-mark 75

    # IRC
    echo "IRC"
    iptables -t mangle -A MYSHAPER-IN -p tcp --sport 6667 -j MARK --set-mark 75
    iptables -t mangle -A MYSHAPER-IN -p tcp --sport 9944 -j MARK --set-mark 75

    #pptp
    echo "PPTP"
    iptables -t mangle -A MYSHAPER-IN -p tcp --sport 1723 -j MARK --set-mark 75
    iptables -t mangle -A MYSHAPER-IN -p gre -j MARK --set-mark 75

    # ICMP (ping) - высокий приоритет,
    # будем удивлять друзей
    echo "Пинги"
    iptables -t mangle -A MYSHAPER-IN -p icmp -j MARK --set-mark 10

    # распознавание имен DNS (маленькие пакеты)
    echo "DNS"
    iptables -t mangle -A MYSHAPER-IN -p udp -j MARK --set-mark 25

    # WWW
    echo "HTTP и HTTPS трафик"
    iptables -t mangle -A MYSHAPER-IN -p tcp --sport 80 -j MARK --set-mark 25
    # iptables -t mangle -A MYSHAPER-IN -p tcp --dport 80 -j MARK --set-mark 25
    iptables -t mangle -A MYSHAPER-IN -p tcp --sport 443 -j MARK --set-mark 25
    # iptables -t mangle -A MYSHAPER-IN -p tcp --dport 443 -j MARK --set-mark 25

    # secure shell
    echo "SSH"
    iptables -t mangle -A MYSHAPER-IN -p tcp --dport 22 -j MARK --set-mark 10
    iptables -t mangle -A MYSHAPER-IN -p tcp --sport 22 -j MARK --set-mark 10

    # telnet (ew...)
    echo "Telnet"
    iptables -t mangle -A MYSHAPER-IN -p tcp --dport 23 -j MARK --set-mark 10
    iptables -t mangle -A MYSHAPER-IN -p tcp --sport 23 -j MARK --set-mark 10

    # маленькие пакеты, скорее всего ACK-пакеты
    # echo "Маленькие пакеты"
    # iptables -t mangle -A MYSHAPER-IN -p tcp -m length --length :64 -j MARK --set-mark 25


    echo "Shaper on $DEV_IN started ($RATE_IN kbit/s)"
    ;;
    stop)
    tc qdisc del dev $DEV_IN root 2> /dev/null > /dev/null
    tc qdisc del dev $DEV_OUT root 2> /dev/null > /dev/null
    iptables -t mangle -D POSTROUTING -o $DEV_OUT -j MYSHAPER-OUT 2> /dev/null > /dev/null
    iptables -t mangle -F MYSHAPER-OUT 2> /dev/null > /dev/null
    iptables -t mangle -X MYSHAPER-OUT 2> /dev/null > /dev/null
    iptables -t mangle -D POSTROUTING -o $DEV_IN -j MYSHAPER-IN 2> /dev/null > /dev/null
    iptables -t mangle -F MYSHAPER-IN 2> /dev/null > /dev/null
    iptables -t mangle -X MYSHAPER-IN 2> /dev/null > /dev/null

    echo "Shaper removed"
    ;;
    restart)
    $0 stop
    $0 start
    ;;
    status)

    echo "[qdisc IN]"
    $TC -s qdisc show dev $DEV_IN
    echo "[class IN]"
    $TC -s class show dev $DEV_IN
    echo "[filter IN]"
    $TC -s filter show dev $DEV_IN
    ;;
    *)
    echo "Usage: $0 {start|stop|restart|status}"
    ;;
    esac

    exit 0

  2. #17
    Подобный скрипт уже есть в прошивке, /sbin/wshaper

    Можно его переписать куда нибудь, например в /usr/local/sbin и подправить.

  3. #18
    Quote Originally Posted by almuerto View Post
    Подобный скрипт уже есть в прошивке, /sbin/wshaper

    Можно его переписать куда нибудь, например в /usr/local/sbin и подправить.
    Видел, но я не разбираюсь в управлении трафиком в Linux на столько, что бы самостоятельно его серьёзно переделать. И мне кажется, что вариант приведённый мной более гибок.

  4. #19

    Arrow Шейпер для 500gp

    Какой шейпер можно подцепить на 500gp для подссчета трафика и ограничения скорости wifi соединений
    интересуют мнения людей кто себе уже реализовал данные пакеты
    прошивка без разнизы какая, важна стабильность
    подробно схемка сети
    есть сеть x провайдера, в ней по статическому айпи раздаеться инет и внутренние ресурсы
    есть asus 500gp, который подключен к етой сети (только одно проводное подключение к wan порту)
    есть dlink 2100ap(не важн0 какая, главное режим либо точка-клиент, либо мост)
    вторая точка включена в сеть y, в которой имеються несколько компов со статическими айпи, которым предоставляеться инет и ресурсы сети x
    возможно ли резать скорость и подсчитывать трафик при таком подключении на 500gp, если да то как?
    ЗЫ поиск ничего не дал путного.

  5. #20

    Wondershaper и VoIP

    Ситуация такая: роутер качает/отдает торренты, полностью забивая канала на upload(500kbit/s). К нему же подключен терминал VoIP, разговаривать по телефону становится туго...
    Как я понимаю такие вещи должен разруливать wondershaper.
    Никто не поделится работающим скриптом для него? Мне собсно только приоритет VoIP повысить, больше ничего не надо.
    Спасибо!

  6. #21
    Quote Originally Posted by Starling View Post
    Ситуация такая: роутер качает/отдает торренты, полностью забивая канала на upload(500kbit/s). К нему же подключен терминал VoIP, разговаривать по телефону становится туго...
    Как я понимаю такие вещи должен разруливать wondershaper.
    Никто не поделится работающим скриптом для него? Мне собсно только приоритет VoIP повысить, больше ничего не надо.
    Спасибо!
    У меня была таже проблема и теперь VOIP заработал! http://www.wl500g.info/showthread.ph...hlight=Wshaper

    Там и скрипт...
    Last edited by piezomotor; 21-01-2008 at 13:46.

  7. #22
    Спасибо, посмотрю.

  8. #23

    настройка приоритета VoIP трафика, а не ограничения

    Пересмотрел много инфы (в т.ч. англоязычной) о том, как повысить приоритет VoIP. Но во всех рекомендациях предлагается ограничить скорость приложений (устройств) не требовательных к постоянству ширины канала. Один из таких примеров - wshaper eth1 1024 512.

    Но это решение имеет ряд минусов.
    1. В моменты, когда нет VoIP трафика, качалки не используют максимальный потенциал канала.
    2. Если VoIP соединений будет больше, чем запланировано при расчете верхней границы низкоприоритетного трафика, то от потерь качества застрахованы не будем.
    3. Резко сократится скорость скачивания из локальной сети провайдера (сейчас доступ к внутренним ресурсам 100 Мбит, внешним - 2 Мбит).

    Кто-нибудь может, хотя бы не рассказать, а дать ссылку на документацию, в которой описано именно расставление приоритетов? Т.е. когда есть VoIP соединения, то им может быть выделено до 100% канала. Когда их нет, все остальные пакеты используют канал полностью.

    В моем случае VoIP соединения могут идти с софттелефона (Sip, Skype) и с железки Linksys SPA3102.

  9. #24
    Join Date
    Aug 2007
    Location
    Moscow, Russia
    Posts
    976
    Quote Originally Posted by greenst View Post
    Пересмотрел много инфы (в т.ч. англоязычной) о том, как повысить приоритет VoIP. Но во всех рекомендациях предлагается ограничить скорость приложений (устройств) не требовательных к постоянству ширины канала. Один из таких примеров - wshaper eth1 1024 512.
    А зачем wshaper вешать на eth1? Через post-firewall его надо запускать
    wshaper start "$1" ... ...
    И он сам таким образом повесится куда надо - например, на ppp0.

  10. #25
    Quote Originally Posted by Serge_K View Post
    А зачем wshaper вешать на eth1? Через post-firewall его надо запускать
    wshaper start "$1" ... ...
    И он сам таким образом повесится куда надо - например, на ppp0.
    Но ведь, все равно, нужно будет указывать ограничение в абсолютных единицах, выше которых, даже при отсутствии VoIP соединений, скорость скачивания не поднимется.

  11. #26
    Join Date
    Aug 2007
    Location
    Moscow, Russia
    Posts
    976
    Quote Originally Posted by greenst View Post
    Но ведь, все равно, нужно будет указывать ограничение в абсолютных единицах, выше которых, даже при отсутствии VoIP соединений, скорость скачивания не поднимется.
    Это почему же? Что Вы имеете в виду под ограничениями?
    Last edited by Serge_K; 03-02-2008 at 19:54.

  12. #27
    Quote Originally Posted by Serge_K View Post
    Это почему же? Что Вы имеете в виду под ограничениями?
    Мой провайдер Корбина. Скорость подключения к провайдеру и его ресурсам 100 мбит/с. По моему тарифу скорость подключения во внешний Инет - 2,2 мбит/с. Предполагаем, что для одного VoIP соединения 64 кбит/с будет более чем достаточно, а 0,1 мбит/с тем более. Для этого случая подходит такая строка в post-firewall:
    wshaper start "$1" 2100 2100

    Какая максимальная скорость у меня будет при работе со внутренними ресурсами провайдера? Сколько максимально VoIP соединений мне будет доступно? В случае, если не будет ни одного VoIP соединения, какая максимальная скорость будет при скачивании?

  13. #28
    Join Date
    Aug 2007
    Location
    Moscow, Russia
    Posts
    976
    Quote Originally Posted by greenst View Post
    Мой провайдер Корбина. Скорость подключения к провайдеру и его ресурсам 100 мбит/с. По моему тарифу скорость подключения во внешний Инет - 2,2 мбит/с. Предполагаем, что для одного VoIP соединения 64 кбит/с будет более чем достаточно, а 0,1 мбит/с тем более. Для этого случая подходит такая строка в post-firewall:
    wshaper start "$1" 2100 2100

    Какая максимальная скорость у меня будет при работе со внутренними ресурсами провайдера? Сколько максимально VoIP соединений мне будет доступно? В случае, если не будет ни одного VoIP соединения, какая максимальная скорость будет при скачивании?
    Насколько я понимаю, Вашей локалки это каснуться не должно. Ну а насчет кличества VoIP-соединений - считайте сами, исходя из используемых кодеков. G.711 требует что-то около сотни, по-моему.

  14. #29
    Требуемая полоса для разных кодеков

  15. #30
    Quote Originally Posted by Serge_K View Post
    Насколько я понимаю, Вашей локалки это каснуться не должно. Ну а насчет кличества VoIP-соединений - считайте сами, исходя из используемых кодеков. G.711 требует что-то около сотни, по-моему.
    Но считать все равно надо... А сделать так, чтобы автоматом ограничивался канал для качалок, в зависимости от загрузки VoIP соединениями, возможно? Чтобы, например, в остуствие телефонных соединений или во время молчания на той стороне провода (когда входящий VoIP трафик равен нулю), скорость скачивания могла подняться до полной ширины канала.

Page 2 of 5 FirstFirst 1234 ... LastLast

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •