Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Bt -- новый open-souce фреймворк для BitTorrent  [new]
Andrei T
Member

Откуда: Россия, Москва
Сообщений: 174
Дорогие коллеги, хочу поделиться с форумом продуктом, который я пилил в течение последних двух месяцев. Наконец он начал приобретать законченный вид, и становится важным вопрос отзывов, пожеланий и критики. Приглашаю всех, кому интересна тема p2p обмена, ко мне на гитхаб: тынц

Если у кого-то есть мысли, прошу не стесняться, давайте поговорим в этой теме о возможных направлениях дальнейшего развития!
10 авг 16, 10:03    [19523384]     Ответить | Цитировать Сообщить модератору
 Re: Bt -- новый open-souce фреймворк для BitTorrent  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
Смотреть в сорцы гитхаба - это не формат форума. ИМХО. Ты лучшей дай словесный брифинг.
Что тебя мотивировало к созданию? Как это использовать? В чем преимущество для нас
скажем в сравнении с Vuze?
10 авг 16, 10:39    [19523561]     Ответить | Цитировать Сообщить модератору
 Re: Bt -- новый open-souce фреймворк для BitTorrent  [new]
no56892
Member

Откуда:
Сообщений: 590
В том, что бы поисковики проиндексировали видимо.
10 авг 16, 10:58    [19523646]     Ответить | Цитировать Сообщить модератору
 Re: Bt -- новый open-souce фреймворк для BitTorrent  [new]
Andrei T
Member

Откуда: Россия, Москва
Сообщений: 174
mayton
Как это использовать?

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

mayton
В чем преимущество для нас скажем в сравнении с Vuze?

Vuze это немного другая весовая категория. Насколько мне известно, это полновесный и непростой в изучении коммерческий клиент, единственная задача которого это качать торренты. С полноценным GUI, CLI и прочими фишками, которые нужны только разработчикам программ-клиентов для домашних пользователей. Т.е. наверно это правильный выбор, если стоит задача написать, к примеру, скачивалку для андроида. И есть $$$ на официальный саппорт (судя по форуму, количество багов прямо пропорционально функционалу, и правятся они весьма неспешно).

Bt же мне видится как альтернатива ttorrent, bitlet и т.д. -- простая в освоении библиотека, на базе которой можно быстро и без особых проблем собрать какую-нибудь корпоративную систему репликации или просто поэкспериментировать с новыми BEP'ами, поучаствовать в развитии p2p в целом. Т.е. целевая аудитория - это лайт-энтерпрайз и исследователи-энтузиасты :)
10 авг 16, 12:25    [19524190]     Ответить | Цитировать Сообщить модератору
 Re: Bt -- новый open-souce фреймворк для BitTorrent  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
Andrei T
Bt же мне видится как альтернатива ttorrent, bitlet и т.д. -- простая в освоении библиотека, на базе которой можно быстро и без особых проблем собрать какую-нибудь корпоративную систему репликации или просто поэкспериментировать с новыми BEP'ами, поучаствовать в развитии p2p в целом. Т.е. целевая аудитория - это лайт-энтерпрайз и исследователи-энтузиасты :)

Спасибо.

По поводу репликации. Насколько это безопасно? Я так понимаю что нужно либо шифровать свой контент
либо устанавливать какие-то строгие правила для p2p. Либо мы получим эдакий себе секрет полишинеля.
10 авг 16, 12:34    [19524261]     Ответить | Цитировать Сообщить модератору
 Re: Bt -- новый open-souce фреймворк для BitTorrent  [new]
Andrei T
Member

Откуда: Россия, Москва
Сообщений: 174
mayton
По поводу репликации. Насколько это безопасно? Я так понимаю что нужно либо шифровать свой контент
либо устанавливать какие-то строгие правила для p2p.

Если речь идет о репликации (и в целом обмену sensitive данными) по сетям общего пользования, то наверно нужно шифровать. Либо трафик на лету, либо раздаваемый контент. Стандартного похода тут нет, каждый клиент/либа реализуют это по-своему. В libtorrent, например, есть поддержка SSL с кодированием/декодированием на лету.

