Как стать автором
Обновить

Простота в дизайне. Эпизод 2. DHT и PEX

Разработка веб-сайтов *
Peer-to-peer сеть BitTorrent очень популярна. И тем обидней, что базируется такая сеть на веб-сайт, трекер, что совершенно не пиртупирно и потенциально опасно. Соответственно, с тех пор, как жив BitTorrent, предпринимались различные попытки децентрализовать и оставшуюся часть — получение списка пиров.

Есть у студентов computer science популярный шаблон мышления: «Децентрализовать? DHT!». DHT, Distributed Hash Tables — умозрительно простая идея: диапазоны ключей хэш-таблицы разбрасываются на пиров, выстраиваются взаимные ссылки и ура. Ура — в жопе дыра. Потому что при столкновении с реальной сетью, в отличие от симулятора или кластера, начинается преогромное количество проблем. Более половины пиров, например, скрыты за NATами и фэйрволами, поэтому на запросы DHT одним пирам они отвечают, а другим — нет, причём труднопредсказуемым образом. Пиры постоянно приходят и уходят, некоторые пиры глючат, есть злоумышленные пиры, кто-то подключён по диал-апу. Чтобы всё это предусмотреть и подкрутить соответствующие затычки, пришлось серьёзно потрудиться. И получившийся код всё равно вызывает нарекания. Коренная проблема в том, что DHT вынужден строить свою отдельную P2P-сеть по своим отдельным правилам. Что плохо влияет на сложность, эффективность, безопаснось.

Другая попытка в том же направлении — PEX (Peer EXchange)*, gossip протокол, в котором уже соединённые пиры просто обмениваются адресами тех, к кому они уже присоединены. У протокола была нелёгкая судьба, потому что изначально Брам Коэн (автор BitTorrent) был уверен, что PEX будет вести к распадению роя. Он сделал по-быстрому какой-то симулятор и увидел полный распад. Некоторое время назад мне показалось, что я понимаю, почему и него рои распадались. Я тоже сделал симулятор, но при разумных параметрах распадения роя добиться не удалось. Видимо, была у него какая-то ошибка.

А PEX работает отлично. Его изначально реализовали в неофициальных клиентах, кажется Azureus и µTorrent (второй ещё не был куплен BitTorrent Inc). Постепенно реализация µTorrent, под названием ut_pex, стала общепринятой. Протокол очень эффективен: я с моего лаптопа своим специальным BitTorrent-пауком за пару-тройку минут переписывал всех пиров в 100-тысячном рое. Логика работы простая, экспоненциальная. Получив от трекера двадцать пиров и успешно присоединившись к двум, мы тут же по ut_pex получаем ещё двести. Ну и так далее. Сам протокол чрезвычайно прост и состоит из одного (!) сообщения. Ещё один популярный шаблон мышления: все думают, что сообщения должно быть два: запрос и ответ. Нет, запроса нет. Просто сообщения так малы, что экономить нет смысла. А с запросами куча мороки. Поэтому если пир видит, что вы понимаете ut_pex, он просто периодически шлёт вам IP-адреса. Реализация ut_pex в libtorrent-rasterbar занимает в 7 раз меньше места, чем довольно компактная реализация DHT там же**.

* А то, что сейчас написано про PEX в Википедии — это original research или попросту лажа.

** Внимательный читатель, возможно, заметит подтасовку — ut_pex не обеспечивает полной децентрализации трекинга, ведь ему нужны стартовые пиры. Поделюсь секретом. DHT этого тоже не обеспечивает. Во-первых, пользователи всё равно идут на сайт, потому что иначе их собрать сложно. Во-вторых, из того что я знаю, DHT на практике бутстрапится с корневых серверов (только это большой секрет! :) )

The cheapest, fastest, and most reliable components of a computer system are those that aren't there. — G. Bell
Всего голосов 59: ↑51 и ↓8 +43
Просмотры 4.9K
Комментарии 30

Из чего состоит мировой торрент-трафик?

Децентрализованные сети *


Попытка оценки. Только факты.

