Как собирать статистику с битторрент-роя? - PullRequest
3 голосов
/ 21 февраля 2010

Я хочу собирать статистику по распространению файла в новом битторрентном рое, фактически не загружая ничего (или как можно меньше). Мне нужно знать, какой узел имеет какие части (для создания статистики на основе файлов), зная количество раздающих и разводчиков или процентов недостаточно. Позже, когда есть много пиров, мне нужно загрузить данные, чтобы определить, что это такое. Эта часть может быть выполнена с помощью обычного торрент-клиента.

Я не планирую сам реализовывать протокол, поэтому я посмотрел на 2 реализации libtorrent и ktorrent libbtcore. Ни один из них не способен собирать данные, не загружая их, просто нет подключенных одноранговых узлов, когда загружать нечего. Libtorrent проще, но ktorrent выглядит лучше с комментариями.

Я вижу 3 варианта:

  • Используйте какое-то приложение именно для этого. Есть ли?
  • Измените реализацию торрента, чтобы делать то, что я хочу. Кто-нибудь знаком с ними? С чего начать?
  • Реализация небольшого подмножества протокола. Просто периодически спрашивайте у сверстников, что у них есть. Это возможно или программа должна поддерживать почти полный протокол?

Что вы рекомендуете?

1 Ответ

3 голосов
/ 30 июля 2010

Это старый вопрос, но, возможно, этот ответ может быть полезен для других.

  • Используйте какое-то приложение именно для этого. Есть ли?

Не то, что я знаю.

  • Измените реализацию торрента, чтобы делать то, что я хочу. Кто-нибудь знаком с ними? С чего начать?

Я знаком только с ядром BitTornado (которое используется, например, в ABC). Он написан на Python, но это архитектурный беспорядок.

Однако вы можете просто взять любую реализацию и начать лишать ее ненужной функциональности.

  • Реализация небольшого подмножества протокола. Просто периодически спрашивайте у сверстников, что у них есть. Это возможно или программа должна поддерживать почти полный протокол?

Обратите внимание, что вы не можете "спросить" пира, что у них есть. Другой узел информирует вас всякий раз, когда он хочет, о кусках, которые у него есть (так что это push вместо pull ). После рукопожатия BitTorrent одноранговый узел может отправить битовое поле частей, которые он имеет. После этого он может отправлять сообщения HAVE, информирующие вас о приобретении нового изделия. Также обратите внимание, что сверстники могут лгать о кусочках, которые у них есть. Примерами могут служить одноранговые узлы и такие фрирайд-клиенты, как BitThief.

Если вы хотите реализовать небольшое подмножество протокола, вам нужно как минимум внедрить сообщение рукопожатия BitTorrent и предпочтительно расширенное сообщение рукопожатия. Последнее позволяет получать (и отправлять) сообщения uTorrent PEX. PEX полезен для быстрого обнаружения других пиров в рое.

Для сбора статистики вам дополнительно необходимо поддерживать битовое поле и сообщения HAVE.

...