The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Помогите подправить скрипт шейпера"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"Помогите подправить скрипт шейпера"  
Сообщение от oblin (ok) on 14-Июл-08, 13:02 
Здравствуйте! Есть железка D-Link DSA-3110 сервисный шлюз доступа, в нутри у нее обычный линукс. В этом линуксе есть скрипт шейпера, но он на примитивный. Он просто режет скорость всем поровну.

----------------------------------------------
#!/bin/sh


ATTR=/var/run/radattr.${PPP_IFACE}
TC=/sbin/tc
RATE_DFLT=256kbit

get_ratelimit()
{
  [ ! -r $ATTR ] && return 2
  cat $ATTR |
  while read attr value
  do
    [ "$attr" != "Port-Limit" ] && continue;
    echo $value
    return 0
  done
  return 1
}

set_default_and_exit()            
{          
  # $1 - exit value
  ${TC} qdisc add dev $PPP_IFACE root tbf rate $RATE_DFLT latency 50ms burst 15$
  [ $1 -eq 0 ] && exit $? || exit $1
}


RATELIMIT=`get_ratelimit`

[ -z "$RATELIMIT" ] &&                      
{              
  echo "Cannot get rate limit!! set to default..."
  set_default_and_exit 1
}
-------------------------------------------

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

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Помогите подправить скрипт шейпера"  
Сообщение от Z0termaNN (ok) on 14-Июл-08, 14:17 
подойдет любой иерархический класс, хотя можно и
непосредственно в фильтре скорость ограничивать.
в общем примерно так:

# размер буфера в байтах
BURST=$(( $RATE * 5 ))
# если мне не изменяет память, то меньше трех полос не получается
# делать, но все равно будем использовать только одну полосу
tc qdisc add dev $PPP root handle 1:0 prio bands 3 priomap 0 0 0
tc qdisc add dev $PPP parent 1:1 handle 100 sfq perturb 5
# для списка серверов скорость не ограничиваем
tc filter add dev $PPP pref 0 u32 match ip src 1.1.1.1 flowid 1:1
tc filter add dev $PPP pref 0 u32 match ip src 2.2.2.2 flowid 1:1
tc filter add dev $PPP pref 0u32 match ip src 3.3.3.0/24 flowid 1:1
# для всего остального по ipv4 скорость режем
tc filter add dev $PPP pref 0 u32 match u8 0x40 0xf0 at 0 flowid 1:1 \
         police rate ${RATE}bit burst ${BURST} drop


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Помогите подправить скрипт шейпера"  
Сообщение от oblin (ok) on 15-Июл-08, 06:18 
Если вас не затруднит напишите готовый вид скрипта, а то я в линуксе еще только начинаю разбираться. Заранее спасибо.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Помогите подправить скрипт шейпера"  
Сообщение от Z0termaNN (ok) on 16-Июл-08, 20:46 
set_default_and_exit ()
{
    BURST=$(( $RATE_DFLT * 5 ))
    tc qdisc add dev $PPP root handle 1:0 prio bands 3 priomap 0 0 0
    tc qdisc add dev $PPP parent 1:1 handle 100 sfq perturb 5
    tc filter add dev $PPP pref 0 u32 match ip src 1.1.1.1 flowid 1:1
    tc filter add dev $PPP pref 0 u32 match ip src 2.2.2.2 flowid 1:1
    tc filter add dev $PPP pref 0 u32 match ip src 3.3.3.0/24 flowid 1:1
    tc filter add dev $PPP pref 1 u32 match u8 0x40 0xf0 at 0 flowid 1:1 \
             police rate ${RATE_DFLT}bit burst ${BURST} drop
   [ $1 -eq 0 ] && exit $? || exit $1
}
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру