LINUX.ORG.RU
ФорумAdmin

asterisk under kvm

 , , ,


0

2

Друзья, в тесте, не замечали проблем. Сейчас пошли в продакшн, и тут нате распишитесь...

При общении на внешний поток или при общении с конвертацией кодеков, появляются щелчки...

Всю голову сломал. Вот наткнулся на то, что в top, у меня si, st - 0.2-0.7 процента. Накрутил cpuunits - в proxmox, максимальное значение для kvm узла: 50000. На выходе: всё теже si, st - 0.2-0.7 процента.

Насколько велика вероятность, что щелчки вызваны именно виртуальной средой при нагрузке в полторы сотен абонентов?

Ничего толкового по si, st + asterisk, не нашёл. Закапывать виртуальную машину, и пользовать дедик, или причина 100 процентов в другом?

На узле крутится: 11 виртуальных машин по мимо asterisk. load average сервера - не больше 1,5-2,0, при 4ядрах. Все остальные машинки, имеют 1024 cpuunits.

la - самой машины asterisk - всегда близок к нулю.

Что можно попробовать в этом плане еще? qemu-agent может как-то помочь?

Так же, сама VM, проживает в двух VLAN, в голосовом, и в обычном. Вот что в ifconfig внутри VM:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.3.27  netmask 255.255.255.0  broadcast 192.168.3.255
        inet6 fe80::3831:35ff:fe36:3664  prefixlen 64  scopeid 0x20<link>
        ether 3a:31:35:36:36:64  txqueuelen 1000  (Ethernet)
        RX packets 13850  bytes 1306289 (1.2 MiB)
        RX errors 0  dropped 966  overruns 0  frame 0
        TX packets 4412  bytes 1413111 (1.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.54.1  netmask 255.255.255.0  broadcast 192.168.54.255
        inet6 fe80::3433:39ff:fe31:6466  prefixlen 64  scopeid 0x20<link>
        ether 36:33:39:31:64:66  txqueuelen 1000  (Ethernet)
        RX packets 1943690  bytes 555983750 (530.2 MiB)
        RX errors 0  dropped 7844  overruns 0  frame 0
        TX packets 1871398  bytes 536744860 (511.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Кто-то пользуется asterisk в среде kvm? Спасибо!

★★★★★

Последнее исправление: DALDON (всего исправлений: 3)

можешь взять wireshark/tcpdump и снять поток с нескольких точек, например со сторон А и Б номеров и на самой атс до и после kvm. wireshark умеет выцеплять rtp поток, и ты получишь несколько потоков до и после. дальше сравни качество звука, локализовать проблему сможешь

upcFrost ★★★★★
()
Ответ на: комментарий от King_Carlo

Только так, собственно, все вокруг и пользуются.

Какой steal time? :) У меня вот с сеткой проблемы похоже... Пакеты дропаются... Куда бы копнуть...

DALDON ★★★★★
() автор топика
Ответ на: комментарий от upcFrost

Пасибо! Попробую! В общем сейчас нашёл, что у меня куча дропнутых пакетов... Из-за чего бы оно могло быть? uptime 10 минут, и уже вагон пакетов!

P.S. разумеется virtio

DALDON ★★★★★
() автор топика
Последнее исправление: DALDON (всего исправлений: 2)
Ответ на: комментарий от DALDON

ну вот и смотри кто их дропает. опять же - берешь несколько последовательных точек где есть подозрение на дроп, обнуляешь счетчики и вперед. желательно чтоб ты при этом был один в офисе чтоб других пакетов не бежало ;) соответственно лучше всего port-mirror на свитч либо что-либо с таймером на сервер чтоб ты успел отлогиниться и не создавал пакеты сам

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

upcFrost ★★★★★
()
Последнее исправление: upcFrost (всего исправлений: 3)
Ответ на: комментарий от DALDON

Какой steal time? :) У меня вот с сеткой проблемы похоже... Пакеты дропаются... Куда бы копнуть...

