All implemented KBR protocols that make proper use of BaseOverlay support the following routing modes, which are selected by the .routingType parameter:
- iterative: The originator starts a lookup by sending one (or multiple) FindNode RPCs to the closest next hop stored in the local routing table. The received FindNodeResponse contains better next hop nodes, which are successively queried by the originator until a FindNodeResponse with isSibling=true is received. Finally the message is directly sent to this sibling (= "closest node").
- exhaustive-iterative: This is similar to the iterative case above, but the isSibling bit is ignored. The originator instead continues to query all closest nodes, until no better nodes are returned. This increases bandwidth consumption and lookup latency, but is more secure.
- semi-recursive: The originator encapsulates the message in a BaseRouteMessage and forwards it to the closest next hop stored in the local routing table. The message get forwarded recursively until the sibling node (= "closest node") for the destination key is reached. An optional response to the message is sent directly to the originator.
- full-recursive: Similar to semi-recursive routing, but the response is routed recursively back to the originator
- source-routing-recursive: Similar to semi-recursive routing, but the response is routed back to the originator along the reverse path of the routed message.