Jump to content
Калькуляторы

Анализатор мультикаста (MPEG-TS / RTP) принимаются пожелания

Кто как видит себе такую софтину для анализа мультикаст потока с mpeg-ts / rtp+mpeg-ts на ошибки последовательности?

Пока вижу только как считать ошибки CC и TEI пакеты для mpeg-ts, ошибки последовательности для RTP, примерную скорость потока, время простоя (сколько времени нет потока).

OS: FreeBSD/Linux.

 

 

Те как ей управлять, как забирать результаты.

Share this post


Link to post
Share on other sites

ещё не забудь такую вещь, как шифрованный поток. Если что-то случилось с дескремблингом, поток начинает литься шифрованный.

 

Софтина должна аккумулировать данные за каждые последовательные 10 секунд или секунду или 5 секунд (не могу сказать как лучше), давать веб-морду мониторинга состояния потока и сбрасывать на диск в какой-нибудь rrd график количества проблем.

Share this post


Link to post
Share on other sites

Еще полезно смотреть на PUS и на последовательность 0 0 1 в начале пейлоада на PES пидах.

Share this post


Link to post
Share on other sites

По-моему, вебморда тут излишняя, и противоречит unix-way.

 

Лично я вижу эту софтину так:

на входе - плейлист с перечнем каналов, который она время от времени перечитывает

на выходе - что-то типа csv или по файлу на канал.

 

Файл на входе должен быть отдельным от конфига, чтобы он мог генериться автоматически, не задевая конфиг.

В конфиге, кроме всего прочего, задаются параметры порога мониторинга - например, такая-то величина ошибок или потерь является симптомом отказа.

На выходе в явном виде, удобном для парсинга, выдаётся результат "жив/мёртв", который кушает мониторинг.

Share this post


Link to post
Share on other sites
По-моему, вебморда тут излишняя, и противоречит unix-way.

А как же net-way? (всё таки утилита для мониторинга сети а не процессинга stdXXX потоков в системе)

Share this post


Link to post
Share on other sites

Так можно додуматься до встроенной вебморды у traceroute :-)

Edited by rdc

Share this post


Link to post
Share on other sites

Чем плохо?

http://127.0.0.1:333/tools/traceroute?addr=8.8.8.8&proto=icmp

захотел в консоле - дёрнул через fetch/wget и посмотрел результат - те локальное использование на хосте не особо страдает.

А вот удалённо проще трейс сразу по хттп посмотреть в браузере, чем логинится туда сначала ссш/телнет.

 

С другой стороны мультикаст совсем не тоже что и трейс.

СС ошибки могут за 5 секунд не вылезти.

Share this post


Link to post
Share on other sites

Можно еще последовательность мониторить по полю ID в заголовке IP. Вещательные системы его часто заполняют инкрементно для пакетов медиапотока.

Share this post


Link to post
Share on other sites

Можно.

Линух с астрой ничего не увеличивает:

00:31:47.956728 IP (tos 0x0, ttl 32, id 0, offset 0, flags [DF], proto UDP (17), length 1344)
172.16.0.78.57160 > 239.0.5.3.1234: [udp sum ok] UDP, length 1316
00:31:47.962011 IP (tos 0x0, ttl 32, id 0, offset 0, flags [DF], proto UDP (17), length 1344)
172.16.0.78.57160 > 239.0.5.3.1234: [udp sum ok] UDP, length 1316
00:31:47.962270 IP (tos 0x0, ttl 32, id 0, offset 0, flags [DF], proto UDP (17), length 1344)
172.16.0.78.57160 > 239.0.5.3.1234: [udp sum ok] UDP, length 1316
00:31:47.967469 IP (tos 0x0, ttl 32, id 0, offset 0, flags [DF], proto UDP (17), length 1344)
172.16.0.78.57160 > 239.0.5.3.1234: [udp sum ok] UDP, length 1316

 

И всё равно потери будут видны по СС в мпеге и по SN в RTP, хотя с последним мне кое что ещё не ясно.

Share this post


Link to post
Share on other sites

PUS — это что?

прошу пардону, выпал из темы -

PUS - это бит в MPEG заголовке - http://en.wikipedia.org/wiki/MPEG_transport_stream#Packet

Payload Unit Start - значит что в PES начался поток, а начинается он с последовательности 0 0 1.

 

Проблемы с раскодированием ловятся на раз.

Share this post


Link to post
Share on other sites

Часто бывает что оно не PES при выставленном PUS?

 

PS: видел iptv2rtsp-proxy - можно помучить вопросами по мпегу гденить в IM?

Share this post


Link to post
Share on other sites
ещё не забудь такую вещь, как шифрованный поток. Если что-то случилось с дескремблингом, поток начинает литься шифрованный.

Добавил, показывает шифрование в mpeg2-ts.

 

Софтина должна аккумулировать данные за каждые последовательные 10 секунд или секунду или 5 секунд (не могу сказать как лучше)

Зачем?

У меня сейчас пакеты копятся в буфере сокета, пока их там не станет "достаточно", потом они быстренько в цикле читаются и инфа раскидывается/обновляется в PID-ах, оно же доступно через хттп в реальном времени. Это чтобы меньше "дёргаться" - экономить CPU.

Share this post


Link to post
Share on other sites

Кто как видит себе такую софтину для анализа мультикаст потока с mpeg-ts / rtp+mpeg-ts на ошибки последовательности?

 

А почему не реализовать полностью в соответствии с рекомендациями ETSI TR 101 290?

Или это уже подразумевается?

 

Те как ей управлять, как забирать результаты.

 

У меня STB пишет в MIBS, а я потом через SNMP забираю

Share this post


Link to post
Share on other sites

Часто бывает что оно не PES при выставленном PUS?

 

PS: видел iptv2rtsp-proxy - можно помучить вопросами по мпегу гденить в IM?

На пидах с видео-аудио (где PES и должен быть) не наблюдал такого, может и бывает в особо редких и кривых случаях. На пидах с PSI, конечно, эту проверку нельзя делать - там другой формат.

 

Это как с IP фрагментацией, PUS только означает, что там начало пакета.

 

PS - напишу в лс

Share this post


Link to post
Share on other sites
А почему не реализовать полностью в соответствии с рекомендациями ETSI TR 101 290?

Спасибо за наводку.

Все 5 частей, включая аналитические параметры?

 

Кроме этого можно же ещё и отображать не ошибки, но полезную инфу - это тоже актуально.

Share this post


Link to post
Share on other sites
На пидах с видео-аудио (где PES и должен быть) не наблюдал такого, может и бывает в особо редких и кривых случаях. На пидах с PSI, конечно, эту проверку нельзя делать - там другой формат.

 

 


TE = 0, PUS = 1, TP = 0, PID = 370, SC = 0, AFE = 1, CC = 3
mpeg2_pes_hdr - PSCP invalid = 11534848!!!
mpeg2_pes_hdr - sid = 37

TE = 0, PUS = 1, TP = 0, PID = 371, SC = 0, AFE = 1, CC = 15
mpeg2_pes_hdr - VIDEO


TE = 0, PUS = 1, TP = 0, PID = 0, SC = 0, AFE = 1, CC = 0
mpeg2_pes_hdr - PSCP invalid = 8388608!!!
mpeg2_pes_hdr - sid = 13

Share this post


Link to post
Share on other sites

Все 5 частей, включая аналитические параметры?

Все три приоритета.

Этого достаточно, чтобы оценить качество потока.

Именно так и реализованы аппаратные тестеры IPTV (мои интересы именно в этой области).

 

Если два анализатора, работающие в соответствии с рекомендациями ETSI TR 101 290, выдают отличающиеся цифры на одном и том же "битом" потоковом файле, то сразу возникает вопрос - кому верить? Отличия, обыкновенно, не принципиальные, но они есть и это, иногда, смущает...

 

Кроме этого можно же ещё и отображать не ошибки, но полезную инфу - это тоже актуально.

Я сотрудничаю с Elecard и пользуюсь их Elecard Stream Inspector. Очень много полезной информации. Слишком много. Они, как раз, результаты отработки сохраняют в csv.

Вот фрагментик

Time Level Event

16:13:22 Message TS sync. restore Offset = 0x00000000

16:13:23 First Priority PAT error. Repetition period of table > 500 ms (time diff = 532 ms) Offset = 0x000257C1

16:13:23 First Priority PMT error. Table with do not occure > 500 ms Pid = 4096 ( 0x1000 ) Offset = 0x00025913

16:13:23 Third Priority Unreferenced PID error. Not referred to by a PMT within 0,5 s%s Pid = 256 ( 0x100 ) Offset = 0x00025C64

16:13:23 Third Priority Unreferenced PID error. Not referred to by a PMT within 0,5 s%s Pid = 257 ( 0x101 ) Offset = 0x00026010

16:13:23 Third Priority EIT actual error. Repetition period of section with table_id = 0x4E < 25ms (time diff = 0 ms) Offset = 0x00035324

16:13:23 Third Priority SI repetition error. EIT_actual section 1 min. interval < 25 ms Offset = 0x00035324

16:13:23 Third Priority EIT actual error. Repetition period of section with table_id = 0x4E < 25ms (time diff = 6 ms) Offset = 0x00035904

16:13:23 Third Priority SI repetition error. EIT_actual section 0 min. interval < 25 ms Offset = 0x00035904

16:13:23 Third Priority EIT actual error. Repetition period of section with table_id = 0x4E < 25ms (time diff = 0 ms) Offset = 0x000359C0

16:13:23 Third Priority SI repetition error. EIT_actual section 1 min. interval < 25 ms Offset = 0x000359C0

16:13:23 Third Priority EIT actual error. Repetition period of section with table_id = 0x4E < 25ms (time diff = 13 ms) Offset = 0x000364C4

16:13:23 Third Priority SI repetition error. EIT_actual section 0 min. interval < 25 ms Offset = 0x000364C4

16:13:23 Third Priority EIT actual error. Repetition period of section with table_id = 0x4E < 25ms (time diff = 0 ms) Offset = 0x00036580

Share this post


Link to post
Share on other sites

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

 

А у меня несколько иная задача - дать возможность "человеку с улицы" оценить качество потоков из плейлиста и время их переключения со стороны абонента. А логи принести на приборе тому, кто в состоянии в них разобраться :))

Share this post


Link to post
Share on other sites

Там (в доке) дальше и идут вычисления на базе эти параметров фишек типа: доступность сервиса, ошибки сервиса и чего то ещё, чтобы просто и понятно было обычным людям.

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

Share this post


Link to post
Share on other sites
На пидах с видео-аудио (где PES и должен быть) не наблюдал такого, может и бывает в особо редких и кривых случаях. На пидах с PSI, конечно, эту проверку нельзя делать - там другой формат.

 

TE = 0, PUS = 1, TP = 0, PID = 370, SC = 0, AFE = 1, CC = 3
mpeg2_pes_hdr - PSCP invalid = 11534848!!!
mpeg2_pes_hdr - sid = 37

TE = 0, PUS = 1, TP = 0, PID = 371, SC = 0, AFE = 1, CC = 15
mpeg2_pes_hdr - VIDEO


TE = 0, PUS = 1, TP = 0, PID = 0, SC = 0, AFE = 1, CC = 0
mpeg2_pes_hdr - PSCP invalid = 8388608!!!
mpeg2_pes_hdr - sid = 13

 

Поста не понял. Он не опревергает мною написанного.

Share this post


Link to post
Share on other sites

Всё скромно :)

 

Stream hub: /http/ХХХ.ХХХ.ХХХ.ХХХ:7088
	[status: 0, cpu: 0, sources: 1, clients: 0, refs: 0, no clients time: 718]
  Source: tcp-http http://ХХХ.ХХХ.ХХХ.ХХХ:7088/udp/239.0.0.116:4000 [iP: ХХХ.ХХХ.ХХХ.ХХХ:7088, index = 0]	[status: 16, priority: 0, rate: 4047266, error rate: 11, pids: 5, no data recv time: 0]
	PID: 321 [Packets: 2673086, Size: 490761 kb, Scrambling: 0, CC errors: 59, TE count: 0]
	PID: 401 [Packets: 169797, Size: 31173 kb, Scrambling: 0, CC errors: 44, TE count: 0]
	PID: 0 [Packets: 9238, Size: 1696 kb, Scrambling: 0, CC errors: 24, TE count: 0]
	PID: 3301 [Packets: 3340, Size: 613 kb, Scrambling: 0, CC errors: 24, TE count: 0]
	PID: 17 [Packets: 550, Size: 100 kb, Scrambling: 0, CC errors: 17, TE count: 0]
	PIDs summary [Packets: 2856011, Size: 524345 kb, CC errors: 168, TE count: 0]

Share this post


Link to post
Share on other sites

А что-то что можно запустить у себя и пощупать свои потоки?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this