Понятия не имею, я не админ астериска, но проблем со звуком нет.

King_Carlo ★★★★★
()
Ответ на: комментарий от DALDON

а, погоди, или это у тебя на сервере ты видишь кучу дропов? тогда оттупил, сорри, попробуй лог включить

upcFrost ★★★★★
()
Ответ на: комментарий от upcFrost

а, погоди, или это у тебя на сервере ты видишь кучу дропов? тогда оттупил, сорри, попробуй лог включить

Я в шоке...

Смотри, у asterisk, два интерфейса.

  • Один смотрит в DMZ, чисто для админки web+ssh
  • Другой в voice vlan.

И самое интересное, что дропы растут только на DMZ интерфейсе! А на voice - как стоит 1гб трафика, так и стоит, немного растёт трафик, но дропы не растут...

В тестовой инсталляции asterisk - та же ерунда примерно...

DALDON ★★★★★
() автор топика
Последнее исправление: DALDON (всего исправлений: 1)
Ответ на: комментарий от DALDON

Beginning with kernel 2.6.37, it has been changed the meaning of dropped packet count. Before, dropped packets was most likely due to an error. Now, the rx_dropped counter shows statistics for dropped frames because of:

Softnet backlog full Bad / Unintended VLAN tags Unknown / Unregistered protocols IPv6 frames when the server is not configured for IPv6

If any frames meet those conditions, they are dropped before the protocol stack and the rx_dropped counter is incremented.

true_admin, может чего сможешь подсказать, куда копнуть? :)

DALDON ★★★★★
() автор топика
Ответ на: комментарий от DALDON

а, дроп прямо на интерфейсе. все про iptables думал. а откуда приходит трафик на dmz?

и еще - голосовой поток идет-таки по voice и без дропов? если да - тогда опять же снимать поток с разных точек и смотреть разницу

upcFrost ★★★★★
()
Последнее исправление: upcFrost (всего исправлений: 2)
Ответ на: комментарий от upcFrost

а dmz - это в прямом смысле dmz? голым натом в интернет?

Не, на улицу только он может ходить. В asterisk, с улицы нельзя войти конечно. Ни одного порта не торчит. То есть, смотри.

Есть виртуалки. Вот на том же физ. узле, соседняя виртуалка, с линуксом, трафика через интерфейс в той же сети «DMZ»: 56 гиг прием, 2тб - отдача. dropped пакетов всего два.

Виртуалка с asterisk:

После включения, я ещё даже зайти на него по ssh толком не успел, на «DMZ» - уже свыше тысячи drop пакетов. У меня стоит elastix. - Centos7. На voice интерфейсе: как было 7844 пакета, так и остаётся... Откуда такое кол-во, и почему оно более не растёт - не знаю. Звонки то у меня идут... Трафик не хотя, но увеличивается на voice фейсе, но уже без дропов. steal 0.2 - и проблемы все на месте...

DALDON ★★★★★
() автор топика
Ответ на: комментарий от DALDON

ок. тогда попробуй просто снять с хоста трафик до и после. если астериск проксирует, то должно быть две идентичные пары потоков с небольшой задержкой на станции (чисто на проксирование) друг относительно друга

по поводу dmz - хз, с kvm особо не работал, может там какие ошметки трафика хоста или соседа долетают или еще чего.

upcFrost ★★★★★
()
Последнее исправление: upcFrost (всего исправлений: 1)
Ответ на: комментарий от upcFrost

тогда попробуй просто снять с хоста трафик до и после. если астериск проксирует, то должно быть две идентичные пары потоков с небольшой задержкой на станции (чисто на проксирование) друг относительно друга

Пробем нету, если, например звонить по схеме: 711-711 кодек, 726-726. Проблемы с щелчками только если: 711-726, 726-TDMoE, 711-TDMoE. Я стал предполагать, что во всём виноват только st+kvm.

При том смотри. Например, я звоню с проводного SIP, по схеме: 711u-TDMoE-E1-АТС-сотовый. Я щелчки слышу. Сотовый абонент - нет.Я ничего не понимаю.

DALDON ★★★★★
() автор топика
Ответ на: комментарий от DALDON

перекодирование короче. странно, астер этим не страдал. BP250 помню страдал, там и правда некоторые пары через жопу работали.

кстати, а вот такой интересный вопрос - в режимах 711-711 и 726-726 станция проксирует или кидает reinvite/directmedia? А то может ли быть что проблемы в случае когда поток именно проходит через станцию, а не при перекодировании

upcFrost ★★★★★
()
Последнее исправление: upcFrost (всего исправлений: 2)
Ответ на: комментарий от upcFrost

кстати, а вот такой интересный вопрос - в режимах 711-711 и 726-726 станция проксирует или кидает reinvite/directmedia? А то может ли быть что проблемы в случае когда поток именно проходит через станцию, а не при перекодировании

Завтра постараюсь ответить. Сейчас пробуем экстренно впилить 722 кодек везде. Gigaset умеет в две его реинкарнации, широкополосную и в обычную. Вестимо, широкополосная - 4 канала вместо восьми на точку. Нам не годится. По сему, пробуем на yealink 722, и на gigaset не расширенный. Чего вырастит из этого - не знаю. Включили на астере 711a+722. Остальное - в бан. Сейчас с E1, прилетает 711a, затем включается 722. Позвонить с 722 gigaset, на yealink пока нету физической возможности. Завтра будем пробовать.

DALDON ★★★★★
() автор топика
Последнее исправление: DALDON (всего исправлений: 1)
Ответ на: комментарий от menzoberronzan

Потому что взяли готовый дистрибутив elastix. Его, наверно, как-то можно засунуть в lxc, но решили не извращаться так. Это во-первых. Во-вторых у нас TDMoE, через низкоуровневый драйвер. Так что lxc, нам не подходит.

DALDON ★★★★★
() автор топика
Ответ на: комментарий от DALDON

У меня есть подозрение что дело не в дропах. Особенно если другие кодеки работают нормально. Но погонять iperf -s -u не помешает чтобы знать наверняка.

Астериск умеет в логи? Ну или та часть что про кодек.

true_admin ★★★★★
()
Ответ на: комментарий от menzoberronzan

Да, у нас стоит Парабел, у них свой, модифицированный модуль ядра с драйвером dahdi

DALDON ★★★★★
() автор топика
Ответ на: комментарий от true_admin

Ну или та часть что про кодек.

Короче дело было в кодеке похоже. Перешли на 722, везде, и DECT, и провод, и пока всё стало отлично! Но гоп, ещё не говорю.

DALDON ★★★★★
() автор топика
Ответ на: комментарий от Vlad-76

Пока нет! На 722 кодеке, связь стала шикарной... Если бы не одно НО! Сейчас у нас проблемы с потоком E1. Идёт рассинхронизация времени, из-за чего (предположительно), иногда не возможно звонить в город, asterisk говорит извинте, все линии заняты. И некоторые входящие срываются.

А ещё gigaset контроллеры - имеют баги. При обновлении времени (оно само раз в несколько часов обновляется), все трубки отваливаются на пару минут... Надо писать в gigaset

DALDON ★★★★★
() автор топика
Ответ на: комментарий от DALDON

посмотрите как поднимаетя загрузка KVM виртуалки с астером когда загружается dahdi Либо драйвер для тайминга(генерит кучу аппаратаных прерываний, но для KVM это программные прерывания). По мне так не стал бы в KVM ставить реалтайм системы тем более для продакшена + 11 виртуалок рядом Еще бывают непонятки с качеством - когда на одном прерывании с карточкой E1 висит еще какое нибудь прерываение, например USB контроллера а в нем модем

Vlad-76 ★★★★
()
Последнее исправление: Vlad-76 (всего исправлений: 1)
Ответ на: комментарий от Vlad-76

