Каждый, кто занимался организацией телефонии, сталкивался с фразой «Плохая связь!» Что такое «плохая связь»? С одной стороны, это субъективный параметр, с другой – это вполне конкретные цифры.
Мы не будем полагаться на субъективные оценки пользователя, потому что это не «правда».
Попробуем оценить качество связи вполне конкретной цифрой.
Итак, как оказалось, за нас уже все продумано, осталось только подобрать инструмент и адаптировать его под себя.
Нам понадобится версия Asterisk старше 11 и некоторые навыки программирования.
Краткая информация из вики:
RTCP (протокол управления транспортировкой в реальном времени) — это протокол, используемый вместе с RTP. Протокол описан в RFC 3550,[1].Начиная с версии 11, Asterisk отправляет события RTCPReceived и RTCPSent через AMI. Для нас наиболее интересен RTCPReceived, поскольку он несет важную для нас информацию.RTCP основан на периодической передаче пакетов управления всем участникам сеанса с использованием того же механизма распределения, что и для пакетов данных.
Протокол RTCP используется для передачи информации о задержках и потерях медиа-пакетов, буфере джиттера и уровне аудиосигнала.
Также передаются показатели качества вызова и потери эхо-возврата.
Это выглядит так:
Событие: RTCPReceived привилегия: отчетность, все Порядковый номер: 23177 файл: менеджер.Интересующие нас направления:c линия: 1696 функция: Manager_default_msg_cb канал: SIP/MainAsterisk-0000113f состояние канала: 6 каналstatedesc:Up номер звонящего: 79914099 имя вызывающего абонента: RC Connectlinenum: неизвестно имя подключенной линии: неизвестно язык: ру контекст: TO_REGION расширение: 680000130 приоритет: 1 уникальный идентификатор: 1481711487.11714 linkedid: 1481711487.11714 кому: Адрес звездочки: 12611 от: Адрес узла: 14555 ртт: 0,0272 ссрк: 0x73f52b22 балл: 200 (СР) количество отчетов: 1 sendntp: 1481712636.17532474232832 отправлено: 9159680 отправлено пакетов: 57246 сентоктеты: 9159360 report0sourcessrc: 0x3098e4b3 report0fractionlost: 0 отчет0кумулятивнопотеряно: 0 report0highestsequence: 7177 отчет0sequencenumbercycles: 1 report0iajitter: 3 report0lsr: 2726085614 отчет0длср: 0,0590
канал — имя связанного канала from — IP удаленного узла rtt — «задержка», точнее круговая задержка sendpackets — количество отправленных пакетов sendoctets — количество отправленных байтов report0cumulativelost — количество потерянных пакетов с начала сессииСхема циркуляции RTCP-пакетов:
Р-Фактор лайт
Конечно, интересно получить итоговое качество канала в виде %.Для этого есть два варианта: R-фактор и MOS. Для более подробной информации, пожалуйста, посмотрите ты можешь здесь .
Конечно, мы не можем их точно посчитать, но можем сделать свою облегченную версию.
Общий алгоритм расчета может выглядеть так:
— Мы считаем максимальную задержку (RTT) по всем плечам и принимаем за аксиому, что проблемы со слышимостью начинаются с 1000 мс.— Подсчитываем процент потерь (максимальный) и принимаем за аксиому, что при 40 процентах качество связи неприемлемо.
В общей сложности расчет R-фактора может выглядеть так: R=100-(МаксRTT/10+2*МаксLostPackets) Оценка: 80-100% – хорошее качество звука 60-79% - удовлетворительно <60% - Sound quality is terrible
Где подать заявку?
На данный момент мы с этим «играем».Написана программа для визуальной оценки.
Кроме того, есть планы рассчитывать его автоматически для каждого звонка и заносить в CDR как дополнительное поле, что позволит оценить не только качество конкретного звонка, но и направления в целом по временным периодам.
Ссылка на программу Проверено на Asterisk 13, не знаю, будет ли работать в младших версиях.
УПД:
Как поместить рассчитанное значение в CDR?
На самом деле здесь все проще, чем кажется.Нет необходимости интегрировать свой скрипт или программу с базой данных и делать ОБНОВЛЕНИЕ.
После каждого расчета R-фактора достаточно задать переменную канала через тот же AMI-интерфейс:
Действие: Сетвар Канал: название канала, для которого был рассчитан R-фактор.И если в таблице CDR есть столбец r-фактора, он будет заполнен этим значением.Переменная: CDR(r-фактор) Значение: значение, которое было рассчитано.
Конечно, лучше в эту переменную положить среднее значение за весь вызов.
Теги: #asterisk rtcp #asterisk
-
Рубиновый Подкаст Noname S04E15
19 Oct, 24 -
Майнинг Еды Или «Перекресток» Глазами Хакера
19 Oct, 24 -
Видеореклама В Сети Google Adsense
19 Oct, 24