Broadcasting ( организация собственных прямых трансляций на базе TS )

сегодня на тс сервере(1.0.6.8) запущенном на линукс, упал трекер(примерно когда было 4000 пиров), вот лог:

Traceback (most recent call last):
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data
ValueError: invalid port
Traceback (most recent call last):
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data
ValueError: invalid port
Traceback (most recent call last):
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data
ValueError: invalid port
Traceback (most recent call last):
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data
ValueError: invalid port
Traceback (most recent call last):
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data
ValueError: invalid port

после рестарта еще проскочили сообщения:

Traceback (most recent call last):
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data
ValueError: invalid port

при этом трансляция продолжает идти, но почти половину пиров срезает(по крайней мере судя по статистике трекера ТС у меня с 4000 упало до 2000 пиров)

И так после 2 дней ативного бродкастинга выкладываю отчет:
1.) ТС версии 2.0.0
Отдача идет неравномерно, может идти 2мбайта, но потом может сразу упасть до 800кбайт, конечно же такие перепады отражаются на стабильности потока. Максимум разгонялась до 3.5 мбайт
2.) Ubuntu 12.10, ТС версии 1.6.8 терминал
Отдача идет раза в 3 выше чем на windows версии плагина.
Через ~5-6 часов выскакивают ошибки:

Starting TS Engine... 2012-11-03 11:24:32 lm::start_upnp: upnp_type 3 locally_guessed_ext_ip 127.0.0.1 listen_port 7764 .........++++++++ .....................................................................................++++++++ device id: MFIwEAYHKoZIzj0CAQYFK4EEABoDPgAEAVCC34RlcR32LY4mGPbunequkNuWmWZ+Ejq/l/fpAFFHn40FUqtTiLwT5bFXt/Sdy5zQBB4H0Jq/AQjY tracker url: http://10.201.***.***:7764/announce bitrate: 225000 piece size: 131072 dest dir: /tmp/streams ------------------------ createlivestream: open stream: url http://192.168.1.12:9041 reader builtin 2012-11-03 11:24:32 stream: started input thread 2012-11-03 11:24:34 stream: restarting stream from piece 1 2012-11-03 11:24:41 lm::upnp_failed_callback: upnp_type 3 listenport 7764 listenproto TCP error_type 0 exc None 2012-11-03 11:24:41 lm::upnp_failed_callback: upnp_type 3 listenport 7764 listenproto UDP error_type 0 exc None 2012-11-03 17:27:22 storage::b4c62154dc3bb7e8f6aec2ec2bc8de12415073e0:write: time seek 1.28746032715e-05 write 1.08709788322 file /tmp/streams/livefootball.ws_TS1 pos 320077824 begin 320077824 end 320094208 2012-11-03 17:38:05 storage::b4c62154dc3bb7e8f6aec2ec2bc8de12415073e0:write: time seek 1.50203704834e-05 write 1.08108115196 file /tmp/streams/livefootball.ws_TS1 pos 472907776 begin 472907776 end 472924160 2012-11-03 18:39:05 storage::b4c62154dc3bb7e8f6aec2ec2bc8de12415073e0:write: time seek 1.4066696167e-05 write 1.16120314598 file /tmp/streams/livefootball.ws_TS1 pos 533725184 begin 533725184 end 533741568 2012-11-03 18:40:33 storage::b4c62154dc3bb7e8f6aec2ec2bc8de12415073e0:write: time seek 1.31130218506e-05 write 1.02428293228 file /tmp/streams/livefootball.ws_TS1 pos 554696704 begin 554696704 end 554713088 Traceback (most recent call last): File "/home/anton/src/engine2/TorrentStream/Core/BitTornado/BT1/track.py", line 896, in get ValueError: no info hash 2012-11-03 20:32:39 storage::b4c62154dc3bb7e8f6aec2ec2bc8de12415073e0:write: time seek 1.50203704834e-05 write 1.46556401253 file /tmp/streams/livefootball.ws_TS1 pos 534773760 begin 534773760 end 534790144 2012-11-03 23:50:36 storage::b4c62154dc3bb7e8f6aec2ec2bc8de12415073e0:write: time seek 1.4066696167e-05 write 1.00840711594 file /tmp/streams/livefootball.ws_TS1 pos 121634816 begin 121634816 end 121651200 2012-11-03 23:51:27 storage::b4c62154dc3bb7e8f6aec2ec2bc8de12415073e0:write: time seek 1.38282775879e-05 write 1.18135094643 file /tmp/streams/livefootball.ws_TS1 pos 133693440 begin 133693440 end 133709824 Traceback (most recent call last): File "/home/anton/src/engine2/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get File "/home/anton/src/engine2/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data ValueError: invalid port Traceback (most recent call last): File "/home/anton/src/engine2/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get File "/home/anton/src/engine2/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data ValueError: invalid port Traceback (most recent call last): File "/home/anton/src/engine2/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get File "/home/anton/src/engine2/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data ValueError: invalid port Traceback (most recent call last): File "/home/anton/src/engine2/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get File "/home/anton/src/engine2/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data ValueError: invalid port 2012-11-04 01:40:29 storage::b4c62154dc3bb7e8f6aec2ec2bc8de12415073e0:write: time seek 1.31130218506e-05 write 1.81167507172 file /tmp/streams/livefootball.ws_TS1 pos 70254592 begin 70254592 end 70270976 2012-11-04 01:40:54 storage::b4c62154dc3bb7e8f6aec2ec2bc8de12415073e0:write: time seek 1.31130218506e-05 write 1.13964104652 file /tmp/streams/livefootball.ws_TS1 pos 76546048 begin 76546048 end 76562432 Traceback (most recent call last): File "/home/anton/src/engine2/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get File "/home/anton/src/engine2/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data ValueError: invalid port 2012-11-04 01:44:06 storage::b4c62154dc3bb7e8f6aec2ec2bc8de12415073e0:write: time seek 1.4066696167e-05 write 1.25610303879 file /tmp/streams/livefootball.ws_TS1 pos 121372672 begin 121372672 end 121389056 2012-11-04 01:44:57 storage::b4c62154dc3bb7e8f6aec2ec2bc8de12415073e0:write: time seek 1.50203704834e-05 write 1.00097513199 file /tmp/streams/livefootball.ws_TS1 pos 134217728 begin 134217728 end 134234112 2012-11-04 01:45:17 storage::b4c62154dc3bb7e8f6aec2ec2bc8de12415073e0:write: time seek 1.90734863281e-05 write 1.23169112206 file /tmp/streams/livefootball.ws_TS1 pos 138674176 begin 138674176 end 138690560 2012-11-04 01:46:45 storage::b4c62154dc3bb7e8f6aec2ec2bc8de12415073e0:write: time seek 1.31130218506e-05 write 1.07351708412 file /tmp/streams/livefootball.ws_TS1 pos 159383552 begin 159383552 end 159399936 Traceback (most recent call last): File "/home/anton/src/engine2/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get File "/home/anton/src/engine2/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data ValueError: invalid port
Впринципе с этими ошибками тс нормально работает
Пожелания) Сделать нормальную отдачу трафика на windows плагине, также как на ubuntu Сделать на windows плагине такие опции как: макс. количество клиентов нод сервер возможность запуска 2 и более трансляций

отдача на windows - это действительно проблема, с чем это связано тоже сложно сказать, если вы утверждаете, что код для windows и linux одинаков, надеюсь вы все же сможете найти причину этой проблемы, так как это важнеший параметр для трансляции. Но куда больше меня поражает сам алгоритм отдачи, который просто ставит крест на нормальной трансляции. Суть заключается в следующем: при просмотре трансляции пир подключается к источнику и начинает получать видео поток напрямую с него, НО при получении определенного количества трафика он просто отключается и подключается новый пир, который получает также определенную квоту трафика, и так по кругу. О какой стабильности может идти вообще речь, если пиры кругами крутятся между собой, учитывая, что многие из них не могут нормально раздать контент в силу своего интернета (например адсл), и, соответственно, хорошие пиры “насильно” отключаются от источника вместо того, чтобы держать их у источника, в итоге наблюдаем глюки у клиентов и плохую отдачу. Тут уж проблема на лицо и решить ее можно только изменив алгоритм раздачи. Даже не представляю где вы видели, чтобы так пиры обменивались между собой, что в сопках, что торрентах, в основном используются хорошие сиды и пиры и они не меняются, если обмен происходит нормально. В той же википедии описан алгоритм работы bittorrent:

Каждый клиент имеет возможность временно блокировать отдачу другому клиенту (англ. choke). Это делается для более эффективного использования канала отдачи. Кроме того, при выборе — кого разблокировать, предпочтение отдаётся пирам, которые сами передали этому клиенту много сегментов. Таким образом, пиры с хорошими скоростями отдачи поощряют друг друга по принципу «ты — мне, я — тебе». Обмен сегментами ведётся по принципу «ты — мне, я — тебе» симметрично в двух направлениях. Клиенты сообщают друг другу об имеющихся у них сегментах при подключении и затем при получении новых сегментов, и поэтому каждый клиент может хранить информацию о том, какие сегменты есть у других подключенных пиров. Порядок обмена выбирается таким образом, чтобы сначала клиенты обменивались наиболее редкими сегментами: таким образом повышается доступность файлов в раздаче. В то же время выбор сегмента среди наиболее редких случаен, и поэтому можно избежать ситуации, когда все клиенты начинают скачивать один и тот же самый редкий сегмент, что негативно бы отразилось на производительности. Обмен данными начинается, когда обе стороны в нём заинтересованы, то есть, каждая из сторон имеет сегменты, которых нет у другой. Количество переданных сегментов подсчитывается, и если одна из сторон обнаруживает, что передаёт в среднем больше, чем принимает, она блокирует (англ. choke) на некоторое время отдачу другой стороне. Таким образом, в протокол заложена защита от личеров.
и в вашем случае алгоритм несколько отличается от выше изложенного, а принцип "ты - мне, я - тебе" попросту не работает! Конечно, когда все пиры имеют аплоады в разы выше битрейтов ваш алгоритм не сильно сказывается на работе, но в реалии мы имеем подобные ситуации далеко не всегда. Поэтому необходимо внести изменения в алгоритме работы, чтобы такой круговерти не было.

1910 кБАЙТ/с то есть это около 16 мбит/с, в данном случае это нормально, учитывая down показывает щас около 8мбит/с(982 кБАЙТ/с)

кбайт :slight_smile: это же очевидно, кстати в сопке тоже отдача у бродов в кбайтах пишется ;D

у него битрейт 10мбит в идеале нада 100мбит аплода :smiley:

Constantin, скажите пожалуйста почему TSlive не принимает такой поток ???


http://maxwell.ho.ua/skripts/img/image.php?dm=06PH

нужен кодек видео h264

Это не так, достаточно контейнер MPEG-TS, у меня стримит обычные мпег каналы через тс.

TS версии 1.0.6.8, убунту 11.10, снова началось, второй день наблюдаю следующее:

Starting TS Engine...
device id: MFIwEAYHKoZIzj0CAQYFK4EEABoD...
tracker url: http://x.x.x.x:7768/announce
bitrate: 350000
piece size: 262144
dest dir: /media/F/stream1
------------------------
createlivestream: open stream: url http://172.19.21.223:8089 reader builtin
2012-11-11 16:32:44 stream: started input thread
2012-11-11 16:32:46 stream: restarting stream from piece 420875
Traceback (most recent call last):
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data
ValueError: invalid port
Traceback (most recent call last):
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data
ValueError: invalid port
Traceback (most recent call last):
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get
  File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data
ValueError: invalid port

но трансляция продолжает идти

А у меня наоборот улучшилось :slight_smile:
После увеличения оперативы ошибок стало меньше
Иногда проскакивает Closing dublicate connection, хотя конект один, upnp тоже настроил
Волнует только что оператива жрется в час ~50-100 мб и процессор нагружается, но это я думаю из-за количества смотрящих и висящих на трекере…
upd: хотя нет, сегодня проскачило :frowning:

Traceback (most recent call last): File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 904, in get File "/home/anton/tsengine/TorrentStream/Core/BitTornado/BT1/track.py", line 605, in add_data ValueError: invalid port

ктонить мне подскажет правильно ли я указываю трекеры?

--trackers http://t1.torrentstream.net:2710/announce,http://t2.torrentstream.net:2710/announce
мне кажется они должны снижать нагрузку на сеть, а то вчера у меня роутер тупил когда многа народу смотрело и еще как параметр
--maxclients
влияет на раздачу? у меня стоит 12, это нормально?

по трекерам - все правильно, указывается список через запятую

по maxclients - на раздачу влияет очень сильно. Указанное число определяет, скольким пирам одновременно отдаются данные. Например, вы создали трансляцию и к вам подсоединилось 300 пиров, а maxclients=10.В этом случае от вас данные будут одновременно уходить только на 10 пиров из этих 300. Это не значит, что первые 10 пиров, которые подсоединились, будут получать данные, а остальные нет. Список пиров, которым в данный момент времени нужно отдавать данные, постоянно изменяется. Не изменяется только их количество (в данном примере - десять). При выборе пиров, которым нужно отдавать данные, используется аналог алгоритма, описанного здесь: BitTorrentSpecification - TheoryOrg

Значение maxclients=12 возможно слишком велико, из-за этого может “тупить” роутер. В следующий раз попробуйте немного уменьшить.

у сопкаста по умолчанию тоже 12 подключений с сервером (временно до 16 может подпрыгивать) и ничего при этом не “тупит”… даже если запустить 10 серверов сопкаста одновременно

провел небольшой эксперимент с участием сервера поддержки, который должен играть роль основного раздающего, для этого на основном сервере TS был запущен с параметром maxclients=1, и вслед за этим сразу же запустил сервер поддержки, который успешно подключился. Далее трансляцию запускает обычный юзер и вместо того, чтобы тащить трансляцию с сервера поддержки я вижу, что он тянет ее с меня и лишь частично с сервера. Потом подключается еще один пир и в итоге наблюдается такая же картина. Очевидно, что такого не должно быть, получается, что параметр maxclients работает неверно и что сервер поддержки работает как обычный пир, что с одной стороны хорошо, так как тогда все пиры это такие же сервера поддержки, но с другой стороны в случае недостаточного аплоада у бродкастера для раздачи на несколько пиров, трансляция может быть испорчена.
В дальнейшем бы хотелось бы видеть отдельный node-сервер для ts, т.е. чтобы он запускался как слушающий сервер поддержки с авторизацией в фоновом режиме и имел веб-интерфейс для просмотра статистики, например, при запуске основного сервера указывается определенный параметр с адресом узла поддержки(с портом) и ключом авторизации(чтобы все подряд бродкастеры нахаляву не подключались к узлу), а также неплохо бы сделать опцию для запуска в режиме отдачи только узлу поддержки если это требуется бродкастеру в случае небольшой отдачи. Ну и еще одно пожелание: возможность отключения или отдельного запуска трекера для тс, либо его оптимизация, так как он довольно прилично загружает процессор

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

в чем проблемы первая не могу загрузить файлы сюда http://torrentstream.info/#/create вторая не выходит плей лист и третья если пробуеш просмотреть тв канал выскакивает надпись This content is available for premium users only я так понял что все тв каналы доступны (Это содержимое доступно для premium пользователей только) в чем проблемы и что это за премиум пользователи решите проблемы

на vps сервере, используемый в качестве node-сервера TS, наблюдается нехватка оперативной памяти(установлено 1200мб, используется чуть более 1100мб), почти всю сьедает TS при активной работе с большим количеством пиров непонятно на что. Скорость раздачи также очень сильно изменяется, может вообще ничего не отдавать, а может и по 30-40мбит/с отдавать(реальный аплоад больше 70мбит/с) .
P.S. Установлен TS версии 1.0.6.8, т.к. 2.0.0 вылетает при большой нагрузке. Для линукс версии неплохо бы выпускать отдельно движок как это сделано для 1.0.6.8, сам плеер там далеко не всегда нужен, так как часто используется в качестве стримера или узла поддержки.

Для стримеров/бродкастеров ( обновление от 04.12.2012)

Обновленная версия движка для ubuntu и debian. В новой версии значительно снижена нагрузка на процессор.

Новую версию можно забрать из репозитория:
Debian 6+:
deb http://repo.acestream.media/debian/ squeeze main

Для Debian есть еще репозиторий sid (там пакет, собранный с другими зависимостями, которые соответствуют официальным sid-репозиториям):
deb http://repo.acestream.media/debian/ sid main

Ubuntu 11.10:
deb http://repo.acestream.media/ubuntu/ oneiric main

Ubuntu 12.04:
deb http://repo.acestream.media/ubuntu/ precise main

Ubuntu 12.10:
deb http://repo.acestream.media/ubuntu/ quantal main

Установка публичного ключа:
debian:
wget -q -O - http://repo.acestream.media/keys/acestream.public.key | apt-key add -

ubuntu:
sudo wget -q -O - http://repo.acestream.media/keys/acestream.public.key | sudo apt-key add -

Пакеты
acestream-engine - движок
acestream-mozilla-plugin - плагин для браузеров
acestream-player - десктопный плеер
acestream-player-data - набор общих библиотек для плеера и плагина
acestream-full - полный пакет, который включает в себя все вышеперечисленные

Для Debian доступен только движок.

вещаю с новой версией движка на линукс, нагрузка на процессор упала почти в 1,5 раза при 2к пиров, оперативы тоже стало поменьше кушать, но все равно хочется чтобы грузило процессор не более 5%(сейчас грузит 10-12% в среднем при большом количестве пиров на процессоре intel core i5 2400K)