Приложил к письму специальный прокси-дампер (rtmp_proxy.pl),
который форматирует hex-вывод более вменяемо, чем tcpdump.
Схема использования:
1) flash -> rtmp_proxy -> nginx -> FMS - что приходит
2) flash -> nginx -> rtmp_proxy -> FMS - что доходит
./rtmp_proxy.pl local.host local.port fms.host fms.port
Скрипт генерит файл "dump.txt", причем он перезаписывается
при запуске, поэтому лучше сохранять его поддругим именем,
перед след. стартом.
В общем, жду дампы для 1) и 2), можно аттачем.
По поводу дампа tcpdump:
1) (без буфера)
Видно, что идут пакеты с инкрементом от 196 по 200,
т.е. соединение установлено, передача нормальная.
2) (c буфером)
Видно только несколько неудачных попыток соединения,
до передачи данных дело не доходит.
Похоже, что Nginx ждет данные,
что приводит к timeout в FMS и сбросу соединения.
----- Original Message -----
From: "Vadim A. Umanski" <umanski@xxxxxx>
To: "Denis Erygin" <nginx-ru@xxxxxxxxx>
Sent: Thursday, August 30, 2007 5:45 PM
Subject: Re[8]: nginx и Adobe FMS
Здравствуйте, Denis.
Вы писали 30 августа 2007 г., 15:51:33:
DE> Лучше сделать hex-dump пакетов этих потоков для случая без буферизации и
с
DE> ней,
DE> и запостить там же.
Итак, общаются FMP и nginx (внешний интерфейс).
Без
Мгновенно, очень быстро - короче, идет поток.
С
4 пакета, длительное задумье, потом еще пакеты, еще задумье... В итоге
плеер покряхтел - и попытался выполнить fallback на rtmps: ...
DE> ----- Original Message -----
DE> From: "Vadim A. Umanski" <umanski@xxxxxx>
DE> To: "Denis Erygin" <nginx-ru@xxxxxxxxx>
DE> Sent: Thursday, August 30, 2007 2:43 PM
DE> Subject: Re[6]: nginx и Adobe FMS
DE> Здравствуйте, Denis.
DE> Не работает буферизация в nginx при проигрывании через него потока от
DE> Adobe FMS.
DE> При включении буферизации проигрывание (пока) невозможно.
DE> Вы писали 30 августа 2007 г., 0:14:05:
Заметил, что реально данные идут не монотонным единым потоком, а
последовательными кусочками
DE>> Так и есть, так FMS подстраивается под HTTP.
DE>> Поэтому буферизация тоже должна работать,
DE> Тоже верю, что должна, тоже хочу, чтоб работала, но пока не хочет!
DE> Может ты, еще кто-то или даже Игорь что-то подскажут...
DE>> но в данном случае вероятно нарушается целостность пакета
DE>> из-за маленького размера буфера, можно оставить вот эти строки
DE>> из первого конфига:
DE>> proxy_buffer_size 8k;
DE>> proxy_buffers 512 4k;
DE>> proxy_busy_buffers_size 64k;
DE> Прямо так - не помогает. ;-)
DE>> Далее менять эти цифры и смотреть на результат.
DE> Ну, "кусочки" выходят очень разные - смотрел вот так.
DE> Нормально играющийся поток, т.е. пока без буферизации.
DE> [toor@fms01 ~]$ tcpdump -p -i lo -n -s 1518 -w - src port 8080 | strings
|
DE> grep 'Content-Length'|head -n 100
DE>
DE> Пробую определить максимум
DE> [toor@fms01 ~]$ tcpdump -p -i lo -c 10000 -n -s 1518 -w - src port 8080
|
DE> strings | grep 'Content-Length' | sort -r -t ' ' -k 2 -g | head -n 100
DE> 39697 однако
DE>
DE> И вот таких, что интересно, тоже дохрена, с длиной 1
DE> [toor@fms01 ~]$ tcpdump -p -i lo -c 10000 -n -s 1518 -w - src port 8080
|
DE> strings | grep 'Content-Length' | sort -t ' ' -k 2 -g | head -n 100
DE>
DE> Но вроде все это само по себе не должно создавать проблем? Я вот
DE> подозреваю, что оно не из-за этого не хочет работать... Это же все
DE> больше оптимизация работы....
DE>> Если что, у меня есть прокси-дампер на perl,
DE>> интересно было бы посмотреть на его запись потока.
flash ->>> nginx -> perl-dump-proxy -> FMS
DE>> ----- Original Message -----
DE>> From: "Vadim A. Umanski" <umanski@xxxxxx>
DE>> To: "Denis Erygin" <nginx-ru@xxxxxxxxx>
DE>> Sent: Wednesday, August 29, 2007 11:08 PM
DE>> Subject: Re[4]: nginx и Adobe FMS
DE>> Здравствуйте, Denis.
DE>> Получилось!!!
DE>> Для начала включил без буферизации с этим конфигом
DE>> , сваянным по-быстрому.
DE>> Заметил, что реально данные идут не монотонным единым потоком, а
DE>> последовательными кусочками - открыл сессию, скачал/передал кусочек
DE>> данных, закрыл сессию, далее повторить. Между nginx и FMS все время
DE>> видать табуны сессий в состоянии TIME_WAIT.
DE>> При этом в HTTP-пакетах в ответе есть проставленный Content-Length: ,
DE>> решил попробовать включить буферизацию в nginx. Вот с таким конфигом -
DE>> . Однако, не заработало.
DE>> Проходит буквально несколько пакетиков - и все
DE>> [toor@fms01 html]$ tcpdump -A -n -i eth0 port 80 and host 10.253.33.8
DE>> tcpdump: verbose output suppressed, use -v or -vv for full protocol
DE> decode
DE>> listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
DE>> 22:00:25.274735 IP 10.253.33.8.3159 > xxx.xx.xx.xx.http: . ack
DE> 3617351334 win 65337
DE>> E..(|.@...Y.
DE>> ..!..
DE>> +.W.P......f.P..9Z.........
DE>> 22:00:30.030300 IP 10.253.33.8.3159 > xxx.xx.xx.xx.http: F 0:0(0) ack 1
DE> win 65337
DE>> E..(~.@...W.
DE>> ..!..
DE>> +.W.P......f.P..9Z.........
DE>> 22:00:30.030588 IP 10.253.33.8.3159 > xxx.xx.xx.xx.http: . ack 2 win
DE> 65337
DE>> E..(~.@...W.
DE>> ..!..
DE>> +.W.P......f.P..9Z.........
DE>> 3 packets captured
DE>> 3 packets received by filter
DE>> 0 packets dropped by kernel
DE>> Типа - смотрю tcpdump'ом, что делается. Пускаю попытку проиграть
DE>> поток. Смотрю, жду долго, жму Ctrl-C...
DE>> IE, которым это дело играю, просто вешается с этого дела, сволочь...
DE>> Печально - я вот подумал, что буферизация может очень даже
DE>> пригодиться - когда нагрузка пойдет серьезная. Может, конечно, я
DE>> что-то не то включил/выключил/не добавил в конфиге? Или буферизация
DE>> тут невозможна и работать не будет? Вот бы понять.
DE>> Вадим.
DE>> Вы писали 25 августа 2007 г., 3:01:25:
DE>>> Думаю почитать все-таки следует тут:
DE>>>
DE>>> А с непрерывной отдачей еще нужно до конца разобраться,
DE>>> это больше по части написания модулей.
Еще интересна разница между раздачей роликов и вещанием в стиле
IPTV...
DE>>> Особой разницы нет, при раздаче роликов идет реал-тайм видео-поток,
DE>>> но это больше от ActionScript кода зависит, там и настраивается.
DE>>> ----- Original Message -----
DE>>> From: "Vadim A. Umanski" <umanski@xxxxxx>
DE>>> To: "Denis Erygin" <nginx-ru@xxxxxxxxx>
DE>>> Sent: Saturday, August 25, 2007 2:30 AM
DE>>> Subject: Re[2]: nginx и Adobe FMS
DE>>> Здравствуйте, Denis.
DE>>> Вы писали 25 августа 2007 г., 2:09:49:
DE>>>> Привет,
Не могли бы вы подсказать, можно ли использовать nginx с
Adobe Flash Media Server ?
DE>>>> Можно. В позавчерашнем разговоре, Игорь подтвердил принципиальную
DE>>>> возможность непрерывной отдачи данных в модуле и рассказал как это
DE> лучше сделать
DE>>>> в контексте nginx.
DE>>> А можно ли об этом где-то прочитать?
DE>>>> Но в данном случае, вполне достаточно обычного проксирования
DE> средствами nginx,
DE>>>> только не в курсе как там дела с POST запросами.
DE>>> Еще интересна разница между раздачей роликов и вещанием в стиле
DE>>> IPTV...
DE>>>> RTMPT - это бинарный RTMP(кодируется base64) вставленный в обычный
DE> POST-запрос,
DE>>>> т.е. полная совместимость с HTTP протоколом.
DE>>> Очень хорошая новость!
DE>>>> Поскольку мне приходилось писать реализацию протокола RTMP на основе
DE> разбора исходников
DE>>>> Red5 и анализа пакетов сниффером, могу даже сказать, что
принципиально
DE> возможно написать
DE>>>> полноценный видео-модуль к nginx и отказаться от Flash Media Server.
DE> Но непонятно, какие могут
DE>>>> быть последствия со стороны Adobe (кстати одного хакера уже почти
DE> приговорили к 100 годам,
DE>>>> да и Adobe отличилась историей со взломщиком паролей к pdf (Элкомсофт
DE> вроде)).
DE>>> Некому разрабатывать такое. Не предусмотрено время на такую
DE>>> разработку. Совершенно неинтересно связываться с Адобом. Проще
DE>>> легально заплатить денег. Бизнес-план AFAIK никакой партизаньщины не
DE>>> предусматривает.
DE>>> Nginx хочется внедрить из-за его многочисленных положительных качеств
DE>>> и ради возможности логировать и контролировать доступ. Положительный
DE>>> опыт эксплуатации nginx на хостинге уже есть, я в восторге! Но тут
DE>>> несколько иная специфика.
DE>>>> ----- Original Message -----
DE>>>> From: "Vadim A. Umanski" <umanski@xxxxxx>
DE>>>> To: <nginx-ru@xxxxxxxxx>
DE>>>> Sent: Saturday, August 25, 2007 12:31 AM
DE>>>> Subject: nginx и Adobe FMS
DE>>>> Здравствуйте, уважаемые коллеги!
DE>>>> Не могли бы вы подсказать, можно ли использовать nginx с
DE>>>> Adobe Flash Media Server ?
DE>>>> Идея - FMP (Flash Media Player) на компьютере пользователя общается с
DE>>>> FMS (Flash Media Server) на нашем сервере.. В документации к FMS
видел
DE>>>> упоминание о возможности использовать протокол rtmpt (Real Time
DE>>>> Messaging Protocol Tunneling), когда rtmp "заворачивается" в HTTP. Не
DE>>>> смог, правда, понять, является ли rtmpt:// более или менее обычным
DE>>>> HTTP или содержит какие-то особые расширения протокола, которые будут
DE>>>> несовместимы, скажем, с использованием прокси-сервера. И не помешает
DE>>>> ли еще что-нибудь...
DE>>>> Получится ли использовать nginx с FMS ?
DE>>>> SY Vadim A. Umanski
DE>>>> System Administrator
DE>>>> InterNet Services Dept., IP Network Div.
DE>>>> Akado (Comcor-TV), Moscow
DE>>>> <Work> mailto:umanski@xxxxxx
DE> mailto:VUmanski@xxxxxxxxxxxxx
DE>>>> <Private> mailto:umanski@xxxxxxxxxxxxxxxx
DE>>>> phone: (+7 495) 737 51 79
DE>>>> cell: (+7 916) 692 67 89
DE>>> SY Vadim A. Umanski
DE>>> System Administrator
DE>>> InterNet Services Dept., IP Network Div.
DE>>> Akado (Comcor-TV), Moscow
DE>>> <Work> mailto:umanski@xxxxxx
DE> mailto:VUmanski@xxxxxxxxxxxxx
DE>>> <Private> mailto:umanski@xxxxxxxxxxxxxxxx
DE>>> phone: (+7 495) 737 51 79
DE>>> cell: (+7 916) 692 67 89
DE>> SY Vadim A. Umanski
DE>> System Administrator
DE>> InterNet Services Dept., IP Network Div.
DE>> Akado (Comcor-TV), Moscow
DE>> <Work> mailto:umanski@xxxxxx
DE> mailto:VUmanski@xxxxxxxxxxxxx
DE>> <Private> mailto:umanski@xxxxxxxxxxxxxxxx
DE>> phone: (+7 495) 737 51 79
DE>> cell: (+7 916) 692 67 89
DE> SY Vadim A. Umanski
DE> System Administrator
DE> InterNet Services Dept., IP Network Div.
DE> Akado (Comcor-TV), Moscow
DE> <Work> mailto:umanski@xxxxxx
DE> mailto:VUmanski@xxxxxxxxxxxxx
DE> <Private> mailto:umanski@xxxxxxxxxxxxxxxx
DE> phone: (+7 495) 737 51 79
DE> cell: (+7 916) 692 67 89
SY Vadim A. Umanski
System Administrator
InterNet Services Dept., IP Network Div.
Akado (Comcor-TV), Moscow