Jump to content

Recommended Posts

Posted (edited)

Есть вот такая задача:

Необходимо произвести измерения задержки, джиттера, процент потерь пакетов для VoIP-потока. Чем можно собственно померять значения?

Передача голоса осуществляется по протоколу RTP.

 

Решение предполагается программное. Какие существуют программы измерения или диагностики для реализации данной задачи? Желательно свободное решение.

В общем, близкое решение нашел - консольная утилита iperf http://dast.nlanr.net/projects/iperf/ (есть практически во всех дистрибутивах Линукса), но эта утилита не понимает rtp и выдает только джиттер и процент потерь пакетов, а саму задержку не показывает.

iperf также может генерировать поток.

 

Жду ответов, может кто использовал подобные программы или знает решение задачи.

Edited by Shiva
Posted (edited)

Задержку можно c приемлимой точностью померить с помощью ping. Вообще в RTP задержка не самая критичная вещь. Даже за зарержке в 1000мс можно достаточно комфортно разговаривать. А вот джиттер более 30 мс - уже гарантированые фреймдропы и катастрофическое падение качества.

Edited by ram_scan
Posted

Как вариант, можно встать sniffer'ом в разрыв между VoIP-устройствами и ловить пакеты RTCP (SR, RR), в которых VoIP-устройства в течениче сеанса связи посылают друг другу отчеты с кол-вом потерянных пакетов и средним jitter'ом за интервал измерения. К сожалению, кол-во потерянных пакетов не включает в себя опоздавшие пакеты, отброшенные буфером.

 

Увы, из продуктов open-source сам ничего подобного не нашел. Пришлось открыть RFC 3550 и написать самому на perl + Net::Pcap + NetPacket.

 

Измерять RTT можно при помощи ICMP Echo-Request, т.е. с помощью утилиты ping или mtr. Это даст близкий результат. Разумеется, если в сети включена приоритезация VoIP-трафика с помощью DiffServ, то лучше посылаемые ICMP-пакеты маркировать таким же значением TOS-байта (параметр ping -Q).

 

Например, иммитировать поток, аналогичный потоку из 1000 RTP-пакетов G.711/30мс, маркированных TOS-байтом 0xB8, можно так:

ping -s 252 -i 0.03 -Q 0xb8 -c 1000 <ip-адрес>

 

* параметры -i < 0.2 и -Q можно устанавливать только из под root;

* не все устройства отвечают на такое кол-во ICMP Echo-Request аналогичным кол-во ответов; в некоторых предусмотрено игонорирование некоторого кол-ва пакетов, чтобы не перегружать CPU;

Posted

facility

Спасибо за подробный ответ.

А как насчет ICMP-ответов, ведь они не будут маркированы ToS байтом и соответственно тяжело сопоставить действительную задержку реального потока и задержку вот такого сгенерированного ping`ом потока?

 

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

Posted
facility

Спасибо за подробный ответ.

Да не за что. Перед самим такие же задачи стоят, поэтому рассказал, что знаю. Может совместными усилиями родится что-нибудь полезное.

 

А как насчет ICMP-ответов, ведь они не будут маркированы ToS байтом и соответственно тяжело сопоставить действительную задержку реального потока и задержку вот такого сгенерированного ping`ом потока?
Боюсь, что никак :) Измерение ping'ом - не точное.

 

Хотя, можно основываться на том, что если у сгенерированного потока будут приемлемые результаты, то у реального они должны быть лучше (т.к. бит приоритета выставлен в обе стороны).
Да, я примерно так и рассуждаю. Опять же повторюсь: ICMP - не может быть точным инструментом измерения пригодности канала для RTP. Он дает лишь приближенный к реальному результат, а иногда, когда устройства запрограммированы на игнорирования части ICMP, вообще не годится для измерений.

 

ethereal / wireshark.

 

Словить реальный voip поток, Statistics -> RTP -> Show all streams

Тогда надо одновременно ловить с обоих "концов" канала связи, а потом сопоставлять результаты.
Posted

есть такая софтина, ixchariot. софтина платная, но есть в ослах работающие версии. меряет все параметры для VoIP, даже MOS вычисляет. строит графики и т.п. рекомендую.

Posted

есть такая софтина, ixchariot. софтина платная, но есть в ослах работающие версии. меряет все параметры для VoIP, даже MOS вычисляет. строит графики и т.п. рекомендую.

Какова методика измерения?

Posted

есть такая софтина, ixchariot. софтина платная, но есть в ослах работающие версии. меряет все параметры для VoIP, даже MOS вычисляет. строит графики и т.п. рекомендую.

Какова методика измерения?

А можно линк на софтину, если конечно нашли?
Posted

методика такая: на 2-х писюках ставятся ендпоинты (официально бесплатные софтинки) и на одном сама управляющая софтинка чариот. в "интуитивно-понятном" граф. интерфейсе задаются "пары" - трафик направляестя от 1 эндпоинта к 2. пары можно копировать и разворачивать. для каждой пары настраиваецца иммитируемый кодек. после того, как все сконфигурено, запускаецца сам тест. гоняецца не реальный голос, а какая-то синтетика (ловили сниффером), но результаты удивительным образом совпадают с результатами измерений железкою RAD VoIP Performer (если кто в курсе).

Posted

Разницы что гонять, голос или синтетику с точки зрения сети нет никакой. Синтетика нужна только чтобы проверить правильность работы кодека.

Posted (edited)

Разницы что гонять, голос или синтетику с точки зрения сети нет никакой. Синтетика нужна только чтобы проверить правильность работы кодека.

С точки зрения сети действительно никакой разницы. Другое дело - анализ работы стека RTP конкретных устройств. Я вот, например, до сих пор не могу понять при каких условиях Avaya TN2302AP начинает отбрасывать пакеты. Главное - не понятно как сосчитать кол-во отброшенных. RTCP (SR и RR), согласно прочитанному в RFC 3550, не позволяет это сделать. Подобная информация присутствует в RFC 3611 (RTCP XR discard rate), но, как я понял, мало устройств умеет этот отчет формировать. Есть какие-нибудь соображения на этот счет?

Edited by facility
  • 3 weeks later...
Posted

То бишь, как я понимаю, нет свободного решения, реализующего полноценное тестирование сети:

1. генерация различного типа трафиков

2. получение характеристик сети (задержка, джиттер, потери пакетов)

3. представление в виде графиков (это конечно не очень важно, так как их можно и самому построить)

 

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

 

Предлагаю пополнять список программ

1. iperf - для генерации udp и tcp трафика, измерение джиттера, потери пакетов, поддержка multicast

2. ping - генерация icmp сообщений, задание приоритетов, измерение задержки

3. advisor ( http://dast.nlanr.net/projects/advisor/ ) использует для тестирования iperf, traceroute, pathload и др.

4. multicast beacon - если честно еще не тестировал эту систему.

Posted (edited)
ethereal/wireshark

packit (linux)

packeth (linux, GUI)

желательно конечно хоть маленькое описание для чего - ведь я думаю не мне одному может пригодится.

ethereal/wireshark - GUI снифер

packeth - генератор tcp, udp пакетов

Packit - сетевая утилита, предоставляющая полный контроль над трафиком IPv4. Бывает очень полезной для тестирования firewall'ов и общего TCP/IP аудитинга. Поддерживает TCP, UDP, ICMP, IP и Ethernet, требует библиотеки libnet 1.1 или выше и libpcap. ( http://www.securitylab.ru )

 

А вот про генерацию типичных сетевых всмысле трафиковых профилей кто-нибудь слышал ?

Edited by kustov
Posted
А вот про генерацию типичных сетевых всмысле трафиковых профилей

около года - двух тому назад разбирался с этой темой.

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

сымитировать tcp-нагрузку до уровней 5-7 свободным софтом не удалось, не нашлось внятного подходящего софта.

как вариант могу посоветовать одолжить у кого-нить приличный тестер типа иксии/спирента/аджелента, либо у знакомых, кто использует, либо у продавцов, прикинувшись потенциальным покупателем

  • 3 weeks later...
Posted (edited)

А я вот нашел!!!!

Мега ссылка на кучу систем мониторинга, анализаторов, генераторов и прочих сетевых утилит.

Нашел и генераторы VoIP и прочие. Все разбито на несколько групп так что искать что-либо очень удобно даже не зная названия утилит.

http://www.slac.stanford.edu/xorg/nmtf/nmtf-tools.html

Список постоянно обновляется.

 

Вот конкретный пример генератора

http://www.grid.unina.it/software/ITG/

Умеет типичные трафиковые профили:

 

Telnet (without any other option)

DNS (without any other option)

Quake3 (without any other option)

CSa (Counterstrike active)

CSi (Counterstrike inactive)

VoIP Codec: G.711.<1 or 2> (samples per pkt)

G.729.<2 or 3> (samples per pkt)

G.723.1

(Default: G.711.1)

-h <protocol_type> (Default: RTP)

-VAD Voice_Activity_Detection>

 

Возможностей НАМНОГО больше чем у iperf. Анализатор логов, построение графиков. Есть даже GUI (только кроме графиков незнаю зачем он нужен :-) ).

 

В общем, кому пригодилось (пригодится) может благодарить. :-)

 

Так что похоже, на вопрос в первом сообщении сам я и ответил.

Edited by kustov

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.