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?



    Кэширование

    В нынешнее время, некоторые провайдеры, а практически все операторы сотовой связи кэшируют трафик. Таким образом достигается экономия ресурсов и аплинков, что бы не гонять одинаковый трафик через магистрали.

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

    CDN

    Система доставки контента используется в основном для доставки «тяжелого» контента, музыки, видео, игровых образом (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 проекты могут передавать файлы не нагружая свои сервера

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

    Похожие публикации

    Комментарии 26
      +4
      Что-то много опечаток в тексте.

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

      И не совсем понятно — а как будет происходить авторизация в соцсети на марсе, если там нет сервера авторизации и связь с землёй оборвалась?
      Или это будет идентификация (без пароля), а не авторизация?
        0
        И не совсем понятно — а как будет происходить авторизация в соцсети на марсе, если там нет сервера авторизации и связь с землёй оборвалась?
        Или это будет идентификация (без пароля), а не авторизация?

        На основе ключей, как сейчас это сделано в Tox/Twister/Bitcoin
          0
          Видимо имелось в виду что модуль авторизации будет вполне автономен и будет содержать в себе кеш данных необходимых для подтверждения авторизации. Т.е. кто авторизовался до обрыва связи сможет это делать и после, а тех кого не оказалось в кеше — облом-с.
          Но как это всё обеспечить… не совсем понятно. как обеспечить невзламываемость этой авторизации?
            –1
            гм, по средствам приватных/публичных ключей и их соответствия
          +9
          Категорически не согласен с тем, что сеть обязательно должна быть одноранговой. Децентрализованной — да, одноранговой — нет. Не могу вспомнить ни одного примера успешной чисто одноранговой сети. Все сети, которые стали чем-то значительным в масштабах всей планеты — не одноранговые, в них всегда есть меньшинство специализированных узлов, которые делают львиную долю работы. В природе тоже из абсолютно одинаковых клеток состоят лишь самые примитивные многоклеточные организмы, которые скорее являются тесными колониями одноклеточных. Уже на уровне гидр и червей есть клетки с узкой специализацией.

          Даже если сеть формально одноранговая — в ней всегда есть меньшинство активных энтузиастов на которых всё держится, и пассивное большинство. Никуда от этого не деться. К чему приводит игнорирование этого факта, хорошо видно на примере Биткоина — сейчас два-три крупнейших майнинговых пула контролируют три четверти мощностей майнинга — произошла стихийная централизация изначально одноранговой сети. Любой достаточно крупной децентрализованной сети нужны механизмы регуляции и роста специализированных привилегированных узлов, иначе сеть либо не вырастает, либо самопроизвольно становится централизованной.

          На мой взгляд, идеальная сеть должна быть распределённо-иерархической, где из всей массы узлов выделяются разновидности, которые лучше других справляются с определённым классом задач — маршрутизацией, хранением данных, вычислениями и т.д. На верхнем уровне такой иерархии должны быть несколько сотен (максимум — тысяч) узлов, обязательно расположенных на разных континентах, в разных юрисдикциях, принадлежащих разным людям и организациям. Плюс должен быть действенный механизм «повышения» рядовых узлов в специализированные и «разжалования» обратно в рядовые в случае неэффективности или саботажа. Кстати, очень похожую структуру уже сейчас имеет сеть TOR — на пару миллионов рядовых входных узлов есть несколько тысяч специализированных релеев, причем разбитых на классы (если использовать биологическую аналогию — «ткани»), которые выполняют разные функции — выходные узлы, быстрые узлы, мосты…

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


            Т.е главное, что бы в любой момент узел мог без постороннего вмешательства изменить набор своих функций
              +1
              Это всего-лишь означает, что либо центр сети постоянно перемещается, либо вся сеть постоянно меняется т.к. в один отрезок времени есть несколько узлов, которые выполняют роль хабов централизации. Насколько я знаю, пока что никто не придумал как создать сеть, которая реально не имеет никакого механизма централизации и полностью равномера во все стороны.
                –1
                Tox/Bitcoin/Bitmessage/Twister — не имеют центра, а суперноды используются только для экономии энергии и/или проброса трафика через NAT
                  0
                  Можно продумать двух-трёхцветную (на белом фоне) игру «Жизнь», в которой при обилии низкоранговых узлов возникает высокоранговый, при обилии высокоранговых лишний высокоранговый «умирает», понижая свой ранг.

                  Равномерность может быть разной, вплоть до пудинга с изюмом.
                  +2
                  И всё равно не соглашусь. То, что любой узел в любой момент может изменить набор функций — необходимое, но недостаточное условие. Нужно, чтобы остальные узлы могли принимать совместное согласованное решение о том, что этот узел справится с выполнением этих функций, как с технической (надёжность, скорость и т.п.) так и с нетехнической стороны (добросовестность владельца узла, информационная политика станы, в которой он находится и т.п). Решение этой проблемы, на мой взгляд, и есть «священный грааль» распределённых сетей на сегодня. То есть нужен механизм саморегуляции сети, учитывающий не только технические характеристики узлов — это уже давно существует, — но и юридические, человеческие, организационные характеристики людей, поддерживающих эти узлы. Какой-то механизм отслеживания репутации стоящих за узлами людей и организаций, чтобы можно было автоматически распределять «потоки доверия» в сети между сообществом достаточно ограниченным и стабильным, но в то же время динамичным и состоящим из множества независимых друг от друга агентов, совокупности которых могут доверять рядовые члены. Возможно, в этом направлении роют люди, которые продвигают идею децентрализованных автономных организаций.
                    +1
                    >добросовестность владельца узла, информационная политика станы

                    Все системы строиться по принципу нулевого доверия т.е не нужно что бы узел был доверенным
                      +1
                      Нулевое доверие — это фикция, абстрактный идеал, недостижимый на практике. В любой распределённой сети всегда есть участки, которые требуют старого доброго доверия. Как правило, это там, где нужна высокая квалификация ответственных за них людей, либо концентрация больших ресурсов (очень трудно размазать по сети большую и быструю БД, суперкомпьютер или высокоскоростной узел обмена трафиком), либо есть опасность для владельцев узлов. Примеры — разработка и аудит безопасности, майнинг биткоинов, выходные узлы TOR.

                      Минимизировать уровень доверия к каждому участнику безусловно надо. Но называть такую минимизацию «нулевым доверием» — опасный самообман. Пока мы не изобрели сильный искусственный интеллект, за любой системой будет стоять очень ограниченное количество ключевых людей или организаций, которым придётся доверять. Нужны механизмы управления этим доверием. Примерно как разделение ветвей власти, гражданский контроль, свободная пресса и выборы в политике, только с уклоном в техническую сторону. А когда искусственный интеллект изобретут — эти же механизмы нас будут защищать и от него )))
                  +2
                  Солидарен с автором статьи, что первоначально полноценный узел должен предоставлять весь функционал, вплоть до графического интерфейча пользователя. Вы «не можете вспомнить ни одного примера успешной чисто одноранговой сети»? Пожалуйста: aMule/eMule.
                  Единственная проблема «ослика» — это то, что его «засрали» копирасты левой информацией.

                  А вот здесь мы переходим к другому вопросу, который Вы затронули — к сети доверия.

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

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

                  Рейтинг записи — это сумма коэффициентов доверия, проставленных теми, кому вы уже сами указали положительное доверие. Из этого следует ещё один ключевой момент p2p социальной сети: любой рейтинг в p2p-сети может быть только относительным (относительно Вашего ключа, или другого ключа).

                  Связанно это с тем, что в распределённой сети мы не можем учесть все оценки:
                  — во-первых чисто физически все оценки к вам не придут, придут только оценки (подпись+коэффициент_доверия) от узлов с ключами, которые находятся в вашем дереве доверия.
                  Нет, могут придти записи и от других узлов, но было бы опрометчиво их принимать.
                  — во-вторых все оценки и не нужны, ибо троли, корпорации, правительства, копирасты и т.д. всегда будут пытаться вас надуть (что видно на примере eMule), создавая ложных персонажей, ложные узлы и ложные подписи. Для психически здорового человека важны оценки только тех, кому он доверился, т.е. проставил положительные оценки (подпись с коэффициентом доверия).

                  Ещё один момент, на котором нужно сфокусироваться:
                  по каким алгоритмам считать рейтинг?

                  И здесь распределённая сеть даёт невертоятную «фичу» — каждый на своём узле может использовать: а) разные формулы для расчёта рейтинга, б) разную глубину дерева доверия, начиная от корневого, т.е. от тех оценок, которые выставлены Вашим ключом, в) разные весовые коэффициенты для разных уровней глубины дерева доверия. Первичное доверие идёт с весовым коэффициентом 1 (потому что самому себе вы верите на 100%), вторичное доверие может иметь например коэффициент 0.8 (потому что друг конечно прав, но это же друг, а не я), третий уровень например 0.5 (друг друга хорошо, но фиг его знает). И так далее.

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

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

                  Цель человека в такой системе — проставлять доверие записям (от -1.0, -0.9… до +1.0), а узел сам будет высчитывать рейтинги и согласно им получать и отдавать записи.

                  Некоторые вещи на эту тему я описал в «Руководстве юзера и хакера» к Пандоре:
                  github.com/Novator/Pandora/raw/master/doc/guide.ru.pdf
                  (извиняюсь, теги не работают). Чтобы не рыться, сразу рекомендую статьи:
                  — Глава 12. Доверие
                  — Глава 13. Рейтинг
                  — Глава 53. Доверие и рейтинг

                  Также для интересующихся могу порекомендовать изучить тему «Сети доверия»:
                  en.wikipedia.org/wiki/Web_of_trust
                  К сожалению, в рунете тема сетей доверия почти не освещена, используйте гугл и переводчики.
                    0
                    Сравнить клеточную дифференцировку с процессами развития сетей это классная метафора.
                    0
                    Согласен с автором по принципиальному вопросу о том что за P2P сетями будущее.

                    Но мне, в этом смысле, интересно сегодняшнее — существуют-ли сейчас библиотеки, которые могут помочь создать P2P сеть для своего продукта? Про I2P я в курсе, но я имею ввиду создание собственной P2P сети.
                      0
                      Смотря какая именно сеть интересует, в большинстве случаев — DHT библиотека позволяет создать простую P2P сеть
                        0
                        Можете дать ссылку на пример ее использования?
                          0
                          гм Tox — основан на DHT
                      0
                      Скажите, уважаемый shifttstas, нет ли у вас желания потестировать в ближайшее время новую P2P платформу?
                      Как один из её разработчиков, я бы очень хотел получить отзыв от вас (как от специалиста в области анонимности, децентрализации и P2P )).
                      Только сразу предупрежу, что сразу сборку предоставить не смогу — разработка идёт достаточно активно и не все билды стабильны. Пока спрашиваю о наличии интереса.
                        +1
                        С удовольствием посмотрю
                          +1
                          Тогда, как смогу подготовить вменяемую сборку, напишу в личку.
                          +1
                          О, старые знакомые ))) Неужели таки допили тот проект?
                            +1
                            Проект сильно разросся с тех пор. ) Много чего интересного за это время произошло. Кстати, адресую вам тот же вопрос.
                              +1
                              Конечно, гляну.
                          –1
                          Для веб страниц Р2Р не подойдет ибо страницы меняются часто (комментарии, например) а значит у разных узлов будут разные версии.
                          Или, например, обновили CSS. Нужно изобрести механизм инвалидации.
                            –1
                            Можно разделить динамику и статику

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

                          Самое читаемое