Студент Принстона, Sauhard Sahi, провел небольшое исследование, с целью оценить, из какого рода данных состоит мировой торрент-трафик. Для этого он подключился к сети Mainline DHT, основному DHT, используемом Bitorrent, uTorrent, Transmission и др. (Azureus/Vuze использует по умолчанию иную DHT-систему, но существует плагин, позволяющий ему использовать и Mainline DHT), и получил данные и фрагменты из 1021 случайно выбранного торрента, находящегося в раздаче.
Читать дальше →
Всего голосов 92: ↑86 и ↓6 +80
Просмотры 4.3K
Комментарии 119

BitTorrent и DHT: взаимная совместимость клиентов

Децентрализованные сети *
При чтении комментариев ко блогозаписи «Объединение браузеров в непотопляемый трекер» меня более всего поразило известие о том, что торрентовая распределённая таблица хэшей (так называемая DHT) является не общей для всех торрентовых клиентов распределённой базою знаний о файлах (как, например, Kad для eMule), а отдельной для некоторых типов клиентов, то есть разработчики битторрентовых клиентов умудрились устроить взаимно несовместимые DHT.

Ещё в мае я пошёл обсудить это в Фидонете (в моей эхоконференции Ru.Internet), и получил следующий ответ от Константина Кузова (2:5019/40.1):

— Пора бы уже привыкнуть, что на хабре вещают такое же кол-во бреда как и где-либо ещё. DHT у всех торрент-клиентов совместим, на него есть спека.

— Единственный клиент, который «несовместим» с ним — это azureus (vuze), в который прикрутили DHT, когда той спеки ещё в проекте не было, поэтому у azureus своя реализация DHT и соответственно своя DHT сеть, но с помощью плагина mainline dht он может использовать одновременно со своей и официальную DHT.

— ЗЫ. Ну и так, для галочки, DHT — говно, это шаг назад, обратно к тем тормозным p2p-сетям, для замены которых и разрабатывали bittorrent. Лишь куча лишнего трафика и практически нулевая польза. Лучше бы все с таким же упоением во все клиенты двигали поддержку чего-нибудь такого.

— Даже жаль, что подобные фичи в основном есть в поделках аля Blizzard Downloader.

(Конец цитаты.)

Но сомнения не оставляют меня: я догадываюсь, что пользователи не любят отказываться от настроек по умолчанию, так что не станут устанавливать в Vuze плагин Mainline DHT. А ведь Vuze занимает значительную долю битторрентового файлообмена.

Я продолжаю сидеть на eMule.
Всего голосов 48: ↑18 и ↓30 -12
Просмотры 1.9K
Комментарии 13

Kademlia DHT: Основы

Децентрализованные сети *
Здравствуйте!
В этой статье, как и, надеюсь, в последующих, я хочу рассказать об одной из современных структурированных пиринговых сетей. Данный материал включает в себя мою переработку документаций, описаний и статей, найденных по теме. В качестве введения представлена общая краткая теория p2p-сетей, DHT, а уж затем следует основная часть, которой посвящена заметка.

Читать дальше...
Всего голосов 54: ↑52 и ↓2 +50
Просмотры 33K
Комментарии 35

Модные штучки

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

Читать дальше →
Всего голосов 11: ↑7 и ↓4 +3
Просмотры 355
Комментарии 8

BitTorrent DHT можно использовать для DDoS

Децентрализованные сети *IPv6 *
На 27-м конгрессе CCC (Chaos Communication Congress) обсуждалась тема DDoS-атак через DHT (презентация “Lying To The Neighbours” в PDF).

Использовать BitTorrent для DDoS умели и раньше: нужно было прописать IP-адрес жертвы в качестве трекера — и он получал множество запросов. Но проблема в том, что для подобного способа нужен популярный торрент.

Новая методика экплойта DHT даёт возможность использовать уже существующую сеть пиров. Если вкратце, то алгоритм такой: надо стать популярным пиром в сети, чтобы получать много запросов find_node от соседних пиров.
Читать дальше →
Всего голосов 41: ↑34 и ↓7 +27
Просмотры 5.7K
Комментарии 9

Поиск по торрентам в DHT-сети

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

Однако не все знают, что уже давно существует альтернатива традиционным трекерам — DHT-сеть, позволяющая организовывать раздачи без трекера. До сих пор она не получила большого распространения из-за невозможности поиска внутри сети — нужный файл можно было скачать только при наличии magnet-линка раздачи. Однако недавно появился первый и уникальный пока поисковый сервис по DHT-сети BTDigg.org.

Сервис с весьма лаконичным дизайном заточен под одну функцию — поиск:


Поисковик по хэшам торрентов


Чтобы снизить зависимость от трекеров, в 2007 году разработчиками протокола bittorrent была принята его модификация на основе DHT-структуры, которая позволяла делать раздачи без трекера.

Что такое DHT-сеть? Фактически, это распределённая сеть торрент-клиентов, которая хранит идентификаторы (хеши) всех публичных раздач — т.н. magnet-link, которые представляют собой 160-битное случайное число. DHT-узлы клиентов отвечают за анонсирование своих торрентов и за поиск запрашиваемых. Благодаря тому, что все современные клиенты поддерживают DHT, можно сказать, что в этой сети есть практические все публичные торренты (приватные торренты сеть «не видит» и не позволяет скачивать). Практически — потому что DHT в клиенте может быть отключен. Поиск идёт по мета-информации, которую содержит в себе торрент-файл — то есть, проще говоря, он ищет по названию торрента и по названиям файлов входящих в него. Пользователь открывает magnet-линк в своём торрент-клиенте, тот находит всех раздающих файл и дальше качает как обычно — участия трекера в этой цепочке нет.

Читать дальше →
Всего голосов 107: ↑104 и ↓3 +101
Просмотры 148K
Комментарии 73

Lua что новенького в BitTorrent DHT?

Децентрализованные сети *
Какое-то время назад я написал для Shareaza внешний DHT Tracker на Lua (GitHub). Для Shareaza это обычный локальный трекер, а по сути это BitTorrent DHT клиент, который позволяет ей качать торенты по магнет ссылкам без трекера.

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

Итак, что новенького мы наловили в BitTorrent DHT.
Читать дальше →
Всего голосов 26: ↑23 и ↓3 +20
Просмотры 2.7K
Комментарии 10

Yac 2011: Технический отчёт

Высокая производительность *Hadoop *
Эх, раз, да ещё раз,
Да ещё yet another раз…


Не так давно завершилась конференция Яндекс YaC 2011 и теперь, когда стали доступны записи выступлений, я хочу представить вам технический отчёт о её посещении. В отчете я сосредоточился на той информации, которую вы можете получить, посмотрев запись того или иного доклада, и решить стоит ли тратить на это время. Для некоторых тем добавил дополнительные ссылки на ключевые ресурсы, а так же, по мотивам общения с авторами, описал устройства двух NoSQL технологий Яндекса: Elliptics Network и хранилища писем в Яндекс почте.

Итак, Yac 2011, как это было.
Читать дальше →
Всего голосов 26: ↑24 и ↓2 +22
Просмотры 2K
Комментарии 3

Распределённый поисковик YaCy версия 1.0

Поисковые технологии *


Активисты движения за свободное ПО запустили новый проект: поисковую систему YaCy, которая в перспективе может составить конкуренцию Google, Yahoo/Bing, «Яндекс» и прочим закрытым коммерческим поисковикам. Версия YaCy 1.0 вышла после пяти лет разработки, и теперь присоединиться к сети наконец-то может любой желающий.
Читать дальше →
Всего голосов 44: ↑43 и ↓1 +42
Просмотры 17K
Комментарии 31

Failsafe resource allocator over DHT

API *Big Data *
У нас есть некоторый диапазон чисел от 0 до N, надо написать две функции int alloc() и free(int). Первая выбирает один из свободных идентификаторов из диапазона [0, N), а вторая соответственно — «возвращает» его для повторного использования(полагаем, что число N достаточно мало, что бы идентификаторы могли закончится если их не возвращать, но больше чем число выделенных в каждый конкретный момент времени идентификаторов). При этом на «нижнем уровне» у нас есть только DHT. Нету блокировок, и, кроме того, от алгоритмов требуется отказоустойчивость — если какой-то из узлов кластера «сложится» во время выполнения алгоритма поведение системы должно быть предсказуемо. Если задача интересна, а также интересно узнать почему отказоустойчивый сервис с такой сигнатурой невозможно корректно использовать, и как надо исправить сигнатуру что бы это стало возможно — добро пожаловать под кат.

