LINUX.ORG.RU
ФорумAdmin

QoS и сильно нагруженный канал


0

0

Привет народ!

Использую htb и esfq. Приоритеты работают, правда пришлось пожертвовать килобитами итак узкого канала =(

Но вот как добится чтобы на загруженном канале распределялось равномерно не пойму.

Поделитесь опытом кто как делал.

Канал действительно узкий, всего 96 днем и 192 ночью.

anonymous

Моий скрипт

#!/bin/bash

IF=$1
LOCAL_RATE=$2
OUTER_RATE=$3

echo IF $IF
echo LR $LOCAL_RATE
echo IR $OUTER_RATE

function qdiscs_clean {
        tc qdisc del dev $IF root
}

function qdiscs_setup {
        tc qdisc add dev $IF root handle 1: htb default 0 r2q 1

        tc class add dev $IF parent 1: classid 1:1 htb \
                rate ${LOCAL_RATE}kbps quantum 1500
        # prio
        tc class add dev $IF parent 1:1 classid 1:2 htb \
                rate 5kbps ceil ${OUTER_RATE}kbps quantum 1500
        # ! local
        tc class add dev $IF parent 1:2 classid 1:3 htb \
                rate 5kbps ceil ${OUTER_RATE}kbps quantum 1500
        # local 
        tc class add dev $IF parent 1:1 classid 1:4 htb \
                rate 5kbps ceil ${LOCAL_RATE}kbps quantum 1500

        tc qdisc add dev $IF parent 1:3 handle 23: esfq perturb 10 hash dst
        tc qdisc add dev $IF parent 1:4 handle 24: esfq perturb 10 hash dst

        tc filter add dev $IF parent 1: protocol ip \
                handle 2 fw classid 1:2
        tc filter add dev $IF parent 1: protocol ip \
                handle 3 fw classid 1:3
        tc filter add dev $IF parent 1: protocol ip \
                handle 4 fw classid 1:4
}

function qdiscs_show_stats {
        tc -s filter show dev $IF
        tc -s class show dev $IF
}

function ip_mark {
        PORT=$1
        MARK=$2

        iptables -A FORWARD -t mangle -o $IF \
                -p tcp --sport $PORT -j MARK --set-mark $MARK
#        iptables -A FORWARD -t mangle -o $IF -p tcp --sport $PORT -j RETURN
}

function ip_n_mark {
        NET=$1
        MARK=$2

#        iptables -A FORWARD -t mangle -o $IF \
#                -p tcp --sport $PORT -j MARK --set-mark $MARK
#        iptables -A FORWARD -t mangle -o $IF -p tcp --sport $PORT -j RETURN    
}

function ip_clean_marks {
        iptables -t mangle -F
}

function ip_n_mark_local {
        NET=$1
        MARK=$2

#        iptables -A FORWARD -t mangle -o $IF \
#                -p tcp --sport $PORT -j MARK --set-mark $MARK
#        iptables -A FORWARD -t mangle -o $IF -p tcp --sport $PORT -j RETURN    
}

function ip_clean_marks {
        iptables -t mangle -F
}

function ip_n_mark_local {
        NET=$1
        MARK=$2

        iptables -A FORWARD -t mangle -o $IF -s $NET \
                -j MARK --set-mark $MARK 
#        iptables -A FORWARD -t mangle -o $IF -s $NET -j RETURN
}

qdiscs_clean
qdiscs_setup
ip_clean_marks

iptables -A FORWARD -t mangle -o $IF -j MARK --set-mark 3
iptables -A FORWARD -t mangle -o $IF -p icmp -j MARK --set-mark 2

ip_mark 5190 2
ip_mark 55901 2
ip_mark 6667 2

LOCAL_NETS=`cat local-nets`

for NET in $LOCAL_NETS
do
        ip_n_mark_local $NET 4
done

# qdiscs_show_stats 

anonymous
()

Скрипт вешается на внутренний интерфейс и по крону 
передайтся разные параметры.

Вот тест:

bash-2.05b$ time telnet linux.org.ru 55901
Trying 217.76.32.61...
telnet: connect to address 217.76.32.61: Connection refused

real    0m0.985s
user    0m0.000s
sys     0m0.030s
bash-2.05b$ time telnet linux.org.ru 8080 
Trying 217.76.32.61...
telnet: connect to address 217.76.32.61: Connection refused

real    0m11.524s
user    0m0.000s
sys     0m0.020s
bash-2.05b$ 


anonymous
()

В общем, подразумеваю под равномерно то что например

я качаю wesnoth

и еще 3 человека чет там качают токо в 4 потока сразу

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

Но это ладно, время отклика http итд не приоритезированного трафика - низкое

anonymous
()
Ответ на: комментарий от anonymous

Людей, качающий в несколько потоков, бить ногами до полного просветления.

Вылавливать их можно по логам сквида, к примеру.

Я не гуру сквида, но там было

- ограничение количества подключений - определение user-agent.

Можно, теоретически, сделать что б flashget/reget не пущалось больше одного раза с одного IP, к примеру...

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

AngryElf ★★★★★
()
Ответ на: комментарий от anonymous

>и еще 3 человека чет там качают токо в 4 потока сразу

а ты юзай ESFQ вместо SFQ

>Но это ладно, время отклика http итд не приоритезированного трафика - низкое

А в чем проблема? Сделай наиболее высокий приоритет для ssh и т.д., затем еще один - для http и еще один - для ftp и проч.

fagot ★★★★★
()

По ушам за это как-то не хочется.. Я объяснял что это бессмысленно но чет наверно забывают. И squid и qos совместить не просто..

Статистика у меня тоже есть, самописная =) По каждому скорость и еще на тип трафика разбито. Только приучил, они сами смотрят если народа много то не качают и картинки или что там еще сильно грузит, не смотрят.

О скрипте, esfq я итак использую. Там просто намудренно потому что локальный трафик гораздо выше инета.

Может гоню, но если положить SYN пакеты в класс с приоритетом ? Даст что-то ?

anonymous
()
Ответ на: комментарий от fagot

> А в чем проблема? Сделай наиболее высокий приоритет для ssh и т.д., затем еще один - для http и еще один - для ftp и проч.

Надо http делить поровну.. Приоритеты работают нормально. Время отклика именно не приоритезированного трафика - 11сек =(

anonymous
()
Ответ на: комментарий от anonymous

>О скрипте, esfq я итак использую. Там просто намудренно потому что локальный трафик гораздо выше инета.

не понял

>Может гоню, но если положить SYN пакеты в класс с приоритетом ? Даст что-то ?

у меня вообще все пакеты < 64 считаются проиритетными.

fagot ★★★★★
()
Ответ на: комментарий от anonymous

>Время отклика именно не приоритезированного трафика - 11сек =(

а у тебя он вообще обрезан, или как? Т.е. ceil для приоритетного трафика = max ceil? Если да, я бы слегка поубавил.

fagot ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.