Если обмен идет внутри корпоративной сети или по VPN, то наверно можно ограничиться цифровой подписью torrent-файла с информацией о раздаче. От MitM торренты защищены автоматически -- в torrent-файле есть чексуммы для всех раздаваемых данных. На тему использования сертификатов и подписей есть стандартный BEP: http://www.bittorrent.org/beps/bep_0035.html. Вот его было бы неплохо реализовать
10 авг 16, 13:05    [19524490]     Ответить | Цитировать Сообщить модератору
 Re: Bt -- новый open-souce фреймворк для BitTorrent  [new]
Andrei T
Member

Откуда: Россия, Москва
Сообщений: 174
Вообще вы можно сказать сходу попали в яблочко. Пожалуй две наиболее востребованные фичи сейчас - это DHT и security. В совокупности они обеспечивают полностью защищенный децентрализованный обмен данными. Для любительской библиотеки реализация этих двух моемнтов обеспечивает выход в "высшую лигу". Имхо :)
10 авг 16, 13:16    [19524569]     Ответить | Цитировать Сообщить модератору
 Re: Bt -- новый open-souce фреймворк для BitTorrent  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
Нелетает пока твой аскетичный example:

public static void main( String[] args ) throws Exception
    {
        // get metainfo file url and download location from the program arguments
        URL metainfoUrl = new URL("http://mirror.as43289.net/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1511.torrent");
        File targetDirectory = new File("out");

        // create default shared runtime without extensions
        BtRuntime runtime = BtRuntimeBuilder.defaultRuntime();

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" bt.BtException: Wrong number of chunk hashes in the torrent: too many
	at bt.data.DataDescriptor.init(DataDescriptor.java:118)
	at bt.data.DataDescriptor.<init>(DataDescriptor.java:38)
	at bt.data.DataDescriptorFactory.createDescriptor(DataDescriptorFactory.java:18)
	at bt.service.AdhocTorrentRegistry.lambda$getOrCreateDescriptor$1(AdhocTorrentRegistry.java:54)
	at java.util.Optional.orElseGet(Optional.java:267)
	at bt.service.AdhocTorrentRegistry.getOrCreateDescriptor(AdhocTorrentRegistry.java:51)
	at bt.Bt.createClient(Bt.java:85)
	at bt.Bt.lambda$build$0(Bt.java:73)
	at bt.Bt$LazyBtClient.initClient(Bt.java:118)
	at bt.Bt$LazyBtClient.startAsync(Bt.java:133)
	at mayton.App.main(App.java:35)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

Чет не так?
10 авг 16, 16:27    [19525679]     Ответить | Цитировать Сообщить модератору
 Re: Bt -- новый open-souce фреймворк для BitTorrent  [new]
Andrei T
Member

Откуда: Россия, Москва
Сообщений: 174
mayton, спасибо за потраченное время, вам повезло с раздачей, это досадный и коварный баг)
зафиксил
10 авг 16, 21:09    [19526759]     Ответить | Цитировать Сообщить модератору
 Re: Bt -- новый open-souce фреймворк для BitTorrent  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
Andrei T, я потратил около 5 минут.

Вам тоже спасибо. Интересный софт и я попробую для себя придумать ему применение.
11 авг 16, 01:22    [19527377]     Ответить | Цитировать Сообщить модератору
 Re: Bt -- новый open-souce фреймворк для BitTorrent  [new]
Andrei T
Member

Откуда: Россия, Москва
Сообщений: 174
Спешу поделиться новостями -- готовится к релизу версия 1.1.
Помимо нескольких важных доработок и багфиксов также добавлен модуль DHT:
https://github.com/atomashpolskiy/bt/tree/dht-experimental
Таким образом, качает теперь со свистом.
14 мар 17, 16:22    [20294298]     Ответить | Цитировать Сообщить модератору
 Re: Bt -- новый open-souce фреймворк для BitTorrent  [new]
Andrei T
Member

Откуда: Россия, Москва
Сообщений: 174
На днях зарелизил версию 1.2 с полной поддержкой стандартного протокола шифрования сообщений. Может быть актуально как для обычных торрент-качалок, так и для внутрикорпоративного использования.

Также на сайте появилось несколько новых туториалов по использованию либы:
1. настройка шифрования сообщений
2. как добавить в фреймворк кастомную фичу
3. за 10 минут пишем p2p мессенджер с кастомными сообщениями (не bittorrent)

Всем добра!
31 май 17, 12:57    [20527049]     Ответить | Цитировать Сообщить модератору
 Re: Bt -- новый open-souce фреймворк для BitTorrent  [new]
Andrei T
Member

Откуда: Россия, Москва
Сообщений: 174
В версии 1.3 добавлены магнет-ссылки и, наконец-то, опубликован в maven central модуль для работы с DHT

Посмотреть демо
2 авг 17, 16:13    [20695426]     Ответить | Цитировать Сообщить модератору
 Re: Bt -- новый open-souce фреймворк для BitTorrent  [new]
Andrei T
Member

Откуда: Россия, Москва
Сообщений: 174
Апну тему :) С августа было два релиза, в т.ч. ряд значительных улучшений:
- поддержка NIO файловых систем (например, Jimfs, an in-memory file system for Java 7+)
- события с колбэками и новые методы в клиентском API для более удобного управления загрузкой
- миграция на NIO селектор для приема сообщений от пиров, что существенно уменьшило расход ресурсов
- более удобный API для регистрации расширений

Более подробно здесь: http://atomashpolskiy.github.io/bt/
23 окт 17, 17:55    [20893385]     Ответить | Цитировать Сообщить модератору
 Re: Bt -- новый open-souce фреймворк для BitTorrent  [new]
Andrei T
Member

Откуда: Россия, Москва
Сообщений: 174
На днях зарелизил версию 1.6. Основное нововведение - Local Service Discovery, или поиск локальных пиров через мультикаст.

Также было сделано несколько минорных улучшений:
- возможность отключать стандартные расширения типа Peer Exchange и вышеупомянутого LSD
- автоматическое отключение шифрования, если используемая JRE не поддерживает длинные ключи
- оптимизация расхода памяти посредством переиспользования  send/receive буферов в новых соединениях

Велкам!
31 янв 18, 13:26    [21154107]     Ответить | Цитировать Сообщить модератору
 Re: Bt -- новый open-souce фреймворк для BitTorrent  [new]
kazeboba
Member

Откуда:
Сообщений: 1
Привет, есть ли возможность осуществлять закачку частей торрента последовательно(для медиаплеера)? Если да, то как? Спасибо!
25 фев 18, 15:49    [21216817]     Ответить | Цитировать Сообщить модератору
 Re: Bt -- новый open-souce фреймворк для BitTorrent  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 10171
Пиявки "скачивают" в том порядке, какой сложится на гуще раздающих.
Хочется упорядоченности "для медиаплеера" - используйте более другой протокол.
25 фев 18, 17:28    [21216991]     Ответить | Цитировать Сообщить модератору
 Re: Bt -- новый open-souce фреймворк для BitTorrent  [new]
Andrei T
Member

Откуда: Россия, Москва
Сообщений: 174
kazeboba
Привет, есть ли возможность осуществлять закачку частей торрента последовательно(для медиаплеера)? Если да, то как? Спасибо!

Привет! Да, такая возможность есть. Надо в билдере клиента указать последовательный "селектор". Используя пример кода из основного README, получится примерно так:
// enable multithreaded verification of torrent data
Config config = new Config() {
    @Override
    public int getNumOfHashingThreads() {
        return Runtime.getRuntime().availableProcessors() * 2;
    }
};

// enable bootstrapping from public routers
Module dhtModule = new DHTModule(new DHTConfig() {
    @Override
    public boolean shouldUseRouterBootstrap() {
        return true;
    }
});

// get download directory
Path targetDirectory = new File(...).toPath();

// create file system based backend for torrent data
Storage storage = new FileSystemStorage(targetDirectory);

// create client with a private runtime
BtClient client = Bt.client()
        .config(config)
        .storage(storage)
        .magnet("magnet:?xt=urn:btih:af0d9aa01a9ae123a73802cfa58ccaf355eb19f1")
        .autoLoadModules()
        .module(dhtModule)
        .selector(SequentialSelector.sequential())
        .stopWhenDownloaded()
        .build();

// launch
client.startAsync().join();


Более реальный пример настройки и создания клиента можно посмотреть в CLI загрузчике и его README. В частности, CLI применяет последовательную закачку, если указан флаг -S. Очень удобно для просмотра фильмов параллельно с загрузкой
25 фев 18, 20:15    [21217324]     Ответить | Цитировать Сообщить модератору
 Re: Bt -- новый open-souce фреймворк для BitTorrent  [new]
Andrei T
Member

Откуда: Россия, Москва
Сообщений: 174
Опубликована моя статья на habrahabr "Пишем свой BitTorrent клиент"
https://habrahabr.ru/post/350076/
27 фев 18, 18:46    [21223180]     Ответить | Цитировать Сообщить модератору
 Re: Bt -- новый open-souce фреймворк для BitTorrent  [new]
PPA
Member

Откуда: Караганда -> Липецк
Сообщений: 812
Andrei T,

> на базе которой можно быстро и без особых проблем собрать какую-нибудь корпоративную систему репликации

А можно ссылку на простой пример синхронизации каталога?
4 окт 18, 11:28    [21694958]     Ответить | Цитировать Сообщить модератору
 Re: Bt -- новый open-souce фреймворк для BitTorrent  [new]
Andrei T
Member

Откуда: Россия, Москва
Сообщений: 174
Пример есть здесь
https://github.com/atomashpolskiy/bt/tree/master/examples/src/main/java/datasharing
Не хватает, правда, автоматического создания торрента для каталога. Пока что для этого нужно использовать какую-нибудь стороннюю тулзу.
6 окт 18, 12:58    [21696988]     Ответить | Цитировать Сообщить модератору
 Re: Bt -- новый open-souce фреймворк для BitTorrent  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
Хм. Версии Google GUice надо поднять до 4.2.2 иначе не собирается. Ну по крайней мере у меня.
<guice-version>4.2.2</guice-version>


И я-бы обратил внимание на Warnings во время package.
4 дек 18, 00:55    [21752491]     Ответить | Цитировать Сообщить модератору
 Re: Bt -- новый open-souce фреймворк для BitTorrent  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
UP. Автор ты где? Есть парочка вопросов по DHT/Kademlia/P2P.
16 дек 18, 21:32    [21765531]     Ответить | Цитировать Сообщить модератору
 Re: Bt -- новый open-souce фреймворк для BitTorrent  [new]
Andrei T
Member

Откуда: Россия, Москва
Сообщений: 174
Я тут
17 дек 18, 10:54    [21765707]     Ответить | Цитировать Сообщить модератору
 Re: Bt -- новый open-souce фреймворк для BitTorrent  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
Современные бит-торрент клиенты используют DHT/Kademlia для поиска раздающих?
17 дек 18, 15:09    [21766046]     Ответить | Цитировать Сообщить модератору
 Re: Bt -- новый open-souce фреймворк для BitTorrent  [new]
Andrei T
Member

Откуда: Россия, Москва
Сообщений: 174
Все BitTorrent клиенты используют Mainline DHT, который описан в BEP-5. Это Kademlia с определенными значениями параметров, таких как допустимые значения ключей и нод (в BitTorrent - от 0 до 2**160 - 1.)
17 дек 18, 16:53    [21766172]     Ответить | Цитировать Сообщить модератору
 Re: Bt -- новый open-souce фреймворк для BitTorrent  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
Ну я как-то себе распечатал документ под названием - Kademlia: A Peer-to-peer Information System Based on the XOR Metric.

Его можно легко нагуглить в pdf. В нем тоже есть описание 160-битный ключей.
Алгоритма движения по нодам в поиске искомой информации.

Насколько он актуален сейчас? Что из того что там написано относится к современному
Mainline DHT?
18 дек 18, 23:40    [21767804]     Ответить | Цитировать Сообщить модератору
 Re: Bt -- новый open-souce фреймворк для BitTorrent  [new]
Andrei T
Member

Откуда: Россия, Москва
Сообщений: 174
mayton
Ну я как-то себе распечатал документ под названием - Kademlia: A Peer-to-peer Information System Based on the XOR Metric.

Его можно легко нагуглить в pdf. В нем тоже есть описание 160-битный ключей.
Алгоритма движения по нодам в поиске искомой информации.

Насколько он актуален сейчас? Что из того что там написано относится к современному
Mainline DHT?

Вполне актуален, хотя к реализациям есть замечания. Размер ключа может быть любым, но поскольку DHT - это разновидность хеш-таблицы, то авторы решили для простоты и наглядности использовать SHA-1 и, соответственно, 160-битный ключ. Что касается BitTorrent, то есть две несовместимые между собой реализации DHT: Azureus (появилась первой, основана на Kademlia) и Mainline (появилась в uTorrent, основана на Kademlia, описана в BEP-5.) Несовместимые они по двум причинам: (1) используют разные параметры значений Kademlia (в т.ч. не фигурирующие в изначальной статье, например, интервал keep-alive нод и TTL хранящихся значений), (2) по-разному реализуют абстрактный протокол сообщений Kademlia (кстати, обрати внимание, что в Kademlia определены абстрактные STORE и GET, а в BitTorrent - конкретные STORE_PEER и GET_PEERS, т.е. BitTorrent DHT нельзя использовать в других целях.)
19 дек 18, 20:51    [21768887]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Bt -- новый open-souce фреймворк для BitTorrent  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
Andrei T, а почему BDecoder не всегда может распознать тип сообщения в пакете?
Оба пакета были адресованы к порту 51413 (у меня это Transmisison-client)

2020-04-21 18:54:14 [INFO ] 18  : mayton.network.dht.KadListener Transmisssion :: Received DHT UDP packet : from /5.145.161.26:[Unknown] (53598) with data:  
00000000 : 64 31 3A 61 64 32 3A 69 64 32 30 3A 5B 75 AF B9 69  : d1:ad2:id20:[u  i
00000010 : E9 4A 3D 4F 26 2F 09 55 93 A6 E2 87 EC 24 5B 39 3A  :  J=O&/ U     $[9:
00000020 : 69 6E 66 6F 5F 68 61 73 68 32 30 3A 5B 75 AE 56 9B  : info_hash20:[u V 
00000030 : 5F 83 92 19 64 A5 61 55 9C 2F BC 39 FB BE 7E 65 31  : _   d aU / 9  ~e1
00000040 : 3A 71 39 3A 67 65 74 5F 70 65 65 72 73 31 3A 74 32  : :q9:get_peers1:t2
00000050 : 3A 0E 2A 31 3A 76 34 3A 4C 54 01 25 31 3A 79 31 3A  : : *1:v4:LT %1:y1:
00000060 : 71                                                  : q


2020-04-21 18:54:14 [INFO ] 18  : mayton.network.dht.KadListener Decoded : {a={id=[91, 117, -81, -71, 105, -23, 74, 61, 79, 38, 47, 9, 85, -109, -90, -30, -121, -20, 36, 91], info_hash=[91, 117, -82, 86, -101, 95, -125, -110, 25, 100, -91, 97, 85, -100, 47, -68, 57, -5, -66, 126]}, q=[103, 101, 116, 95, 112, 101, 101, 114, 115], t=[14, 42], v=[76, 84, 1, 37], y=[113]}
2020-04-21 18:54:14 [INFO ] 18  : mayton.network.dht.KadListener Decoded with BDecoder:     id : 5B 75 2F 39 69 69 4A 3D 4F 26 2F 09 55 13 26 62 07 6C 24 5B     info_hash : 5B 75 2E 56 1B 5F 03 12 19 64 25 61 55 1C 2F 3C 39 7B 3E 7E 
q : 67 65 74 5F 70 65 65 72 73 t : 0E 2A v : 4C 54 01 25 y : 71 

2020-04-21 18:54:16 [INFO ] 18  : mayton.network.dht.KadListener Transmisssion :: Received unparsable UDP packet : from /91.229.101.2:[Unknown] (37637) with data:  
00000000 : 41 00 24 BD 74 15 D8 08 00 00 00 00 00 00 00 00 13  : A $ t            
00000010 : 83 00 00 4F 26 2F 09 55 93 A6 E2 87 EC 24 5B 39 3A  :    O&/ U     $[9:
00000020 : 69 6E 66 6F 5F 68 61 73 68 32 30 3A 5B 75 AE 56 9B  : info_hash20:[u V 
00000030 : 5F 83 92 19 64 A5 61 55 9C 2F BC 39 FB BE 7E 65 31  : _   d aU / 9  ~e1
00000040 : 3A 71 39 3A 67 65 74 5F 70 65 65 72 73 31 3A 74 32  : :q9:get_peers1:t2
00000050 : 3A 0E 2A 31 3A 76 34 3A 4C 54 01 25 31 3A 79 31 3A  : : *1:v4:LT %1:y1:
00000060 : 71                                                  : q
21 апр 20, 19:02    [22120154]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Java Ответить