Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hybrid #741

Merged
merged 2 commits into from May 8, 2021
Merged

Hybrid #741

merged 2 commits into from May 8, 2021

Conversation

Arceliar
Copy link
Member

@Arceliar Arceliar commented Nov 7, 2020

This is work-in-progress of a proof-of-concept (backwards incompatible) change to the routing scheme. The protocol version info has been set to a dummy value (0.0) to avoid peering with existing nodes.

Currently, we use greedy routing in all cases. This means we forward to the peer that minimizes the expected distance to the destination, where the expected distance is the distance on the spanning tree.

In this hybrid approach, we check if we're an ancestor of the destination (that is to say, if their coords in the tree are equal to our coords plus some additional hops). If we're their ancestor then we switch to source routing, using their coords (which are a source routed path from the root to the destination) as the source routed path.

In some cases where coord change, this may prevent packet loss as the cost of (possibly) routing along a suboptimal path. In particular, if the root stays the same and all of the old root->destination links are still active, then traffic should still be able to reach the destination after its coords are changed.

The source routing logic here can be reused (or slightly adapted) for more general source routing if/when we implement a full source routing pathfinder.

@Arceliar Arceliar changed the base branch from future to develop November 7, 2020 14:36
@Arceliar Arceliar changed the base branch from develop to future November 7, 2020 14:36
@Arceliar Arceliar merged commit 36e4ce4 into yggdrasil-network:future May 8, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant