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

Tech - YGGDRASIL/CJDNS mulit hop test #116

Open
darkdrgn2k opened this issue Mar 6, 2019 · 6 comments
Open

Tech - YGGDRASIL/CJDNS mulit hop test #116

darkdrgn2k opened this issue Mar 6, 2019 · 6 comments

Comments

@darkdrgn2k
Copy link
Contributor

darkdrgn2k commented Mar 6, 2019

Document Yggdrsaill vs CJDNS testing

Logical map of nodes (CJDNS addresses) connected for MESHPOINT and signal strengths between them
image

Results

CJDNS/YGGDRASIL with 802.11s routeing disabled
This is the "standard" mode for Prototype peering. CJDNS/YGGDRASIL will see multiple hops if peers are out of range and direct hops if they are in range.

image

CJDNS/YGGDRASIL with 802.11s routeing enabled

Enabliing 802.11s routing, the 802.11s protocol will shuttle the packets/frames around based on its routing protocol.

CJDNS/YGGRASILL see a flat 1 hop network to all nodes even though some paths may actually be multi hopped. 802.11s deasl with the multi hops

image

@makew0rld
Copy link

Could explain these a bit more, to help me understand what they mean?

@darkdrgn2k
Copy link
Contributor Author

darkdrgn2k commented Mar 8, 2019

Its a brain dump of stats that need to be forumalted into a document

i added some context to the image above

Left side if CJDNS right side YGGDRASILL pi addresse in the same order (ie d45b is the same node as bec7)

One thing that stands out is that CJDNS suffered for peer c7eb because of the poor link quality. (in the map it was multi hop but at times it would be direct but over a verry poor connection) but yggdrasill did not. 80211s made cjdns work allot bettr with that peer

@makew0rld
Copy link

Thanks. And it looks like Yggdrasil did a bit better without the 802.11s routing?

@darkdrgn2k
Copy link
Contributor Author

Thanks. And it looks like Yggdrasil did a bit better without the 802.11s routing?

I'd call it rounding error

second test was not as long as the first one

@makew0rld
Copy link

So it seems the conclusion is that we should always enable 802.11s routing on our nodes? And that Yggdrasil is probably a better choice for most things at the moment?

@Arceliar
Copy link

Arceliar commented Mar 19, 2019

I would expect that turning on 802.11s forwarding should help a lot more often than it hurts. If I remember right, it's limited to ~32 nodes by default, so it shouldn't run into a protocol congestion wall the same way that other things could, as long as it handles the 33rd node gracefully (maybe it keeps the closest 32 nodes or something). And I would sincerely hope that 802.11s forwarding knows enough about the wireless state to do a better job of routing than ygg's simple feedback mechanism's (EDIT: if there's a difference, it may become more visible in a large network, but I guess that's even harder to test) or whatever state cjdns is tracking (it's not clear to me if a supernode is reachable to help with routing decisions, or if they're falling back to the old dht-based pathfinder code). I'm honestly surprised that ygg without 802.11s forwarding manages to do so well compared to when forwarding is enabled. Turning on 802.11s forwarding should lead to slightly more idle traffic, from more broadcast cjdns beacons and ygg multicast announcements, but I don't think this would matter except on devices running on battery, which may have issues regardless.

Some additional tests to consider and reasons why, roughly in increasing order of how annoying it would be to set up:

  1. ping over 802.11s+forwarding, just as a baseline for comparison against cjdns/ygg.
  2. iperf3 over these things, to see how bandwidth compares, how stable it is, etc; I imagine ygg will look less stable on the sender's side than on the receiver's, due to how some of the buffering stuff works internally, but cjdns and normal IP should both be pretty stable on both ends (+- whatever's happening when cjdns has 802.11s forwarding disabled). I guess there could be CPU bottlenecks on cjdns, depending on how the hardware and how good the wireless connections are, in which case this test would be less useful.
  3. ping with iperf3 running in the background, to see how much latency and packet loss are affected by congestion... this is a test where I expect yggdrasil to do appreciably worse than the others, since TCP buffers force some latency upon us when things are congested. There are different congestion control schemes you can try that should mitigate this (BBR especially), but that's probably beyond the scope of these tests.
  4. repeat all these things with batman-adv over 802.11s (a common freifunk setup, if I'm not mistaken)
  5. repeat with cjdns/ygg over batman-adv over 802.11s, I would expect this to look a lot like running them over 802.11s+forwarding
  6. repeat babel over 802.11s (should be a close approximation of Althea)
  7. repeat with cjdns/ygg over babel over 802.11s, I would (again) expect this to look like running them with 802.11s+forwarding

@darkdrgn2k darkdrgn2k changed the title Tech - IPFS/CJDNS mulit hop test Tech - YGGDRASIL/CJDNS mulit hop test Jun 27, 2019
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

No branches or pull requests

3 participants