Идёт рассинхронизация времени, из-за чего (предположительно)

для KVM это программные прерывания

+ именно в этом дело, подозревали, что такое будет и при переводе (в свое время) перешли на SIP на Asterisk, а Asterisk как guest KVM.

Как то там можно ухитрятся все таки, но решили не добавлять себе работы.

petav ★★★★★
()
Ответ на: комментарий от Vlad-76

посмотрите как поднимаетя загрузка KVM виртуалки с астером когда загружается dahdi

0-5%.

По мне так не стал бы в KVM ставить реалтайм системы тем более для продакшена

Попробуем на реальном железе. Отпишусь. Сейчас у нас наблюдается потери пакетов и ошибки на уровне E1.

Еще бывают непонятки с качеством - когда на одном прерывании с карточкой E1 висит еще какое нибудь прерываение, например USB контроллера а в нем модем

Случай не наш. Так-как у нас TDMoE.

DALDON ★★★★★
() автор топика
Ответ на: комментарий от petav

именно в этом дело, подозревали, что такое будет и при переводе (в свое время) перешли на SIP на Asterisk, а Asterisk как guest KVM.

Масло маслянное. :) Опиши подробнее.

DALDON ★★★★★
() автор топика
Ответ на: комментарий от petav

В общем, делаю на реальном железе - отпишу о результатах. К asterisk, вопросов то никаких нету. Вопросы только к потоку, и модулю ядра TDMoE.

DALDON ★★★★★
() автор топика
Ответ на: комментарий от anonymous

В том и дело... В общем, доковырялись, у нас не точно идут прерывания. Хреново работает /proc/interrupts в kvm. Не хватает у нас девяток после 99,9xx. У нас, это: 99,930, а нужно: 99,975 и выше. Сейчас уезжаю в реальное железо. Будем смотреть..! Я уже не верю, в то, что этот ад когда-нибудь закончится... А причиной этому, похоже, как раз steal times

DALDON ★★★★★
() автор топика
Последнее исправление: DALDON (всего исправлений: 1)
Ответ на: комментарий от DALDON

я когда тестил сервер для KVM 8 ядер - два E5620 и тупо грузил его - ставил кучу виртуалок c trixbox, где то на 11 или 14 виртуалке в консоль виртуалок при старте атсериска и dahdi (или заглушка dahdi), начинали валиться сообщения про то что тайминги (или клоки, не помню точно)у вас хреновые или сдвигаются. Голосовых вызовов ни в одной виртуалке не было, т.е. просто запущенная виртуалка с триксбоксом.

Vlad-76 ★★★★
()
Последнее исправление: Vlad-76 (всего исправлений: 1)
Ответ на: комментарий от DALDON

Сейчас уезжаю в реальное железо.

Просто к слову, инфраструктурное решение, как вариант можно ядро на Elastix оставить там где он сейчас. А на железо вынести чистый Asterisk и разные платы и по SIP или IAX2 связать.

petav ★★★★★
()
Ответ на: комментарий от DALDON

попробуйте запустить ту же виртуалку выгрузив астер, dahdi и что нужно этому бутерброду
TDMoE - не понял что Вы имеете ввиду. Как называется железка? Пример про то что если на одном прерывании аппратном будет висеть 150 вызовов - это еще 15000 пакетов в секунду, еще куча прерываний.
и еще заметил что центос 6 внутри КVM при марщрутизации через себя трафика (пакеты) грузит CPU хоста в разы ниже. Уходите на LXC или OpenVZ если в виртуалке хочется остаться.

Vlad-76 ★★★★
()
Последнее исправление: Vlad-76 (всего исправлений: 1)
Ответ на: комментарий от Vlad-76

TDMoE - не понял что Вы имеете ввиду.

TDMoE - это аббривиатура, от: TDM over ethernet. То есть, у меня в виртуалке то нету никаких реальных железок. Но вот модуль ядра для TDMoE - похоже использует прерывания. Всё равно, покамест очень рано что-то говорить, я ещё в процессе миграции.

dahdi (или заглушка dahdi), начинали валиться сообщения про то что тайминги (или клоки, не помню точно)у вас хреновые или сдвигаются.

Пасибо! Ценно! Как отмигрирую - отпишу.

DALDON ★★★★★
() автор топика
Ответ на: комментарий от Vlad-76

Написал - сейчас прочитал - сам не понял))
принцип какой - для железок которые в передаче голоса участвуют - прерывания должны быть разделены. Это для хардварного решения. Для KVM решения это может быть вообще за гранью.
Про 150 вызовов - это отдельные наблюдения/соображения были. Вообщем виртуалки хорошо для некритичных (по таймауту) сервисов, голос это реалтайм по определению.
qnx ось типа линукс, которая для реалтайма (ее возможности возможно) заточена - вспомнилось что то, так просто написал.

Vlad-76 ★★★★
()
Последнее исправление: Vlad-76 (всего исправлений: 1)
Ответ на: комментарий от Vlad-76

Проблема похоже решена. Заменили вирт. машину, на дедик. Завтра посмотрю в продакшене. Пока не говорю «гоп». Но вскоре может ещё одну тему создам, для любителей таймслотов в потоке E1...

DALDON ★★★★★
() автор топика
Ответ на: комментарий от DALDON

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

если все таки (нагрузка ведь не телекомовская, 150 линий всего) хочется попробовать довести до ума синхронизацию времени, то гуглить по kvm guest time keeping, там всяких хитрых рецептов сколько угодно

dyasny ★★★★★
()
Ответ на: комментарий от dyasny

150 вызовов - 15000 пакетов в сек. прерываний может быть и меньше но чем больше тем лучше (а чем больше тем для KVM тяжелее). Может использовать сетевухи спецом которые разработаны для виртуалок (VMQ) и пробросить очереди сетевух прямо в целевую виртуалку. А лучше железную виртуалку пробросить в гостя. И на нее настроить TDMoE драйвер.

Vlad-76 ★★★★
()
Последнее исправление: Vlad-76 (всего исправлений: 2)
Ответ на: комментарий от Vlad-76

во первых, при dpdk offload очередей уже сделан, а во вторых, если использовать VF специальных сетевух отданную виртуалке, то обработка потока будет сгружена на собственно сетевуху. Именно поэтому народ берет UCS (56-128 10Gbps VF на лезвие, емнип) или просто железо с SRIOV

dyasny ★★★★★
()
Ответ на: комментарий от dyasny

Собственно ради телекомов и нагородили всю эту дрянь с sriov, dpdk, vmfex и прочими извращениями.

то гуглить по kvm guest time keeping, там всяких хитрых рецептов сколько угодно

Ничего себе... Интересно! Спасибо! Познавательно!

DALDON ★★★★★
() автор топика
Ответ на: комментарий от DALDON

Vlad-76, petav, true_admin, menzoberronzan, upcFrost, King_Carlo, dyasny

Мужики, на реальном железе, проблемы с TDMoE, ушли. Steal time, вестимо по нулям. За ночь, всего один пакет в ошибке. Глюки прекратились. Факсы забегали.

Ещё одну тему я возможно создам. Там уже будет про поток E1. Но это несколько из другой области... В общем проблема ещё одна есть.

to: dyasny, спасибище тебе за наводки, куда копать дальше. Я буду думать, или пытаться тюнить kvm, или купить отдельный, выделенный сервер для телефонии.

DALDON ★★★★★
() автор топика
Ответ на: комментарий от DALDON

можно использовать алтернативу, cisco 2811 + 2*e1 + PWDM2-64. на циске принимать е1-поток, конвертить в sip. по ценам - вроде можно в 400 долларов уложится.

Nurmukh ★★★
()
Ответ на: комментарий от Nurmukh

Спасибо, так же посмотрю и в эту сторону.

DALDON ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.