Peer-2-Peer на весь мир?
АрхивСетевое окружение (архив)P2P: общая информация, плюсы и минусы, области применения и проблемы.
Первые мои попытки получить информацию о P2P наткнулись даже не на стену, а, скорее, на вязкое болото — тот же Yandex вываливал столько ссылок, что перелопатить их в обозримом будущем было нереально. Впрочем, после более детального осмотра стало ясно — русскоязычный сегмент сети почти ничего о принципах работы или архитектуре P2P не содержит, максимум, что из него можно выжать, так это куцые перепечатки западных новостных лент. Беседы с коллегами и разными гуру ограничивались либо пространными объяснениями, либо вежливыми извинениями — мол, самим интересно, но не знаем. Среди ангоязычных ресурсов тоже, конечно, с избытком было пресс-релизов, красочных презентаций и многомегабайтных pdf. Но обнаружилось и несколько профессиональных узлов со сложившимся, как сейчас модно говорить, community, из общения с которым мне и удалось почерпнуть большую часть сведений.
Что такое P2P
Популярность P2P набирала обороты вместе с ростом популярности наиболее известного клиента, использовавшего данную технологию — Napster — и достигла своего пика в момент коллапса этой сети. Но уже за несколько месяцев до смерти Napster стали появляться альтернативные сети, многие IT-лидеры объявили о поддержке P2P в своих новых продуктах — в общем, явление стало по-настоящему «модным».
Четкого определения, что же такое P2P, нет. Поэтому приведу два наиболее распространенных. P2P (peer-to-peer) — это технология построения распределенной сети, где каждый узел может одновременно выступать как в роли клиента (получателя информации), так и в роли сервера (поставщика информации). Как правило, сеть состоит из равноправных узлов, причем каждый из них взаимодействует лишь с некоторым подмножеством узлов сети, так как установление связи «каждый с каждым» невозможно из-за ограниченности ресурсов (как вычислительных, так и пропускных). При этом передача информации между узлами, не связанными в данный момент непосредственно, может осуществляется как по своеобразной эстафете — от узла к узлу, так и путем установления временной прямой связи. Все вопросы маршрутизации и авторизации сообщений, передаваемых по эстафете, лежат не на едином сервере, а на всех этих отдельных узлах. Такое определение также известно под названием Pure P2P.
Второе определение носит более общий характер: P2P — это класс приложений, совместно использующих распределенные ресурсы (дисковое пространство и файлы, вычислительные ресурсы, пропускную способность и т.д.). Именно в эту категорию попадают системы распределенных вычислительных сетей (SETI@HOME), некоторые файловые обменные сети (Napster) и службы сообщений.
Плюсы и минусы
Первый вопрос, который я задаю себе, узнав о какой-либо новинке, будь то технология, «железка» или софт — зачем это нужно и чем новинка лучше существующих аналогов. Несмотря на многообразие возможных ответов, применительно к рассматриваемому вопросу ключевыми характеристиками, на мой взгляд, являются:
- управляемость — простота поддержания работоспособности системы, а также решения вопросов, связанных с обновлением, восстановлением после сбоев и регистрацией активности (logging);
- информационная согласованность — достоверность, проверяемость и последовательность информации;
- расширяемость — возможность расширения информационных ресурсов системы;
- устойчивость к сбоям — надежность системы;
- безопасность — степень защиты информации от несанкционированного доступа;
- устойчивость к внетехнологическому вмешательству — возможность (или невозможность) вмешательства государственных и иных органов в работу сети ввиду какаих-либо причин (например, обвинение в нарушении авторских прав);
- масштабируемость — наличие пределов (как правило, технологических) увеличения мощностей и предельная стоимость расширения.
А теперь сравним P2P и другие существующие топологии, дабы выяснить их преимущества и недостатки.
Централизованная топология
Как видно из рисунка, в централизованной топологии существует некий центральный сервер, предоставляющий клиентам определенные услуги.
Управляемость |
|
Инфор-ая соглас-ть |
|
Расширяемость |
|
Устойчивость к сбоям |
|
Безопасность |
|
Устойчивость к ВТВ |
|
Масштабируемость |
|
Главным преимуществом такой системы является ее простота. Вся информация хранится в одном месте, поэтому легко ею управлять и поддерживать ее достоверность. Не составляет проблемы и защита информации — ведь непосредственно защите подлежит лишь центральный сервер. С другой стороны, ни о какой устойчивости такой системы говорить не приходится — остановка работы централизованного сервера приводит к выходу из строя всей сети. Также существуют проблемы с расширением информационного наполнения сервера, так как для этого необходима прямая доставка и размещение всех данных именно на центральном сервере.
Иерархическая топология
Это, пожалуй, самая старая и хорошо зарекомендовавшая себя топология. На сегодняшний день самыми убедительными примерами, подтверждающими ее состоятельность, являются DNS, Network Time Protocol и отчасти Usenet. По сути, данная схема создавалась с целью хотя бы частично избавится от самых неприятных недостатков централизованной топологии, что, в принципе, и было достигнуто.
Управляемость |
|
Инфор-ая соглас-ть |
|
Расширяемость |
|
Устойчивость к сбоям |
|
Безопасность |
|
Устойчивость к ВТВ |
|
Масштабируемость |
|
Наиболее значимым преимуществом иерархической топологии является масштабируемость, которую прекрасно продемонстрировал DNS: за последние пятнадцать лет число обслуживаемых этим сервисом узлов возросло с нескольких тысяч до сотен миллионов, и хотя сбои время от времени случаются, носят они локальный и, как правило, временный характер. Так что система демонстрирует завидную надежность, особенно по сравнению с классической централизованной топологией.
Децентрализованная топология
Децентрализованные системы, такие как Gnutella, являются прямой противоположностью централизованных, поэтому неудивительно, что плюсы и минусы здесь меняются местами. Высокая надежность таких систем приводит к серьезным проблемам с управляемостью и поддержанием достоверности размещаемой информации. Впрочем, как заявляют основатели подобных сетей, надежность и устойчивость являются теми факторами, ради которых можно пожертвовать всеми другими благами. Принцип, можно сказать, партизанский — обороняться любыми средствами! Действительно, вывести такую сеть из строя весьма и весьма непросто. Но есть у этой монеты и оборотная сторона. Децентрализованные сети требуют гораздо больших издержек, их клиенты на порядок сложней (а значит, и ошибки в них случаются чаще). В конечном итоге, они гораздо менее защищены — уже существуют специально для них написанные вирусы, а также программы, которые, маскируясь под клиентов подобных сетей, сканируют узлы в поисках определенного контента или наводняют их ложными пакетами с целью обрушить сеть.
Управляемость |
|
Инфор-ая соглас-ть |
|
Расширяемость |
|
Устойчивость к сбоям |
|
Безопасность |
|
Устойчивость к ВТВ |
|
Масштабируемость |
|
Гибридная топология: децентрализованная + централизованная
Примеры реализации сети "fast-track" — всем известные KaZaA and Morpheus. Увы, это именно тот случай, когда смешение двух технологий привело не к взаимному дополнению преимуществами друг друга, а совсем наоборот. Не продемонстрировав существенных достоинств централизации, эта схема ударила своих пользователей другим боком — возможностью блокирования серверов. И, как следствие, сети, построенные на базе fast-track, в любой момент могут быть выключены, а это во многом лишает их главного преимущества децентрализованных систем — надежности и устойчивости, в том числе и к внетехнологическим вмешательствам.
Управляемость |
|
Инфор-ая соглас-ть |
|
Расширяемость |
|
Устойчивость к сбоям |
|
Безопасность |
|
Устойчивость к ВТВ |
|
Масштабируемость |
|
|
|
Области применения
Хотя возможных направлений применения P2P довольно много, наиболее успешны пока только четыре:
- Файловые обменные сети (file-sharing). В данном случае сети P2P выступают хорошей альтернативой FTP-архивам, которые уже давно перестали справляться с ростом информационного наполнения и числа потребителей. Несмотря на постоянный рост количественных характеристик файл-серверной архитектуры, P2P потенциально обладает целым рядом преимуществ: балансировкой нагрузки, более широкой полосой пропускания, высокой «живучестью» и широкими возможностями по публикации контента. Примеры — Napster, Gnutella и ее производные.
- Распределенные вычислительные сети. Например, такие как SETI@HOME. Этот проект продемонстрировал громадный вычислительный потенциал для хорошо распараллеливаемых задач. В настоящий момент в нем принимают участие свыше трех миллионов пользователей, а общее число «процессоро-лет» перевалило за семьсот тысяч, и все это на абсолютно бесплатной основе, когда добровольцы не получают ничего кроме красочного скринсейвера и возможности общественного признания.
- Службы сообщений (Instant-messaging). Думаю, что одни лишь имена наиболее популярных приложений данного класса — ICQ и AIM — говорят сами за себя.
- Сети групповой работы (P2P Groupware). Подобные приложения пока мало распространены, но в их будущем сомневаться не приходится. Одними из самых перспективных считаются Groove Network — сеть, предоставляющая защищенное пространство для коммуникаций, и OpenCola — технология поиска информации и обмена ссылками на наиболее интересные источники, где в роли поискового сервера выступает не бездушная железка, а каждый из пользователей сети, что обещает гораздо более высокую релевантность (при ответственном подходе пользователей к процессу, конечно).
Проблемы P2P
Как и у любой молодой технологии, у P2P есть, помимо технических, и свои социальные проблемы. Многие исследователи отмечают весьма неприятную ситуацию, сложившуюся в Gnutella: около 70% пользователей не добавляют вообще никаких файлов в обменный фонд, а около 50% всех найденных ресурсов предоставлены 1% (одним процентом!) пользователей [2]. Психология «общества массового потребления» постепенно превращает сеть равноправных узлов в клиент-серверную, со всеми вытекающими последствиями (падение производительности и надежности).
Существует и проблема так называемого паразитического подключения: в сети появляются сервера, предоставляющие свои пользователям возможности по поиску контента без установки программы-клиента. Таким образом, получая информацию и генерируя громадный трафик, такие сервера не предоставляют сообществу ничего взамен. Впрочем, последние версии ряда программ уже способны с этим справляться — они распознают запросы «паразитов» и либо их игнорируют, либо предлагают установить таки клиентскую часть.
Другая проблема P2P сетей связана с тем, что обмен информацией осуществляется между «незнакомыми» узлами (отсутствует опыт по обмену в прошлом), что порождает вполне объяснимые сомнения в качестве и достоверности предоставляемого контента [3]. Стоит вопрос и о самой легитимности существующих сетей. В первую очередь он связан со сложившимся в условиях всеобщей «антитеррористической» истерии стереотипом — якобы, единственным применением P2P является либо незаконный обмен ворованным контентом, либо, в более общем случае, сокрытие информации.
Но, тем не менее, технология P2P лишний раз доказывает, что история имеет тенденцию повторяться. Подзабытые во времена эйфории по поводу клиент-серверных технологий, одно-ранговые модели возвращаются, реинкарнируясь в популярные и, самое главное, востребованные решения.
[1] — Безусловно, закрыв доступ к серверам, кэширующим адреса активных клиентов, можно будет парализовать часть пользователей, но большинство современных программ оснащены средствами, позволяющими сохранить списки узлов, полученных на этапе 9, и в дальнейшем использовать их для повторного входа в сеть. При этом могут применяться весьма изощренные механизмы, например, ранжирование узлов по времени отклика, объему файлов в их фонде или времени активности.
[обратно к тексту]
[2] — В ближайшее время планируется введение так называемого "up/down-load ratio" (сродни аналогичному показателю на некоторых BBS) — своеобразной оценки полезности узла. Предполагается, что узлам с низким показателем доступ к фонду обмена будет ограничен.
[обратно к тексту]
[3] — Уже существует вполне приемлемое технологическое решение, основанное на P-Grid (см. K.Aberer and Z. Despotovic, "Managing Trust in a Peer-2-Peer Information System").
[обратно к тексту]