previous up next index search
Previous: 4.1.1.4 Повторители, мосты, мультиплексоры, переключатели и маршрутизаторы    UP: 4.1.1 Ethernet (IEEE 802.3)
    Next: 4.1.1.6 Пассивные оптические сети (PON/EPON/GEPON)

4.1.1.5 Алгоритмы и применения сетей P2P

Семенов Ю.А. (ИТЭФ-МФТИ)
Yu. Semenov (ITEP-MIPT)

Определения
Р2Р файлообменные сети
Р2Р телевидение
Проблемы безопасности
Ссылки

Использование компьютерных технологий начиналось со времени, когда ЭВМ занимала целое здание и можно сказать, что пользователь входил в машину в буквальном смысле. Не исключено, что через какое-то время чипы ЭВМ будут встраиваться в организм человека. Но на протяжении достаточно длительного времени доступ к ресурсам машины осуществлялся через удаленное терминальное устройство. Именно эта схема породила алгоритм взаимодействия клиент-сервер. Позднее, когда терминальным устройством стала персональная ЭВМ, клиент и сервер стали временами меняться местами, но суть взаимодействия сохранялась прежней. Алгоритм клиент-сервер предполагает взаимодействие по схеме точка-точка.

Первые локальные сети (Ethernet), несмотря на однородность топологии, логически функционировали согласно алгоритму клиент-сервер. По мере развития сетевых технологий число серверов в сети росло, появилась функциональная дифференциация (DB, DNS, mail и т.д.), но и на этом уровне взаимодействие в любой момент времени строилось по схеме клиент-сервер.

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

В начале 90-х годов начали широко использоваться технологии мультикастинга, в частности MBONE. Техника мультикастинга в сочетании с соответствующими протоколами маршрутизации (например, PIM) и средствами обеспечения качества обслуживания (RSVP-TE и MPLS-TE) идеально подходит для транспортировки мультимедиа и в частности для цифрового телевидения через Интернет.

В начале 90-х стали заключаться пиринговые (peer-peer) соглашения между сервис-провайдерами, но и это было лишь новым подходом в политике маршрутизации. Сети ICQ, например, по-прежнему строятся по схеме клиент-сервер, хотя в некоторых режимах реализуется схема взаимодействия точка-мультиточка.

Впервые термин «peer-to-peer» была использована в 1984 году компанией IBM в разработке сетевой архитектуры для построения динамической маршрутизации через компьютерные сети с произвольной топологией – «Advanced Peer to Peer Networking» [1].

Рис. 1. P2P сеть состоит из равноправных узлов. Каждый узел может взаимодействовать с каждым.

В основе технологии лежит принцип децентрализации, то есть все узлы в сети P2P – равноправны (рис 2). Этот принцип, обеспечил такие преимущества технологии P2P перед клиент-серверным подходом, как отказоустойчивость к потере связи с узлами сети, увеличение скорости копирования за счет копирования сразу из нескольких источников (рис. 10.11), возможность разделения ресурсов без привязки к конкретным IP-адресам, огромная мощность сети в целом и др.

Создаваемые приложения в начале ставили узкую цель – ускорения получения копии файла, иногда за счет сокращения полосы и сетевых возможностей конкурирующих процессов и пользователей. В этих приложениях использовалась особенность протокола ТСР, распределяющего полосу пропускания поровну между конкурирующими процессами. Если один из пользователей запустил 10 обменных процессов, а конкурент – только 1, последний получит в 10 раз меньшую полосу пропускания. Может показаться, что схема, показанная на рис. 3.1.2, не является в чистом виде P2P, так как в ней реализован принцип - несколько серверов обслуживают одного клиента. Сетевые объекты здесь не являются равноправными. Но благодаря тому, что клиентом в следующий момент может стать любой другой узел сети или даже группа узлов, эту схему можно считать классическим случаем реализации алгоритма Р2Р. Более того, этот тип сети является на данный момент наиболее массовым.

Отказоустойчивость, свойственная алгоритмам Р2Р, может стать причиной внедрения этой технологии для управления технологически опасными производствами, например, атомными электростанциями. Здесь важно, чтобы узлы Р2Р не располагались в одном и том же помещении и не были подключены к общим каналам питания. Выход из строя части управляющих машин может уменьшить функциональность, но не управляемость системы.

