Реализация обнаружения пиров в libp2p

Контролируется ли обнаружение пиров в libp2p (например, пиры, сообщающие друг другу о пирах, о которых они знают, и управление списками подключенных узлов) в Rust на уровне NetworkBehavior?

Похоже, что одним из вариантов является использование Kademlia , которая выглядит так (в ржавой версии), определяя NetworkBehavior.

Правильно ли, что если вы не хотите использовать Kademlia для реализации однорангового обнаружения, вы делаете это, определяя одноранговое обнаружение как часть вашего NetworkBehavior?

Я пытаюсь избежать ситуации, когда я начинаю реализовывать код для этого, но потом обнаруживаю, что libp2p на самом деле делает это за меня под прикрытием.

1 ответ

У вас есть несколько альтернатив, но, конечно, вы должны реализовать поведение (или комбинацию действий) для обнаружения пиров:

  • mDNS

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

  • Рандеву

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

  • Кадемлия

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

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

Другие вопросы по тегам