Вообщем такая проблема, канал в офисе 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
смотрите в сторону 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 (Apr 14 '12)editЗадан: Apr 13 '12
Просмотрен: 6,008 раз
Обновлен: Apr 14 '12
Traffic Control. Шейпинг с помощью классификатора u32 в Linux
Настройка в Elastix + приставка Elecard iTelec STB 820-11 voip
Можете ли посоветовать хостинг для asterisk в Москве?
мануал по установке Asterisk+FreePBX. Помогите найти рабочий.
Как организовать запись звонков для IP (VoIP) телефонии?
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.