Опубликован: 07.08.2007 | Уровень: специалист | Доступ: платный | ВУЗ: Московский физико-технический институт
Лекция 10:

Введение в сети передачи данных

< Лекция 9 || Лекция 10: 12345 || Лекция 11 >

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

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

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

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

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

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

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

На данный момент среди файлообменных сетей по количеству узлов лидируют такие сети, как Bittorrent [10.16], eDonkey2000 [10.14], Gnutella2+Gnutella.

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

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

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

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

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

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

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

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

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

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

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

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

Сеть EDonkey2000 [10.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 [10.17].

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

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

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

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

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

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

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

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

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

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

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

Рис. 10.13. Топология с четырьмя деревьями
Топология решетки GBS (Gossip Based Streaming)

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

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

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

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

Если для обеспечения требующегося разрешения необходим входной поток ~400 Кбит/c, то выходная полоса пропускания должна быть больше этой величины. Если численность узлов с числом шагов доставки К составляет MK, то численность узлов с числом шагов доставки К+1 будет равно MK+1 = МК x ТВ/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=\frac{(q^n-1)}{q-1}

где q = ТВ/BW, а n — число шагов доставки данных. Это выражение справедливо как для древовидной, так и для сеточной схемы организации сети.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

При передаче данных важным компонентом являются алгоритмы организации и обработки записей в очередях. Наиболее известные алгоритмы рассмотрены ниже.

< Лекция 9 || Лекция 10: 12345 || Лекция 11 >
Александр Боднарский
Александр Боднарский

Т.е. мне нужно будет платить 32 тыс в год, только за то, чтобы просто получить сертификат? какой смысл? столько же стоит в нормальном инстутите заочно учиться

Виталий Гордиевских
Виталий Гордиевских

Здравстивуйте, диплом о профессиональной переподготовке по программе "Сетевые технологии" дает право на ведение профессиональной деятельности в какой сфере? Что будет написано в дипломе? (В образце просто ничего неуказано)

Напимер мне нужно чтоб он подходил для направления 09.03.01 Информатика и вычислительная техника

Максим Жигай
Максим Жигай
Россия, г. Челябинск
дима щщщщщщщщщщщ
дима щщщщщщщщщщщ
Россия