BitTorrent: новое слово в пиринговых сетях
Александр Москалюк
Компьютерное Обозрение #35, 9 – 15 сентября 2003
За
весьма короткий отрезок времени пиринговая сеть BitTorrent приобрела
армию поклонников и довольно высокую популярность. "Сетевое население"
BitTorrent вряд ли можно сравнить с пользовательскими массами Kazaa или
eDonkey/eMule, однако и принципы работы этого проекта не требуют
максимально возможного числа участников.
Еще один пиринговый клиент? Но зачем?
С самого начала создатель BitTorrent программист Брэм Коэн (Bram Cohen)
заложил в него несколько принципиальных отличий от других пиринговых сетей: нацеленность
на распространение крупных файлов и не совсем децентрализованная структура сети.
В службе Napster (до ее закрытия) центральный сервер хранил имена
пользователей и названия файлов, которыми те желали обменяться. В сетях
FastTrack и eDonkey подобных серверов нет, и архитектура сети
предполагает максимальную децентрализацию. Архитектура BitTorrent
предусматривает наличие у файла, выкладываемого в сеть, единственного
владельца, который и заинтересован в его распространении.
Именно первоначальный обладатель файла генерирует серию хэш-кодов,
впоследствии используемую клиентами BitTorrent для проверки его
целостности. Клиент пиринговой сети, чтобы получить искомый файл,
должен загрузить набор данных с расширением .torrent. В нем содержатся
информация о имени файла, его размере, хэш-коды сегментов (по умолчанию
размером 256 КВ) и адрес распространителя, у которого, в свою очередь,
должен быть запущен tracker-сервер для отслеживания количества загрузок
файла в сети peer-to-peer. Архитектура BitTorrent предполагает
пиринговый обмен с использованием центрального tracker-сервера для
учета статистики. По мере того как файл по частям уходит с компьютера
первоначального владельца в сеть, пользователи начинают загружать его
фрагменты друг у друга. В то же время протокол BitTorrent требует
фиксирования каждой такой загрузки на tracker-сервере, даже если сервер
распространителя в транзакции не участвует.
Здесь скрыта еще одна особенность протокола BitTorrent, которая
одновременно является и его ахиллесовой пятой, -– в случае отсутствия в
сети tracker-сервера файл загрузить нельзя. При попытке копирования
torrent-файла клиентом BitTorrent пользователю выдается стандартная
ошибка "Tracker is down".
Безусловно, через некоторое время каждый, у кого есть полная копия
файла, сможет сгенерировать собственный torrent-файл и запустить новый
tracker-сервер, однако обычно Internet-общественность старается не
привлекать крупные объемы трафика к своему IP-адресу, опасаясь крупных
счетов от провайдеров. Сгенерированный torrent-файл также будет
отличаться от первоначального (адрес tracker-сервера является составной
частью torrent-файла), и подключившимся клиентам придется начать
загрузку с нуля.
Централизация как способ уменьшить загрузку сети
Зачем это нужно? Не наносит ли такой шаг удар по стабильности сети?
Во-первых, Коэн стремился, чтобы продукт можно было максимально удобно
использовать для легальной передачи файлов. Во-вторых, внедрение
tracker-сервера позволяет проследить за статистикой загрузок (что
немаловажно для софтверных компаний). В-третьих, если по каким-то
причинам распространение файла необходимо прекратить, то для этого
достаточно приостановить работу трэкера (хотя возможности обхода такого
ограничения мы уже обсудили).
Услугами BitTorrent уже воспользовались такие компании, как Red Hat и
Mandrake, выложив в сеть новые версии своих операционных систем с
одновременной публикацией на сайте torrent-файлов. Дистрибутивы
представляли собой три ISO-файла объемом около 700 МВ каждый, т. е. в
итоге любители Linux были вынуждены загружать около 2 GB, что в былые
времена традиционно "убивало" FTP-серверы. По словам представителей Red
Hat, после запуска дистрибутивов в сеть BitTorrent нагрузка на
центральный FTP-сервер компании упала на 99%. Более того, присутствие
tracker-сервера позволило Red Hat отследить статистику загрузок в
режиме реального времени. Подробная информация редко доступна или
принципиально невозможна в других пиринговых сетях.
Клиент BitTorrent, который можно загрузить с
официального
сайта, представляет собой лишь серое окно с кнопкой
Cancel и ссылкой
About. Весьма неприхотливый в работе пакет запускается при щелчке по torrent-файлу.
В свою версию BitTorrent Коэн внедрил только самую необходимую функциональность
-– возможность соединения с tracker-сервером и собственно загрузку. Все другие
функции, присущие сегодняшним пиринговым сетям, выполняются на более высоком уровне
-– torrent-файлы стоит поискать на специальных сайтах, там же их можно оценить
или расспросить других пользователей об их качестве. Это сделано преднамеренно
-– BitTorrent не перегружает собственную сеть запросами и ответами о наличии файлов
-– вся статистика ведется tracker-сервером, а вся необходимая информация содержится
в torrent-отпечатке.
Экономика пиринговых сетей: проблемы
В списке причин, побудивших Коэна и команду его единомышленников
заняться разработкой нового клиента, можно увидеть немало проблем,
присущих сегодняшним пиринговым сетям.
Файлы-"пустышки". Поскольку львиную долю контента в большинстве
популярных сегодня пиринговых сетей составляют файлы, права на распространение
которых принадлежат звукозаписывающим концернам и кинокомпаниям, последние прилагают
немало усилий для саботажа работы этих самых сетей. О победах и поражениях на
легальных фронтах мы слышим относительно часто, технологический саботаж обычно
является менее очевидным. Так, ассоциация RIAA не раз признавала факт сотрудничества
с малоизвестной компанией
OverPeer,
зарабатывающей на жизнь умышленным искажением и снижением качества цифровой музыки
и видео.
OverPeer принадлежит
американский патент, а описание технологии можно найти на сайте патентного
ведомства США. OverPeer генерирует аудио– и видеофайлы неприемлемого качества
(здесь можно говорить как о заниженном битрейте, так и об изменении их содержания,
-– скажем, прерывание музыкальной композиции рекламным роликом), после чего выкладывает
их в пиринговые сети. Разместив свои файлы на высокоскоростных каналах, OverPeer
практически гарантирует их попадание в списки результатов поиска, так как в сетях
FastTrack и других на вершине рейтинга оказываются продукты, доступные на высокоскоростных
каналах.
Пользователи-"эгоисты". Залогом успеха любой пиринговой сети
является правило, требующее от пользователей не только загружать файлы
на домашний ПК, но и предоставлять их другим. Между тем, в силу разных
причин (в основном, связанных с оплатой каналов), весьма часто
пользователи предпочитают как можно быстрее загрузить файл и
отключиться. Это снижает количество доступных источников для других,
из-за чего страдают стабильность и качество сети. Используемые сегодня
методы борьбы с "эгоистами" зачастую предполагают рейтинг
пользователей, где самые "щедрые" получают приоритет на чужих серверах,
а те, кто "делиться" не желают, при загрузке популярного файла уходят в
конец очереди.
Неполные файлы. Предположим, у вас на диске находится редкая
копия весьма ценного файла, который вы решили выложить в пиринговую
сеть. Спустя какое-то время вы можете отследить процесс загрузки частей
файла клиентами системы, и, скажем, понаблюдав за процессом 24 ч,
посчитать свою миссию выполненной и выключить компьютер. Здесь кроется
весьма очевидная проблема: несмотря на то что многочисленные клиенты
теперь могут похвастаться наличием некоторых сегментов ценного файла,
полной версии не имеет никто. Более того, даже если пройтись по всем
подключенным к сети клиентам, становится очевидным, что полную версию
файла не собрать при всем желании -– у всех имеется, скажем, первая
половина файла, но никто не загрузил несколько сегментов из его второй
половины.
Экономика пиринговых сетей: варианты решения
Некоторые описанные выше проблемы детально рассмотрены Коэном в работе
"Устойчивость за счет системы поощрений в сети BitTorrent" ("
Incentives
Build Robustness in BitTorrent",
http://bitconjurer.org/BitTorrent/bittorrentecon.pdf).
Архитектура BitTorrent предлагает интересные пути их решения. Следует заметить,
что вряд ли какую-то из стратегий можно назвать идеальной, и, скорее всего, в
дальнейшем мы станем свидетелями эволюционного процесса, где будут развиваться
варианты как решения, так и собственно проблемы.
Файлы-"пустышки". Если на ранней стадии развития Internet основным источником информации о файле было его имя (скажем, взглянув на
Alanis Morisette -– Ironic.mp3, можно
догадаться о его содержании), то сегодня ввиду причин, описанных выше,
на подобную стратегию полагаться не следует. Системы рейтинга файлов
(применяемые в сети FastTrack) также нельзя назвать эффективными, в
основном, из-за нежелания большинства пользователей лишний раз после
загрузки предоставлять свои файлы. В BitTorrent эта проблема решается
на более высоком уровне -– за содержание файла отвечает его
распространитель. Информацию о его подлинности, таким образом, надежней
всего получать на форумах, где публикуются как ссылки на новые
torrent-файлы, так и мнения пользователей об их качестве. За подобную
структуру оценки в свое время высказались и создатели сети
eDonkey/eMule.
Пользователи-"эгоисты". Пиринговые сети зачастую ведут учет
"щедрости" пользователя и начисляют баллы за предоставленные широкие
каналы. Проблема здесь тоже весьма банальна: информация о баллах
хранится у клиента, и ничто не мешает ему преднамеренно увеличить их
количество. Подобный трюк реализован в Kazaa Lite, где при подключении
к сети FastTrack все клиенты имеют неизменный рейтинг в 1000 баллов. В
BitTorrent эта проблема решена своеобразно -– оценки за более широкие
каналы растут, однако информация об этом хранится у клиента, который
загружает файл. Вносит ли это справедливость в систему обмена? В
общем-то, не очень, так как баллы начисляются за качество пирингового
соединения между двумя клиентами. Если компьютер А предложил компьютеру
Б весьма широкий канал, то по правилам BitTorrent единственным
вознаграждением для А станет возможность приоритетных загрузок с
компьютера Б. При условии, что и А, и Б содержат интересную друг для
друга информацию, система работает идеально, так как два "щедрых"
компьютера по максимуму используют канал связи между собой. Однако если
на жестком диске Б ничего ценного нет, то щедрость А остается
невознагражденной.
Неполные файлы. Участие в системе обмена tracker-сервера дало
программистам BitTorrent возможность внедрить алгоритм, предотвращающий
появление неполных файлов. Поскольку tracker хранит информацию о
сегментах, успешно загруженных на каждую машину, то загрузка файла
новыми клиентами принудительно начнется с наиболее редкого сегмента.
Если клиент BitTorrent загружает крупный файл, разбитый на 200 частей,
то это совсем не означает, что процесс начнется с сегмента # 1 и
закончится сегментом # 200. О недостатках подобной модели мы писали
выше. Клиент всегда получает сегмент, занимающий последнее место по
распространенности, что в идеале после 200 подключений к центральному
серверу даст возможность выложить в пиринговую сеть файл целиком.
Практическое применение новой архитектуры
Единственным крупным работающим сайтом со ссылками на файлы BitTorrent
сегодня является
SuprNova.
Рейд RIAA вынудил большинство серверов отказаться от хостинга хэш-ссылок на файлы,
присутствующие в системе. Краткий визит на сайт позволяет убедиться, что размещение
целых аудиоальбомов и даже коллекций компакт-дисков -– не редкость.
Архитектура BitTorrent не дает возможности определить число клиентов,
участвующих в пиринговой сети, так как о количестве загрузок
определенного файла может знать только владелец tracker-сервера.
Вместе с тем поддержка протокола сегодня внедрена в приложение
Shareaza,
которое ввиду удобства интерфейса, поддержки нескольких пиринговых сетей и отсутствия
spyware-модулей постепенно приобретает популярность.
Получает распространение и клиент
PTC,
поддерживающий протоколы BitTorrent и наделенный более приемлемым для новых пользователей
интерфейсом.
Те, кто заинтересован в кросс-платформенном приложении, могут воспользоваться
Java-клиентом для сетей BitTorrent -–
Azureus,
которое на данный момент имеет вид бета-версии.
Приложение пишется на языке Python, и все исходники доступны на
сайте
проекта.