> "XOR метрика Kademlia".. хорошо, пусть.Это частный случай. Он прост для понимания, симпатичен и неплохо работает, поэтому на мое мнение это выглядит симпатично.
> в классическом случае "DHT-через-Интернет" -- все узлы находятся на одном и томже
> ФИЗИЧЕСКОМ расстоянии друг от друга -- ОДИНАКОВОМ-и-равнозначном
И давно у нас узел в сша и соседнем доме стали на одинаковом физическом расстоянии? Вообще, с точки зрения DHT я не вижу причин делать сильные отличия между виртуальным линком и физическим. Возможность кидать кому-то пакеты - это возможность кидать пакеты. Как оно там сделано внутри - да хоть почтовыми голубями. Какая алгоритму разница? В такой топологии для ее старта абсолютно принципиально лишь чтобы узлы знали другие узлы и могли пересылать пакеты хоть кому-то еще. Если не идеализировать алгоритм (а реальные реализации DHT специально де-идеализируют и твикают) - оно запустится и в субоптимальных условиях.
> (эти узлы физически разделяет лишь Интернет). но у этих узлов есть разное
> Расстояние Хемминга относительно друг друга.
Ну да. И за счет стремления сократить это расстояние на уровне алгоритма работы каждого узла - пакет загибается сетью в нужную сторону.
> внутри "DHT-через-Интернет" -- мы можем с одинаковой лёгкостью обращаться к любому узлу,
> зная его IP-адрес.. но вопрос: как узнать IP-адрес?
Если кто не заметил - в такой топологии не требуется прямая конективити каждого с каждым (и знание каких либо айпишников). Нам нафиг не надо знать как напрямую слать пакет получателю. Пакет отдается наиболее подходящему "роутеру" - узлу с которым мы можем напрямую коммуницировать. Тот делает аналогично, пытаясь при отдаче пакета своему соседу сократить метрику в процессе выбора кому из известного ему списка узлов отдавать пакет. Следующий роутер - аналогично. В результате пакет пытается завернуть в назначение, на уровне глобальной логики сети в целом. Метрика пытается сократиться при каждом шаге выборе маршрута.
Правда тут есть 1 вещь которую я не совсем понимаю. В DHT из 100% виртуальных линков все это будет неплохо работать, т.к. все-таки там не очень принципиальна физическая дистанция. В случае с физическим линком мне не совсем понятно как обеспечивается оптимальность процесса - по идее физически близкие соседи по хорошему должны бы логически-близкие по метрике сети адреса, чтобы логический роутинг хорошо совпадал с физическим. Как это делается и делается ли - я пока не совсем понял. Но DHT может работать и в не совсем идеальных условиях.
> ответ: каждый узел знает IP-адреса тех узлов, которые ближе к этому узлу по Расстоянию
> Хемминга (НО не ближе всего ФИЗИЧЕСКИ.. так как физически -- все одинаковы).
На самом деле не обязательно. Все что нам надо - уметь слать пакеты нескольким узлам. И делая первый шаг роутинга - сокращаем метрику, выбирая "правильный" узел из тех с кем мы можем коммуницировать. А тот должен сделать аналогично. Ну и так далее. А какой там IP в интернете у получателя и есть ли он вообще - нас не волнует. Пакет роутится по виртуальному адресу, а какими линками его на очередном хопе доставляют - да хоть голубиной почтой, если известно что так можно и это сокращает метрику. Это локальная проблема очередных узлов по пути как они там кидали пакеты друг другу пытаясь улучшить метрику. Отправитель свое дело сделал, навесив адрес назначения и пульнув ближайшему соседу с конективити, на остальное он не влияет, далее по дереву пакет пинают другие.
> НО ЭТО НЕ ВОЗМОЖНО! так как каждый узел Хупербории может знать только
> свох ФИЗИЧЕСКИХ соседий.
В гибридной сети - и логических. И процесс в любом случае будет стремиться к точке назначения, хоть и менее идеально.
> (ни кто узлу не может сообщить где ФИЗИЧЕСКИ находятся другие узлы,
Теоретически - узел может прикинуть по адресам физически доступных узлов. Но пока я не понял - как выполняется оптимизация логики на предмет совпадения с физикой. Наверное проще всего спросить у авторов.
> НО ЭТО БЕСПОЛЕЗНАЯ ИНФОРМАЦИЯ!
Вот это - не факт. Сам по себе DHT обычно работает
> то в этом случае пакет просто перейдёт в СЛУЧАЙНОЕ направление, и
> НИ КАК НЕ окажется ближе к цели!
Изначально гипербория - именно логическая оверлейная сеть, а не физическая. И это работало как-то так, в меру моего понимания. Физический довесок с локальными линками и beaconing сделали относительно недавно. И как обеспечивается оптимизация на предмет стыковки адресов с физической топологией - вот это интересный и правильный вопрос, с точки зрения оптимизации, но я пока этот момент не осознал. По идее это вопрос попытки выбора адреса близкого к тому который у физически-доступного узла (можно и логического аплинка, какая нафиг разница - ну он будет вгейтовывать пакеты в подсеть, а не физический узел, не так уж принципиально кто, лишь бы до него конективити было, хоть через голубей). Но делается ли это и если да то как - вопрос интересный.
> Расстояние Хемминга -- не будет уменьшаться когда пакет будет проходить через каждый
> "транзитный" узел...
В целом будет, т.к. каждый транзитный узел пытается его сократить. Но вот как обеспечивается оптимальность этого процесса на предмет совпадения с физической частью сети - интересный вопрос, этот момент я сам пока до конца еще не понял. И да, вот в этом месте я начинаю верить что вы уже как минимум частично понимаете работу DHT.
> а если ещё и разрешить отсылку пакета обратно (тому узлу от которого "транзитный" пакет пришёл)
Это заведомо не улучшает метрику -> не имеет смысла. Обоснование: если бы у того узла который кинул вам пакет были бы более хорошие кандидаты для улучшения метрики - вы бы вообще не получали этот пакет. Вероятность того что он узнал новые узлы пока вы жевали пакет близка к нулю.
> -- то вероятнее всего в каком-то начальном месте маршрута ДВА УЗЛА ПРОСТО БУДУТ КИДАТЬ ПАКЕТ ДРУГ-ДРУГУ :) .
Не вижу смысла возврата пакета отправителю. В абсолютно идеальной сети вообще если не удается улучшить метрику - вероятно, такого узла нет. Реально все может быть сложнее, разумеется.
> физическая топология это одно, а тополония на основе Расстояния Хемминга совсем другая :-) ..
Насколько это так - весьма отдельный и интересный вопрос, на самом деле. А какие аргументы в пользу этого тезиса? Могу подсказать как сделать "относительно совпадающими": пытаться сбрутфорсить адрес близкий к тому узлу который слышно по физическому линку. Но я не совсем понимаю делается ли это, и если да то как это уживется с маломощными сетевыми железками в плане их времени входа в сеть. То-есть я не вижу это как принципиально нерешаемую задачу с точки зрения теории. Но я пока не въехал делается ли это на практике и если да то как. Это надо очень глубоко и долго в код врубаться, при том что сам код в общем то производит ощущение WIP. Проще всего наверное спросить у авторов как это реально задумано по их мнению. Ну и стоит понимать что это передний край - возможно авторы сами только еще экспериментируют и опробуют разные подходы.