Skip to content
This repository has been archived by the owner on Dec 18, 2023. It is now read-only.

Add project "Mesh channel coordination" #56

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

CodeFetch
Copy link

There is a simple approach for this, but maybe the students will find even more sophisticated solutions...
So difficulty depends on motivation and the focus is learning to contribute in a creative solution-focused way.

@CodeFetch
Copy link
Author

Really? Signed-off needed?! We use Github... I'll change that later.

@andibraeu
Copy link
Member

the sign-off-thing must have been enabled by someone for the whole organization...

@CodeFetch
Copy link
Author

Please review.

@CodeFetch CodeFetch force-pushed the patch-1 branch 2 times, most recently from 8e0b9d8 to 78ec83b Compare February 5, 2021 11:56
@CodeFetch
Copy link
Author

@lemoer Can you please have a look at it?

@CodeFetch CodeFetch force-pushed the patch-1 branch 2 times, most recently from 6381a8f to fa4cb22 Compare February 5, 2021 12:49
Signed-off-by: Vincent Wiemann <vincent.wiemann@ironai.com>
@mwarning
Copy link
Contributor

mwarning commented Feb 5, 2021

Hi @CodeFetch, this sounds like a very ambitious project. Please remember that the audience are students and they have about 175 hours time. As such it might be a good idea to give a few short term goals and to be very specific (along with the offer to adapt goals). Also, research projects are not a good fit for the GSoC.

Otherwise this sounds like a very interesting problem. :-)

difficulty: "high"

mentors:
- "Vincent Wiemann (CodeFetch)"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please use your github user name here, so you can be linked on the projects page

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and if you have someone else who could mentor this, you can add them, too

@andibraeu
Copy link
Member

Thank you for your contribution, @CodeFetch

Your idea is really interesting, but as @mwarning said it seems that it could be very challenging to find students that can write a good proposal for this idea. So please keep in mind that a student project is meant to be about 175 work hours in a period of about 10 weeks. As students may not be so much experienced in estimating possible work loads, we should define some realistic goals to support them.

What you could do:

  • define multiple ideas (but that could be difficult if they depend on each other. And it could be more work intensive for mentors, if we get multiple slots for those projects)
  • some of the milestones can be a kind of outlook, so the project can be continued after the end of google summer of code.

@CodeFetch
Copy link
Author

@andibraeu I did have the same concerns. That's why I didn't take the milestones serious at the beginning. Until someone told me that its required to define hard milestones, because otherwise the students might just take the cash and leave me behind frustrated.

Actually I didn't know the students get money for it. Now I think there will either be a capable student who can achieve this or it doesn't make sense to start this project at all as a GSoC project. Is this a problem?
I don't see a possibility to split this into sub-projects without excessive API design overhead.

@CodeFetch
Copy link
Author

@mwarning What I hope for is a student with mathematical background who I can help with the implementation. I'm no mathematician. I know some points where we can definitely improve the current situation without a big hassle. So there will be a result in the end. Still I hope for something that will really be usable and might exceed my expectations...

My expectations are not so high as it sounds from the text. We are talking about a NP hard problem accompanied by the mysterious Braess paradox here... I don't expect an ultimate solution - only an improvement.

@mwarning
Copy link
Contributor

mwarning commented Feb 5, 2021

@CodeFetch I hope you succeed in finding a student. For a mathematical student, it would be a good idea to have some code template where he/she/it can put in formulas. People with good knowledge in multiple fields at once (mathematics, c programming, WiFi) are very hard to find.

@CodeFetch
Copy link
Author

CodeFetch commented Feb 5, 2021

@mwarning Thank you! It would be nice if the student can at least read the formulas and understand what they do.
The easy approach is to implement the algorithm as the paper suggests.
A little harder will be to make it more decentralized using a consensus protocol.
And if the person is brilliant she will think I'm an idiot and come up with a better solution.

Maybe she will even find out that the Braess paradox as a special case of the prisoner's dilemma is the solution to the Riemann hypothesis and the proof that super-intelligence can't exist in a physical form due to continuous fragmentation in its neural networks.

https://link.springer.com/chapter/10.1007/978-3-319-03871-1_14

Edit: It so incredible how rationality and efficiency is not the same and when we mix it together we get quasicrystals, fractals, primes, network issues and quantum mechanics. So weird...

Edit2: Sad, but true: https://xkcd.com/710/

@andibraeu
Copy link
Member

@andibraeu I did have the same concerns. That's why I didn't take the milestones serious at the beginning. Until someone told me that its required to define hard milestones, because otherwise the students might just take the cash and leave me behind frustrated.

that could also be frustrating for the students, they don't just get the cash. As a mentor you have to evaluate their work before.

Actually I didn't know the students get money for it. Now I think there will either be a capable student who can achieve this or it doesn't make sense to start this project at all as a GSoC project. Is this a problem?

No, it's not a problem, we'll never know who applies for a a projects, and sometime we were really surprised about the students we found. I just wanted to create awareness that we maybe don't find a student for that.

If you need more information on mentoring GSoC projects, you can find a lot here or let's have a chat.

@CodeFetch
Copy link
Author

CodeFetch commented Feb 6, 2021

As there is no optimal solution for this, yet, it is very hard to define clear milestones. From a mathematical perspective a mesh network even when one just models the connections without looking at throughput etc. is quite complex as it is a graph. And choosing diverse channels with the least overlapping is the graph coloring problem.

It is even more complex in mesh networks as mesh-networks can be n-dimensional... For example a reflection at a wall/mountain can cause a connection to happen which can only be modeled by either introducing walls and stuff and doing some raytrace-like computations or by "simply" adding an additional dimension.

But this easily shows that we can have non-planar meshes which people can see as clumsy clouds in the meshviewer https://hannover.freifunk.net/karte/#/en/graph/802aa86ceb28. So my naive idea is to find out which parts of the mesh are planar and split the network if possible so that she does not need to fiddle with high dimensions and can then apply the proposed algorithm. In the worst case the effort of the computation is related to the travelling salesman problem.

The idea behind Batman is that each nodes does an individual choice like ants do when they build their streets. What I if every sophisticated approach fails, try to do different here is to assume some streets are highways, but that there also exist inter-dimensional portals and then prefer inter-dimensional portals over highways over streets. Another specialty about our "wireless " streets is that they don't have lanes and can only be used in one direction (not transmit/receive at the same time). If everyone does this, a traffic jam happens. If the inter-dimensional portal was the only means to reach a specific destination, some drivers will be extremely late, even though they could have chosen a different road right in the beginning.

In the Batman packet-loss metric case this is mitigated a bit, because a saturated link has high packet loss and its metric gets worse which gets propagated to the node the client is attached at quickly. So the driver takes another route right from the beginning similar to someone listening to traffic reports.
Still this is not an optimal solution as the "traffic reports" are delayed and our cars/packets/spaceships are blazing fast.
The problem with that is the Braess paradox I think. We don't feel that there is a problem, because it still works when there is a Nash equilibrium, but it is like sand while it should be like water, but sometimes it should be sand and it is water... Actually I didn't have quite understood the nature of these things, yet. For example when you have a small bridge over which ants transport food from one side to the other, under special circumstances some ants stop moving at specific positions. This has shown to increase the total amount of food per time unit that is being transported over the bridge as the ants that freeze artificially act as guides for the traffic which decreases friction for the majority of the ants. A related effect can decrease turbulance at cars or wings by adding little corners so that the turbulance does instead happen in the air which removes the friction with the wing/car or whatever.

I think the same thing is happening in Batman packet-loss based mesh networks when the flows are static. But the problem is that we do not want the same nodes to be "frozen" all the time as this makes it a very erratic thing to use. One could argue that the flows in our networks are so dynamic that this system should behave chaotic, but I don't think that this reflects reality. In reality chaos always ends up in some fractal.

My approach is like first trying to make use of our inter-dimensional portals and moving our streets to other dimensions and then see how we can increase the Gini coefficient by teaching our ants democratic socialism, which will likely fail as the people/nodes/clients are inequal in their capabilities similar to what gave rise to Hitler (yes, it always comes down to Hitler - that's the prisoner's dilemma).
But we are better than that... I know this all sounds very esoteric, but it must be to come up with new ideas and maybe a solution that works well enough for us.

Edit: Chaos ends in fractals because of symmetry breaks.
Edit2: I'd be really happy about a student like Ramanujan, because I do not care how she derives the formulas, but only that we have a good result in the end.
Edit3: By the way... Another cool project would be to find out which parts of the mesh are planar or better to which nodes the connections break it. Then one could remove the gravity for these nodes in the Meshviewer and introduce a new distracting force so that we don't have these clumsy balls anymore... https://hannover.freifunk.net/karte/#/en/graph/802aa86ceb28

@andrenarchy You are a mathematician. Can you tell us whether this is too hard for a student? Is my approach too optimistic? I think if it doesn't work out well we will at least e.g. have a daemon that sets the channel to auto if it can reach ever neighbor via cable or something simple like that. Would you be interested in joining as a mentor?

Edit4: Fun fact: Someone made a presentation about Hitler and Game theory: https://wjspaniel.files.wordpress.com/2014/12/1-ir-basics1.pdf

Edit5: Also very interesting approach: "Collaborative Spectrum Sensing in the Presence of Byzantine Attacks"

Edit6: More math magic: "Cross-layer optimization for multihop cognitive radio networks"

@andibraeu
Copy link
Member

The whole projects would be also a good topic for a bachelor or master thesis. Maybe a GSoC project could be a good start or preparation. But there'a a condition, it can't be a pure research project, there needs to be open source code developed.

@CodeFetch
Copy link
Author

CodeFetch commented Feb 8, 2021

Someone made a video on YouTube which is very helpful for understanding what I'm proposing. Especially the spring network part for enhancing the meshviewer and creating planar subpartitions.
https://m.youtube.com/watch?v=CDMQR422LGM

Edit: Do you have an idea for a better name for than meshrealmd? I think mrsad would be funny (Mesh Reconstruction, Simulation and Analysis) in reference to ORSA of NASA's DAWN mission.

@andibraeu
Copy link
Member

then maybe add that to the idea itself

@andibraeu
Copy link
Member

and please take a look on the requested changes

@CodeFetch CodeFetch marked this pull request as draft February 28, 2021 05:28
@CodeFetch
Copy link
Author

I've converted it to a draft as I've noticed it is too hard for a student in that timeframe. I'll think about how to split it into components, but the problem is one needs to understand the whole idea... Not an easy task.

@lemoer
Copy link

lemoer commented Mar 6, 2021

To add this as a reference here:

I drafted an algorithm, which should solve (at least) "Auto-Channel Selection" in gluon here: lemoer/freifunk-ideas#2

It's a more simple approach, which could be a good start into this. It could solve some of the problems, which we would want to tackle with "Mesh channel coordination". I guess "Auto-Channel Selection" could be a good first step towards "Mesh channel coordination". We could make some first steps there and learn from it.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants