Как найти доступных соседей узла в unetstack - PullRequest
3 голосов
/ 10 июля 2019

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

a) Как найти доступных соседей для узла?

b) При использовании PDU и RemoteGetParamReq, какой метод хорошо подходит для извлечения энергии соседних узлов?

1 Ответ

0 голосов
/ 15 июля 2019

a) Если вы пишете свой собственный агент, вы можете отправить широковещательный кадр для запроса соседей, и ваш агент на соседних узлах отвечает на этот кадр случайным откатом (чтобы избежать коллизий MAC). Альтернативным hack может быть использование RouteDisoveryReq (см. https://unetstack.net/svc-31-rdp.html) с адресом to, установленным на несуществующий узел. Это приведет к тому, что все соседние узлы с 1 прыжком будут повторно отправьте запрос на обнаружение маршрута, и вы получите RouteDiscoveryNtf для каждого из этих соседей.

Пример сценария, демонстрирующего взлом (rdpdemo.groovy):

// settings
attempts = 1      // try only a single attempt at discovery
phantom = 132     // non-existent node address
timeout = 10000   // 10 second timeout

println 'Starting discovery...'
n = []                        // collect list of neighbors
rdp << new RouteDiscoveryReq(to: phantom, count: attempts)
while (ntf = receive(RouteDiscoveryNtf, timeout)) {
  println("  Discovered neighbor: ${ntf.nextHop}")
  n << ntf.nextHop            // add neighbor to list
}
n = n.unique()                // remove duplicates
println("Neighbors: ${n}")

Пример выполнения (моделирование samples/rt/3-node-network.groovy на узле 3):

> rdpdemo
Starting discovery...
  Discovered neighbor: 1
  Discovered neighbor: 2
Neighbors: [1, 2]
>

б) Ответ на этот вопрос зависит от того, как вы раскрываете свою энергетическую информацию. Если вы выставите его как параметр, вы можете использовать RemoteGetParamReq, чтобы получить его. Но если вы уже внедрили некоторый протокол в своем агенте, достаточно легко иметь конкретный PDU для передачи информации.

...