все следующие сообщения в которых все является кодом будут удалены без предупреждения.
meral ( 2012-04-14 20:14:04 +0400 )редактироватьВообщем такая проблема, канал в офисе 5 мегабит, когда кто то начинает что то качать или заливать, то менеджеры которые звонят через астериск вешаются (и начинают вешать меня), бульканье и т.д. Сервер который раздает в офисе инет комп под центосом с двумя сетевухами, на одной паблик айпи, а на второй сеть 192.168.1.0. Вопрос как проще всего "откусить" для голосового трафика кусок канала, что бы никакой другой трафик не мог его забрать? Голосовой трафик самый приоритетный, если медленно будут грузиться видео с ютуба их проблемы. C QoS не знаком, раньше настраивать не приходилось.
Шейпинг трафика 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
все следующие сообщения в которых все является кодом будут удалены без предупреждения.
meral ( 2012-04-14 20:14:04 +0400 )редактироватьсмотрите в сторону linux advanced routing/ tc.
или просто нагуглите какойлибо скрипт для воип.
вот например http://www.voip-info.org/wiki/view/QoS+with+Linux+using+PRIO+and+HTB
Заменить на Cisco. Локальную сеть разбить на вилан дата, воип и управление.
QoS - только для исходяшего трафика 100Мбит ----> 5Мбит.
Над входящим QoS делать смысла нет 5Мбит ----> 100Мбит.
Однако настоятельно советую прочитать про кос, вникнуть как он работает, а уж потом не без помощи гугла всё чотко и грамотно настроить. Лучше день потерять - потом за пять минуть долететь!
Хоть это и не ответ на ваш вопрос, но... Если сервер используется исключительно как маршрутизатор, логично на него поставить специальную ОСь, например RouterOS или заменить его на микротик за 2-3кр. RouterOS принесет много радости админу, ибо имеет помимо консоли, очень удобный и куда более простой чем консоль виндовый интерфейс управления, Простые правила по делению канала можно создать буквально в три клика. Но можно и сложные замороченные схемы с приоритетом трафика реализовать. Просто настроить, чтоб не икало, на роутерОС можно быстро и не вдаваясь особо в принципы работы.
Если чел с микротиком не работал, что в два клика настроить его не сможет, проверно многократно ;)
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 )редактироватьНо прежде чем стандартный (кстати в чем стандартность?) скрипт написать нужно разобраться. В микротике, кстати, скриптовый язык покруче баша будет.
switch ( 2012-04-16 11:24:00 +0400 )редактироватьв стандартном скрипте для воип вообще ничего менять не надо. мы ж не про кустомный говорим.
meral ( 2012-04-16 11:30:18 +0400 )редактироватьЗадан: 2012-04-13 14:48:08 +0400
Просмотрен: 5,995 раз
Обновлен: Apr 14 '12
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.