Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Selection Algorithm with Health

Algorithm Parameters

ParameterValues
SRC NIDSpecified (A)Not specified (B)
DST NIDlocal (1)not local (2)
DST NIDMR ( C )NMR (D)

Note that when communicating with an NMR peer we need to ensure that the source NI is always the same: there are a few places where the upper layers use the src nid from the message header to determine its originating node, as opposed to using something like a UUID embedded in the message. This means when sending to an NMR node we need to pick a NI and then stick with that going forward.

Note: When sending to a router that scenario boils down to considering the router as the next-hop peer. The final destination peer NIs are no longer considered in the selection. The next-hop can then be MR or non-MR and the code will deal with it accordingly.

A1C - src specified, local dst, mr dst

...

A2C - src specified, route to dst, mr dst

  • find lcoal local ni given src_nid
    • if no local ni found fail
    • if local ni found is down, then fail
  • find router to dst_nid
    • If no router present then fail.
  • find best peer_ni (for the router) to send to
    • take into account the health of the peer_ni
    • If this is a resend and the resend peer_ni is specified, then select this peer_ni if it is healthy, otherwise continue with the algorithm.
    • If this is a resend and the peer_nis is not specified, do not select the same peer_ni again. The original destination NID can be found in the message.
      • If there are no more peer_nis that haven't been used before for this message, then fail.

A1D - src specified, local dst, nmr dst

...