Как стать автором
Обновить

Комментарии 52

Статья рассчитана на широкого читателя.

Я не широкий, но я смог дочитать статью до конца.
А выглядит как звезда

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

Представьте, как было бы хорошо, если роутер не был «бутылочным горлышком», и в случае его отказа все участники домашней сети могли выйти в интернет через умный телевизор, соседские беспроводные сети и в конце концов через ваш смартфон, и всё это без какой-либо дополнительной конфигурации после поломки роутера!

Но если всё это работает поверх IP, то как это возможно?

Устоявшееся понимение IP говорит нам, что должен быть шлюз по умолчанию и т.п. В случае "народного меша везде и во всем" любой Wi-Fi и провод, т.е. любой физический линк с другими устройствами является вероятным маршрутом выхода в глобальную сеть. На то она и ячеистая топология, когда каждый участник сети также выступает и роутером.

Интернет в квартиру входит по 10 кабелям в каждое устройство, или как?

Интернет входит в квартиру по всем возможным линкам, которые ведут хотя бы к соседям, а тех соседей в следующий дом и так далее. Меш в описанном виде — некоторый упорядоченный самоорганизующийся хаос. И в этом его красота, как по мне :)

Юридическую ответственность за трафик с вашего канала давно отменили?

Я и СОРМ домой поставлю, всё во славу Фемиды!

в какой стране?

Как правило в квартире действительно есть несколько источников интернета: домашний провайдер (у меня в один момент было до трех одновременно, но это, конечно, исключение) + смартфоны с интернетом от мобильных провайдеров. Если говорить о многоквартирном доме в целом, особенно в крупных города — зачастую в дом заведено множество провайдеров, и если бы жильцы дома были объединены в одну сеть — точек доступа в интернет на самом деле было бы огромное количество.
Ага, а ещё было бы классно иметь всего пару наборов инструмента на весь дом, и все бы могли починиться без покупки своего инструмента. А ещё можно туалеты не строить индивидуальные, которые 95% времени простаивают, и кухню общую. И машины бывают такие большие, на 40 человек, очень между прочим эффективные в расчёте на одного человека. Ой, что это я, мне кажется что-то подобное уже было. И вывод какой там был? Мне кажется: «ничего общественное, без хозяина не работает»

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

На самом деле, есть проблема в том, что у одного из множества пользователей «ляжет» его соединение, а он не заметит и не починит (ведь всё и так работает). Возможно, даже специально. И вот когда достаточно большое количество «зайцев» начнут экономить на своих соединениях, то местный сегмент меша внезапно ляжет под нагрузкой. Будет это выглядеть примерно как сейчас, когда экскаватор внезапно перебил магистральный кабель, или рутер сгорел. Всё будет хорошо, только если все или подавляющее большинство пользователей будут добросовестными.
Тут правовые риски появляются довольно неиллюзорные. Сосед качал порнушку с несовершеннолетними, а контракт на вас? Добро пожаловать в тюрьму! Владельцы выходных нод Тора и прокси для VK не дадут соврать.

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

Поэтому люди гибнут на заводах и шахтах Норильска, потому что с хозяином оно тоже не работает как надо?
Подозреваю что тут имелась ввиду просто wifi точка, и типа можно wifi раздать даже с телека. Если скопытится роутер на котором dhcp, который он же центральный свитч, в него же приходит трафик, в нём же wifi, то конечно никакой игдрассиль ничего не сможет сделать с пачкой разбросанных клиентов. Кстати летом, когда упал провайдер, а работать надо, я легко перенастраивал свой роутер на клиента у розданному с мобилы вайфаю и все компы на проводах отлично жили через централизованный мобильный инет.
Ну, например, отвалится роутер — сотовый телефон поделится интернетом с домашними устройствами.
IP это только один из возможных видов транспорта. В статье на эту тему есть неточность. Вот как описывается Yggdrasil авторами: «Yggdrasil is an early-stage implementation of a fully end-to-end encrypted IPv6 network. It is lightweight, self-arranging, supported on multiple platforms and allows pretty much any IPv6-capable application to communicate securely with other Yggdrasil nodes. Yggdrasil does not require you to have IPv6 Internet connectivity — it also works over IPv4.»

Спасибо за комментарий! Если вас смутило упоминание IPv4 в официальном заявлении разработчиков, то это высказывание справдливо для подключений к публичным пирам, что упомянуто в статье.
Возможно, я не понял ваш вопрос. В таком случае прошу дать более развернутое замечание.

Как видно на иллюстрации, самой уязвимой является топология «звезда», она же является самой распространенной в быту из-за простоты организации.
На правах олдфага могу вспомнить, что на коаксиальном ethernet'е была топология кольцо, с точки зрения надёжности ещё более «интересная». Отказ любого узла приводил к отказу всей сети. :)

Были мысли упомянуть "шину" и "кольцо", но воздержался во имя защиты статьи от перегрузки информацией, не актуальной сегодня, либо же просто мешающей среднему пользователю уловить суть сабжа. Но "кольцо", конечно, мощь! :)

На эзэрнете кольца вроде никогда не было. Была общая шина (и терминаторы на хвостах. И отказ узла, если он не начинал гадить в шину, на остальную сеть не влиял.
Вы с токенрингом не путаете?

Скорее просто термин перепутал. Да, она не была замкнута в кольцо. Терминировалась с обоих сторон.
И отказ узла не просто его выключение. Или сетевуха начинала дурить или с разъёмом возникали проблемы.
Кстати, да, не просто. Такие сети зачастую страдали анизотропией — два узла могли оба видеть третьего, но не видеть друг-друга. Как раз задача для mesh routing.

Как не было? А семейство протоколов STP?

А как на счет клиентов которые за nat?

Это одно из основных использований Yggdrasil сегодня: подключаемся к публичному пиру по его "белому" адресу через Интернет, и получаем устойчивое соединение со своим белым внутрисетевым IPv6-адресом Yggdrasil. Так играют в Minecraft и на USB-модемах поднимают свои общедоступные веб-сервисы (небольшие).

Как я понял это работает как hole punching в сетях BitTorrent с сообщениями PEX?
Т.е. мы говорим пиру, чтобы он нас подключил к другому пиру?
Это какой то аналог tor сети что ли?

Целью Tor является анонимность. Никакого удобства и настоящей децентрализации в Tor-е нет. Yggdrasil же обеспечивает приватность (вся информация зашифрована), но не обеспечивает анонимность (т.к. найти владельца адреса достаточно легко: ближайший к нему пир наверняка знает его реальное местоположение).

Будет это когда-нибудь реализовано по простому, для домохозяек? Ну типа ПО на мобильнике, с кнопочками в интерфейсе: включить меш локально, включить меш с раздачей доступа к интернету?
P.S. Иду я спокойно, с супругой и ребёнком по столице, ребёнок захотел пи-пи, и жена отошла с ним на пару минут. Тут налетает маски шоу (оказывается гуляли не только мы, а ещё и единомышленники Алёши Н.) отрубается сотовая связь… Меня и других загоняют во дворик… и я никак не могу связаться с семьёй. Понятно, что даже при наличии локальной меш сетки я бы ни с кем связаться не смог, так как все популярные мессенжеры имеют серверную архитектуру… Погодите ка, а вот поэтому он никому массово и не сдался этот меш, что он вам даст кроме риска получить по голове из-за расшаривания своего интернета кому попало? А он в первую очередь нужен именно в критических и аварийных ситуациях. Но инфраструктура к этому абсолютно не готова. Вот когда уйдём от централизованных сервисов, тогда и понадобится децентрализованная сеть. Сейчас от неё простым смертным толку нет.
P.P.S. Начал знакомиться с меш сетями более 15 лет назад, и каждый год надеюсь, что вот-вот оно взлетит, вот-вот и все будем сами себе провайдеры… Но похоже, скорее будем спутниками пользоваться, чем децентрализованными сетями.

Я против повальных выходных прокси. А если кто-то их ставит — пусть будет готов к юридической ответственности и тд и тп. Внутрисетевая активность Yggdrasil подразумевает прямое взаимодействие двух адресов: пользователя и сервера, к которому он обращается. Сервер будет видеть Yggdrasil-адрес пользователя, а не промежуточных узлов. Поэтому в плане ответственности за активность здесь всё более-менее прозрачно.


Про кнопочки и интерфейсы: на смартфонах это уже реализовано. Смотрите гит-репозиторий.

Как у этой сети вообще с надёжностью в теории? Нельзя ли «отравить» список соседних нод всем участникам или, например, заполнить общую БД каким-то мусором так что вся сеть ляжет? Проводился ли анализ на такую тему?
Построение общего дерева координат

Напоминает описание работы протокола динамической маршрутизации в сетях TCP/IP, в частности OSPF. Только там, вроде как, используется высший адрес среди интерфейсов.

Когда в сети появляется участник с более подходящим ключом, дерево координат перестраивается, считая его корнем.

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

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

А какие-нибудь способы защиты от этого имеются?

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

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

Еще каким-то образом нужно понимать доступность узла в сети. В протоколах динамической маршрутизации периодически ходят healthchecks. А как это реализовано для узлов мэш-сети?

Баги выявляются и постепенно решаются силами сообщества. Проект не связан с какой-либо конторой, поэтому всё двигается не так быстро, как некоторым хочется. Однако, недавно видел информацию, что один из двух ведущих разработчиков тесно работает с Matrix (мессенджер) для интеграции в него работы p2p.
Ожидается релиз Yggdrasil 0.4, в котором планируется решение убивающих сеть "сетевых штормов". Об этой проблеме известно уже более полугода. В настоящий момент временным решением является вручную смайненный ключ подписи некоего узла энтузиаста, который всегда в сети и держит корень на себе.
Всё верно, в Yggdrasil присутствует DHT. В статье вопрос несколько упрощен для простоты восприятия не специализированного читателя. Насколько мне известно, DHT помимо координат содержит ключ и адрес узла. На вопрос "кто хранит маршрут" ответить навскидку не могу, чтобы не получилось ошибочно. Это требует разбирательства. Попробуйте посетить чаты сообщества (telegram, xmpp, matrix, irc). Возможно, там найдется человек, который ответит. Сам склоняюсь к тому, что маршрут хранится на конечных узлах сообщения, т.е. у конечных пользователей.

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


Логично предположить, что так и есть. Иначе какие преимущества от использования DHT. Хотя вариант с хранением на корневых узлах тоже имеет место быть. Надо поизучать.

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

yggdrasil у меня давно стоит на тачках и даже есть свой публичный пир
но не сказать чтобы я был активным пользователем


с удивлением обнаружил что в этой сети нет зеркала флибусты кстати)))

Про Флибусту ты ошибаешься, глянь тут: http://[300:529f:150c:eafe::1]
Я сам флибусту последний год только через Yggdrasil открываю ;)

вот он недостаток таких сетей
что-то есть а фиг найдёшь, я смотрел в двух подобных списках там не было, а этот список я даже не видел
вот как новичку его найти?


P.S.: а флибусту я через бота в телеграме пинаю, оказалось так быстрее всего

Попытка упростить быстрый старт: В статью добавлена ссылка на внутрисетевую викию "HowToYgg" под заголовком "Начало использования". Кладезь информации от русскоязычного сообщества.

угу
и таких внутренних вики и списков там несколько (если не сказать много). информация на них конечно пересекается, но не дублирует друг друга

В официальном списке сервисов всего две Wiki: англоязычная полумертвая и приведенная выше :) А вот IRC-чатов во истину много, глаза разбегаются. На многие заходил, где-то активность хорошая. В частности, русскоязычное сообщество более всего восседает в ILITA IRC.

Если что, сама библиотека о своих зеркалах в Yggdrasil не знает :) Работа энтузиастов видимо. Но мысль в принципе интересная.

Если так, попробую посодействовать развеиванию незнаний. Зеркало держит один из ведущих разработчиков i2pd с ником R4SAS. Держит давно и надежно :)

Отлично, спасибо.
А нет. Это я ошибся.
На момент публикации поддерживаются все распространенные ОС: Windows, Linux, MacOS, IOS и Android.
Добавлю, что OpenBSD тоже поддерживает.

Попробую настроить в ближайшее время. Довольно интересно.
Выяснил, что поддержка появилась только в последней версии 6.9, которя вышла 1 мая.

Завелось сразу без особых проблем. Во всяком случае адреса 300::/7, приведённые в статье и комменатиях пингуются. Прописал пока только публичные пиры Москвы и СПБ.

Однако, попытка доступа по web
lynx http://[300:529f:150c:eafe::1]
пока безуспешна.
image

Это при том, что lynx http://[::1] и lynx http:://ipv6.goоgle.com работают нормально. Под браузером links такая же ситуация, то только там пишут Permission Denied.

Машина стоит за NAT (для IPv4), порт я пробрасываю. А что касается IPv6, но у неё есть видимый из вне настоящий IPv6 адрес. Оба адреса прописал в разеле Listen:[]
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации