что значит p2p трафик
Что значит p2p трафик
Что такое Одноранговая сеть (P2P) и зачем она нужна?
Если вы регулярно пользуетесь Интернетом, скорее всего вы слышали о терминах одноранговая сеть, децентрализованная сеть, или пиринговая сеть, peer-to-peer или ее аббревиатура — P2P сеть. Все эти термины обозначают одно и то же. Если вы хотите знать, что такое peer-to-peer, и для чего он используется, вы должны прочитать эту статью.
Что такое P2P или одноранговая сеть?
Кроме того, каждый ресурс, доступный в пиринговой сети, является общим для всех узлов без участия центрального сервера. Общими ресурсами в сети P2P могут быть:
Что делают сети P2P (peer-to-peer)?
Основная цель одноранговых сетей заключается в совместном использовании ресурсов и совместной работе компьютеров и устройств, предоставлении конкретной услуги или выполнении конкретной задачи. Как упоминалось ранее, децентрализованная сеть используется для совместного использования всех видов вычислительных ресурсов, таких как вычислительная мощность, пропускная способность сети или дисковое пространство. Однако наиболее распространенным вариантом использования пиринговых сетей является обмен файлами в Интернете. Одноранговые сети идеально подходят для обмена файлами, поскольку они позволяют подключенным к ним компьютерам получать и отправлять файлы одновременно.
Если вы загружаете один и тот же файл через одноранговую сеть, используя сайт BitTorrent в качестве отправной точки, загрузка выполняется по-разному. Файл загружается на ваш компьютер по частям, которые поступают со многих других компьютеров, у которых уже есть этот файл, в P2P сеть. В то же время файл также отправляется (загружается) с вашего компьютера другим лицам, которые его запрашивают. Эта ситуация похожа на двухстороннюю дорогу: файл похож на несколько небольших автомобилей, которые приходят на ваш компьютер, но также отправляются к другим пользователям, когда они его запрашивают.
Почему одноранговые сети полезны?
Сети P2P имеют несколько особенностей, которые делают их полезными:
Зачем нужны пиринговые сети? Легальное использование P2P сетей
Одноранговые сети нужны для подключения компьютеров и устройств в единую сеть без необходимости настройки сервера. При создании сервера его осень дорого и сложно обслуживать, и люди используют более дешевые альтернативы, такие как P2P. Вот несколько распространенных примеров использования сетей P2P:
История сетей P2P
Предшественником одноранговых сетей является USENET, который был разработан в 1979 году. Это была система, которая позволяла пользователям читать и публиковать сообщения / новости. Это была сеть, подобная современным онлайн-форумам, но с той разницей, что USENET не полагался на центральный сервер или администратора. USENET копировал одно и то же сообщение / новость на все серверы, найденные в сети. Аналогично, децентрализованные сети распространяют и используют все доступные им ресурсы.
Следующей большой вехой в истории одноранговых сетей был 1999 год, когда появился Napster. Napster был файлообменным программным обеспечением, которое люди использовали для распространения и загрузки музыки. Музыка, распространяемая с помощью Napster, обычно защищалась авторским правом и, таким образом, ее распространение было незаконным. Однако это не помешало людям использовать его.
Хотя Napster был тем, кто вывел P2P в мейнстрим, проект в конечном итоге потерпел неудачу и был закрыт властями по причине незаконного распространения контента.
Можно также с уверенностью сказать, что новой ступенью в развитии пиринговых сетей стало становление блокчейн индустрии в 2008 году вместе с появлением Биткоина. Использование одноранговых децентрализованных сетей — одно из трех основных составляющих технологии блокчейн, наряду с общим реестром записей и механизмом консенсуса.
В настоящее время P2P остается одной из самых популярных технологий для обмена файлами через Интернет, использующаяся как законно, так и незаконно.
Незаконное использование одноранговых сетей
Поэтому, при использовании пиринговой сети убедитесь, что вы не занимаетесь пиратством или другими вариантами использования, которые наказываются по закону.
P2P — Следующий этап развития информационных систем
Давайте отвлечемся от запретов в различных странах, давайте не будем думать, что P2P — механизм обхода блокировок.
Предлагаю вам альтернативное мнение на P2P — какие проблемы будущего и настоящего сможет решить данная архитектура информационных сетей.
Давайте введем понятие — настоящий P2P.
Настоящий P2P — это одноранговая сеть, в которой абсолютно все узлы сети выполняют одинаковые функции или автоматически могут изменять набор своих функций в зависимости от окружающих условий.
Изменение функций — это ничто иное как предоставление тех функций которые не могут работать у некоторых узлов одноранговой сети из-за ограничений:
1) За NAT’ом
2) Мобильные устройства
Оба класса устройств либо не могут иметь прямой доступ к сети (NAT) или могут, но строго не рекомендовано — (Мобильные устройства) из-за повышенного энергопотребления при огромном количестве подключений.
Для устранения данной проблемы используются такие технологии как TCP Relay (тк большинство P2P систем используют UDP, с огромным количеством одновременных подключений можно выбрать себе узел который будет выполнять функции получения запросов из сети по UDP и пересылки их на конечное устройство по TCP через одно и тоже соединение) Хочу напомнить, что подобный механизм уже был очень давно реализован в Skype, до его покупки компанией MS эти функции работали, позднее — понятие «супер ноды» в Skype ушло и их заменяют сервера MS.
Очень важно не путать P2P и Mesh сети. P2P — это одноранговое взаимодействие на уровне 3 и выше по модели OSI, Mesh — на 3 и ниже соответственно.
Какие проблемы решает P2P сети и какие технологии уйдут при повсеместном внедрении P2P?
Кэширование
В нынешнее время, некоторые провайдеры, а практически все операторы сотовой связи кэшируют трафик. Таким образом достигается экономия ресурсов и аплинков, что бы не гонять одинаковый трафик через магистрали.
Но зачем нужно кэширование, если контент попавший в сеть оператора при повторном запросе скорее всего будет запрошен из сети оператора?
При этом не надо строить никакой новой инфраструктуры вообще.
Система доставки контента используется в основном для доставки «тяжелого» контента, музыки, видео, игровых образом (steam), что бы снизить нагрузку на основной сервер и снизить время отклика — в разные страны и/или регионы ставиться CDN сервера, которые выполняют функцию балансировки нагрузки.
Данные сервера нужно обслуживать, затрачивая человека-часы их надо настраивать и они не смогут динамически увеличить свою пропускную способность или допустим:
В Нижнем Новгороде всегда был популярен сервис Giwi.get который позволяет в он-лайне смотреть легальный контент, CDN сервер в регионе может одновременно предоставить возможность просмотра фильмов и сериалов только 100 000 пользователей. Но внезапно на сервисе появляется новый контент (сериал) по прогнозам которые были сделаны на основе исследований, данный сериал не должен был заинтересовать людей из данного региона.
Но почему, то он заинтересовал, и все решили его посмотреть — естественно CDN не справиться, в лучшем случае контент сможет обработать соседний CDN, но не факт что CDN соседний готов к такой нагрузке.
Нехватка каналов связи
Провайдеры последней мили готовы предоставить каналы в 1 Гигабит/с, и даже сеть внутри города сможет прокачать такую нагрузку, но вот незадача, от города идет магистральный канал, который не рассчитан на такую нагрузку, а расширение канала — это миллионы (подставьте валюту на выбор).
Естественно, данную проблемы опять же решают P2P сервисы, достаточно что бы в городе был хотя бы 1 источник контента (предварительно скачанный через магистраль) — все будут иметь доступ к контенту на максимальной скорости локальной сети (внутригородской)
Укрепление распределенности интернета
В нынешнем мире Аплинки — это всё, точки обмена трафика есть в городах, но провайдер скорее купит себе еще пару гигабит на магистрали, чем расширит каналы до точки обмена трафика или подключиться к соседним провайдерам.
Уменьшение нагрузки на аплинки
При использовании P2P — вполне логично, что провайдеру будет важнее иметь более широкие внутренние каналы, чем внешние, да и зачем платить за дорогостоящий аплинк, если с большой долей вероятности требуемый контент может быть найден в сети соседнего провайдера.
Провайдеры кстати тоже будут рады, даже сейчас провайдер предоставляет такие тарифы, что его аплинк не ровняется суммарному количеству всех пользователей.
Другими словами — если все пользователи начнут использовать на 100% свой тариф — аплинк у провайдера закончиться очень быстро.
Очевидно, что P2P решения дают возможность провайдеру сказать, что он предоставляет вам доступ к сети на скорости хоть 1 TB\c тк контент в сети очень редко бывает уникален, провайдер (который имеет пирсинг с соседями провайдерами из города) сможет с большой долей вероятности предоставить доступ к контенту на тарифной скорости.
Никаких лишних серверов в сети
Сейчас в сети провайдера обычно стоят такие сервера как: Google CDN (/Youtube), Yandex CDN/пиринг, DPI, + другие специфические сервера CDN/Кэширования которые используются в данном регионе.
Очевидно, что можно ликвидировать все CDN сервера и лишний пиринг (с сервисами, а не с провайдерами), DPI в такой ситуации тоже будет не нужен, тк в часы ЧНН не будет таких резких скачков нагрузку. Почему?
ЧНН — Забудьте эту аббревиатуру
ЧНН — Час наибольшей нагрузки, традиционно это утренние часы и вечерние часы, причем всегда заметны несколько пиков ЧНН в зависимости от рода занятости людей:
Пики вечернего ЧНН:
1) Возвращение школьников из школы
2) Возвращение студентов из вузов
3) Возвращение работников которые работают по графику 5/2
Данные пики вы сможете увидеть на любом оборудовании которое анализируют сетевую нагрузку на канал.
P2P Решает и эту проблему, тк велика вероятность, что контент который интересен школьникам может быть интересен как студентам так и работникам — соответственно он уже есть внутри сети провайдера — соответственно ЧНН на магистрали не будет.
Далёкое будущее
Мы отправляем свои аппараты на луну и на марс, уже давно есть интернет на МКС.
Очевидно, что в дальнейшем развитие технологий позволит осуществлять полёты в далёкий космос и длительное нахождение человека на других планетах.
Они тоже должны быть связаны в общую сеть, если мы рассматриваем классическую систему Клиент-Сервер, и сервера расположены на земле, а клиенты скажем на Марсе — Пинг убьет любе взаимодействие.
А если мы предполагаем, что на другой планете будет наша колония которая будет расти — то как и на земле они будут пользоваться интернетом, понятное что им нужны будут те же инструменты, что и нам:
1) Мессенджер
2) Соц-сети
И это минимально-необходимое количество сервисов которые позволяют обмениваться информацией.
Логично, что контент который будет генерироваться на Марсе будет интересен и популярен на марсе, а не на земле, как быть соц.-сетям?
Устанавливать свои сервера которые будут автономно работать и через некоторое время синхронизироваться с землёй?
P2P сети решать и эту проблему — на марсе у источника контента свои подписчики, на земле — свои, но соц.-сеть одна и та же, но если у Марсианского жителя будет подписчик с земли — нет проблем, при наличии канала контент прилетит и на другую планету.
Что важно отметить — не будет рассинхронизации, которая может случиться в традиционных сетях, не надо устанавливать никаких лишних серверов там и даже что-то настраивать. P2P система позаботиться сама о поддержке актуальности контента.
Разрыв каналов
Вернемся к нашему мысленному эксперименту — на марсе живут люди, на земле живут люди — все они обмениваются контентом, но в один прекрасный момент происходит катастрофа и связь между планетами пропадает.
При традиционных клиент-серверных системах мы можем получит полностью неработающую соц.-сеть или другую службу.
Помните, что у каждого сервиса есть центр авторизации. Кто будет заниматься авторизацией, когда канал нарушен?
А марсианские тинэйджеры тоже хотят постить фотографии своей марсианской еды в MarsaGram.
P2P Сети при разрыве канала с легкостью переходят в автономный режим — в котором она будет существовать полностью автономно и без какого-либо взаимодействия.
А как только связь появиться — все службы автоматически синхронизируется.
Но марс — это далеко, даже на земле могут быть проблемы с разрывом канала связи.
Вспомните последние громкие проекты Google/Facebook с покрытием новых территорий интернетом.
Некоторые уголки нашей планеты всё еще не подключены к сети. Подключение может быть слишком дорогим или экономически не оправданным.
Если же в таких регионах стоить свою сеть (интранет) с последующим подключением её к глобальной по средствам очень узкого канала — спутника, то P2P решения позволяет на начальном этапе пользоваться всеми функциями как и при глобальной связанности сетей. А в последствии — как мы уже говорили выше — позволяет прокачать весь нужный контент через узкий канал.
Выживаемость сети
Если мы полагаемся на централизованную инфраструктуру у нас вполне конкретное количество точек отказа, да, есть еще и резервные копии и резервные дата-центры, но надо понимать, что если основной ДЦ будет поврежден из-за стихии, доступ к контенту будет замедлен в разы, если вообще не прекратиться.
Вспоминаем ситуацию с марсом, все устройства поступают на марс с земли, и в один прекрасный день сервер компании Uandex или LCQ ломается — перегорел контроллер RAID, или другая неисправность — и все марсиане опять же без MarsiGram или того хуже — не смогу обмениваться простыми сообщениями друг с другом. Новый сервер или его компоненты приедут с земли ох как не скоро.
При P2P решении — выход из строя одного участника сети никак не сказывается на работе сети.
Я — не могу представить будущее в котором наши системы останутся клиент-серверными, это сгенерирует огромное количество ненужных костылей в инфраструктуре, усложнит поддержку, добавит точки отказа, не позволит произвести масштабирование когда оно понадобиться, потребуются огромные усилия, если мы захотим что бы наши клиент-серверные решения работали не только на нашей планете.
Так, что будущее — это определенно P2P, как изменил мир P2P можно наблюдать уже сейчас:
Skype — небольшая компания не тратила деньги на сервера смогла вырасти до огромного гиганта
Bittorrent — OpenSource проекты могут передавать файлы не нагружая свои сервера
Это только два ярких представителя информационной революции. На подходе множество других программ которые изменят мир.
Обход ограничений peer-to-peer трафика
Peer-to-peer трафик или по другому p2p – это пиринговый сетевой протокол для кооперативного обмена файлами.
Принцип работы peer-to-peer
Файлы передаются частями, каждый torrent-клиент, получая (скачивая) эти части, в то же время отдаёт (закачивает) их другим клиентам, что снижает нагрузку и зависимость от каждого клиента-источника и обеспечивает избыточность данных.
По разным причинам мобильные операторы ограничивают или вовсе запрещают трафик по p2p протоколу.
Как обойти ограничение с помощью настроек
Существует множество возможных обходов ограничения, например tor или vpn.
Но можно воспользоваться и возможностями самой программы по работе с торрент файлами. Покажу что можно сделать на примере qbittorrent.
Что бы обойти ограничение, нужно спрятать свой трафик от провайдера. Так что главное это включить обязательное шифрование! А так же не помешает отключение DHT, PeX и обнаружение локальных пиров.
Во вторых нужно ограничить количество соединений. Обычно 50 хватает для нормальной скорости.
Результат
Так же может помочь отключение протокола uTP и использование UPnP маршрутизатора.
После всех настроек программы следует остановить все торрент скачивания. Возможно понадобится перезагрузка модема, так как ограничение может накладываться на сеть динамически.
Обход с помощью vpn
Если способ с шифрованием трафика не помогает, можно попробовать vpn сервисы. С помощью vpn можно подменить ip адрес, как будто вы находитесь в другой стране. А у провайдеров обычно блокировки распространяются на Россию.
P2P: где используются одноранговые сети
Децентрализованные технологии существовали задолго до того, как криптовалюты принесли им популярность. Основой современных блокчейнов послужили P2P-сети. В статье рассказываем, какие бывают одноранговые сети и где они используются.
Что такое архитектура сети
Архитектурой сети называется принцип, по которому происходит обмен информацией в интернете. Выделяют два основных типа архитектур: «клиент-сервер» и P2P.
Когда вы общаетесь с человеком вживую, вы обмениваетесь информацией напрямую. Но если вы переписываетесь в WhatsApp, процесс превращается в длинную цепочку действий. Два шага этой цепочки — изменение цвета и количества галочек под каждым сообщением. Сервером здесь выступает мессенджер, который хранит, обрабатывает и передает информацию. А клиентом — собеседники, которые отправляют и получают информацию.
Общение в жизни и общение в WhatsApp
В примере с WhatsApp, архитектура называется «клиент-сервер». Это самый распространенный тип — с 1970-х годов подобным образом работают все сайты в интернете.
Альтернативой такому методу является сеть, в которой люди общаются между собой без посредника. В интернете подобную архитектуру удалось реализовать лишь в 1990-х годах. Каждое устройство в такой сети может выполнять одновременно и роль сервера и роль клиента. Такую архитектуру называют P2P.
P2P — сеть, в которой нету центрального элемента и передача информации происходит напрямую. Встречаются и другие названия данной архитектуры: «одноранговые сети», «пиринговые сети», «peer to peer». Все эти термины равнозначны.
Рассмотрим разные типы P2P-сетей подробнее.
Как работает P2P-сеть: обмен файлами
Если вашему другу необходимо передать вещи, а сделать это лично невозможно, приходится обращаться к посреднику. Вы упаковываете вещи и передаете их курьеру, курьер — отвозит вещи по нужному адресу, а ваш друг их забирает. У каждого человека в этой цепочке своя функция. Если подобное происходит в интернете, то говорят, что у каждого узла в сети своя роль.
Обмен вещами с помощью курьера и без
P2P-сети стали популярны благодаря первым программам для обмена файлами. Принцип их работы заключается в том, что пользователи могут открывать доступ к выбранным файлам на компьютере. Используя поиск, любой пользователь может найти у другого участника файлообменной сети нужные файлы и скачать их напрямую.
Как устроены пиринговые сети: электронные платежи
Теперь представим, что другу необходимо отправить деньги. Современная платежная система устроена централизовано — обработкой и регистрацией всех транзакций занимаются банки. Люди платят банкам за то, что они выступают посредниками и обеспечивают надежность и сохранность их денег.
Для создания платежной системы, которая могла бы регулироваться без постороннего воздействия, используется блокчейн. Каждый узел хранит копию всех данных и сравнивает ее с копиями остальных узлов, чтобы убедиться в точности. Таким образом, пиринговые сети на блокчейне быстро реагирует на любые вредоносные действия или неточности.
Банковский перевод и перевод с помощью блокчейна
Впервые пример подобной пиринговой сети был описан в 2008 году, когда создавался Биткоин. Разработчики называют свою криптовалюту «P2P системой электронной наличности» («a P2P Electronic Cash System»). Отправка биткоинов на другой кошелек означает создание записи о том, что у криптовалюты изменился владелец. Чтобы запись призналась верной, ее должны подтвердить другие участники сети. Таким образом, удается обойтись без вмешательства посредника с более высокими полномочиями.
Применение P2P в других сферах
P2P придумали IT-специалисты, но подобный подход используют и экономисты. В области финансов под этим термином понимают обмен цифровых активов без посредников. P2P-платформы связывают покупателей с продавцами и кредиторов с заемщиками.
P2P-обменник Bitzlato представляет собой доску объявлений для покупки и продажи криптовалют. Пользователи находят друг друга и определяют условия сделки лично. Например, можно найти человека, который хочет продать биткоин по текущему курсу и получить деньги на карту Сбербанка. Bitzlato лишь поможет защитить сделку, заблокировав криптовалюту на время сделки. Обычные обменники менее выгодны, так как назначают завышенный курс и взимают комиссии с каждой сделки.
Заключение
Одноранговые типы сетей служат альтернативой модели «клиент- сервер». Технология обеспечивает безопасность, децентрализацию и устойчивость к цензуре. P2P послужила основой для создания файлообменников, криптовалют и множества децентрализованных приложений.
Обнаружение P2P трафика
Универсального решения для обнаружения работающего P2P приложения не существует. На сегодняшний день самые распространенные методы, проверка открытых портов и анализ трафика, не являются лучшими. Разрабатывайте собственные методы, и, может быть, некоторые из них значительно поднимут планку в эффективности обнаружения P2P трафика и идентификации P2P приложений.
С появлением в конце 1999 года Napster’a, P2P приложения быстро обрели популярность в интернет сообществе. Вместе с тем возросло потребление трафика такими приложениями и появилась необходимость в обнаружении пользователей P2P сетей в пределах сетевого трафика компании.
В этой статье автор предлагает новый способ обнаружения P2P пользователей, основанный на анализе поведения трафика, позволяющий определить даже тип используемого P2P приложения.
Стандартные методы
В настоящее время есть два основных способа идентификации пользователей P2P: наличие открытых портов и анализ трафика. Далее следует их краткий обзор.
Анализ открытых портов
Проверка на наличие открытых портов самый простой и распространенный из способов обнаружения использования P2P приложений. Он основывается на том, что большинство P2P приложений работают на заданных по умолчанию портах. Например:
Limewire 6346/6347 TCP/UDP
Morpheus 6346/6347 TCP/UDP
BearShare default 6346 TCP/UDP
Edonkey 4662/TCP
EMule 4662/TCP 4672/UDP
Bittorrent 6881-6889 TCP/UDP
WinMx 6699/TCP 6257/UDP
Для обнаружения P2P пользователей данным способом, нужно анализировать сетевой трафик на наличие соединений, использующих эти порты. Если соответствие обнаружено, это может быть индикатором P2P активности. Анализ открытых портов – практически единственный метод, доступный сетевым администраторам, ни имеющих специального ПО или аппаратных средств (таких как системы обнаружения вторжений) для мониторинга трафика.
Описанный способ очень прост в реализации, но его недостатки очевидны. Большинство P2P приложений позволяют изменять номера портов по умолчанию на любые. Кроме этого, многие современные приложения предпочитают использовать случайные номера портов. Также существует тенденция использования номеров портов известных приложений, таких как 80 порт. Все эти факты снижают эффективность данного способа.
Суть этого способа в мониторинге трафика, проходящего через сеть, на предмет обнаружения определенных сигнатур, специфичных для P2P приложений, в полезной нагрузке пакетов. Многие современные коммерческие и свободно распространяемые решения для обнаружения P2P трафика основаны на этом методе. В их число входят L7-filter, Cisco’s PDML, Juniper’s netscreen-IDP, Alteon Application Switches, сигнатуры основных приложений Microsoft и NetScout. Каждое из этих приложений с помощью регулярных выражений анализирует данные, проходящие через прикладной уровень, пытаясь определить факт использования P2P приложения.
Поведение трафика
Несмотря на то, что полученные данные несколько “сыроваты”, в них все же есть полезная информация, которую можно проверить на соответствие определенным шаблонам. Хорошие результаты может принести анализ UDP сеансов.
Обнаружение P2P пользователей
Автор этой статьи обнаружил уникальные моменты в поведении трафика, характерные для P2P приложений. Данный факт может использоваться для обнаружения хостов, на которых работают P2P приложения. И все, что для этого нужно, это логи сетевого трафика.
Что подразумевается под анализом UDP сеансов и как это может нам помочь? Перед тем как ответить на этот вопрос, давайте рассмотри популярное P2P приложение Napster.
Централизованные, нецентрализованные и смешанные P2P сети
Napster, разработанный Шоном Фенингом, впервые появился в мае 1999 и представлял собой первое поколение P2P сетей. Сетевая структура Napster’а была централизована, что означает, что ее составными частями были два элемента: центральные индексные сервера и пользовательские компьютеры. Центральные сервера принадлежали Napster’у и использовались для обслуживания пользователей. Когда пользователь хотел загрузить музыкальный файл, он посылал запрос на центральный индексный сервер, который в соответствии с запросом производил поиск в своей базе данных и отсылал ответ, содержащий список других пользователей, имеющих желаемые музыкальные файлы. Затем, для загрузки файла, пользователь мог создать прямое соединения с пользователями из полученного списка.
Ахиллесова пята Napster’a – полная зависимость от центрального сервера. Если сервер прекратит работу – сеть разрушится. Это хорошо иллюстрируется действиями звукозаписывающих компаний, вынудивших Napster прекратить свою работу.
Случай с Napster’ом показал уязвимость централизованной структуры и сильно повлиял на дальнейшее развитие P2P приложений. По причинам законности, безопасности, масштабируемости, анонимности и др. все больше и больше современных P2P приложений работают в полностью или частично децентрализованной сетевой структуре или двигаются в этом направлении. Основные P2P сети и протоколы, такие как Edonkey2k, FastTrack, Gnutella, Gnutella2, Overnet, Kad, все использует данную концепцию.
Здесь нужно пояснить, Bittorrent не является универсальной P2P сетью, хотя это популярное P2P приложение. В то время как сетевая структура Bittorrent частично децентрализована, он все еще нуждается в ведомых серверах и методы, описанные в этой статье, не могут использоваться для идентификации пользователей этой программы.
В частично децентрализованной сети все еще присутствуют центральные сервера, но они явно не конкретизированы и не статичны. Вместо этого, некоторые пользователи, обладающие значительными ресурсами (скорость процессора, дисковое пространство, высокоскоростная связь и процессорное время) автоматически принимают на себя функции центрального сервера. Каждый из них обслуживает группу обычных пользователей. Они связаны друг с другом и формируют основу частично децентрализованной сети. По мере появления в сети новых пользователей и ухода старых, компьютеры, исполняющие роль центральных серверов, меняются.
Шаблоны UDP соединения
Большинство современных P2P приложений, использующих децентрализованную структуру, имеют встроенный модуль, выполняющий всю работу по взаимодействию с сервером. В качестве протокола взаимодействия часто используется UDP.
Теперь давайте рассмотрим, как можно идентифицировать популярное P2P приложение Edonkey2000.
Пример UDP трафика Edonkey2000
Ниже показаны выборочные части логов исходящего UDP трафика Edonkey. Фактически, за две минуты мы получили 390 записей. В данном примере адрес отправителя заменен на x, а первая часть адреса получателя на y.
Как мы видим, весь трафик исходит из двух UDP портов: 2587 и 10810 (эти порты были выбраны Edonkey случайным образом и на другом хосте могут отличаться). Целевые адреса разнообразны. Фактически, Edonkey использует один порт для запроса статуса серверов Edonkey, а другой для создания соединений, поисковых запросов и другой работы.
Анализ работы других децентрализованных P2P приложений, таких как BearShare, Skpye, Kazaa, EMule, Limewire, Shareaza, Xolox, MLDonkey, Gnucleus, Sancho и Morpheus показал аналогичные результаты. Все эти приложения действуют одинаково: они используют один или несколько UDP портов для взаимодействия с внешними хостами. В терминах сетевого уровня этот шаблон может быть сформулирован следующим образом:
За период времени x, с одного IP и фиксированного UDP порта отправляются пакеты на y различных IP с фиксированным или случайным портом.
Опыт показывает, что при x равном 5, y равен 3, и на основе этого можно сделать выводы о наличии P2P трафика. Для получения более точного или грубого результата администраторы могут изменять значения x и y.
На практике мы можем сохранять логи сетевой активности соответствующих устройств и использовать базу данных и несложный скрипт для их обработки. Каждую минуту можно проверять, если какой-либо хост с фиксированного порта отправляет некоторое количество UDP пакетов на различные IP адреса, скорее всего это P2P хост.
Автор этой статьи провел тестирование в одном из крупнейших китайских интернет провайдеров. Логи сетевых соединений экспортировались как Netflow-данные и сохранялись в БД MySQL. С помощью небольшого скрипта, обрабатывающего данные, многие хосты были идентифицированы как P2P хосты, и что самое интересное, были обнаружены новые, широко не распространенные, P2P приложения.
Описанный способ кажется неплохим для обнаружения трафика, но что насчет ложных срабатываний? К счастью, такое поведение трафика редко встречается среди других сетевых приложений. Исключением являются игровые сервера и DNS сервера. Эти типы серверов также генерируют трафик, отсылая большое количество UDP пакетов на различные IP адреса. Но администраторы легко могут определить, является ли хост одним из вышеперечисленных серверов, так как в этом случае он не будет отсылать никаких пакетов с портов отличных от своего функционального порта, что в свою очередь не характерно для P2P приложений.
Значимость этого шаблона очевидна: такой подход не требует никакой информации о прикладном уровне, и в то же время весьма эффективен. Данный метод не зависит от базы сигнатур, поэтому с его помощью можно обнаруживать известные и неизвестные на данный момент P2P приложения. Вместе с тем для анализа информации сетевого уровня не требуется практически никакого дополнительно программного или аппаратного обеспечения, а нагрузка на существующее оборудование незначительна.
Минусы такого подхода
В описанном методе есть два минуса. Он может быть использован только для обнаружения P2P приложений, реализующих децентрализованную сетевую структуру (хотя большинство P2P приложений децентрализованы). Второй недостаток – если P2P приложение для взаимодействия с сетью использует протокол TCP, а не UDP, наши попытки его идентифицировать потерпят неудачу.
Идентификация P2P приложений
До этого момента мы пытались обнаружить P2P пользователей на основании логов сетевых соединений. Теперь продвинемся на шаг дальше, попробовав точно идентифицировать используемое хостом P2P приложение, не имея доступа к информации прикладного уровня.
Более тщательно анализируя UDP трафик различных P2P приложений можно обнаружить интересные закономерности. Выше было упомянуто, что P2P приложению с децентрализованной структурой необходимо периодически отправлять большое количество командных пакетов разного типа. Пакеты одного типа часто имеют одинаковый размер. Поэтому, анализируя UDP пакеты, даже при отсутствии информации прикладного уровня, можно точно определить, какое P2P приложение используется.
У большинства P2P приложений не документированы все детали реализации, некоторые поставляются с закрытыми исходными кодами, поэтому структура UDP пакетов большинства UDP приложений может быть нам точно не известна. Автор этой статьи выбрал семь популярных децентрализованных P2P приложений и провел такие наблюдения. Результаты подтвердили гипотезу о том, что все эти приложения для взаимодействия с внешним миром используют пакеты фиксированной длинны.
Edonkey2000
Edonkey2000 использует большое количество 6 байтовых UDP пакетов для запроса ‘server status request’. Этот тип пакетов можно наблюдать в основном во время запуска Edonkey. В дополнение, пакеты, содержащие запрос поиска, почти всегда имеют размер 25 байт.
BearShare
Во время запуска BearShare отсылает 28 байтовые UDP пакеты на несколько целевых адресов. Каждый раз, когда BearShare начинает загрузку файла, происходит отправка большого количества 23 байтовых UDP пакетов хостам-владельцам файла.
Limewire
При старте Limewire отправляет много UDP пакетов, размером в 23 и 35 байт. В начале операции загрузки файла этот P2P клиент отсылает большое количество 23 байтовых UDP пакетов.
Skype
При запуске Skype отправляет много 18 байтовых UDP пакетов.
Kazaa
С началом работы Kazaa отправляет 12 байтовые UDP пакеты на различные хосты.
EMule
Когда вы запустите EMule и начнете соединение с сервером, данное приложение оправит большое количество 6 байтовых UDP пакетов с запросами ‘server status request’ и ‘get server info’. Если вы захотите подключиться к сети Kad, Emule в процессе соединения будет отправлять UDP пакеты, размером 27 и 35 байт.
Shareaza
На протяжении всей работы Shareaza периодически отправляет 19 байтовые UDP пакеты.
Результаты этих простых тестов весьма интересны. Мы может использовать этот метод для идентификации P2P приложения, используемого пользователем. Однако, данная технология все еще находится на начальном этапе развития и многое еще предстоит сделать. Для точного результата требуется подробное изучение каждого приложения.
Также присутствуют другие характеристики, по которым можно производить анализ поведения трафика, например тип переданных данных. Продолжительность соединения также может использоваться для обнаружения P2P трафика, но это добавит дополнительный уровень сложности.