 |
BitTorrent: новое слово в пиринговых сетях
За весьма короткий отрезок времени пиринговая сеть 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, и все исходники доступны на
сайте проекта
Компьютерное Обозрение #35, URL:
http://itc.ua/14685 |