Р2Р может предложить и достаточно высокий уровень катастрофоустойчивости, когда нужно гарантировать сохранность определенных данных в случае пожара или каких-то иных природных или рукотворных инцидентов. Для таких приложений географическая удаленность узлов является важным преимуществом.

Для поддержания надежности обмена могут использоваться самые разные технологии, в частности, протокол FEC (Forward Error Correction) или MDC (Multi Description Coding [12]) в случае транспортировки мультимедийных данных, когда повторная передача пакетов невозможна или крайне нежелательна.

Незаменимыми могут оказаться системы Р2Р в банковском бизнесе, где важна сохранность данных и высокая надежность расчетов. Методики дублирования в банковских приложениях используются уже достаточно давно.

Широко используемые сейчас распределенные вычислительные системы типа GRID являются частным случаем реализации технологии Р2Р.

Так, по некоторым данным [6], в настоящее время в сети Internet более половины всего трафика приходится на трафик файлообменных P2P сетей, а размеры самых крупных из них перевалили отметку в миллион одновременно работающих узлов, разделяющих петабайты (1015 байт) информации. Общее количество зарегистрированных участников файлообменных сетей P2P во всем мире составляет порядка ста миллионов.

Хотя в первую очередь P2P-сети используются сейчас для разделения файлов, существует еще много других областей, [3] где данная технология также успешно применяется. Это телевидение и аудио трансляции, параллельное программирование, распределенное кэширование ресурсов для разгрузки серверов, рассылка уведомлений и статей, поддержка системы доменных имен, индексирование распределенных ресурсов и их поиск, резервное копирование и создание устойчивых распределенных хранилищ данных, обмен сообщениями, создание систем-серверов устойчивых к атакам типа «отказ в обслуживании», распространение программных модулей. Имеется огромное количество клиентских программ для работы с P2P-сетями, как коммерческих, так и с открытым кодом. Постоянно идет работа по усовершенствованию протоколов и увеличению функциональности систем, и, судя по всему, недалек тот момент, когда клиентское программное обеспечение для P2P будет интегрировано с операционными системами. Так, уже сейчас крупные компании проявляют интерес, или вплотную занимаются Р2Р, например, компания Sun разрабатывает протокол, поддерживающий доступ к основным P2P-сетям для карманных компьютеров и смартфонов, компания Microsoft создала реализацию протоколов P2P Scribe и Pastry.

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

При этом скорость копирования равна сумме скоростей, обеспечиваемых виртуальными соединениями, и ограничена сверху пропускной способностью канала, с помощью которого клиент подсоединен к сети Интернет.

Определения:

P2P-технология – технология построения сети распределенных равноправных узлов по принципу децентрализации.

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

P2P сеть – множество узлов (компьютеров, смартфонов и пр.), объединенных в единую систему и взаимодействующих посредством P2P протокола.

P2P-протокол - сетевой протокол, обеспечивающий возможность создания и функционирования сети равноправных узлов, их взаимодействия.

Протоколом, или набором протоколов, определяется логическая топология сети, механизм подключения и отключения узлов от сети, а также алгоритм взаимодействия узлов. Решение таких задач, как коррекция ошибок, форматы сообщений и служебных запросов и откликов, протоколы маршрутизации в условиях постоянного подключения и отключения узлов – также определяется протоколом P2P.

В модели стека сетевых протоколов TCP/IP протоколы P2P относятся к прикладному уровню, таким образом, P2P сеть является наложенной сетью (overlay), функционирующей поверх сети Интернет и использующей существующие транспортные протоколы TCP или UDP.

Клиентская программа P2P, или просто «клиент» – программа, которая реализует функциональность узла, сама является реализацией заложенного в основу сети P2P протокола. Клиент может запрашивать сервер или выделенные узлы, получать ответ с информацией о запрошенных файлах, узлах на которых они находятся, и далее уже работать напрямую с указанными узлами. В последних реализациях клиентов, заложена также возможность обмена служебной информацией, построения запросов и поиска ресурсов клиентом во всей сети без участия серверов.

ID узла – уникальный идентификатор узла, вычисляется с помощью хеш-функции [6] из IP – адреса и дополнительной информации (имени компьютера, MAC-адреса сетевой карты и пр.). Присваивается при регистрации в сети P2P и используется для идентификации узла.

ID или ключ ресурса - уникальный идентификатор файла, или любого другого ресурса, вычисляется с помощью хеш-функции из имени файла и его содержимого. Используется для идентификации ресурса.

Р2Р файлообменные сети

Протоколами обеспечивается равномерное распределение ключей ресурсов вместе с идентификаторами узлов, опубликовавшими данный ресурс, по всем узлам (или по некоторым выделенным узлам и/или серверам), зарегистрированным в сети. Задача поиска ресурса сводится к нахождению ID узла, на котором хранится ключ ресурса [4].

Рис. 3. Распределение ключей ресурсов по узлам сети. Поиск ресурса.

На рис. 3 приведен пример чистой P2P сети, созданной по протоколу DHT Kademlia [15]. На рисунке к сети, способной поддерживать максимум 16 узлов и 16 ресурсов, подсоединились 7 узлов (черные кружки), разделяющих 12 ресурсов (номера в белых прямоугольниках). Узлам присвоены соответствующие ID, ресурсам присвоены ключи. Ключи вместе с адресами опубликовавших их узлов (адреса на рисунке не показаны) равномерно распределены между узлами сети. На рисунке изображено, какие ключи хранятся и на каких узлах.

Узел с ID 0 хочет найти ресурс, соответствующий ключу 14, для этого посылает запрос на поиск. Запрос проходит определенный маршрут (подробнее о маршрутизации см. [3]) и достигает узла, на котором находится ключ 14. Далее узел ID 14 пересылает узлу ID 0, адреса всех узлов, обладающих ресурсом, соответствующим ключу 14.

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

На данный момент лидируют по количеству узлов среди файлообменных сетей такие сети как Bittorrent [16], eDonkey2000 [14], Gnutella2+Gnutella. В России более популярен Bittorrent, впервые реализованный Брэмом Коэном в 2001 году.

Многие администраторы стараются заблокировать или отфильтровать информационные потоки файлообменных сетей, например, BitTorrent. Это достаточно легко сделать. Первым байтом в поле данных ТСР-сегмента является код 19 (=0х13), за которым следует 19 байтов данных BitTorrent. Используя эту сигнатуру, можно блокировать такой поток данных или присвоить ему нужный приоритет.

Для инициализации узла, например, в [13] клиентская программа обращается к серверу, предоставляющему информацию о файлах доступных для копирования, а также статистическую и маршрутную информацию об узлах сети. Сервер и после инициализации помогает узлам взаимодействовать друг с другом.

Если узел хочет опубликовать файл, то программа разделяет файл на части и создает файл метаданных с информацией о частях файла, местонахождении, и, опционально, местонахождении сервера, который будет поддерживать распространение этого файла. Первый узел, опубликовавший файл, называется распространителем. Узел, желающий скопировать файл, сам становится распространителем, по принципу «сколько копирую я, столько разрешаю скопировать у меня». Узлы, скопировавшие весь файл становятся распространителями для этого файла, и, вместе с не полностью скопировавшими узлами дают возможность другим узлам получать части файла из нескольких источников, что ускоряет копирование (см. рис. 10.11).

Существуют модификации протоколов, которые позволяют работать с файлами метаданных, не привязанными к серверам.

Одной из первых пиринговых сетей, Gnutella, была создана в 2000 году [17]. Сеть функционирует до сих пор, хотя из-за серьезных недостатков алгоритма пользователи сейчас предпочитают сеть Gnutella2 (G2, [18]).

Подключившийся клиент получает от узла, с которым ему удалось соединиться, список из 5 активных узлов, отсылает им запрос на поиск ресурса по ключевому слову. Узлы ищут у себя соответствующие запросу ресурсы и, если не находят, пересылают запрос своим активным узлам вверх по дереву, пока не найдется ресурс или не будет превышено максимальное число шагов. Такой поиск называется размножением запросов. С помощью протокола также отслеживается, чтобы топология создаваемой сети узлов имела древовидную структуру графа.

Понятно, что подобный алгоритм ведет к экспоненциальному росту числа запросов и, соответственно, на верхних уровнях может привести к отказу в обслуживании, что и наблюдалось на практике неоднократно. Разработчиками были проведены работы по улучшению алгоритма, введены правила, в соответствии с которыми запросы могут пересылать вверх по дереву только определенные узлы – так называемые выделенные узлы, остальные узлы могут лишь посылать им запросы.

Недостатки протокола Gnutella инициировали разработки принципиально новых алгоритмов поиска маршрутов и ресурсов, и привели к созданию группы протоколов DHT (Distributed Hash Tables) [7], в частности протокола Kademlia [4], который сейчас широко используется в наиболее крупных сетях.

Запросы в сети Gnutella пересылаются по tcp или udp, копирование файлов происходит посредством протокола http.

В последнее время появились расширения для клиентских программ, позволяющие копировать файлы по udp, делать xml-запросы метаинформации о файлах.

В 2003 году появился принципиально новый протокол Gnutella2. В соответствии с данным протоколом, некоторые узлы становятся концентраторами, остальные являются обычными узлами. Каждый обычный узел имеет соединение с одним-двумя концентраторами. У концентратора есть связь с сотнями обычных узлов и десятки соединений с другими концентраторами. Каждый узел периодически пересылает концентратору список идентификаторов ключевых слов, по которым могут быть найдены публикуемые данным узлом ресурсы. Идентификаторы сохраняются в общей таблице на концентраторе. Когда узел хочет найти ресурс, он посылает запрос по ключевому слову своему концентратору, который либо находит ресурс в своей таблице и возвращает ID-узла, обладающего ресурсом, либо возвращает список других концентраторов, которые узел вновь запрашивает по очереди, случайным образом. Такой поиск называется поиском с помощью метода блужданий.

Для улучшения качества поиска используются метаданные файлов - информация о содержании, рейтинг. Примечательной особенностью данной сети является возможность размножения информации о файле в сети без копирования самого файла, что очень полезно для отслеживания вирусов.

Для передаваемых пакетов в Gnutella2 разработан собственный формат, похожий на xml, гибко реализующий возможность наращивания функциональности сети, путем добавления дополнительной служебной информации. Запросы и списки ID ключевых слов пересылаются по udp.

Сеть EDonkey2000 [14] появилась в 2000 году. Информация о наличии файлов публикуется клиентом на многочисленных серверах в виде ed2k ссылок, использующих уникальный ID ресурса. Серверное ПО доступно для установки любым пользователем. Сервер обеспечивает поиск узлов и информации. Сейчас в сети имеется от 100 до 200 серверов, обслуживающих одновременно около миллиона пользователей, использующих порядка миллиарда различных файлов. Общее количество зарегистрированных пользователей составляет порядка 10 миллионов.

Когда клиент копирует желаемый ресурс, он копирует его одновременно из нескольких источников при помощи MFTP (Multisource File Transfer Protocol).

В настоящее время информацию о доступных файлах можно получать не только с серверов eDonkey. С 2004 года в состав сети EDonkey2000 интегрирована сеть Overnet - полностью децентрализованная сеть, позволяющая осуществлять взаимодействие между узлами без привязки к серверам, для чего используется DHT протокол Kademlia.

Клиент EDonkey имеет очень интересное расширение, позволяющее копировать метафайлы, которые пользуются большим доверием пользователей, а также использовать верификационную информацию из метафайлов для работы с файлами собственной сети.

Такая интеграция возможностей разных сетей и дополнительная верификация способствовали развитию EDonkey2000, в которую начали переходить пользователи других сетей, например, сети FastTreсk, базирующейся на протоколе FastTreсk, а наиболее популярным клиентом является Kazaa [17].

Провайдеры сетевых услуг, например, провайдеры московских домашних сетей, а также администраторы компаний, до недавнего времени старались блокировать на своих файерволах порты, через которые общаются клиенты сетей Bittorrent, eDonkey2000, Gnutella, Fasttreck.

Поэтому пользователям осталась только возможность использовать локальные пиринговые сети. Наиболее удобной для этого оказалась сеть Direct Connect (DC) [16].

Клиенты подключаются к одному или нескольким серверам для поиска файлов. Серверы не связаны между собой. Информация о файлах, доступ к которым узел хочет открыть, отсылается на сервер. Копирование файлов происходит напрямую между узлами, как и в классической P2P сети.

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

P2P телевидение

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

Современному клиенту предлагаются десятки телевизионных каналов. Что же может предложить клиентам компании, продвигающие на рынок Р2Р ТВ-услуги?

Прежде всего, это бесплатный доступ к каналам, во всяком случае, первое время, возможности ТВ по запросу и т.д. Издержки провайдера услуг минимизируются тем, что он практически не тратит средств на развитие и поддержку инфраструктуры (кабели, передатчики, специализированное оборудование, студии, сервис и т.д.), он предлагает клиентам, как правило, продукты вторичного рынка (фильмы, музыкальные и развлекательные программы и пр.). Доход он получает в основном от размещения рекламы. Не имея доступа к сети доставки телевизионного сигнала, такие провайдеры используют Интернет и специализированное программное обеспечение, ориентированное на Р2Р-технологию. Это программное обеспечение загружается в машины всех клиентов, подключаемых к сети. Загрузка программ через Интернет создает дополнительную уязвимость, которая может быть парирована использованием надежной системы аутентификации. Сеть рассылки ТВ-данных образуется из машин клиентов, которые могут подключаться и отключаться от сети, когда этого захотят сами клиенты.

Такая сеть может иметь топологию множества деревьев или сетки, может использовать в качестве транспорта протоколы UDP или TFRC. В случае древовидной топологии каждый клиент получает субпотоки данных от узлов нескольких, например, четырех деревьев (при этом используется метод кодирования субпотоков MDC). При отключении узла от сети, структура дерева перестраивается, при подключении нового узла - достраивается. В любом случае топология доставки данных носит топологию дерева, в одних случая статического (рис. 10.13), в других – динамического, меняющего топологию после передачи каждого очередного сегмента данных.

Рис. 4. Топология с четырьмя деревьями.

На рис. 4 представлена схема с MDC и разделением потока на четыре субпотока (4 дерева). Буквами G1, G2 и G3 обозначены поколения узлов-партнеров (peer), которые участвуют в доставке видео данных другим узлам.

Рис. 5. Топология решетки GBS (Gossip Based Streaming [21]).

При сеточной топологии [10, 11] поток данных делится на небольшие модули, например, соответствующие одной секунде фильма. Соответствующие модули клиент получает от узлов сетки случайным образом или согласно некоторой закономерности.

На рис. 5 показана схема работы алгоритма Gossip Based Streaming. Узлом источником первичного видео потока здесь является узел А. Эволюция графа доставки видео фрагментов зависит оттого, какие узлы направят запросы первыми. Размер сегментов обычно постоянен. Предположим, что узел А может обслужить не более трех узлов (ограничение выходной полосы). При развитии дерева доставки учитывается выходная полоса узлов, которая предполагается больше, чем требуется для одного видео потока, и случайный характер выбора партнера источника данных. Узлы информируют партнеров (не только соседей) об имеющихся у них видео сегментах. Любой из узлов может стать отправителем, если у него имеется нужный сегмент, и ему поступил запрос на этот сегмент. Для любого из видео сегментов можно отследить его путь от А до узла редистрибьютера. Для такой схемы характерна большая задержка воспроизведения. Это связано с тем, что при М шагах маршрута доставки сегмента задержка t= М×(Tпередачи + Tдиалога), где Tпередачи – время передачи сегмента между смежными узлами (~1 сек), Tдиалога – время оповещения о наличии сегмента и обслуживания запроса.

При анализе эволюции графа доставки следует учитывать доступную выходную полосу узлов. Обозначим скорость передачи видео как ВW [кбит/с]. Пусть базовый узел А может обслуживать на постоянной основе только два узла (B и D на рис. 5b), а вторичные узлы B, C, D… имеют выходную полосу пропускания ТB. На рисунке каждый из вторичных узлов обслуживает одновременно три узла.

Если для обеспечения требующегося разрешения необходим входной поток ~400кбит/c, то выходная полоса пропускания должна быть больше этой величины. Если численность узлов с числом шагов доставки К составляет MK, то численность узлов с числом шагов доставки К+1 будет равно MK+1К×ТВ/BW. По этой причине ТВ/BW желательно иметь как можно больше (всегда должно быть ТВ/BW>1), что не всегда возможно. В качестве транспорта в таких сетях часто используют протокол TFRC (TCP Fair Rate Control), c возможностями повторной пересылки. Это позволяет сделать К достаточно большим (вероятность накопления ошибок невелика), но это еще более увеличивает задержку воспроизведения (до нескольких минут). Двунаправленные стрелки на рис. 10.14 означают возможность обмена в обоих направлениях, хотя трудно представить, что видео данные будут поступать из узла G в узел D, ведь в узел D они поступают из первичного узла А. Но следует учитывать, что в отличие от алгоритма, использующего деревья, здесь нет однозначного направления передачи данных между узлами. Источником очередного сегмента для узла i может стать любой узел, у которого в буфере такой сегмент имеется (ведь выбор отправителя производится случайным образом). Но такой подход может вынудить, например, узел D послать по запросу “старый” сегмент, лежащий у него в буфере, вместо того чтобы послать “новый” сегмент узлу Н. Эта особенность может приводить к накоплению задержки доставки видео материала по мере трансляции фильма. Именно по этой причине в программе-клиенте используется изощренная двухуровневая буферизация. Замечу, что число шагов доставки данных (K) в алгоритме GBS величина статистическая, а не постоянная, и его значение лежит в интервале от 2 до некоторого максимума, определяемого суммарным числом узлов в сети S. Статистическое распределение K строго говоря не идентично для узлов сетки (например, узлы первого поколения (B и D), явно выделены).

Полное число узлов в сети S={qn-1}/(q-1), где q= ТВ/BW, а n – число шагов доставки данных. Это выражение справедливо как для древовидной, так и сеточной схемы организации сети.

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

Проблемы безопасности

Реализация и использование распределенных систем имеет не только плюсы, но и минусы, связанные с особенностями обеспечения безопасности.

Получить контроль над столь разветвленной и крупной структурой, какой является сеть Р2Р, или использовать пробелы в реализации протоколов для собственных нужд – является желанной целью любого хакера. С другой стороны, защитить распределенную структуру сложнее, чем централизованный сервер [9].

Столь огромное количество ресурсов тяжело шифровать/дешифровать, поэтому большая часть информации о IP-адресах и ресурсах участников, хранится и пересылается в незашифрованном виде, что делает ее доступной для перехвата. Только в последнее время клиенты большинства крупных сетей обеспечивают решение этой проблемы путем шифрования заголовков пакетов и идентификационной информации, реализации клиентов с использованием SSL, построения полностью анонимных сетей и пр.

Серьезной проблемой является рассылка червей и подделка ID ресурсов для их фальсификации и распространения фальшивых ресурсов в сети.

Так, например, в клиенте Kazaa, используется хеш-функция UUHash которая позволяет быстро находить ID для больших файлов даже на слабых компьютерах, но и, при этом, оставляет возможность для подделки файлов и записи испорченного файла, имеющего тот же ID. Эта возможность была использована Американской Ассоциацией Звукозаписывающих Компаний (RIAA), которая наводнила сеть поддельными и испорченными файлами.

Для решения проблемы клиентам нужно пользоваться надежными хешами (деревьями хешей, если файл копируется по частям) такими как SHA-1, Whirlpool, Tiger и только для малоответственных задач, контрольными суммами CRC. Для уменьшения объемов пересылаемых данных и облегчения их шифрования можно использовать компрессию. Для защиты от вирусов нужно иметь возможность хранить идентифицирующую метаинформацию о червях, как это, например, сделано в Gnutella2.

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

В настоящее время выделенные узлы, серверы и обычные узлы периодически обмениваются между собой верифицирующей информацией, и при необходимости добавляют поддельные серверы/узлы в черный список блокировки доступа.

Часть клиентов только копируют чужие файлы, но не предлагают ничего для копирования другим.

Например, в московских домашних сетях на нескольких активистов, делающих доступными более 100 GB приходится около сотни выкладывающих менее 1 GB. Для борьбы с этим фактором используются разные методы. В eMule применен метод кредитов. Скопировал файл, кредит уменьшился, позволил скопировать свой файл, кредит увеличился, xMule – кредитная система с поощрением распространения редких файлов, eDonkey используется стимулирование размножения источников, в Bittorrent реализована схема “сколько блоков файла получил, столько отдал” и т.д..

В последнее время техника P2P используется для синхронизации файлов в облаках, которое особенно привлекательно при работе с iPad, где нет поддержки прямого файлового обмена.

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

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

Ссылки

[1] IBM. http://www.javvin.com/protocol/rfc2353.pdf : APPN/HPR in IP Networks (APPN Implementers' Workshop Closed Pages Document).
[2]Гуркин Ю.Н., Семенов Ю.А. P2P. Файлообменные сети: принципы работы, используемые протоколы, безопасность, “Телекоммуникационные сети и системы”, N 11, стр. 62, 2006.
[3]Liben-Nowell, Balakrishnan, Karger. Analysis of the evolution of peer-to-peer systems. Communications of the Acm February 2003/Vol. 46, No. 2
[4]Petar Maymounkov and David Mazi`eres. Kademlia: A Peer-to-peer Information System Based on the XOR Metric. http://kademlia.scs.cs.nyu.edu
[5]Hari Balakrishnan, M. FransKaashoek , David Karger, Robert Morris, and Ion Stoica. Looking up DATA in P2P systems. In Proc. Acm SIGCOMM’01, San Diego, CA, Aug. 2001.
[6]Understanding the Impact of P2P: Architecture and Protocols. http://www.cachelogic.com/home/pages/understanding/architecture.php
[7]Karger D., Lehman E., Leighton F., Levine M., Lewin D., Panigrahy R. Consistent hashing and random trees: Distributed caching protocols for relieving hot spots on the World Wide Web. In Proc. 29th Annual ACM Symposium on Theory of Computing (El Paso, TX, May 1997), pp. 654–663
[8]Hildrum K., Kubiatowicz J., Rao S., and Zhao B. Distributed Object Location in a Dynamic Network. In Proceedings of 14th ACM Symp. on Parallel Algorithms and Architectures (SPAA), August 2002.
[9]Marling Engle: Vulnerabilities of P2P Systems and a Critical look at Their Solutions, http://www.cs.kent.edu/~mengle/ Department of Computer Science, Kent State University, Date: April 2006
[10]Xiaojun Hei, Chao Liang, Yong Liu and Keith W. Ross, Insight into PPLive: A Measurement Study of a Large-Scale P2P IPTV System, http://photon.poly.edu/~jliang/pplive.pdf#search=%22%22Insight%20into%20PPLive%22%22
[11]Xinyan Zhang, Jiangchuan Liu, Bo Li, and Tak-Shing Peter Yum, CoolStreaming/ DONet: A Data-Driven Overlay Network for Efficient Live Media Streaming. http://www.cs.sfu.ca/~jcliu/Papers/47_01.pdf#search=%22CoolStreaming%2FDONet%22
[12]Venkata N. Padmanabhan, Helen J. Wang, Philip A. Chou, Resilient Peer-to-Peer Streaming (MDC), http://research.microsoft.com/~padmanab/papers/icnp2003.pdf#search=%22%22Resilient%20Peer-to-Peer%20Streaming%22%22
Официальные серверы сетевых проектов:
[13]Overnet: http://www.overnet.com;
[14]eDonkey2000: http://www.edonkey.com;
[15]Kademlia: http://www.emule-project.net;
[16]Bittorrent: www.bittorrent.com;
[17]Gnutella: www.gnutella.com;
[18]Gnutella2: www.gnutella2.com;
[19]Direct Connect: dcplusplus.sourceforge.net
[20]http://www.kazaa.com/us/index.htm
[21]http://www2004.org/proceedings/docs/2p250.pdf#search=%22Xinyan%20Zhang%22 (Gossip Based Streaming)

Previous: 4.1.1.4 Повторители, мосты, мультиплексоры, переключатели и маршрутизаторы    UP: 4.1.1 Ethernet (IEEE 802.3)
    Next: 4.1.1.6 Пассивные оптические сети (PON/EPON/GEPON)