У меня следующая настройка: локальная АТС выполняет звонки для удаленных клиентов vpn. И есть проблемы с большой задержкой и качеством VoIP-звонков в удаленном офисе. Удаленный офис - канал 10/10 Мбит / с, а местный - 6/6 Мбит / с.
vpn client (удаленный) <-> router <-> pbx <-> provider
маршрутизатор работает под управлением debian 7.3 со следующей настройкой tc
#!/bin/bash
TC=/sbin/tc
IPTABLES=/sbin/iptables
DEV=eth0
UPLINK=6000
CEIL=$(($UPLINK*95/100))
CLASS_RT="10"
CLASS_VOIP="11"
CLASS_PROV="12"
CLASS_BULK="13"
$TC qdisc del dev eth0 root
$TC qdisc add dev $DEV root handle 1: htb default $CLASS_BULK
$TC class add dev $DEV parent 1: classid 1:1 htb rate ${CEIL}kbit ceil ${CEIL}kbit
$TC class add dev $DEV parent 1:1 classid 1:$CLASS_RT htb rate $((1*$CEIL/20))kbit ceil $(($CEIL/10))kbit prio 0
$TC class add dev $DEV parent 1:1 classid 1:$CLASS_VOIP htb rate $((6*$CEIL/20))kbit ceil ${CEIL}kbit prio 1
$TC class add dev $DEV parent 1:1 classid 1:$CLASS_PROV htb rate $((2*$CEIL/20))kbit ceil ${CEIL}kbit prio 1
$TC class add dev $DEV parent 1:1 classid 1:$CLASS_BULK htb rate $((12*$CEIL/20))kbit ceil 5500kbit prio 5
$TC qdisc add dev $DEV parent 1:$CLASS_VOIP handle 110: pfifo limit 10
$TC qdisc add dev $DEV parent 1:$CLASS_PROV handle 120: pfifo limit 10
$TC qdisc add dev $DEV parent 1:$CLASS_BULK handle 130: sfq perturb 10
$TC filter add dev $DEV parent 1: protocol ip prio 0 handle $CLASS_RT fw classid 1:$CLASS_RT
$TC filter add dev $DEV parent 1: protocol ip prio 1 handle $CLASS_VOIP fw classid 1:$CLASS_VOIP
$TC filter add dev $DEV parent 1: protocol ip prio 1 handle $CLASS_PROV fw classid 1:$CLASS_PROV
$TC filter add dev $DEV parent 1: protocol ip prio 3 handle $CLASS_BULK fw classid 1:$CLASS_BULK
$IPTABLES -A POSTROUTING -t mangle -p icmp -j MARK --set-mark $CLASS_VOIP
$IPTABLES -A POSTROUTING -t mangle -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j MARK --set-mark $CLASS_RT
$IPTABLES -A POSTROUTING -t mangle -m tos --tos 0xb8 -j MARK --set-mark $CLASS_VOIP
$IPTABLES -A POSTROUTING -t mangle -d $local_ip_pbx -j MARK --set-mark $CLASS_VOIP
$IPTABLES -A POSTROUTING -t mangle -s $local_ip_pbx -j MARK --set-mark $CLASS_VOIP
$IPTABLES -A POSTROUTING -t mangle -d $public_ip_vpn -j MARK --set-mark $CLASS_VOIP
$IPTABLES -A POSTROUTING -t mangle -s $public_ip_vpn -j MARK --set-mark $CLASS_VOIP
$IPTABLES -A POSTROUTING -t mangle -d $public_ip_voip_provider -j MARK --set-mark $CLASS_PROV
$IPTABLES -A POSTROUTING -t mangle -s $public_ip_voip_provider -j MARK --set-mark $CLASS_PROV
$IPTABLES -A POSTROUTING -t mangle -d $private_vpn_voip_client -j MARK --set-mark $CLASS_VOIP
$IPTABLES -A POSTROUTING -t mangle -s $private_vpn_voip_client --set-mark $CLASS_VOIP
Когда локальный канал находится под большой нагрузкой даже с qos, задержка эхо-запроса увеличивается с 16 мс до 40 мс с пиковыми значениями 200 мс. Трафик из удаленного офиса - это только VoIP, и ссылка в порядке.
Есть идеи, как улучшить эти правила QOS, чтобы сохранить низкую задержку даже под нагрузкой?
Ты не можешь.
Когда локальный канал находится под большой нагрузкой даже при использовании qos, задержка ping увеличивается с 16 мс до 40 мс.
У вас нет контроля над задержкой локального соединения для ВХОДЯЩЕГО трафика, если вы не маршрутизируете весь трафик через центр обработки данных и не выполняете QOS для трафика, который вы отправляете в офис. Какова реальность - на канале вашего офиса весь входящий трафик находится за пределами вашего QOS, поскольку ваш QOS находится за входящим узким местом.