Как решить кратчайший путь в ячеистой сети?
В настоящее время я работаю над проектом со своим другом, имеющим много узлов в сети, и хотел бы адаптировать его из p2p в ячеистую сеть.
Некоторые сведения о приложении:
- мы не делаем ничего сложного, мы только начинаем с клиента чата, отправляя сообщения отдельным лицам или группам.
- независимость от языка (я пишу своего "клиента" на ruby, а мой друг пишет его на python)
- в настоящее время у нас есть прослушивающий сокет (который всегда активен), и только открытые сокеты для отправки, поэтому нет соединения "всегда включено" со всеми нашими узлами (хотя из вики кажется, что они предпочитают постоянные соединения)
- Я также читал это о масштабируемой маршрутизации от источника, но он более или менее излагает "а" алгоритм и не обязательно определяет какой-либо протокол для связи.
Итак, мои вопросы:
- Какой лучший (или сравнительный) сетевой протокол (ы) для поиска кратчайшего пути? (Я знаю, что есть пара, определенная IEEE и другими)
- Допустим, вы хотите отправить сообщение тому, к кому вы не подключены напрямую
- у вас есть список всех узлов в сети и поиск, какой из ваших подключенных узлов имеет кратчайший путь к намеченному целевому узлу? - будет ли это означать, что при каждом изменении сети вам придется обновлять график каждого узла сети?
- в качестве альтернативы, будет ли у узла просто список, какой из его подключенных узлов имеет кратчайший путь к желаемому месту назначения? (таким образом ответственность за кратчайший путь ложится на следующий в линии узел)?
- Допустим, вы хотите отправить сообщение тому, к кому вы не подключены напрямую
- Как вы решаете, с какими соседними узлами поддерживать соединения?
Спасибо!