Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

QoS в линуксе

0

Вообщем такая проблема, канал в офисе 5 мегабит, когда кто то начинает что то качать или заливать, то менеджеры которые звонят через астериск вешаются (и начинают вешать меня), бульканье и т.д. Сервер который раздает в офисе инет комп под центосом с двумя сетевухами, на одной паблик айпи, а на второй сеть 192.168.1.0. Вопрос как проще всего "откусить" для голосового трафика кусок канала, что бы никакой другой трафик не мог его забрать? Голосовой трафик самый приоритетный, если медленно будут грузиться видео с ютуба их проблемы. C QoS не знаком, раньше настраивать не приходилось.

удалить закрыть спам изменить тег редактировать

спросил 2012-04-13 14:48:08 +0400

godlike Gravatar godlike flag of Ukraine
814 92 24 62

обновил 2012-04-13 15:14:00 +0400

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

5 Ответов

2

Шейпинг трафика VOIP Приведу простой пример ограничения входящего трафика. В Интернете много примеров. Я приведу действующий скрипт для небольшой фирмы у которой сервер VOIP и шлюз в Интернет один и тот же физический сервер.

eth0 - смотрит в локальную сеть eth1 - смотрит в Интернет (входящая скорость 7Мбит от провайдера)

Ограничивать будем на eth0, т.к. ограничивать возможно только исходящий трафик. Разобьем трафик на 3 части Итак непосредственно пример:

#!/bin/sh
TCOP="add"
IPTOP="-A"
IF=eth0
if [ "$1" == "stop" ]; then
       echo "Stopping..."
       TCOP="del"
       IPTOP="-D"
fi


if [ "$1" == "stat" ]; then
    tc -d qdisc
    exit
fi
# RATE - минимально гарантированная скорость, CEIL - максимальная
RATE=6000
CEIL=7000
# Создаем корневой класс(неклассифицированный трафик попадает в канал 30)
tc qdisc ${TCOP} dev ${IF} root handle 1: htb default 30
# Создаем классы(шаблоны ограничений)
tc class ${TCOP} dev ${IF} parent 1:   classid 1:1 htb rate ${RATE}kbit ceil ${CEIL}kbit
# voip
tc class ${TCOP} dev ${IF} parent 1:1  classid 1:10 htb rate 1024kbit ceil 1500kbit prio 0
# http
tc class ${TCOP} dev ${IF} parent 1:1  classid 1:20 htb rate 1024kbit ceil 3000kbit prio 2
# other
tc class ${TCOP} dev ${IF} parent 1:1  classid 1:30 htb rate 256kbit ceil 2500kbit prio 3


# Указываем тип очередей
tc qdisc ${TCOP} dev ${IF} parent 1:10 handle 10: pfifo
tc qdisc ${TCOP} dev ${IF} parent 1:20 handle 20: sfq perturb 10
tc qdisc ${TCOP} dev ${IF} parent 1:30 handle 30: sfq perturb 10


# Указываем фильтры для очередей.
tc filter ${TCOP} dev ${IF} parent 1:0 protocol ip prio 0 handle 1 fw classid 1:10
tc filter ${TCOP} dev ${IF} parent 1:0 protocol ip prio 2 handle 2 fw classid 1:20
tc filter ${TCOP} dev ${IF} parent 1:0 protocol ip prio 3 handle 3 fw classid 1:30


# Непосредственно маркировка. 0x1 означает найти в "tc filter" "handle 1" назначить приоритет 0 и отправить в канал 1:10 и т.д. Обратите внимание на то что RTP пакеты маркируются в OUTPUT. Это связано с тем, что ASTERISK стоит на той же машине что и шлюз.


iptables -t mangle ${IPTOP} OUTPUT -p udp -m udp --sport 10000:15000 -j MARK --set-mark 0x1
iptables -t mangle ${IPTOP} OUTPUT -p udp -m udp --sport 10000:15000 -j RETURN


iptables -t mangle ${IPTOP} PREROUTING -p tcp -m tcp --sport 80 -j MARK --set-mark 0x2
iptables -t mangle ${IPTOP} PREROUTING -p tcp -m tcp --sport 80 -j RETURN


iptables -t mangle ${IPTOP} PREROUTING -p tcp -m tcp --sport 22 -j MARK --set-mark 0x2
iptables -t mangle ${IPTOP} PREROUTING -p tcp -m tcp --sport 22 -j RETURN


iptables -t mangle ${IPTOP} PREROUTING -j MARK --set-mark 0x3
iptables -t mangle ${IPTOP} OUTPUT -j MARK --set-mark 0x3
ссылка удалить спам редактировать

ответил 2012-04-14 13:05:27 +0400

bolshoy_plohish Gravatar bolshoy_plohish
1388 25 20 38

обновил 2012-04-14 20:15:42 +0400

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

Comments

все следующие сообщения в которых все является кодом будут удалены без предупреждения.

meral ( 2012-04-14 20:14:04 +0400 )редактировать
1

смотрите в сторону linux advanced routing/ tc.

или просто нагуглите какойлибо скрипт для воип.

вот например http://www.voip-info.org/wiki/view/QoS+with+Linux+using+PRIO+and+HTB

ссылка удалить спам редактировать

ответил 2012-04-13 15:12:34 +0400

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/
0

Заменить на Cisco. Локальную сеть разбить на вилан дата, воип и управление.

QoS - только для исходяшего трафика 100Мбит ----> 5Мбит.

Над входящим QoS делать смысла нет 5Мбит ----> 100Мбит.

ссылка удалить спам редактировать

ответил 2012-04-13 23:17:59 +0400

alexs Gravatar alexs
21 2 1 4
0

Однако настоятельно советую прочитать про кос, вникнуть как он работает, а уж потом не без помощи гугла всё чотко и грамотно настроить. Лучше день потерять - потом за пять минуть долететь!

ссылка удалить спам редактировать

ответил 2012-04-13 23:30:26 +0400

um2010 Gravatar um2010
2056 70 13 55
0

Хоть это и не ответ на ваш вопрос, но... Если сервер используется исключительно как маршрутизатор, логично на него поставить специальную ОСь, например RouterOS или заменить его на микротик за 2-3кр. RouterOS принесет много радости админу, ибо имеет помимо консоли, очень удобный и куда более простой чем консоль виндовый интерфейс управления, Простые правила по делению канала можно создать буквально в три клика. Но можно и сложные замороченные схемы с приоритетом трафика реализовать. Просто настроить, чтоб не икало, на роутерОС можно быстро и не вдаваясь особо в принципы работы.

ссылка удалить спам редактировать

ответил 2012-04-14 00:26:22 +0400

itprofit Gravatar itprofit
768 24 3 27
http://itprofit32.ru/

Comments

1

Если чел с микротиком не работал, что в два клика настроить его не сможет, проверно многократно ;)

switch ( 2012-04-14 06:48:46 +0400 )редактировать

более того, я пробывал уменя ушло пару часов. а на настройку через консоль qos уходит минту 15. тоесть очень сильно зависит от того насколько часто вы их настраиваете.

meral ( 2012-04-14 08:09:13 +0400 )редактировать

Дык это известный факт: кто с чем работает, тот и то умеет. Кстати в этом плане выгодно работать с функциональными девайсами: если их знаешь хорошо, можешь решить любую задачу. А если юзаешь примитивные длинки/асусы/тренднеты/вигоры то и будешь решать только примитивные задачи.

switch ( 2012-04-14 08:46:10 +0400 )редактировать

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

itprofit ( 2012-04-15 21:23:20 +0400 )редактировать

неа. проще поставить стандартный скрипт и не разбираться

meral ( 2012-04-16 09:50:34 +0400 )редактировать

Если копи-пастом то да, проще скриптом :)

itprofit ( 2012-04-16 11:02:03 +0400 )редактировать

Но прежде чем стандартный (кстати в чем стандартность?) скрипт написать нужно разобраться. В микротике, кстати, скриптовый язык покруче баша будет.

switch ( 2012-04-16 11:24:00 +0400 )редактировать

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

meral ( 2012-04-16 11:30:18 +0400 )редактировать

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку
2 закладки

подписаться на rss ленту новостей

Статистика

Задан: 2012-04-13 14:48:08 +0400

Просмотрен: 5,995 раз

Обновлен: Apr 14 '12

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.