PF + VOIP !!!ПОТЕРЯ ГОЛОСОВЫХ ДАННЫХ!!!
Добавлено: 2012-03-01 14:13:38
Уважаемые коллеги! Прошу помощи!
Проблема с потерей голосовых данных (VOIP).
Используем VOIP для исходящих вызовов.
Входящие по E1.
Кодеки пробовали 729, 711. На последнем еще хуже.
Вводные данные: полоса пропускания интернет канала 40Мбит синхронно
Шлюз FreeBSD 8.2 (АТС Panasonic TDE600 подключена через NAT, в качестве пакетного фильтра - PF)
/etc/pf.conf
# Macros:
int_if_1 = "em0"
ext_if_1 = "em1"
vpn = "tun0"
iodine = "tun1"
ext_nat_1 = "белыйIP"
zero_net = "192.168.0.0/24"
dhcp_net = "192.168.1.0/24"
# Tables
table <private> { 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/24 }
table <admin> { }
table <authpf_users> persist
table <sshguard> persist
table <oovoo> { 63.111.29.0/24, 213.218.157.0/24 }
# Options
set skip on lo0
set timeout { udp.first 300, udp.single 150, udp.multiple 900 }
set timeout { other.first 120, other.single 60, other.multiple 120 }
set fingerprints "/dev/null"
# Normalization
scrub in on $ext_if_1 all
# Translation
nat pass on $ext_if_1 from $zero_net to any -> $ext_nat_1
nat pass on $ext_if_1 from $dhcp_net to any port { 110 995 } -> $ext_nat_1
nat pass on $ext_if_1 from any to <oovoo> port { 80 443 5222 } -> $ext_nat_1
# Anchor
rdr-anchor remote_access
load anchor remote_access from "/etc/pf-remote_access.conf"
# Block all
block log all
# Pass local traffic
pass quick on lo0 all no state
pass quick on $int_if_1 all no state
# Out traffic
pass out on $ext_if_1 from ($ext_if_1) to any
pass out on $ext_if_1 proto udp to port 1194 keep state
pass out on $ext_if_1 proto tcp to port 1194 keep state
pass out on $vpn to any keep state
pass out on $iodine to any keep state
# In traffic
pass in on $ext_if_1 proto icmp all
pass in on $ext_if_1 proto tcp to port 22 flags S/SA
pass in on $ext_if_1 proto tcp to port 25 flags S/SA
pass in on $ext_if_1 proto tcp to port 110 flags S/SA
pass in on $ext_if_1 proto tcp to port 993 flags S/SA
pass in on $ext_if_1 proto tcp to port 995 flags S/SA
pass in on $ext_if_1 proto { tcp, udp } to port 53
pass in on $ext_if_1 proto { tcp, udp } from any port 53
pass in on $ext_if_1 proto tcp from any port { 80 8080 443 } to ($ext_if_1)
pass in on $ext_if_1 proto tcp to port 80 flags S/SA keep state
pass in on $ext_if_1 proto udp to port 1194 keep state
pass in on $ext_if_1 proto tcp to port 1194 keep state
pass in on $vpn to any keep state
pass in on $iodine to any keep state
Как видно, приоритезацию трафика не используем, т.к. канал используется не на 100%. В сети 100 юзеров, 70% которых сидят за SQUID'ом, и только остальные за NAT'ом.
Ping-pong до оператора SIPNet:
Обмен пакетами с 212.53.40.40 по 32 байт:
Ответ от 212.53.40.40: число байт=32 время=4мс TTL=248
Ответ от 212.53.40.40: число байт=32 время=3мс TTL=248
Ответ от 212.53.40.40: число байт=32 время=3мс TTL=248
Ответ от 212.53.40.40: число байт=32 время=3мс TTL=248
Ответ от 212.53.40.40: число байт=32 время=3мс TTL=248
Ответ от 212.53.40.40: число байт=32 время=3мс TTL=248
Ответ от 212.53.40.40: число байт=32 время=4мс TTL=248
Статистика Ping для 212.53.40.40:
Пакетов: отправлено = 7, получено = 7, потеряно = 0 (0% потерь),
Приблизительное время приема-передачи в мс:
Минимальное = 3мсек, Максимальное = 4 мсек, Среднее = 3 мсек
Также проводил тестирование всевозможными утилитами - судя по анализу - скорость отличная.
Хотелось бы понять, в чем косяк.
Сначала была мысль, что SIPNet крякает, но подключив тестовый аккаунт другого SIP оператора поняли, что дело не в них.
Через программный IPтелефон качество такое же, так что АТС настроена правильно (настраивали квалифицированные ребята из SOLYAR.RU)
И что самое интересное: МЫ собеседника слышит на протяжении всего разговора отлично, а вот нас - с перебоями.
Если однозначным советом будет включение ALTQ, то не проблема, перекомпилю ядро, внесу изменения в PF, но хочется понять почему канала 40Мбит не хватает даже для одного вызова?!!
Проблема с потерей голосовых данных (VOIP).
Используем VOIP для исходящих вызовов.
Входящие по E1.
Кодеки пробовали 729, 711. На последнем еще хуже.
Вводные данные: полоса пропускания интернет канала 40Мбит синхронно
Шлюз FreeBSD 8.2 (АТС Panasonic TDE600 подключена через NAT, в качестве пакетного фильтра - PF)
/etc/pf.conf
# Macros:
int_if_1 = "em0"
ext_if_1 = "em1"
vpn = "tun0"
iodine = "tun1"
ext_nat_1 = "белыйIP"
zero_net = "192.168.0.0/24"
dhcp_net = "192.168.1.0/24"
# Tables
table <private> { 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/24 }
table <admin> { }
table <authpf_users> persist
table <sshguard> persist
table <oovoo> { 63.111.29.0/24, 213.218.157.0/24 }
# Options
set skip on lo0
set timeout { udp.first 300, udp.single 150, udp.multiple 900 }
set timeout { other.first 120, other.single 60, other.multiple 120 }
set fingerprints "/dev/null"
# Normalization
scrub in on $ext_if_1 all
# Translation
nat pass on $ext_if_1 from $zero_net to any -> $ext_nat_1
nat pass on $ext_if_1 from $dhcp_net to any port { 110 995 } -> $ext_nat_1
nat pass on $ext_if_1 from any to <oovoo> port { 80 443 5222 } -> $ext_nat_1
# Anchor
rdr-anchor remote_access
load anchor remote_access from "/etc/pf-remote_access.conf"
# Block all
block log all
# Pass local traffic
pass quick on lo0 all no state
pass quick on $int_if_1 all no state
# Out traffic
pass out on $ext_if_1 from ($ext_if_1) to any
pass out on $ext_if_1 proto udp to port 1194 keep state
pass out on $ext_if_1 proto tcp to port 1194 keep state
pass out on $vpn to any keep state
pass out on $iodine to any keep state
# In traffic
pass in on $ext_if_1 proto icmp all
pass in on $ext_if_1 proto tcp to port 22 flags S/SA
pass in on $ext_if_1 proto tcp to port 25 flags S/SA
pass in on $ext_if_1 proto tcp to port 110 flags S/SA
pass in on $ext_if_1 proto tcp to port 993 flags S/SA
pass in on $ext_if_1 proto tcp to port 995 flags S/SA
pass in on $ext_if_1 proto { tcp, udp } to port 53
pass in on $ext_if_1 proto { tcp, udp } from any port 53
pass in on $ext_if_1 proto tcp from any port { 80 8080 443 } to ($ext_if_1)
pass in on $ext_if_1 proto tcp to port 80 flags S/SA keep state
pass in on $ext_if_1 proto udp to port 1194 keep state
pass in on $ext_if_1 proto tcp to port 1194 keep state
pass in on $vpn to any keep state
pass in on $iodine to any keep state
Как видно, приоритезацию трафика не используем, т.к. канал используется не на 100%. В сети 100 юзеров, 70% которых сидят за SQUID'ом, и только остальные за NAT'ом.
Ping-pong до оператора SIPNet:
Обмен пакетами с 212.53.40.40 по 32 байт:
Ответ от 212.53.40.40: число байт=32 время=4мс TTL=248
Ответ от 212.53.40.40: число байт=32 время=3мс TTL=248
Ответ от 212.53.40.40: число байт=32 время=3мс TTL=248
Ответ от 212.53.40.40: число байт=32 время=3мс TTL=248
Ответ от 212.53.40.40: число байт=32 время=3мс TTL=248
Ответ от 212.53.40.40: число байт=32 время=3мс TTL=248
Ответ от 212.53.40.40: число байт=32 время=4мс TTL=248
Статистика Ping для 212.53.40.40:
Пакетов: отправлено = 7, получено = 7, потеряно = 0 (0% потерь),
Приблизительное время приема-передачи в мс:
Минимальное = 3мсек, Максимальное = 4 мсек, Среднее = 3 мсек
Также проводил тестирование всевозможными утилитами - судя по анализу - скорость отличная.
Хотелось бы понять, в чем косяк.
Сначала была мысль, что SIPNet крякает, но подключив тестовый аккаунт другого SIP оператора поняли, что дело не в них.
Через программный IPтелефон качество такое же, так что АТС настроена правильно (настраивали квалифицированные ребята из SOLYAR.RU)
И что самое интересное: МЫ собеседника слышит на протяжении всего разговора отлично, а вот нас - с перебоями.
Если однозначным советом будет включение ALTQ, то не проблема, перекомпилю ядро, внесу изменения в PF, но хочется понять почему канала 40Мбит не хватает даже для одного вызова?!!