Читать дальше →
Всего голосов 11: ↑10 и ↓1 +9
Просмотры 2.3K
Комментарии 0

Как работает поиск в Kad Network

Децентрализованные сети *
Из песочницы
Довольно часто встречаются жалобы на то, что в Mainline DHT битторрента нет поиска по ключевым словам. Обычно просьбы о добавлении такого поиска на форумах BitTorrent Inc. игнорируются или получают традиционный ответ о том, что DHT не позволяет искать по ключевым словам, а только по индивидуальным ключам. Это в принципе верно, но существует такой выход из этой прискорбной ситуации как создание инвертированного индекса ключевых слов у каждой ноды.

Собственно так и работает поиск в Kad Network, реализации распределённой хэш-таблицы, основанной на довольно широко используемом протоколе Kademlia. Kad Network используется такими программами как eMule, iMule, aMule и MLDonkey для поиска хэшей файлов по ключевым словам и источников файлов по их хэшам.
Читать дальше →
Всего голосов 19: ↑18 и ↓1 +17
Просмотры 9.8K
Комментарии 2

Как устроены облака Яндекса: Elliptics

Блог компании Яндекс NoSQL *
За последние несколько лет в мире IT появилась модная тенденция – использование всего «облачного» для разработки новых продуктов. Публичных облачных провайдеров не так много, самый популярных среди них – Amazon. Однако многие компании не готовы доверять приватные данные кому-либо, при этом хотят хранить их надежно, и поэтому поднимают частные небольшие облачка.

Любое облако состоит из двух основных компонентов: Единой Точки Входа (ЕТВ) и Облачной Магии (ОМ). Рассмотрим облачное хранилище Amazon S3: в роли ЕТВ используется довольно удобный REST API, а Облачную Магию обеспечивают эльфы, работающие на долларах. Компании, желающие разместить в S3 небольшие видеофайлы или базу данных, предварительно считают на калькуляторе сумму, которую они будут платить в месяц при планируемой нагрузке.

Эта статья про другое облачное хранилище, в котором эльфы питаются Духом Свободы, электричеством и еще им нужно немножечко «кокаина».

Называется это хранилище Elliptics.
Есть желающие стать Повелителями Облаков? Прошу под кат.
Всего голосов 94: ↑89 и ↓5 +84
Просмотры 46K
Комментарии 61

Технические подробности о защищённом P2P-чате BitTorrent

Мессенджеры *Криптография *


Компания BitTorrent сообщила технические подробности реализации криптографически защищённого P2P-сервиса BitTorrent Chat, который сейчас находится в закрытом альфа-тестировании. Его главным преимуществом является отсутствие центрального сервера, так что сообщения передаются напрямую с устройства отправителя на устройство абонента без посредников.
Читать дальше →
Всего голосов 46: ↑42 и ↓4 +38
Просмотры 19K
Комментарии 47

Twister: Децентрализованный, P2P аналог Twitter'a

Криптография *
Recovery mode


Сегодня я хочу рассказать вам о таком интересном проекте как Twister.

Twister — это сервис микроблогинга (аналогичный твиттеру), но его отличает несколько очень интересных технологий которые были использованы одновременно.

А именно: Bitcoin Block Chain, Bittorrent DHT, Bittorrent Swarm.

Другими словами — это полностью анонимный, децентрализованный сервис микроблогинга который вобрал в себя всё лучшее от Bittorrent и Bitcoin.
Читать дальше →
Всего голосов 95: ↑82 и ↓13 +69
Просмотры 39K
Комментарии 84

Облачная платформа Яндекса: подробнее про Elliptics

Блог компании Яндекс Open source *
Некоторое время назад я начал рассказывать на Хабре про Elliptics — наше отказоустойчивое распределенное key-value хранилище (к слову, свободное и распространяемое под GPL-лицензией). Тогда я в общем описал устройство Elliptics: про архитектуру и основные принципы работы, за счет чего достигается надежность системы, как систему можно расширять, и как она ведет себя при сбоях.

Начиная с этой статьи попробуем погрузиться в Elliptics глубже: я хочу рассказать вам про внутреннюю архитектуру и различные поддерживаемые фичи.

image

Сегодня — про сетевую и программную архитектуру Elliptics и некоторые из его особенностей. Также я подробно расскажу про кэш и нашу низкоуровневую библиотеку для локального хранения данных — Eblob.
Читать дальше →
Всего голосов 87: ↑80 и ↓7 +73
Просмотры 27K
Комментарии 52

Погодная станция на Ethernet (HTTP+Modbus) с питанием по POE

DIY или Сделай сам
Доброго времени суток хабр-сообщество.
С момента моего последнего поста про умный дом прошло много времени. Я решил его делать начиная с погодной станции.


Рисунок 1 — Фотография макетного образца

Несмотря на обилие статей про погодные станции на arduino (http://habrahabr.ru/post/165747/, habrahabr.ru/post/171525, habrahabr.ru/post/213405 ) Я все-таки решил опубликовать своё решение.

Функционал


Функции которые она выполняет:
  • Измерение температуры
  • Измерение влажности
  • Измерение давления
  • Измерение освещенности
  • Индикация измеренных параметров
  • Выдача измеренных параметров по интерфейсу HTTP в виде XML документа
  • Выдача по протоколу HTTP XSLT процессора для стилизации XML при отображении браузером
  • Выдача информации по Modbus (его предполагаю использовать в качестве протокола управления умным домом)
  • Питание через Passive POE

Читать дальше →
Всего голосов 42: ↑38 и ↓4 +34
Просмотры 35K
Комментарии 35

Сделаем битторрент лучше

Децентрализованные сети *Сетевые технологии *
Последнее время среди пользователей файлообменных сетей все чаще звучат призывы к переходу в подпространство: анонимные сети типа i2p tor и т.п.

Несомненно, у этой идеи есть масса положительных сторон, однако, по сути это означает сломать устоявшиеся системы обмена трафиком, некоторые из которых формировались более 10 лет и начать строить заново, пусть с учетом старых ошибок, но и постаравшись не наделать новых. На даный момент сеть битторрент – это десятки, а наверное даже сотни миллионов устоявшихся связей, «разорвав» которые крайне сложно будет восстановить всё в полном обьеме.

Давайте все же посмотрим на нашего старичка, и поразмыслим, настолько ли все плохо, и можно ли исправить те недостатки, которые у него есть.
Читать дальше →
Всего голосов 66: ↑58 и ↓8 +50
Просмотры 39K
Комментарии 74

Программируем BitTorrent-клиент. Чистый Delphi

Open source *Delphi *
Recovery mode
Из песочницы
Прошло 8 лет после написания статьи Игорем Антоновым (Spider_NET) про создание торрент-клиента на C#, но в сети так и не появилось самого простого примера, как это можно сделать на Delphi.

Чтобы развеять сомнения по поводу неэффективности языка Delphi в таком «непростом» деле, как написание полноценного битторрент-клиента, я и решил написать эту статью.

Сразу скажу, что наш торрент-клиент на Delphi будет с открытым исходным кодом и будет поддерживать практически все современные битторрент-технологии, в том числе DHT, magnet-ссылки, последовательная закачка и т.д.
Читать дальше →
Всего голосов 56: ↑32 и ↓24 +8
Просмотры 30K
Комментарии 57

Как не стать ботом в Bittorrent DHT и других P2P сетях

Децентрализованные сети *
image

Сеть Bittorrent DHT позволяет найти источники торрента по хешу из магнет-ссылки. Сеть состоит из узлов которые могут быть как Bittorent клиентами так и вредоносными программами которые препятсвуют нормальной работе сети. Они мешают клиенту получить источники торрента, перенаправляют запросы на атакуемые узлы, заполняют список узлов бесполезными адресами.

Пока я работал над счетчиком пиров и сидов(DHT Scrape) в этой сети я наткнулся на такие виды атаки.
Читать дальше →
Всего голосов 30: ↑23 и ↓7 +16
Просмотры 29K
Комментарии 13
1