5
0
mirror of https://github.com/cwinfo/yggdrasil-network.github.io.git synced 2024-09-19 14:59:37 +00:00

Update about.md

This commit is contained in:
Arceliar 2018-07-09 13:28:23 -05:00 committed by GitHub
parent 62ace80c11
commit bffbeffd16
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -48,12 +48,11 @@ Given the coordinates of any two nodes, it is possible to calculate the length o
Traffic is forwarded using a [greedy routing](https://en.wikipedia.org/wiki/Small-world_routing#Greedy_routing) scheme, where each node forwards the packet to a one-hop neighbor that is closer to the destination (according to this distance metric) than the current node.
In particular, when a packet needs to be forward, a node will forward it to whatever peer is closest to the destination in the greedy [metric space](https://en.wikipedia.org/wiki/Metric_space) used by the network, provided that the peer is closer to the destination than the current node.
If no closer peers are idle, then the packet is queued in FIFO order, with separate queues per destination+crypto-session (so traffic from different nodes, to the same destination, is tracked separately).
Whenever the node finishes forwarding a packet to a peer, it checks the queued, and will forward from the *smallest* non-empty queue for which that peer is a valid next hop (i.e. closer to the destination than the current node).
Whenever the node finishes forwarding a packet to a peer, it checks the queues, and will forward the first packet from the queue with the maximum `<age of first packet>/<queue size in bytes>`, subject to the constraint that the peer is a valid next hop (i.e. closer to the destination than the current node).
If no non-empty queue is available, then the peer is added to the idle set, forward packets when the need arises.
This acts as a crude approximation of backpressure routing, where the remote queue sizes are assumed to be equal to the distance of a node from a destination (rather than communicating queue size information), and packets are never forwarded "backwards" through the network.
Using the minimum non-empty queue size grants the largest fration of available bandwith to the session that attempt to use the *smallest* amount of bandwidth, loosely based on the rationale behind some proposed solutions to the [cake-cutting](https://en.wikipedia.org/wiki/Fair_cake-cutting) problem.
Packets older than 25 ms are dropped from the front of the queue, to mitigate bufferbloat, for the same reasons as the (likely much better, but much more complicated) [CoDel](https://en.wikipedia.org/wiki/CoDel) approach to bufferbloat mitigation.
Transmitting local queue sizes between neighbors, to permit true [backpressure routing](https://en.wikipedia.org/wiki/Backpressure_routing), continuing to use the metric space distance as a baseline shadow queue size, is under consideration for future study.
The queue selection strategy grants a larger fration of available bandwith to sessions that attempt to use less bandwidth, loosely based on the rationale behind some proposed solutions to the [cake-cutting](https://en.wikipedia.org/wiki/Fair_cake-cutting) problem.
The queue size is limited to 4 MB. If a packet is added to a queue and the total size of all queues is larger than this threshold, then a random queue is selected (with odds proportional to relative queue sizes), and the first packet from that queue is dropped, with the process repeated until the total queue size drops below the allowed threshold.
### Spanning Tree