The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"GitHub добавлен в реестр запрещенных в РФ сайтов"
Отправлено Аноним, 05-Окт-14 06:12 
> как работает DHT я понимаю.

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

> не понимаю как можно применять принципы DHT к сети в которой узлы находятся ещё не известно где.

Представь себе нечто типа B-дерева (надеюсь ты понимаешь логику работы деревьев и почему они попадают в назначение за нечто типа O(log(N)) операций). Только глобального. Узлы дерева == сетевые системы. Мы кидаем пакет на корень дерева. Каждый узел которому попал пакет - знает несколько соседей и форвардит пакет в "правильную" сторону дерева - одному из своих соседей. Пакет пытается попасть в точку дерева, равную адресу назначения. Через несколько пинков по иерархии дерева пакет прилетит в нужный лист - узел с адресом назначения. Если, конечно, этот лист вообще есть. Иначе кто-то по пути заметит что он не знает более (математически) близких узлов - доставка пакета не удалась.

Реально разумеется несколько сложнее. Ложки нет. И какого-то выделенного дерева - тоже. Есть узлы, знающие сколько-то соседей. Есть XOR метрика Kademlia. А древовидный путь к назначению строится за счет логики Kademlia, которая при совместной работе узлов похожа на глобальный эквивалент b-дерева. Как я понимаю, логика Kademlia изменена относительно той бумажки в которой описан референс: изначально подразумевалось что тот кто ищет - получает от наиболее подходящего соседа список более подходящих, а те дадут еще более подходящих, ... и за несколько итераций мы найдем искомый ключ. Но мы не ищем, мы роутить хотим. Пакет просто кидается в самого подходящего, а тот ничего не возвращает. Вместо этого он пинает пакет еще более подходящему (по xor-метрике) узлу. Ну и так далее. С логической точки зрения это по окончательному результату эквивалентно, но куда лучше подходит для роутинга - каждый узел делает только 1 шаг логики Kademlia, в результате спускаясь по "дереву" на уровень ниже, ближе к цели. За несколько итераций пакет прилетает самому близкому к пункту назначения узлу. То-есть в идеале, самому узлу, XOR метрика которого относительно самого себя равна нулю (ближе уже некуда), так что он самое правильное назначение из всех которые есть в сети :). Если сильно интересно что за фигня - man итеративный vs рекурсивный варианты Kademlia.

Заметь: ложки нет, поиска нет, броадкастов нет, статичных таблиц маршрутов нет, полных списков узлов нет. А масштабируется все это если нигде не лохануться логарифмически. Вон торент живет себе с 15-25 миллионов узлов. Помирать не собирается. Там правда ближе к тому что в референсной бумажке, но это детали.

> которых есть ясный IP-адрес (и маршрутизация до этого IP-адреса уже налажена
> -- на плечах нижележащего протокола "Интернет").

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

> Мюнхгаузен? НО КАК ТАКОЕ ВОЗМОЖНО? %)

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

> не понимаю я -- как запрос можно было бы отправить в DHT-сеть,
> если каждая операция поиска маршрута --

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

> чтобы отослать DHT-запрос -- тебе требуется знать по какому маршруту его слать.

А все чуть хитрее. См. выше. DHT сам по себе - маршрутизатор. Сюрприз!

> на тему того как же отослать DHT-запрос..

Все намного проще. И поэтому я не вижу что помешает этой штуке масштабироваться глобально.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру