From bffbeffd16cedd60ccae95520da08fb1dcff371c Mon Sep 17 00:00:00 2001 From: Arceliar Date: Mon, 9 Jul 2018 13:28:23 -0500 Subject: [PATCH] Update about.md --- about.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/about.md b/about.md index c5b4b33..53f9062 100644 --- a/about.md +++ b/about.md @@ -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 `/`, 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