Hey folks! today we bring you a riddle to start the week /me grins...
First, some clues: http://comments.gmane.org/gmane.org.freifunk.batman/6603 http://www.open-mesh.org/projects/open-mesh/wiki/FAQ#How-do-I-announce-IP-su...
now, given the attached diagram .png
* the description given in the wiki still applies, i.e. A, B, C... nodes run your favourite layer3 dynamic routing protocol, and all nodes run batman, in segmented (colored) clouds = subnets. * i am one of the clients connected to F * in the blue cloud, there's one preferred gw_mode=server which is D (or E for that matter, but certainly not F or G) * D gave me a DHCP OFFER and since then is my default gw, which i use to access the internet. I have no other routes setup. * the violet link G <-> H although it looks "long" is in fact a superb link, 0% packet loss, high bw. F <-> G also works great.
Now, i want to send a file to H. Visibly, the optimal route would be F -> G -> H. BUT, i only have a default gw, which is D. I pass the packet to D. Thanks to the layer3 routing protocol, D knows that both E and G have access to the red network. However, E is closer so it relays the packet there, and at the same time ICMP-REDIRECTs me saying "hey, in order to get to the red network, you don't need to send packets to me; save yourself a hop and use E directly" Great, so now i get a new temporary routing entry which is sub-optimal, since my traffic will go all over 5 hops, instead of taking the optimal F-G-H
Now the catchy question: Is there any way for my traffic to find the optimal path, in this scenario?
Spoiler: I get the feeling the answer is "no", since D is giving me the optimal path *according to D perspective*, and there's no way to for D to understand my perspective. So... it seems to me that, even with this mix of layer2 and 3 described in the wiki, the solution cannot currently handle traffic in the most optimal way, inside networks that have more than one border gateway with another network.
But asking never hurts!
Bonus question: If my reasoning is correct, and my conclusion is sadly true... are there any plans to address this issue (/corner case?), and how?
Have a nice week!
Gui